find-skills-combo

Discover and recommend **combinations** of agent skills to complete complex, multi-faceted tasks. Provides two recommendation strategies — **Maximum Quality** (best skill per subtask) and **Minimum Dependencies** (fewest installs). Use this skill whenever the user wants to find skills, asks "how do I do X", "find a skill for X", or describes a task that likely requires multiple capabilities working together. Also use when the user mentions composing workflows, building pipelines, or needs help across several domains at once — even if they only say "find me a skill". This skill supersedes simple single-skill search by decomposing the task into subtasks and assembling an optimal skill portfolio.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "find-skills-combo" with this command: npx skills add <package>

Find Skills Combo

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.

When to Use This Skill

Use this skill when the user:

  • Asks "how do I do X" where X involves multiple capabilities or domains
  • Says "find a skill for X" or "is there a skill for X"
  • Describes a task that spans several concerns (e.g., "build a quarterly report with charts, risk analysis, and executive summary")
  • Wants to compose a workflow from multiple skills
  • Asks "can you do X" where X is a complex, multi-step task
  • Expresses interest in extending agent capabilities for a non-trivial project

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.

What is the Skills CLI?

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 keyword
  • npx skills add <package> — Install a skill from GitHub or other sources
  • npx skills add <package> -g -y — Install globally, skip confirmation
  • npx skills check — Check for skill updates
  • npx skills update — Update all installed skills

Browse skills at: https://skills.sh/


The 5-Phase Pipeline

For complex tasks, follow all five phases in order. For simple tasks, see the Fallback section above.

Phase 1: Task Decomposition

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:

  • Domain-specific terminology: Jargon, proper nouns, named standards, or specialized vocabulary the user explicitly uses (e.g., "WCAG 2.1 AA compliance", "GAAP reporting", "OpenAPI 3.1 spec"). These terms signal that generic skills won't suffice — the subtask must target this exact domain.
  • Scenario constraints: Environmental or contextual restrictions (e.g., "offline-only", "must run in CI", "single-page app with no backend", "monorepo with pnpm workspaces"). These filter out skills that technically do the right thing but in the wrong context.
  • Format / output requirements: Specific file formats, templates, or delivery formats (e.g., "output as PDF", "Helm chart", "Jupyter notebook", "Markdown with Mermaid diagrams").
  • Toolchain lock-ins: Explicit technology choices the user has already committed to (e.g., "using Svelte, not React", "PostgreSQL only", "must integrate with our existing FastAPI backend").

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

  1. Read the user's request carefully. Identify every distinct outcome or deliverable they need.
  2. Group related outcomes into subtasks. Each subtask should be a "capability unit" — something one skill could plausibly handle.
  3. Write a short completion criterion for each subtask so you know what "covered" means later.
  4. Attach relevant constraints from the Constraints List to each subtask. A subtask without any attached constraint is likely too generic — refine it. A constraint not attached to any subtask is a gap — either create a subtask for it or fold it into an existing one.

Constraints:

  • Aim for 2–7 subtasks. Fewer than 2 means the task is simple — use the fallback. More than 7 means you're splitting too fine — merge related items.
  • Each subtask needs a clear boundary. If two subtasks always require the same skill, merge them.
  • Preserve the user's own words: When a subtask maps to a domain-specific term the user used, keep that term in the subtask description and completion criteria — don't paraphrase it into a generic synonym. This ensures Phase 2 keyword generation stays precise.

Output format (present this to the user for confirmation):

Constraints List:

  • C1: [verbatim constraint from user]
  • C2: [verbatim constraint from user]
  • ...
IDSubtaskCompletion CriteriaConstraints
S1......C1, C3
S2......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.

