| name | tool-protocol |
| description | Find, build, or adapt automation tools following the Tool Protocol decision tree |
| compatibility | >=1.4 |
Tool Protocol
Skill metadata: version "1.1"; license MIT; tags [tools, automation, scripting, toolbox, plugins, mcp-apps]; compatibility ">=1.4"; recommended tools [codebase, editFiles, runCommands, fetch].
When a task requires automation, a scripted command sequence, or a repeatable utility, follow this decision tree before writing anything ad-hoc.
When to use
- The user asks to "build a tool", "create a script", or "automate" something
- You need a repeatable utility and want to check if one already exists
- You are evaluating whether to save a script to the toolbox
Decision tree
Need a tool for task X
โ
โโ 1. FIND โ check .copilot/tools/INDEX.md
โ โโ Exact match โ USE IT directly
โ โโ Close match โ ADAPT (fork, rename, note source in comment at top of file)
โ โโ No match โ โ
โ
โโ 1.5 BUILT-IN โ check VS Code's native tool capabilities
โ โโ Use the exact tool names surfaced by the active runtime; identifiers differ across clients
โ โโ Symbol/reference lookup โ find all references, implementations, callers of a symbol
โ โโ Problems/errors lookup โ get compile or lint errors for a file or the entire workspace
โ โโ Web fetch โ fetch web pages, docs, or API references
โ โโ Semantic search โ natural language search across the codebase
โ โโ Text/regex search โ fast exact-match or pattern search in workspace files
โ โโ Sufficient โ USE built-in tool
โ โโ Not sufficient โ โ
โ
โโ 1.6 PLUGIN TOOLS โ check installed agent plugins for contributed tools
โ โโ Search Extensions view with `@agentPlugins`
โ โโ Inspect plugin docs for commands, skills, hooks, and MCP servers
โ โโ Suitable existing capability โ USE plugin-contributed capability
โ โโ No suitable capability โ โ
โ
โโ 2. SEARCH online (try in order)
โ a. MCP server registry github.com/modelcontextprotocol/servers
โ b. GitHub search github.com/search?type=repositories&q=<task>
โ c. Awesome lists awesome-cli-apps ยท awesome-shell ยท awesome-python ยท awesome-rust ยท awesome-go
โ d. Stack registry npmjs.com / pypi.org / crates.io / pkg.go.dev
โ e. Official CLI docs git ยท docker ยท gh ยท jq ยท ripgrep ยท sed ยท awk (built-ins first)
โ โโ Found something usable โ evaluate fit, adapt as needed, note source
โ โโ Nothing applicable โ โ
โ
โโ 2.5 COMPOSE โ can this be assembled from 2+ existing toolbox tools via pipe or import?
โ โโ Yes โ compose; document the pipeline; save to toolbox if reusable
โ โโ No โ โ
โ
โโ 3. BUILD โ write the tool from scratch
- Follow ยง4 coding conventions and ยง3 LOC baselines
- Single-purpose: one tool, one job; compose via pipes or imports
- Accept arguments instead of hardcoding project-specific paths
- Required inline header at the top of every built or saved tool:
# purpose: <what this tool does โ one precise sentence>
# when: <when to invoke it | when NOT to invoke it>
# inputs: <argument list with types and valid values>
# outputs: <what it returns โ type and structure; include MCP Apps output when interactive UI is beneficial>
# risk: safe | destructive
# source: <url or "original" if built from scratch>
โ
โโ 4. EVALUATE reusability
โโ โฅ 2 distinct tasks in this project would benefit โ SAVE to toolbox
โ a. Place file in .copilot/tools/<kebab-name>.<ext>
โ b. Add a row to .copilot/tools/INDEX.md (see format below)
โโ Single-use / too project-specific โ use inline only; do not save
Toolbox
.copilot/tools/ is created on first tool save (no setup step required). Contents:
Files: INDEX.md (catalogue) ยท *.sh ยท *.py ยท *.js/*.ts ยท *.mcp.json
INDEX.md row format:
| Tool | Lang | What it does | When to use | Output | Risk |
|---|
count-exports.sh | bash | Count exported symbols per file | API surface audits | symbol counts to stdout | safe |
summarise-metrics.py | python | Parse metrics baselines and print trends | Kaizen review sessions | trend table to stdout | safe |
Tool quality rules
Naming โ Tool names must be a verb-noun kebab phrase describing the action (count-exports, sync-schema), not a noun or generic label (exports, utils).
Risk tier:
safe โ read-only or fully idempotent; invoke without confirmation
destructive โ deletes files, overwrites data, or writes to remote systems; must pause and confirm with the user before execution, regardless of session autonomy level
Other rules:
- Tools must be idempotent where possible
- Tools must not hardcode project-specific paths, names, or secrets โ accept arguments
- Retire unused tools: mark
[DEPRECATED] in INDEX.md; counts as W1 (Overproduction)
- Tools follow the same LOC baseline as source code (ยง3 hard limit: 400 lines)
- Output efficiency โ prefer targeted reads (
grep, head, jq) over raw dumps; return the minimum token payload the callsite requires.
- For interactive workflows (forms, tabular drill-down, visual states), prefer MCP Apps output over plain text when the runtime supports it.
Subagent tool use
Subagents inherit this protocol fully. A subagent may build or adapt a tool independently. To save a tool to the toolbox, the subagent must first flag the proposal to the parent agent, which confirms before any write to .copilot/tools/.