About mstack-find-skills
A skill matcher that first checks installed skills, then searches the skills.sh directory only for uncovered needs. It supports both direct user requests and calls from other mstack skills, with different question and installation rules for each mode.
Key features
- 01Inventories installed skills first
- 02Scores and selects skills for each task
- 03Searches public candidates only for gaps
- 04Controls questions and installation by mode
- 05Returns matches in work-item order
Use cases
- 01Finding suitable skills for work items
- 02Checking whether installed skills cover a task
- 03Screening public candidates for skill gaps
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ mubeda/ mstack --skill mstack-find-skillsAfter installing, type/mstack-find-skillsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
evals/called-three-tasks/case.yamlplace-files.shprompt.mdevals/called-three-tasks/files/app/README.mdevals/called-three-tasks/files/app/.agents/skills/python-email-testing/SKILL.md.fixtureevals/called-three-tasks/files/app/.agents/skills/sql-migrations/SKILL.md.fixtureevals/called-three-tasks/files/app/.claude/skills/react-testing/SKILL.md.fixtureevals/called-three-tasks/files/app/mailer/send.pyevals/called-three-tasks/files/app/plugins/vue-testing/skills/vue-testing/SKILL.md.fixtureevals/called-three-tasks/files/app/src/Cart.vueevals/called-three-tasks/graders/01-order.md02-no-wrong-framework.md03-also-read.md04-new-session.md05-email.md06-readme-empty.md07-no-online.md08-no-question-no-install.mdevals/failed-audit/case.yamlplace-files.shprompt.mdevals/failed-audit/files/bin/curlnpxevals/failed-audit/files/web/package.jsonevals/failed-audit/files/web/src/app.spec.tsevals/failed-audit/graders/01-fail-not-recommended.md02-not-audited.md03-no-install.md04-no-api-search.mdevals/no-network/case.yamlDetails
From the project READMEmstack-find-skills
Finds the skills that fit a job: installed skills first, then vetted public candidates from the skills.sh directory for the gaps only. Every other mstack skill takes its skill matches from here.
| Role | Claude Code | Codex |
|---|---|---|
| Question tool | AskUserQuestion | a numbered question in chat, then wait |
| Loading another skill | the Skill tool | read its SKILL.md |
Two modes
- User mode: the user invoked the skill. If they gave a text, that text is the one work item; do not ask what they need. If they gave nothing, ask one question about the job with your question tool and wait. Search nothing until the answer arrives.
- Called mode: another skill loaded this one and said which skill is calling. Ask nothing and install nothing, ever. Return one result block entry per work item, in the order given.
A called message lists work items, each with an ID, a goal, and optionally files and steps. An optional line Also read: <folders> names folders whose SKILL.md files join the inventory although they are not installed, such as a repository's own plugin folders. Two optional input lines change the run:
Online search: off (<reason>), or a message saying the network is unavailable: run no online step, and close withOnline search: not run (<reason>).Install: <owner/repo>@<skill>lines, one per candidate from an earlier result, in user mode: skip the inventory and the search, and go straight toreferences/install.mdwith those candidates.
Order of work
- Inventory. Read
references/matching.mdand build the list of installed skills for this host, then add theAlso readfolders. Mark each skillloads now,loads in a new sessionorrepository, not installed. - Score. Score every skill against every item with the rules in
references/matching.md. Keep at most four per item. An empty list is a valid answer. - Gaps. Mark the items with a clear domain and no match. An item that needs no specialist is not a gap.
- Search and vet. Only for gaps, follow
references/public-search.md. Recommend at most two candidates per gap, each vetted on audits, installs and age, license and its SKILL.md. When the search fails, report it as not run; never conclude that no public skill exists. - Report. Write the result block below.
- Install, user mode only. When the user wants a candidate, follow
references/install.md: one round of questions, then only the selected commands. In called mode, stop after the result block.
Result block
## mstack-find-skills result
### <ID>
Skills:
- <name> (<where installed>, <loads now | loads in a new session | repository, not installed>): <reason of six to twelve words>
Gaps:
- <what is missing> (searched: "<query>", "<query>")
- <owner/repo>@<skill>: installs <N>, first seen <date>, audits <vendor verdict (categories), ... | not audited>, license <license>, <skills.sh link>
Install: <the commands from references/install.md>
Online search: ran | not run (<reason>)
Write Skills: none or Gaps: none when a list is empty. Write one ### <ID> section per item, in the caller's order. In user mode, the item ID is 1.
Never report a candidate whose audit lookup failed or was not found as passed; it reads not audited. A candidate with a fail verdict or without a license is never recommended.