You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7be8845
Browse filesBrowse the repository at this point in the historyBrowse files
Guidelines for contributors working on the DumplingAI CLI skills in this repository.
4
+
5
+
## Repository Focus
6
+
7
+
This repo ships:
8
+
9
+
- the `dumplingai-cli` npm package under `packages/cli/`
10
+
- bundled agent skills under `skills/`
11
+
- install-time copies of those skills embedded in `packages/cli/src/commands/setup-skill.ts`
12
+
13
+
## Skill Discovery Rule
14
+
15
+
For skill triggerability, the frontmatter `description` is retrieval copy, not just documentation.
16
+
17
+
Every skill description should cover:
18
+
19
+
1. What the skill helps the user accomplish
20
+
2. The phrases a user is likely to say
21
+
3. When to use this skill instead of a nearby one
22
+
23
+
Prefer multiple narrow, job-shaped skills over one generic integration skill when users commonly ask for the workflows in different language. Broad umbrella skills are still useful, but they should be backed by more specific entry points like search, scraping, transcripts, and SEO data.
24
+
25
+
Prefer:
26
+
27
+
```yaml
28
+
description: When the user wants to find the right API for scraping or search. Also use when the user mentions Firecrawl, Serper, transcripts, or SEO APIs. For executing the chosen endpoint, see dumplingai-cli.
29
+
```
30
+
31
+
Avoid descriptions that only describe the underlying tool, such as "CLI for DumplingAI" with no user-intent language.
32
+
33
+
## Keep Sources in Sync
34
+
35
+
When editing a bundled skill:
36
+
37
+
1. Update `skills/<name>/SKILL.md`
38
+
2. Update the matching embedded string in `packages/cli/src/commands/setup-skill.ts`
39
+
3. If trigger guidance changes, update `README.md`
40
+
41
+
## Validation
42
+
43
+
- Keep skill names aligned with directory names
44
+
- Keep descriptions concise but rich in trigger phrases
45
+
- Prefer concrete user intents and vendor/task synonyms over internal product terminology
`dumplingai catalog search` behaves more like keyword search than semantic search. Use short phrases such as `google search`, `scrape page`, `youtube transcript`, `keyword ideas`, or `firecrawl scrape`.
66
+
67
+
Avoid long natural-language prompts and avoid appending generic words like `capability` or `endpoint` unless they are actually part of the object name. If results are empty or weak, shorten the query first.
68
+
63
69
## Skill Installation
64
70
65
71
Packaged skills from this repo can be installed with the `skills` CLI:
The main lesson from high-performing skill repos is that discovery copy should describe user intent, not just implementation details. These are the bundled skills and the kinds of requests they should catch:
82
+
83
+
| Skill | Trigger this when the user says things like |
|`discovering-dumplingai-apis`| "Find the best API for scraping/search/transcripts", "Can DumplingAI do this instead of Firecrawl/Serper/DataForSEO?", "I want one API key across providers" |
86
+
|`dumplingai-cli`| "Run this through DumplingAI", "search the DumplingAI catalog", "inspect this capability", "check DumplingAI balance/usage", "test this endpoint from the terminal" |
87
+
|`dumplingai-web-research`| "Search the web for this", "find sources on this topic", "run Google/Serper/Perplexity-style search through DumplingAI", "do competitor/topic research first" |
88
+
|`dumplingai-scraping-extraction`| "Scrape this page", "crawl this site", "extract content from this URL", "pull structured content with Firecrawl-style tooling" |
89
+
|`dumplingai-transcripts-media`| "Get the YouTube transcript", "transcribe this video", "extract captions from this media URL", "turn video/audio into text" |
90
+
|`dumplingai-seo-data`| "Get keyword ideas", "pull SEO data", "use DataForSEO through DumplingAI", "find ranking/search-volume endpoints" |
91
+
|`youtube-to-blog-post`| "Turn this YouTube video into a post", "extract the transcript and draft an article", "repurpose this creator video into a newsletter/blog" |
92
+
|`social-media-post`| "Turn this topic/page/transcript into LinkedIn or X posts", "write thread variants", "give me channel-specific social copy" |
93
+
94
+
If a skill description only says what the tool is, it tends to under-trigger. If it says what the user is trying to accomplish and includes the phrases they are likely to use, it triggers more reliably.
Local agent/runtime folders such as `.claude/`, `.agents/`, `.cursor/`, `.codex/`, and `.dumplingai/` are intentionally ignored. Keep checked-in skill sources under `skills/`.
106
+
107
+
Stored credentials are written to a local config file. Prefer `DUMPLINGAI_API_KEY` in CI or shared environments.
'Tip: `catalog search` works best with short keyword queries. If results are weak, shorten the query and remove extra words like "capability" or "endpoint".\n',
65
+
);
66
+
}
46
67
constclient=awaitgetClient(opts.apiKey);
47
68
constresult=awaitclient.searchCatalog(prompt,{
48
69
type: parseCatalogType(opts.type),
49
70
limit: parseOptionalInt(opts.limit,'--limit'),
50
71
});
72
+
73
+
if(getCatalogResultCount(result)===0){
74
+
process.stderr.write(
75
+
'No catalog results found. Retry with a shorter keyword query like "google search", "scrape page", or "keyword ideas", and remove extra words like "capability" or "endpoint".\n',
0 commit comments