← ClaudeAtlas

add-tool-packagelisted

Scaffold a new MCP tool package with registration, definitions, and tests
twindebank/tclaw · ★ 1 · AI & Automation · score 68
Install: claude install-skill twindebank/tclaw
Scaffold a new MCP tool package under `internal/tool/`. Ask the user for: 1. **Package name** — lowercase, no abbreviations (e.g. `weathertools`, `spotify`) 2. **Brief description** — what the tools do (e.g. "Weather forecasts and alerts") 3. **Tool group** — which group these belong to, or a new one (ask if unsure) 4. **Needs credentials?** — API key, OAuth, or none ## Reference patterns Before writing any code, read these files to match the exact patterns: - `internal/tool/tfl/package.go` — minimal package (optional secret, no OAuth) - `internal/tool/scheduletools/package.go` — package with extra dependencies - `internal/tool/toolpkg/toolpkg.go` — the `Package` interface - `internal/tool/all/all.go` — where packages are registered - `internal/tool/tfl/definitions.go` — tool definition pattern - `internal/toolgroup/group.go` — tool group constants Also read `docs/go-patterns.md` for code style rules. ## Files to create For a package named `{name}`: ### `internal/tool/{name}/package.go` - Struct implementing `toolpkg.Package` - `Name()` returns stable identifier - `Description()` returns human-readable summary - `Group()` returns the tool group - `GroupTools()` maps group to `[]claudecli.Tool` with glob pattern `"mcp__tclaw__{name}_*"` - `RequiredSecrets()` — empty slice if no credentials, or `[]SecretSpec{...}` with env prefix - `Info()` returns `*toolpkg.PackageInfo` with credential status - `Register()` calls `RegisterTools(handler, deps)` - If credentials needed: