toolsmith
Skill1 starsChanged 19 days agoMITView on GitHub
Scan the user's Claude Code history for repeated Bash patterns, build or change the small single-purpose toolsmith-* commands that replace them, and measure their use. Use when asked to scan for tool ideas, to build or change a toolsmith command, or to check how the commands are doing. Not for running a command - run `<command> --llm` for its guide.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- hhamja/skillstheir own version, first seen Oct 20, 2026
- zakame/brooks-agent-teamtheir own version, first seen Sep 25, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- zakame/brooks-agent-team★ 4same name
- hhamja/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- captureSkill
- project-logSkill
- project-memorySkill
- rails-contextSkill
- rails-design-systemSkill
- rails-generatorsSkill
- rails-hotwireSkill
- rails-minitestSkill
- rails-view-componentSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 0 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
Run ruby $T/scripts/analyse scan --metrics $T/metrics/weekly.json.
- Very specific: line 18
When a pattern is not a family yet, add one to families.json: an id, a title that completes "this command looks like ...", and rules (a …
- Very specific: line 20
Commit metrics/weekly.json and any families.json change.
- Very specific: line 26
Read references/contract.md.
- Very specific: line 27
Write the design as crates/<object>-<verb>/tool.json first, beside the existing tools' manifests: intent, usage, use_when, not_for, input, …
- Very specific: line 29
Write the crate: a Cargo.toml like an existing tool's, and src/main.rs that starts with Tool::new(include_str!("../tool.json")), passes the …
- Very specific: line 30
Add bin/<name>: a copy of an existing shim with the name changed, mode 755.
- Very specific: line 31
Run bin/test, then TEST_RUBY=/usr/bin/ruby TEST_BASH=/bin/bash bin/test, from the checkout root.
- Very specific: line 33
Add the tool to the table in $T/README.md, bump the minor version in $T/.claude-plugin/plugin.json, and commit.
- Very specific: line 40
Run ruby $T/scripts/analyse adoption --metrics $T/metrics/weekly.json.
- Very specific: line 41
Read the numbers against the tool's added date.
- Very specific: line 43
Share low, reminders not followed: read recent old-pattern commands (analyse examples --family <id>) to see why the tool did not fit.
- Very specific: line 44
Failures: read them with analyse examples --match '<tool name>', and fix the tool or the guide that misled.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Toolsmith
Toolsmith turns Bash patterns that Claude repeats into small commands with one job each. Each command is a Rust crate under crates/, reached through a shim in bin/ that the plugin puts on the Bash tool's PATH. The shim builds the binary on first use and after every change. The plugin's hooks list the commands at session start and remind Claude of one when a Bash command matches the pattern it replaces. Follow this document exactly. Nothing is built, blocked, or removed until the user approves it.
Where to work
The plugin directory is ${CLAUDE_SKILL_DIR}. When it is inside ~/.claude/plugins/cache, it is an installed copy: ask the user for the path of their checkout (the repository that holds toolsmith/) and work there. Below, $T means the plugin directory in that checkout. Follow the checkout's own CLAUDE.md for commits, tests and history.
1. Scan for opportunities
- Run
ruby $T/scripts/analyse scan --metrics $T/metrics/weekly.json. It prints the families (repeated patterns fromfamilies.json) by number of calls, the tool that covers each, and the most frequent commands that match no family. It also saves weekly counts, which keep the trend after Claude Code deletes old transcripts. - For each promising family or command, read real commands:
ruby $T/scripts/analyse examples --family <id> --limit 15, or--match '<regex>'. Find the one job those commands do again and again. - When a pattern is not a family yet, add one to
families.json: anid, atitlethat completes "this command looks like ...", andrules(a command matches when every regex of any one rule matches). Run the scan again to get its numbers. - Show the user a ranked shortlist. For each candidate: the job in one sentence, calls, sessions and projects, the proposed name and intent, and what a tool removes (boilerplate, extra turns, failures). Say which patterns are better left alone, for example when Claude Code's own tools already do the job.
- Commit
metrics/weekly.jsonand anyfamilies.jsonchange. Then wait for the user to choose. Build nothing without approval.
2. Build a tool
One tool at a time, after the user chose it.
- Read
references/contract.md. Every rule in it is a requirement. - Write the design as
crates/<object>-<verb>/tool.jsonfirst, beside the existing tools' manifests: intent, usage, use_when, not_for, input, options, output, exit codes, examples (including a failure),family,"mode": "remind", and today's date asadded. Check the name:type -a <name>andbrew info --formula <name>must find nothing. - Show the user the name, intent, usage and examples. Wait for approval of the design.
- Write the crate: a
Cargo.tomllike an existing tool's, andsrc/main.rsthat starts withTool::new(include_str!("../tool.json")), passes the arguments throughhandle_guide_flags, and leaves throughtool.exit,tool.failortool.usage_error. Use the standard library only. Put unit tests for the logic in the crate. - Add
bin/<name>: a copy of an existing shim with the name changed, mode 755. - Run
bin/test, thenTEST_RUBY=/usr/bin/ruby TEST_BASH=/bin/bash bin/test, from the checkout root. Fix every failure. - Try the tool on one real task like the examples from step 1 of the scan, and fix anything awkward in the tool or its guide.
- Add the tool to the table in
$T/README.md, bump the minor version in$T/.claude-plugin/plugin.json, and commit. - Tell the user that the command is available in new sessions.
To change an existing tool, follow the same steps from 1, starting from its tool.json. Keep its options and output compatible, or update every example and say what changed.
3. Review adoption
- Run
ruby $T/scripts/analyse adoption --metrics $T/metrics/weekly.json. For each tool and week it shows tool calls, tool errors, old-pattern calls and the tool's share, then the usage log: runs, failed runs, guide reads, reminders, and reminders followed by a run within 10 minutes. - Read the numbers against the tool's
addeddate. A useful tool's share rises week by week and its failures stay rare. - Propose actions, each with its evidence, and wait for approval:
- Share low, reminders not followed: read recent old-pattern commands (
analyse examples --family <id>) to see why the tool did not fit. Then improve the guide (use_when,not_for, examples) or the tool. - Failures: read them with
analyse examples --match '<tool name>', and fix the tool or the guide that misled. - Used well, but the old pattern continues: switch the tool to
"mode": "block". Do this only with the user's explicit approval. - Unused for four weeks or more, with no matching old-pattern calls: remove the tool.
- Share low, reminders not followed: read recent old-pattern commands (
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