Phase 2: Precision-Focused Search

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:

  • The specific action (e.g., "generate", "analyze", "validate", not vague terms like "handle" or "process")
  • The domain object (e.g., "Sharpe ratio", "Docker container", "React component")
  • The expected output format (e.g., "a chart", "a score", "a config file")
  • The attached constraints from Phase 1 — weave the user's domain-specific terms and scenario restrictions directly into the intent statement

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 Statement
S1...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:

  • Exact-match keywords: Use the most specific terms from the intent statement — tool names, metric names, framework names, file formats. These find skills purpose-built for the subtask. (e.g., sharpe ratio beta drawdown calculator)
  • Functional-match keywords: Describe the capability at one level of abstraction higher — what the skill does rather than what it is. These catch skills that solve the same problem with different terminology. (e.g., portfolio risk analysis metrics)
  • Domain-match keywords (only if exact + functional return < 3 results): Broaden to the domain level as a safety net. (e.g., 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

  1. Build a keyword plan table with precision level annotated:
SubtaskExact-MatchFunctional-MatchDomain-Match (if needed)
S1sharpe ratio beta drawdownportfolio risk metricsquantitative finance
S2interactive chart time-series dashboarddata visualization web
  1. Run all exact-match searches in parallel first:
npx skills find "<exact-match-keywords>"
  1. Check result counts. For any subtask with < 3 candidates from exact-match, run the functional-match search. If still < 3, run domain-match.

  2. Merge and deduplicate results. For each candidate, record:

    • Which subtask found it
    • Which precision level matched (exact > functional > domain)
    • The skill's self-described purpose (from search output)

Step 4: Relevance Pre-Filter

Before passing candidates to Phase 3, do a quick relevance check per candidate:

  1. Re-read the candidate's one-line description from the search output.
  2. Compare it against the subtask's intent statement.
  3. Keep if the description shares at least one specific term (tool name, metric, framework) with the intent statement, OR if it describes the same functional capability.
  4. Drop if the connection is only at the domain level (e.g., a skill about "financial news aggregation" found via domain-match for a "risk metrics" subtask).

Keep the top 3–5 candidates per subtask after filtering. Fewer but more precise candidates produce better evaluations in Phase 3.

Phase 3: Candidate Evaluation

Build a Subtask × Candidate coverage matrix with two extra columns for combination planning.

For each candidate skill:

  1. Look up its description on skills.sh or read its SKILL.md if installed.
  2. Rate its relevance to each subtask as High, Medium, or Low:
    • High — The skill directly addresses this subtask with dedicated features or workflows
    • Medium — The skill partially covers this subtask or addresses it as a secondary concern
    • Low — The skill has minimal or no relevance to this subtask
  3. Write a one-line justification for each rating.
  4. Compute two additional metrics per candidate:
    • Breadth — Count of subtasks where the skill rates High or Medium (higher = more versatile, valuable for minimum-dependency strategy)
    • Peak — Count of subtasks where the skill is the top-rated candidate (higher = more irreplaceable, valuable for best-effect strategy)

Output the matrix:

CandidateS1S2S3BreadthPeak
Skill AHigh: ...LowHigh: ...21
Skill BMedium: ...High: ...Low21
Skill CLowHigh: ...Medium: ...21
Skill DLowLowHigh: ...11

Pruning: Drop candidates that are Low across all subtasks — they are noise.

Phase 4: Dual-Strategy Planning

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:

  1. For each subtask, pick the candidate with the highest rating (use Peak column to break ties — prefer skills that are uniquely best at something).
  2. If multiple candidates tie at High for a subtask, prefer the one with higher community popularity or more recent maintenance.
  3. List all selected skills (may include one skill per subtask if they're all different).

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:

  1. Sort candidates by Breadth descending (most versatile first).
  2. Greedily select: pick the highest-Breadth skill, mark its High/Medium subtasks as covered, repeat until all subtasks are covered.
  3. If a subtask can only reach Medium coverage with the greedy set but has a dedicated High-coverage skill, do NOT add that skill — keep the set minimal. Only flag the trade-off.
  4. Target ceiling: if the task has N subtasks, this strategy should ideally use ≤ ⌈N/2⌉ skills.

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:

  • Which skills are included and total install count
  • A subtask → skill mapping table
  • A one-sentence rationale
  • A quality delta summary: where Strategy B trades quality for fewer installs compared to Strategy A

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."

Phase 5: Present Results

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:

| | 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)

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)

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

  • List any subtasks without strong coverage in either strategy
  • Suggest workarounds (manual steps, creating a custom skill with npx skills init)
  • If Strategy B downgrades a subtask from High to Medium, briefly explain the practical impact

6. Next Steps

Ask the user:

  • "Which strategy do you prefer — Maximum Quality or Minimum Dependencies?"
  • "Want me to install your chosen strategy now?"
  • "Want me to search deeper for any specific subtask?"
  • "Want to adjust the decomposition?"

Fallback: Simple Single-Skill Search

When the task is straightforward (single domain, one clear capability):

  1. Run npx skills find [query] with 1–2 relevant keyword sets
  2. Present the top 2–3 results with name, description, and install command
  3. Offer to install

This is the same behavior as the basic find-skills workflow — no decomposition needed.

Common Skill Categories

When generating keywords, draw from these domains:

CategoryExample Keywords
Web Developmentreact, nextjs, typescript, css, tailwind
Testingtesting, jest, playwright, e2e
DevOpsdeploy, docker, kubernetes, ci-cd
Documentationdocs, readme, changelog, api-docs
Code Qualityreview, lint, refactor, best-practices
Designui, ux, design-system, accessibility
Data & Analyticsdata, visualization, charts, analysis
Financeportfolio, trading, risk, investment
Productivityworkflow, automation, git

Tips

  1. Precision beats recall: 3 highly relevant candidates are more useful than 10 loosely related ones. Always start with the most specific keywords and only broaden if needed.
  2. Intent statements are your anchor: A good intent statement in Phase 2 prevents keyword drift. If your keywords don't map back to the intent, they're too broad.
  3. Parallel search matters: Running all keyword groups simultaneously saves significant time. Use subagents when available.
  4. Don't over-decompose: 3–5 subtasks is the sweet spot for most tasks. More than that creates noise.
  5. Skills.sh is your friend: When evaluating candidates, quickly check https://skills.sh/<owner>/<repo>/<skill-name> for descriptions.
  6. User confirmation at Phase 1 is critical: A wrong decomposition cascades into bad search and bad recommendations. Take 30 seconds to verify.
  7. Always present both strategies: Users have different priorities — some want the best possible result, others want a lean setup. Let them choose.
  8. Make the trade-off explicit: The vs Strategy A column in Strategy B is the most important part of the output. It turns an abstract choice into a concrete comparison.
  9. Breadth and Peak drive strategy selection: High-Breadth skills are MVPs for Strategy B (minimum dependencies); High-Peak skills are essential for Strategy A (maximum quality). Computing both in Phase 3 makes Phase 4 mechanical.

When No Skills Are Found

If a subtask has no relevant skills:

  1. Flag it in the coverage gaps section
  2. Offer to help with that subtask directly using general capabilities
  3. Suggest the user create a custom skill: npx skills init my-custom-skill
  4. If the entire task has no skills at all, acknowledge it honestly and pivot to direct assistance

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

auto-arena

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

bib-verify

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

ref-hallucination-arena

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

claude-authenticity

No summary provided by upstream source.

Repository SourceNeeds Review