Skill Researcher
Your job is to identify which skill is most useful for the project before diving into implementation.
Outcome
Produce a recommendation that is:
- grounded in the actual repo
- focused on the current task, not just the tech stack
- honest about confidence
- specific about why the chosen skill beats nearby alternatives
Workflow
1) Scope the project correctly
Start from the user's real working scope.
- If the user points to a file, folder, package, or service, prioritize that area over the repo root.
- If this is a monorepo, determine which package or app the request is really about.
- If the user gave a task such as "improve the UI", "add Anthropic support", or "write docs", treat the task as a first-class signal alongside the stack.
Never recommend a skill from the repo root alone when the user is clearly working in a subproject.
2) Get a quick repo summary first
If the brief CLI is available, use it near the start to get a fast snapshot of the repository.
- Treat
brief as an orientation tool, not as the final source of truth.
- Use it to spot likely apps, packages, frameworks, and docs before deeper inspection.
- Verify any important claims against actual files in the repo.
If brief is unavailable or low-signal for the current scope, skip it and inspect the repo directly.
3) Inspect high-signal files first
Prefer fast, read-only inspection. Start with the smallest set of files that gives a reliable picture.
Look for these first:
package.json, pnpm-lock.yaml, yarn.lock, package-lock.json
pyproject.toml, requirements*.txt, poetry.lock, uv.lock
Cargo.toml, Cargo.lock
go.mod
Gemfile, Gemfile.lock
pom.xml, build.gradle, settings.gradle
*.csproj, Directory.Build.props
Dockerfile, docker-compose.yml
Makefile, justfile, Taskfile.yml
tsconfig.json, vite.config.*, next.config.*, nuxt.config.*, astro.config.*, svelte.config.*, angular.json
- framework entry points such as
manage.py, asgi.py, wsgi.py, main.py, app.py, src/main.*
README*, docs/, CI workflows, and top-level architecture notes
Read more only when the project appears mixed or ambiguous.
4) Infer the dominant stack
Summarize only major signals:
- primary language(s)
- primary runtime or framework
- central SDKs or platforms
- testing, build, or deployment tools when they clearly shape the workflow
- special domains such as frontend design, documentation, PDFs, AI integration, MCP, security review, or data workflows
Use these rules:
- framework beats utility library
- app-defining config beats one incidental import
- repeated evidence beats a single mention
- lockfiles prove presence; config files and entry points prove centrality
- ignore transitive or incidental packages unless they directly drive the user's task
Good major-signal examples:
next, react, vite, astro
fastapi, django, flask
@anthropic-ai/sdk, anthropic
- MCP SDKs, MCP server structure, or MCP-specific docs
- docs/spec-heavy repo structure
- clear document/PDF processing workflows
Weak signals that usually should not drive the recommendation by themselves:
lodash, chalk, requests, axios, date-fns, zod unless the current task is specifically about them
5) Search for candidate skills
Search available skills using both exact stack terms and task-oriented terms.
Search in this order:
- locally installed or user-provided skills
- locally synced skills managed by Kasetto when that workflow exists
- official or default skill collections available in the environment
- broader skill sources the user expects you to consider
When Kasetto is in play:
- check
kasetto.yaml or the relevant Kasetto config path to understand which skill sources are synced locally
- treat Kasetto as the local sync mechanism and use the Kasetto-managed copy as the local source of truth when relevant
- prefer the locally synced copy when the environment uses Kasetto for skill distribution
- mention Kasetto when it affects where the recommended skill should be loaded from or updated
Use multiple search patterns:
- exact framework:
Next.js skill
- exact SDK or platform:
Anthropic SDK skill, MCP skill
- task + framework:
frontend design React skill, documentation spec writing skill
- ecosystem synonyms:
TypeScript UI skill, Python API skill
- fallback category search when exact terms fail
Read the actual description of the top candidate skills before recommending one. Do not recommend from a skill name alone.
Do not invent skill names. If a search does not surface a real skill, say you did not find a strong specialized match.
6) Rank candidates
Choose the skill that best matches both:
- what the project is
- what the user is trying to do now
Use this ranking logic:
- Strong match: the skill description explicitly fits the task and the stack
- Good match: strong domain fit with compatible stack, even if not framework-specific
- Fallback: useful general skill, but not tightly aligned
- No strong match: no available skill clearly beats generic help
Prefer the narrowest skill that clearly fits. Do not choose a general language skill over a skill whose description directly matches the user's task.
When two skills overlap:
- pick one primary skill
- include the second as a runner-up
- explain the boundary between them
7) Return a concise recommendation
Always use this structure:
Stack snapshot
- Scope:
- Languages:
- Frameworks/platforms:
- Major packages/SDKs:
- Current task:
- Confidence:
Best skill
- Skill:
- Why it fits:
- Repo evidence:
- Why it beats nearby alternatives:
Runner-ups
- Skill: reason it was close but not the best
- Skill: reason it was close but not the best
Gaps or uncertainties
- Missing evidence or ambiguity that affected confidence
Keep this short and evidence-based. The goal is to help the agent or user move quickly into the right specialized workflow.
Special cases
Monorepos
Recommend per target package or app, not per repository brand.
A monorepo may justify one skill for apps/web and another for an mcp-server package.
Multi-domain work
If the user's task crosses domains, choose the primary skill for the first blocking step.
For example, if the repo uses the Anthropic SDK and the user wants to improve the product UI, a frontend skill may be the primary recommendation for that request, while an Anthropic skill is only secondary context.
No strong match
Say so plainly. Name the closest one or two options and why they are only partial fits.
Trust and source quality
Prefer official or already-installed skills over loosely matched third-party skills unless the user explicitly wants community options.
Practical heuristics
- Package manifests and framework config files are more informative than lockfiles alone.
- Entry-point imports can resolve ties when configs are ambiguous.
- README language can help identify the project's real purpose.
- The user's requested change outweighs background tech that is unrelated to the task.
- A repo can contain React without needing a frontend skill for a backend-only request.
Examples
Example 1: Anthropic integration
Project signals:
package.json includes @anthropic-ai/sdk
- source files import
Anthropic
- task:
add prompt caching
Recommendation:
- Primary:
claude-api
- Why: the project and task are directly about Anthropic SDK usage
Example 2: MCP server
Project signals:
- MCP server structure or MCP SDK dependency
- task:
build a tool server for GitHub
Recommendation:
- Primary:
mcp-builder
- Why: the task is explicitly about building an MCP server
Example 3: UI-heavy web app
Project signals:
next.config.*, react, tailwindcss
- task:
make the dashboard feel polished and less generic
Recommendation:
- Primary:
frontend-design
- Why: the user's job-to-be-done is interface quality, not generic TypeScript coding
Example 4: Documentation-centered work
Project signals:
- docs-heavy repo, ADRs, specs, or proposals
- task:
turn notes into a technical design doc
Recommendation:
- Primary:
doc-coauthoring
- Why: the task is structured documentation, even if the repo also contains code
Avoid these mistakes
- Do not recommend based on a single flashy dependency.
- Do not list every package; summarize only the few that matter.
- Do not confuse the package manager with the framework.
- Do not ignore subdirectory scope in a monorepo.
- Do not pretend confidence is high when the repo evidence is thin.
- Do not force a specialized skill when no clear match exists.
1---2name: skill-researcher3description: Research and recommend the best available skill for the current codebase or working directory. Use this whenever the user is working inside an existing project and asks what skill to use, which skill fits the repo, how to choose between skills, or before doing substantial work in a codebase that may benefit from a specialized skill. Start with a quick repo summary from the `brief` CLI when available, then inspect the project's high-signal files, major packages, languages, frameworks, SDKs, and config files. Search installed, locally synced, or otherwise available skills for the strongest match. Prefer one best-fit skill with evidence from the repo, plus 1-2 runner-ups only when overlap is real. Also trigger when the repo contains obvious markers like package.json, pyproject.toml, Cargo.toml, go.mod, Gemfile, pom.xml, framework configs, or imports for major ecosystems such as React, Next.js, TypeScript, Python, FastAPI, Django, MCP, or the Anthropic SDK.4license: MIT5---67# Skill Researcher89Your job is to identify which skill is most useful for the project **before** diving into implementation.1011## Outcome12Produce a recommendation that is:131. grounded in the actual repo142. focused on the current task, not just the tech stack153. honest about confidence164. specific about why the chosen skill beats nearby alternatives1718## Workflow1920### 1) Scope the project correctly21Start from the user's real working scope.22- If the user points to a file, folder, package, or service, prioritize that area over the repo root.23- If this is a monorepo, determine which package or app the request is really about.24- If the user gave a task such as "improve the UI", "add Anthropic support", or "write docs", treat the task as a first-class signal alongside the stack.2526Never recommend a skill from the repo root alone when the user is clearly working in a subproject.2728### 2) Get a quick repo summary first29If the `brief` CLI is available, use it near the start to get a fast snapshot of the repository.3031- Treat `brief` as an orientation tool, not as the final source of truth.32- Use it to spot likely apps, packages, frameworks, and docs before deeper inspection.33- Verify any important claims against actual files in the repo.3435If `brief` is unavailable or low-signal for the current scope, skip it and inspect the repo directly.3637### 3) Inspect high-signal files first38Prefer fast, read-only inspection. Start with the smallest set of files that gives a reliable picture.3940Look for these first:41- `package.json`, `pnpm-lock.yaml`, `yarn.lock`, `package-lock.json`42- `pyproject.toml`, `requirements*.txt`, `poetry.lock`, `uv.lock`43- `Cargo.toml`, `Cargo.lock`44- `go.mod`45- `Gemfile`, `Gemfile.lock`46- `pom.xml`, `build.gradle`, `settings.gradle`47- `*.csproj`, `Directory.Build.props`48- `Dockerfile`, `docker-compose.yml`49- `Makefile`, `justfile`, `Taskfile.yml`50- `tsconfig.json`, `vite.config.*`, `next.config.*`, `nuxt.config.*`, `astro.config.*`, `svelte.config.*`, `angular.json`51- framework entry points such as `manage.py`, `asgi.py`, `wsgi.py`, `main.py`, `app.py`, `src/main.*`52- `README*`, `docs/`, CI workflows, and top-level architecture notes5354Read more only when the project appears mixed or ambiguous.5556### 4) Infer the dominant stack57Summarize only major signals:58- primary language(s)59- primary runtime or framework60- central SDKs or platforms61- testing, build, or deployment tools when they clearly shape the workflow62- special domains such as frontend design, documentation, PDFs, AI integration, MCP, security review, or data workflows6364Use these rules:65- framework beats utility library66- app-defining config beats one incidental import67- repeated evidence beats a single mention68- lockfiles prove presence; config files and entry points prove centrality69- ignore transitive or incidental packages unless they directly drive the user's task7071Good major-signal examples:72- `next`, `react`, `vite`, `astro`73- `fastapi`, `django`, `flask`74- `@anthropic-ai/sdk`, `anthropic`75- MCP SDKs, MCP server structure, or MCP-specific docs76- docs/spec-heavy repo structure77- clear document/PDF processing workflows7879Weak signals that usually should not drive the recommendation by themselves:80- `lodash`, `chalk`, `requests`, `axios`, `date-fns`, `zod` unless the current task is specifically about them8182### 5) Search for candidate skills83Search available skills using both exact stack terms and task-oriented terms.8485Search in this order:861. locally installed or user-provided skills872. locally synced skills managed by Kasetto when that workflow exists883. official or default skill collections available in the environment894. broader skill sources the user expects you to consider9091When Kasetto is in play:92- check `kasetto.yaml` or the relevant Kasetto config path to understand which skill sources are synced locally93- treat Kasetto as the local sync mechanism and use the Kasetto-managed copy as the local source of truth when relevant94- prefer the locally synced copy when the environment uses Kasetto for skill distribution95- mention Kasetto when it affects where the recommended skill should be loaded from or updated9697Use multiple search patterns:98- exact framework: `Next.js skill`99- exact SDK or platform: `Anthropic SDK skill`, `MCP skill`100- task + framework: `frontend design React skill`, `documentation spec writing skill`101- ecosystem synonyms: `TypeScript UI skill`, `Python API skill`102- fallback category search when exact terms fail103104Read the actual description of the top candidate skills before recommending one. Do not recommend from a skill name alone.105106Do not invent skill names. If a search does not surface a real skill, say you did not find a strong specialized match.107108### 6) Rank candidates109Choose the skill that best matches both:110- what the project is111- what the user is trying to do now112113Use this ranking logic:114- **Strong match**: the skill description explicitly fits the task and the stack115- **Good match**: strong domain fit with compatible stack, even if not framework-specific116- **Fallback**: useful general skill, but not tightly aligned117- **No strong match**: no available skill clearly beats generic help118119Prefer the narrowest skill that clearly fits. Do not choose a general language skill over a skill whose description directly matches the user's task.120121When two skills overlap:122- pick one primary skill123- include the second as a runner-up124- explain the boundary between them125126### 7) Return a concise recommendation127Always use this structure:128129## Stack snapshot130- Scope:131- Languages:132- Frameworks/platforms:133- Major packages/SDKs:134- Current task:135- Confidence:136137## Best skill138- Skill:139- Why it fits:140- Repo evidence:141- Why it beats nearby alternatives:142143## Runner-ups144- Skill: reason it was close but not the best145- Skill: reason it was close but not the best146147## Gaps or uncertainties148- Missing evidence or ambiguity that affected confidence149150Keep this short and evidence-based. The goal is to help the agent or user move quickly into the right specialized workflow.151152## Special cases153154### Monorepos155Recommend per target package or app, not per repository brand.156A monorepo may justify one skill for `apps/web` and another for an `mcp-server` package.157158### Multi-domain work159If the user's task crosses domains, choose the primary skill for the first blocking step.160For example, if the repo uses the Anthropic SDK and the user wants to improve the product UI, a frontend skill may be the primary recommendation for that request, while an Anthropic skill is only secondary context.161162### No strong match163Say so plainly. Name the closest one or two options and why they are only partial fits.164165### Trust and source quality166Prefer official or already-installed skills over loosely matched third-party skills unless the user explicitly wants community options.167168## Practical heuristics169- Package manifests and framework config files are more informative than lockfiles alone.170- Entry-point imports can resolve ties when configs are ambiguous.171- README language can help identify the project's real purpose.172- The user's requested change outweighs background tech that is unrelated to the task.173- A repo can contain React without needing a frontend skill for a backend-only request.174175## Examples176177**Example 1: Anthropic integration**178Project signals:179- `package.json` includes `@anthropic-ai/sdk`180- source files import `Anthropic`181- task: `add prompt caching`182183Recommendation:184- Primary: `claude-api`185- Why: the project and task are directly about Anthropic SDK usage186187**Example 2: MCP server**188Project signals:189- MCP server structure or MCP SDK dependency190- task: `build a tool server for GitHub`191192Recommendation:193- Primary: `mcp-builder`194- Why: the task is explicitly about building an MCP server195196**Example 3: UI-heavy web app**197Project signals:198- `next.config.*`, `react`, `tailwindcss`199- task: `make the dashboard feel polished and less generic`200201Recommendation:202- Primary: `frontend-design`203- Why: the user's job-to-be-done is interface quality, not generic TypeScript coding204205**Example 4: Documentation-centered work**206Project signals:207- docs-heavy repo, ADRs, specs, or proposals208- task: `turn notes into a technical design doc`209210Recommendation:211- Primary: `doc-coauthoring`212- Why: the task is structured documentation, even if the repo also contains code213214## Avoid these mistakes215- Do not recommend based on a single flashy dependency.216- Do not list every package; summarize only the few that matter.217- Do not confuse the package manager with the framework.218- Do not ignore subdirectory scope in a monorepo.219- Do not pretend confidence is high when the repo evidence is thin.220- Do not force a specialized skill when no clear match exists.