Quickstart
Build your own capability — scaffold, add one tool and one agent, install it locally, and drive it from the TUI in about ten minutes.
You ran web-security from the Quickstart and saw what an installed capability does. Now build one of your own. Scaffold the manifest, add one tool and one agent, install it into your local runtime, and drive it from the TUI.
Prerequisites
Section titled “Prerequisites”- The Dreadnode CLI installed and authenticated — see the Quickstart if you haven’t yet
- Python 3.11+
- A model provider configured (Authentication)
Scaffold the capability
Section titled “Scaffold the capability”dn capability init web-reconcd web-reconThe scaffold creates capability.yaml and a starter agents/example.md. Add --with-skills or --with-mcp to scaffold those folders too. Tools live under tools/ — create the directory yourself when you write the first one.
Write a tool
Section titled “Write a tool”Create tools/lookup.py:
import typing as t
from dreadnode import tool
@tooldef lookup_host( host: t.Annotated[str, "Hostname or IP to look up"],) -> dict[str, str]: """Resolve a host and return basic metadata.""" return {"host": host, "status": "reachable", "source": "stub"}Type hints become the tool schema the model sees. typing.Annotated supplies the parameter description.
Write an agent
Section titled “Write an agent”Create agents/recon.md:
---name: recondescription: Investigate a host and summarize what you found.model: anthropic/claude-sonnet-4-5-20250929tools: '*': false lookup_host: true---
You are a reconnaissance agent. Use `lookup_host` to investigate any host the user mentions and summarize the result in two sentences.The '*': false line opts the agent out of every runtime tool by default. lookup_host: true enables the one you just wrote.
Confirm the manifest
Section titled “Confirm the manifest”Open capability.yaml and make sure it looks like this:
schema: 1name: web-reconversion: 0.1.0description: Basic host reconnaissance capability.You don’t need to list agents: or tools: — the loader auto-discovers both when the keys are omitted.
Install locally
Section titled “Install locally”From the parent directory:
dn capability install ./web-reconinstall validates the manifest and symlinks the directory into your local store at ~/.dreadnode/capabilities/. Edits to the source are live on the next runtime reload.
Drive it from the TUI
Section titled “Drive it from the TUI”dnPress Ctrl+P, open the Installed tab, and enable web-recon. Start a new session with /agent recon, then send a prompt like Look up example.com. The agent calls lookup_host and returns the stubbed result.
Next steps
Section titled “Next steps”- Swap the stub tool body for a real implementation — Tools
- Add an MCP server for anything that isn’t pure Python — MCP servers
- Add a background worker to stream results out of the runtime — Workers
- Publish the capability so your team can install it — Publishing