Skill Scout
Build or update a project-specific kasetto.yaml for the repository the agent is currently working in.
The target is the user's active project root, not the repository that distributed this skill.
Use this skill directly when the user asks to scout, find, recommend, install, or update project-specific skills. Do not route through a separate scout-skills command; this skill is the canonical workflow.
Operating Principles
- Prefer evidence over guesses.
- Prefer a small set of high-impact skills over a large generic bundle.
- Prefer official, maintained, popular, and source-auditable skills.
- Prefer direct language, framework, devops, platform, and workflow skills over generic design or broad bundle skills when both fit.
- Treat stars and recent activity as soft trust signals, not hard gates.
- Treat marketplaces as discovery surfaces, not automatic trust authorities.
- Only write Kasetto-compatible Git or local sources.
- Never run a real sync/install unless the user explicitly asks.
Sub-Agent Strategy
When the host agent supports sub-agents or task delegation, use them for discovery and research. If sub-agents are unavailable, perform the same roles sequentially and say so in the final response.
Recommended roles:
| Role |
Purpose |
Output |
project-inventory |
Inspect the active project and identify verified technologies |
Technology inventory with evidence paths |
skill-researcher |
Research skills for P0/P1 technologies using online and local sources |
Candidate matrix with source URLs, evidence, and recommendation |
kasetto-planner |
Convert approved candidates into a minimal kasetto.yaml patch |
Proposed YAML changes and duplicate/conflict notes |
validator |
Run safe validation commands only |
Dry-run result and warnings |
The skill-researcher phase is mandatory when sub-agents are available. Launch the bundled researcher agent from agents/skill-scout-researcher.md or an equivalent isolated research worker instead of doing all online research in the main agent. Keep final YAML editing in the main agent unless the host agent has reliable patch isolation.
Required References
Read these before editing config:
| Task |
Read |
brief --json discovery |
references/brief-discovery.md |
| Project detection and prioritization |
references/scouting-workflow.md |
| Mandatory online skill research |
references/online-research.md |
| Kasetto config rules and examples |
references/kasetto-config.md |
Workflow
1. Confirm Target Project
Determine the active project root.
Use, in order:
git rev-parse --show-toplevel
- current working directory if not in a Git repo
- user-provided path, if explicitly given
Before writing files, state the target project root in the working notes or final response.
Do not analyze the skill repository itself unless it is the active project where the command was invoked.
2. Build Project Inventory
Run brief --json when available:
command -v brief >/dev/null && brief --json
Treat brief --json as discovery evidence only. Verify high-value findings against direct evidence:
- manifests:
package.json, composer.json, pyproject.toml, Cargo.toml, go.mod, Gemfile, mix.exs
- framework config:
vite.config.*, nuxt.config.*, next.config.*, tailwind.config.*, terraform/**/*.tf, wrangler.toml, sst.config.*
- source imports/usages
- CI/deployment config
- lockfiles only when needed to confirm package versions or ecosystem shape
Capture each detected technology as:
technology: Laravel
priority: P0
evidence:
- composer.json: require.laravel/framework
- artisan
reason: Primary application framework.
3. Prioritize Technologies
Use this priority model:
| Priority |
Meaning |
Action |
| P0 |
Primary framework/runtime/platform that shapes most implementation work |
Must research skills |
| P1 |
Major package, UI system, infra platform, testing stack, or deployment platform |
Must research skills |
| P2 |
Useful but secondary library/tooling |
Research only if obvious skill exists |
| P3 |
Minor, transitive, incidental, or low-impact |
Ignore unless user asked |
High-value signals include:
- Application frameworks: Laravel, Nuxt, Vue, React, Next.js, SvelteKit, Rails, Django, FastAPI, Phoenix, Tauri, Electron
- CLI frameworks: Cobra, Viper, Clap, Typer, Click
- UI/design systems: Tailwind, shadcn/ui, Radix, Chakra, MUI, SwiftUI, Jetpack Compose, Flutter, Storybook, Figma workflows
- Developer platforms: Cloudflare Workers/Pages/D1/R2/KV/Queues, Vercel, Netlify, Supabase, Firebase, AWS CDK/SST, Terraform, Pulumi
- Major ecosystems: Charmbracelet, macOS/iOS Swift, Laravel packages, Nuxt modules, VueUse, Vite, Bun, GoReleaser, release-please
Add Taste Skill as a candidate when the project includes frontend, product UI, marketing UI, mobile UI, visual redesign, Storybook, Figma-adjacent workflows, or design-system work. Do not let a design-only candidate displace a stronger direct language, framework, devops, or platform skill unless design work is the project's dominant surface. Still verify that a usable Kasetto source exists before adding it.
4. Research Skills
Research online before selecting skills for every P0/P1 technology.
Use at least two external discovery sources per P0/P1 technology when network/search tools are available. Start by probing preferred curated sources and only then fall back to generic search:
- preferred curated pack:
Jeffallan/claude-skills for language, framework, devops, platform, and workflow skills
- preferred curated catalog:
VoltAgent/awesome-agent-skills
- SkillsHub Resolve API (
https://skillshub.wtf/docs)
bash references/resolve-skillshub.sh "<task describing the technology and goal>"
- official vendor/team repositories containing
SKILL.md
- LobeHub Skills Marketplace
npx -y @lobehub/market-cli skills search --q "<technology>" --sort installCount --order desc --output json
- GitHub code search for
SKILL.md plus the technology name
- trusted local skills already installed in agent skill directories
Local installed skills are candidates, not the complete search space.
For each candidate, capture:
name:
technology:
source_url:
kasetto_source:
source_type: git | local | marketplace-only | unknown
adoption_signals:
stars:
last_updated:
evidence:
trust:
maintenance:
fit:
decision: add | defer | reject
reason:
Reject or defer candidates when:
- no Git or local source can be identified
- the source is paid, opaque, private, provenance-free, or unaudited
- the skill is generic and overlaps with a more specific trusted skill
- a broad or design-oriented skill is outranked by a direct language, framework, devops, or platform skill from a trusted curated or official source
- the repository appears abandoned or low-quality
- the skill does not clearly match a verified P0/P1 technology
If online search is unavailable, do not silently produce a local-only config. Report the limitation and ask before continuing with local-only recommendations, unless the user explicitly allowed offline mode.
Optional Discovery Tools
Use these tools when available. Do not fail the scout if they are missing.
| Tool |
Use |
references/resolve-skillshub.sh |
Query SkillsHub resolve API for ranked skill candidates from natural-language task descriptions |
rg |
Fast source search and fallback discovery |
fd |
Fast manifest/config discovery |
jq |
Parse brief --json, package.json, lockfile metadata, and tool output |
yq |
Inspect or validate YAML config, including kasetto.yaml |
ast-grep / sg |
Structural verification of framework APIs, imports, routes, components, hooks, decorators, service providers, and tests |
Sourcegraph src CLI |
Large repo, monorepo, or cross-repo search when Sourcegraph is configured |
repomix |
Create compact AI-readable project context for sub-agents on large or complex repos |
semgrep |
Targeted static-analysis signals for security, framework usage, and coding-standard skill needs |
Tool rules:
- Treat all tool output as evidence, not final truth.
- Prefer direct manifests and framework config over broad source matches.
- Prefer
ast-grep over regex for structural source checks when available.
- Use Sourcegraph only when configured for the active repo or organization.
- Use
repomix to support summarization, not as a substitute for direct verification.
- Avoid expensive full-repo scans unless the project is small or the user asked for deep scouting.
5. Plan Kasetto Changes
Read existing kasetto.yaml if present.
Preserve:
- valid existing skills
agent
destination
scope
mcps
- comments where practical
- existing source grouping
Default shape:
agent: opencode
scope: project
skills:
- source: https://github.com/example/skill-pack
skills:
- framework-skill
If the existing config uses several agents, preserve that style:
agent:
- opencode
- claude-code
- codex
scope: project
Rules:
- Do not duplicate source blocks.
- Do not duplicate skill names within a source block.
- Group skills by source.
- Prefer project scope unless user or existing config requires otherwise.
- Add comments only when they clarify provenance or deferred manual review.
- Do not include marketplace-only URLs unless Kasetto can sync them.
- Do not run
kst sync without --dry-run.
6. Validate
Run safe validation only.
When kst is available:
kst sync --config kasetto.yaml --dry-run
If unavailable:
command -v kst || true
Report whether validation passed, failed, or was skipped.
Do not run a real sync/install unless the user explicitly approves.
Final Response
Report:
- target project root
- detected P0/P1 technologies with evidence paths
- skills added to
kasetto.yaml, grouped by source
- strong candidates rejected or deferred, with reasons
- validation result from
kst sync --config kasetto.yaml --dry-run, or why it was not run
- any assumptions or limitations, especially network/search limitations
1---2name: skill-scout3description: Analyze the active project, identify high-value technologies, research compatible agent skills, and create or update a project-scoped kasetto.yaml. Use when asked to scout, recommend, install, update, or manage project-specific agent skills with kasetto, kst, or kasetto.yaml.4license: MIT5---67# Skill Scout89Build or update a project-specific `kasetto.yaml` for the repository the agent is currently working in.1011The target is the user's active project root, not the repository that distributed this skill.1213Use this skill directly when the user asks to scout, find, recommend, install, or update project-specific skills. Do not route through a separate `scout-skills` command; this skill is the canonical workflow.1415## Operating Principles1617- Prefer evidence over guesses.18- Prefer a small set of high-impact skills over a large generic bundle.19- Prefer official, maintained, popular, and source-auditable skills.20- Prefer direct language, framework, devops, platform, and workflow skills over generic design or broad bundle skills when both fit.21- Treat stars and recent activity as soft trust signals, not hard gates.22- Treat marketplaces as discovery surfaces, not automatic trust authorities.23- Only write Kasetto-compatible Git or local sources.24- Never run a real sync/install unless the user explicitly asks.2526## Sub-Agent Strategy2728When the host agent supports sub-agents or task delegation, use them for discovery and research. If sub-agents are unavailable, perform the same roles sequentially and say so in the final response.2930Recommended roles:3132| Role | Purpose | Output |33| ------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------- |34| `project-inventory` | Inspect the active project and identify verified technologies | Technology inventory with evidence paths |35| `skill-researcher` | Research skills for P0/P1 technologies using online and local sources | Candidate matrix with source URLs, evidence, and recommendation |36| `kasetto-planner` | Convert approved candidates into a minimal `kasetto.yaml` patch | Proposed YAML changes and duplicate/conflict notes |37| `validator` | Run safe validation commands only | Dry-run result and warnings |3839The `skill-researcher` phase is mandatory when sub-agents are available. Launch the bundled researcher agent from `agents/skill-scout-researcher.md` or an equivalent isolated research worker instead of doing all online research in the main agent. Keep final YAML editing in the main agent unless the host agent has reliable patch isolation.4041## Required References4243Read these before editing config:4445| Task | Read |46| ------------------------------------ | --------------------------------- |47| `brief --json` discovery | `references/brief-discovery.md` |48| Project detection and prioritization | `references/scouting-workflow.md` |49| Mandatory online skill research | `references/online-research.md` |50| Kasetto config rules and examples | `references/kasetto-config.md` |5152## Workflow5354### 1. Confirm Target Project5556Determine the active project root.5758Use, in order:59601. `git rev-parse --show-toplevel`612. current working directory if not in a Git repo623. user-provided path, if explicitly given6364Before writing files, state the target project root in the working notes or final response.6566Do not analyze the skill repository itself unless it is the active project where the command was invoked.6768### 2. Build Project Inventory6970Run `brief --json` when available:7172```bash73command -v brief >/dev/null && brief --json74```7576Treat `brief --json` as discovery evidence only. Verify high-value findings against direct evidence:7778* manifests: `package.json`, `composer.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `Gemfile`, `mix.exs`79* framework config: `vite.config.*`, `nuxt.config.*`, `next.config.*`, `tailwind.config.*`, `terraform/**/*.tf`, `wrangler.toml`, `sst.config.*`80* source imports/usages81* CI/deployment config82* lockfiles only when needed to confirm package versions or ecosystem shape8384Capture each detected technology as:8586```yaml87technology: Laravel88priority: P089evidence:90 - composer.json: require.laravel/framework91 - artisan92reason: Primary application framework.93```9495### 3. Prioritize Technologies9697Use this priority model:9899| Priority | Meaning | Action |100| -------- | ------------------------------------------------------------------------------- | ------------------------------------- |101| P0 | Primary framework/runtime/platform that shapes most implementation work | Must research skills |102| P1 | Major package, UI system, infra platform, testing stack, or deployment platform | Must research skills |103| P2 | Useful but secondary library/tooling | Research only if obvious skill exists |104| P3 | Minor, transitive, incidental, or low-impact | Ignore unless user asked |105106High-value signals include:107108* Application frameworks: Laravel, Nuxt, Vue, React, Next.js, SvelteKit, Rails, Django, FastAPI, Phoenix, Tauri, Electron109* CLI frameworks: Cobra, Viper, Clap, Typer, Click110* UI/design systems: Tailwind, shadcn/ui, Radix, Chakra, MUI, SwiftUI, Jetpack Compose, Flutter, Storybook, Figma workflows111* Developer platforms: Cloudflare Workers/Pages/D1/R2/KV/Queues, Vercel, Netlify, Supabase, Firebase, AWS CDK/SST, Terraform, Pulumi112* Major ecosystems: Charmbracelet, macOS/iOS Swift, Laravel packages, Nuxt modules, VueUse, Vite, Bun, GoReleaser, release-please113114Add Taste Skill as a candidate when the project includes frontend, product UI, marketing UI, mobile UI, visual redesign, Storybook, Figma-adjacent workflows, or design-system work. Do not let a design-only candidate displace a stronger direct language, framework, devops, or platform skill unless design work is the project's dominant surface. Still verify that a usable Kasetto source exists before adding it.115116### 4. Research Skills117118Research online before selecting skills for every P0/P1 technology.119120Use at least two external discovery sources per P0/P1 technology when network/search tools are available. Start by probing preferred curated sources and only then fall back to generic search:121122* preferred curated pack: `Jeffallan/claude-skills` for language, framework, devops, platform, and workflow skills123* preferred curated catalog: `VoltAgent/awesome-agent-skills`124* SkillsHub Resolve API (`https://skillshub.wtf/docs`)125* `bash references/resolve-skillshub.sh "<task describing the technology and goal>"`126* official vendor/team repositories containing `SKILL.md`127* LobeHub Skills Marketplace128* `npx -y @lobehub/market-cli skills search --q "<technology>" --sort installCount --order desc --output json`129* GitHub code search for `SKILL.md` plus the technology name130* trusted local skills already installed in agent skill directories131132Local installed skills are candidates, not the complete search space.133134For each candidate, capture:135136```yaml137name:138technology:139source_url:140kasetto_source:141source_type: git | local | marketplace-only | unknown142adoption_signals:143 stars:144 last_updated:145evidence:146trust:147maintenance:148fit:149decision: add | defer | reject150reason:151```152153Reject or defer candidates when:154155* no Git or local source can be identified156* the source is paid, opaque, private, provenance-free, or unaudited157* the skill is generic and overlaps with a more specific trusted skill158* a broad or design-oriented skill is outranked by a direct language, framework, devops, or platform skill from a trusted curated or official source159* the repository appears abandoned or low-quality160* the skill does not clearly match a verified P0/P1 technology161162If online search is unavailable, do not silently produce a local-only config. Report the limitation and ask before continuing with local-only recommendations, unless the user explicitly allowed offline mode.163164## Optional Discovery Tools165166Use these tools when available. Do not fail the scout if they are missing.167168| Tool | Use |169| --------------------- | ----------------------------------------------------------------------------------------------------------------------- |170| `references/resolve-skillshub.sh` | Query SkillsHub resolve API for ranked skill candidates from natural-language task descriptions |171| `rg` | Fast source search and fallback discovery |172| `fd` | Fast manifest/config discovery |173| `jq` | Parse `brief --json`, `package.json`, lockfile metadata, and tool output |174| `yq` | Inspect or validate YAML config, including `kasetto.yaml` |175| `ast-grep` / `sg` | Structural verification of framework APIs, imports, routes, components, hooks, decorators, service providers, and tests |176| Sourcegraph `src` CLI | Large repo, monorepo, or cross-repo search when Sourcegraph is configured |177| `repomix` | Create compact AI-readable project context for sub-agents on large or complex repos |178| `semgrep` | Targeted static-analysis signals for security, framework usage, and coding-standard skill needs |179180Tool rules:181182- Treat all tool output as evidence, not final truth.183- Prefer direct manifests and framework config over broad source matches.184- Prefer `ast-grep` over regex for structural source checks when available.185- Use Sourcegraph only when configured for the active repo or organization.186- Use `repomix` to support summarization, not as a substitute for direct verification.187- Avoid expensive full-repo scans unless the project is small or the user asked for deep scouting.188189### 5. Plan Kasetto Changes190191Read existing `kasetto.yaml` if present.192193Preserve:194195* valid existing skills196* `agent`197* `destination`198* `scope`199* `mcps`200* comments where practical201* existing source grouping202203Default shape:204205```yaml206agent: opencode207scope: project208209skills:210 - source: https://github.com/example/skill-pack211 skills:212 - framework-skill213```214215If the existing config uses several agents, preserve that style:216217```yaml218agent:219 - opencode220 - claude-code221 - codex222scope: project223```224225Rules:226227* Do not duplicate source blocks.228* Do not duplicate skill names within a source block.229* Group skills by source.230* Prefer project scope unless user or existing config requires otherwise.231* Add comments only when they clarify provenance or deferred manual review.232* Do not include marketplace-only URLs unless Kasetto can sync them.233* Do not run `kst sync` without `--dry-run`.234235### 6. Validate236237Run safe validation only.238239When `kst` is available:240241```bash242kst sync --config kasetto.yaml --dry-run243```244245If unavailable:246247```bash248command -v kst || true249```250251Report whether validation passed, failed, or was skipped.252253Do not run a real sync/install unless the user explicitly approves.254255## Final Response256257Report:258259* target project root260* detected P0/P1 technologies with evidence paths261* skills added to `kasetto.yaml`, grouped by source262* strong candidates rejected or deferred, with reasons263* validation result from `kst sync --config kasetto.yaml --dry-run`, or why it was not run264* any assumptions or limitations, especially network/search limitations