From amp
Create custom toolbox tools for Amp using the toolbox protocol. Use when asked to create a tool, when asked to create a skill that requires a tool, or build toolbox executables.
How this skill is triggered — by the user, by Claude, or both
Slash command
/amp:amp-tool-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create custom toolbox tools that extend Amp's capabilities using simple executable scripts.
Create custom toolbox tools that extend Amp's capabilities using simple executable scripts.
tools/ directoryToolbox tools are executable files that communicate with Amp via stdin/stdout using a simple protocol. They can be written in any language—bash, zsh, JavaScript (bun), Python, Go, etc.
Key characteristics:
TOOLBOX_ACTION=describe to report their schemaTOOLBOX_ACTION=execute with parameters on stdintb__ prefix (e.g., run_tests → tb__run_tests)Global tools: ~/.config/amp/tools/
Project tools: .agents/tools/ (in workspace root)
Skill-bundled tools: skill-name/tools/
The AMP_TOOLBOX environment variable controls search paths (colon-separated, like PATH).
| Variable | Value | Available During |
|---|---|---|
TOOLBOX_ACTION | "describe" or "execute" | Both |
AGENT | "amp" | Both |
AMP_THREAD_ID | Current thread ID | Execute only |
Tools can use JSON format or text format. Amp auto-detects based on the describe output.
Simple and easy to parse. Best for tools that mostly call shell commands.
Describe output:
name: tool_name
description: What the tool does and when to use it.
param1: string description of param1
param2: string? optional parameter (note the ?)
param3: string (optional) another way to mark optional
Execute input: Key-value pairs on stdin
param1: value1
param2: value2
Optional parameter markers:
param: string?param: string (optional) descparam: string optional descBetter for structured parameters, arrays, and nested objects.
Describe output (compact args):
{
"name": "tool_name",
"description": "What the tool does",
"args": {
"workspace": ["string", "the workspace directory"],
"patterns": ["string", "optional test patterns"]
}
}
Describe output (full inputSchema):
{
"name": "tool_name",
"description": "What the tool does",
"inputSchema": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": { "type": "string" },
"description": "List of files to process"
}
},
"required": ["files"]
}
}
Execute input: JSON object on stdin
Use CLI or create manually:
# Create bash tool
amp tools make --bash tool_name
# Create zsh tool
amp tools make --zsh tool_name
# Create JavaScript/bun tool (default)
amp tools make tool_name
You may need to move the tool to the correct location after creation.
See templates below for language-specific patterns.
chmod +x path/to/tool_name
# Check schema
amp tools show tb__tool_name
# Test execution
amp tools use tb__tool_name --param value
The description is critical—it tells the agent when to use your tool.
Good descriptions:
Bad descriptions:
Include:
if [[ -z "$required_param" ]]; then
echo "Error: required_param is required" >&2
echo "Usage: provide the path to the config file" >&2
exit 1
fi
For tools in ~/.config/amp/tools/ or .agents/tools/:
# View tool schema
amp tools show tb__my_tool
# Run with parameters
amp tools use tb__my_tool --param1 value1 --param2 value2
# View only output (no metadata)
amp tools use --only output tb__my_tool --param1 value1
# List all tools
amp tools list
Tools inside a skill's tools/ directory aren't loaded until the skill is active. Test them manually:
# Test describe action
TOOLBOX_ACTION=describe ./skill-name/tools/my_tool
# Test execute action (text format)
echo "param1: value1" | TOOLBOX_ACTION=execute ./skill-name/tools/my_tool
# Test execute action (JSON format)
echo '{"param1": "value1"}' | TOOLBOX_ACTION=execute ./skill-name/tools/my_tool
chmod +x tool_nameAMP_TOOLBOX pathname: and description: linesTOOLBOX_ACTION=execute echo "param: value" | ./tool_name@references/owners-manual.md @references/appendix.md
npx claudepluginhub thurstonsand/ansiblonomicon --plugin ampProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.