Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Writing an Agent Package

An agent package bundles a system prompt, optional skills, and configuration into an installable unit. This is how you distribute a complete agent persona.

Minimal manifest

[package]
name = "my-agent"
description = "What the agent does"
repository = "https://github.com/org/my-agent"
keywords = ["agent"]

[agents.my-agent]
description = "One-line agent description"

The repository field is required — the installer clones it to find the prompt file and any bundled skills.

Prompt discovery

Agent prompts are discovered by convention. For an agent key my-agent, the installer looks for agents/my-agent.md in the source repository and copies it to ~/.crabtalk/local/agents/my-agent.md.

You can also specify the path explicitly:

[agents.my-agent]
description = "One-line agent description"
prompt = "prompts/custom-path.md"

Bundling skills

If your repo includes skills under a skills/ directory, they are auto-discovered at runtime. You can declare which skills the agent uses:

[agents.my-agent]
description = "One-line agent description"
skills = ["code-review", "deploy"]

Agent options

[agents.my-agent]
description = "One-line agent description"
thinking = true          # enable reasoning mode
model = "claude-sonnet"  # model override
mcps = ["playwright"]    # MCP servers this agent can access

Cloning a specific branch

If the agent lives on a non-default branch:

[package]
name = "my-agent"
repository = "https://github.com/org/my-agent"
branch = "crabtalk"

Interactive setup

For agents that need configuration (API keys, preferences), use a setup prompt instead of a bash script. The prompt is sent to the daemon for inference:

[package.setup]
prompt = "setup.md"

See the Gstack example for a complete manifest.