Agent profiles on 3md
agent.3md
Your whole agent in one file.
A plain-text agent format built on 3md: plane 0 is the agent, every other plane is an on-demand skill. The same bytes are human docs, a queryable skill index, and a portable runtime manifest.
--- 3md: 1.0 axis: skill agent: dev tools: rg, fd --- @plane z=0 label="dev" kind=identity Route each request to a matching skill. @plane z=1 label="search" kind=skill triggers="find, search, grep, code" inputs="pattern:string, path:string" tool="rg --line-number {pattern} {path}" Find code by regex.
Separation of layers
3md is the format. agent.3md is the agent layer.
3md gives Markdown a named Z axis. agent.3md chooses what that axis means: skills. That keeps the base format broad, while giving agents a concrete profile, loader, validator, and tool surface.
The two should link to each other, but they should not share the same product page. People looking for the document format need the editor and parser story. People looking for agent wiring need routing, skill metadata, CLI bindings, and MCP.
The agent identity, operating rules, and default behavior.
Every other plane is an on-demand skill with instructions and metadata.
TypeScript, Rust, and Swift loaders read the same file shape.
The server exposes skills as callable tools for any MCP-capable agent.
Runtime shape
Route, fill, run.
Skills can be pure guidance, or they can bind to real commands. When a command exists, the profile turns agent intent into a typed, repeatable execution path.
- 01
route
Match the request against skill metadata: labels, triggers, inputs, costs, and links.
- 02
fill
Turn the selected skill into concrete typed inputs, then validate before execution.
- 03
run
Execute the bound command when a skill has one, or hand guidance back to the host agent.
Progressive disclosure
The skill index stays small. The skills stay deep.
A loader can read the manifest once, pick the best skill, then fetch only that plane. The agent does not need every skill body in context every turn.
That is the core reason agent.3md deserves its own page: the value is not only that it uses 3md, it is that it makes large skill libraries portable, queryable, and cheap to load.
$ agent3md route dev.agent.3md "find every TODO" skill: search inputs: pattern=TODO path=src $ agent3md run dev.agent.3md "find every TODO" pattern=TODO path=src rg --line-number TODO src
Start with the docs.
The docs cover the format, quickstart, skill metadata, CLI, loaders, MCP server, and conformance suite.