Discover and install skill combinations from the open agent skills ecosystem. Unlike single-skill search, this skill decomposes complex tasks into subtasks, searches for candidates per subtask, evaluates coverage, and recommends two strategies: Maximum Quality (best skill per subtask, highest output quality) and Minimum Dependencies (fewest installs, lean setup). Users pick the strategy that fits their priorities.
Use this skill when the user:
Fallback: If the task is genuinely single-domain and simple (one clear capability), skip the decomposition — run a single npx skills find query, present results, and offer to install. Don't over-engineer simple requests.
The Skills CLI ( npx skills) is the package manager for the open agent skills ecosystem.
Key commands:
npx skills find [query] — Search for skills by keywordnpx skills add <package> — Install a skill from GitHub or other sourcesnpx skills add <package> -g -y — Install globally, skip confirmationnpx skills check — Check for skill updatesnpx skills update — Update all installed skillsBrowse skills at: https://skills.sh/
For complex tasks, follow all five phases in order. For simple tasks, see the Fallback section above.
Break the user's request into independent subtasks. Each subtask represents a distinct capability needed to complete the overall task.
Step 1: Extract Task-Specific Constraints
Before decomposing, scan the user's request for task-specific constraints — these are requirements that narrow the problem space and must be preserved in the subtasks. Look for:
Collect these into a Constraints List — a flat list of non-negotiable requirements extracted verbatim (or near-verbatim) from the user's request. Every subtask you create must trace back to at least one constraint, and no constraint should be orphaned.
Step 2: Decompose into Subtasks
Constraints:
Output format (present this to the user for confirmation):
Constraints List:
[verbatim constraint from user][verbatim constraint from user]IDSubtaskCompletion CriteriaConstraintsS1......C1, C3S2......C2
Before proceeding to Phase 2, briefly show the user the decomposition and constraints list: "I've identified N constraints and broken this into M subtasks — does this look right?" If they want to adjust, iterate. Don't spend too long here — a reasonable decomposition is better than a perfect one.
For each subtask, the goal is precision over recall — find the skills that most closely match the subtask's specific requirements, not just loosely related ones.
Step 1: Subtask Intent Analysis
Before generating keywords, write a one-sentence intent statement for each subtask that captures:
This intent statement is the anchor for keyword generation — every keyword group must map back to it. Constraints ensure the intent stays grounded in the user's actual context rather than drifting to generic descriptions.
IDSubtaskConstraintsIntent StatementS1...C1, C3"Calculate portfolio risk metrics (Sharpe, beta, drawdown) under GAAP standards and output a summary table"S2...C2"Generate interactive Mermaid-based charts from time-series data in a Svelte SPA"
Step 2: Keyword Generation (Precision-First)
For each subtask, generate 2–3 keyword groups using different precision levels:
sharpe ratio beta drawdown calculator)portfolio risk analysis metrics)quantitative finance)Priority rule: Always run exact-match first. Only fall back to broader keywords if the precise search returns too few results (< 3 candidates).
Step 3: Search Execution
SubtaskExact-MatchFunctional-MatchDomain-Match (if needed)S1sharpe ratio beta drawdown``portfolio risk metrics``quantitative financeS2interactive chart time-series dashboard``data visualization web—
bash
npx skills find "<exact-match-keywords>"
Check result counts. For any subtask with < 3 candidates from exact-match, run the functional-match search. If still < 3, run domain-match.
Merge and deduplicate results. For each candidate, record:
Step 4: Relevance Pre-Filter
Before passing candidates to Phase 3, do a quick relevance check per candidate:
Keep the top 3–5 candidates per subtask after filtering. Fewer but more precise candidates produce better evaluations in Phase 3.
Build a Subtask × Candidate coverage matrix with two extra columns for combination planning.
For each candidate skill:
Look up its description on skills.sh or read its SKILL.md if installed.
Rate its relevance to each subtask as High, Medium, or Low:
Write a one-line justification for each rating.
Compute two additional metrics per candidate:
Output the matrix:
CandidateS1S2S3BreadthPeakSkill AHigh: ...LowHigh: ...21Skill BMedium: ...High: ...Low21Skill CLowHigh: ...Medium: ...21Skill DLowLowHigh: ...11
Pruning: Drop candidates that are Low across all subtasks — they are noise.
Produce exactly two recommended strategies targeting different user priorities.
Strategy A — Maximum Quality (追求最强效果)
Goal: Every subtask gets its best-fit skill. Accept more installs to maximize output quality.
Algorithm:
This strategy is for users who want the highest-quality result and don't mind installing several skills.
Strategy B — Minimum Dependencies (最少外部依赖)
Goal: Cover all subtasks with as few skills as possible. Accept Medium coverage where it avoids adding an extra skill.
Algorithm:
This strategy is for users who want to keep their environment lean and are comfortable with "good enough" coverage on some subtasks.
For both strategies, document:
Coverage gap check: If any subtask has no High or Medium candidate in either strategy, flag it: "⚠ Subtask SX has no strong skill coverage — you may need to handle this manually or create a custom skill."
Conflict detection: If two skills in Strategy A overlap significantly on the same subtask, note it: "Skills X and Y both cover S2 — you only need one; keeping the higher-rated one."
Structure the final output with these sections:
1. Task Decomposition Summary
Show the subtask table from Phase 1 (brief, since the user already confirmed it).
2. Side-by-Side Comparison
Start with a quick comparison table so the user can choose a strategy immediately:
text
| | Strategy A: Maximum Quality | Strategy B: Minimum Dependencies |
|---|---|---|
| Skills to install | N skills | M skills |
| All-High coverage | X of Y subtasks | P of Y subtasks |
| Trade-offs | More installs | Some subtasks at Medium |
| Best for | Critical/production tasks | Quick exploration, lean setup |
3. Strategy A — Maximum Quality (Recommended for critical tasks)
text
Every subtask gets its best-fit skill for the highest-quality output.
| Subtask | Handled By | Coverage |
|---------|-----------|----------|
| S1 | skill-name-a | High |
| S2 | skill-name-b | High |
| S3 | skill-name-c | High |
### Install (N skills)
```bash
npx skills add owner/repo@skill-a -g -y
npx skills add owner/repo@skill-b -g -y
npx skills add owner/repo@skill-c -g -y
```
4. Strategy B — Minimum Dependencies (Recommended for lean setup)
text
Cover all subtasks with the fewest skills possible.
| Subtask | Handled By | Coverage | vs Strategy A |
|---------|-----------|----------|---------------|
| S1 | skill-name-a | High | Same |
| S2 | skill-name-a | Medium | ↓ High → Medium |
| S3 | skill-name-a | Medium | ↓ High → Medium |
### Install (M skills)
```bash
npx skills add owner/repo@skill-a -g -y
```
The vs Strategy A column makes the trade-off transparent — users see exactly what they give up by installing fewer skills.
5. Coverage Gaps & Risks
npx skills init)6. Next Steps
Ask the user:
When the task is straightforward (single domain, one clear capability):
npx skills find [query] with 1–2 relevant keyword setsThis is the same behavior as the basic find-skills workflow — no decomposition needed.
When generating keywords, draw from these domains:
CategoryExample KeywordsWeb Developmentreact, nextjs, typescript, css, tailwindTestingtesting, jest, playwright, e2eDevOpsdeploy, docker, kubernetes, ci-cdDocumentationdocs, readme, changelog, api-docsCode Qualityreview, lint, refactor, best-practicesDesignui, ux, design-system, accessibilityData & Analyticsdata, visualization, charts, analysisFinanceportfolio, trading, risk, investmentProductivityworkflow, automation, git
https://skills.sh/<owner>/<repo>/<skill-name> for descriptions.vs Strategy A column in Strategy B is the most important part of the output. It turns an abstract choice into a concrete comparison.If a subtask has no relevant skills:
npx skills init my-custom-skill