add-mcp-tool — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited add-mcp-tool (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Scaffold a new tool handler that conforms to the project's handler signature (func (h *Handlers) HandleXxx(ctx, req, args XxxArgs)) and safety conventions.
Parse $ARGUMENTS:
$1 — snake_case tool name (required). Must start with talos_ (e.g. talos_drain_node).$2 — category, one of mutating | read (default read).Derive {{ToolName}} = PascalCase of $1 with the talos_ prefix stripped (e.g. talos_drain_node → DrainNode).
If any required argument is missing, ask the user once for the missing value, then proceed non-interactively.
$1 does not match ^talos_[a-z][a-z0-9_]*$.internal/tools/<name>.go does notexist. If it does, stop and report — do not overwrite.
references/handler-template.go.tmpl with{{ToolName}}, {{tool_name}}, {{category}} substituted. Write to internal/tools/<name>.go.
mutating, inline confirm bool andnodes []string on {{ToolName}}Args; set dry_run / preserve / graceful defaults from references/safety-defaults.md.
mcp.AddTool in internal/tools/ tolocate the registration site. Add the new entry in alphabetical order:
mcp.AddTool(server, &mcp.Tool{Name: "{{tool_name}}"}, h.Handle{{ToolName}})internal/tools/<name>_test.go with onehappy-path test and (for mutating) a guards-enforcement test.
gofmt -w internal/tools/<name>.go internal/tools/<name>_test.go.AGENTS.md andREADME.md. Preserve alphabetical order.
On success, print:
Created: internal/tools/<name>.go
internal/tools/<name>_test.go
Modified: <registration-file>
AGENTS.md (tool inventory)
README.md (tool inventory)
Next: make check
invoke staff-reviewer → .claude/reviews/<change-id>/review.md
commit → feat(tools): add <tool_name> handler [review:<change-id>]On abort (name invalid, collision, template missing): print the reason and exit without writes.
references/handler-template.go.tmpl — handler + args struct template patterned on internal/tools/lifecycle.go.references/safety-defaults.md — per-category default values (mirror of repo-root CLAUDE.md § Safety).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.