Use when an agent needs to enumerate roster agent declarations, read one agent's full prompt-native brief, or materialize a declaration for a specific harness. Roster is the agent declaration repository for Misty Step Factory: `agents/<name>/role.yaml` + `instructions.md` in, prompt-native text out. It declares agents; it does not spawn or run them.
Resources
12Install
npx skillscat add misty-step/roster Install via the SkillsCat registry.
Roster
Roster keeps agent identity in one plain-file tree
(agents/<name>/role.yaml + agents/<name>/instructions.md) and renders it as
prompt-native text for any harness. Treat declarations as the source of truth
for an agent's role, model policy, permissions, and skill/MCP bindings — never
edit a materialized output by hand. Read VISION.md before changing agent
declaration shape, primitive registries, provider routing, or phase scope.
For local MCP or CLI use, set ROSTER_ROOT to the roster checkout (defaults to
the current directory otherwise). The CLI additionally accepts --root per
invocation, which takes precedence.
Operating Contract
- Use
listto see every declared agent before dispatching or editing one. - Use
showto read a single declaration's full rendered role text. - Use
briefto compose a dispatch-ready packet: role prompt, skill paths,
MCP selection, permissions, subagent rights, evidence contract, and — with--card/card— the live Powder card context folded in. - Use
materializeto render one declaration into a harness-native shape
(claude,codex, orbb). This is read-only rendering, not installation. - Never hand-edit a materialized output (a rendered
.claude/agents/*.md,.codex/agents/*.md, or bb TOML). Fix the sourcerole.yaml/instructions.mdand re-render. - Identity changes (name, model policy, permissions, skills, MCPs) go through
role.yaml+instructions.md, then re-materialize — never a direct patch
to a rendered artifact. syncis the one mutating verb and it is opt-in and home-directory-scoped:
it writes harness-native agent files and a manifest under the caller's$HOME(.codex/agents/,.claude/agents/,.pi/agents/,.roster/orchestrator/). Only run it with the operator's awareness of what
it will touch on that machine;sync --disablerolls back exactly what the
manifest recorded.synchas intentionally no MCP tool (seecrates/roster-mcp/src/lib.rs) — it is CLI-only because an MCP call has no
reliable notion of "the caller's home" the way a local CLI invocation does.
Expected MCP Tools
list: list roster agents fromrole.yamldeclarations (optionalroot).show: show one roster agent declaration as prompt-native text (agent,
optionalroot).brief: render a prompt-native dispatch brief for one roster agent
(agent, optionalroot,add_skills,add_mcps).materialize: render one roster agent declaration for a specific harness —claude,codex, orbb(agent,harness, optionalroot).
CLI
roster list
roster show cerberus
roster materialize cerberus --harness codex
roster brief cerberus
roster brief sweep --card roster-012
roster sync
roster sync --disablePass --root <path> to any command to point at a roster checkout other than
the current directory (the MCP server uses the ROSTER_ROOT env var for the
same purpose when no root argument is given).
Local Gate
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspaceRed Lines
- Never hand-edit a materialized output. Change
role.yaml/instructions.md
and re-materialize instead. - Identity changes (name, model policy, permissions, skills, MCPs) go through
role.yaml, not a patch to rendered text. - Run
synconly with the operator's awareness — it writes into$HOME. - No secret values in declarations or the primitive registries; env refs only.