π§© Agents¶
Twenty built-in specialist roles, plus 35 language-aware agent blocks that override three of them per language pack. Scoped packs. No βhold the monorepo in your headβ cosplay. π
Roster π¶
| ID | Tools | Output | When |
|---|---|---|---|
coordinator | β | JSON actions | Pre-exec + each wave π§ |
orchestrator | β | decisions | Reserved |
context | β | CONTEXT body | Run start π |
explorer | β
+ find_models / mcp_call | file map | Deep explore π |
docs | β
+ find_models / mcp_call | docs map | Docs/API queries π |
architect | β | design JSON | Large/refactor ποΈ |
planner | β | plan JSON | Always π |
splitter | β | tasks JSON | Always βοΈ |
worker | β
+ find_models / mcp_call | status | Execute π οΈ |
deep | β
+ find_models / mcp_call | status | Multi-step π§ͺ |
reviewer | β | approve JSON | Critic π |
corrector | β
+ find_models / mcp_call | status | On reject π§ |
tester | β
+ find_models / mcp_call | passed + commands | Real shell verify (pytest/go/smoke) β |
placeholder | β
+ find_models / mcp_call | status + gaps | Fill stubs / flag precise gaps π©Ή |
escalate | β | action JSON | HITL timeout arbitrator (retry/re-scope/β¦) βοΈ |
memory | β | bullets | Learn πΎ |
composer | β | pipeline JSON | Assemble a task-specific pipeline (dynamic_pipeline) π― |
reviewer-strict | β | approve JSON | Sequential second opinion, asked only when reviewer returns no readable verdict; temperature 0 ππ |
describer | β | prose | Architect half of the describerβeditor pair (architect_editor) π£οΈ |
editor | β
+ find_models / mcp_call | status | Editor half: applies a described change, minimal reasoning, strict format βοΈ |
π§° Coding tools
Coding agents share ws_* + git_* plus find_models (auth-gated catalog) and mcp_call (single MCP meta-tool β never one tool per MCP capability).
β @escalate
Fired only when a task hits max review retries and the human does not answer the escalate modal / /escalate within escalate_ask_timeout (default 5m) β and only when no human is attached; with a TTY or a Studio client the gate blocks instead of expiring. Override the specialist with escalate_timeout_agent (auto: escalate β reviewer β coordinator).
Language agent blocks π¶
The twenty above are the roles. A language pack substitutes language-aware agents for some of them: override_worker sets execute.default_role, override_tester sets the test phase's agent, and the pack's pipeline block names the reviewer directly (execute.reviewer:). Those substitutes ship as agent blocks (pkg/blocks/bundled/agents/), 35 of them; slmcode blocks list prints the live set.
| Pack | worker | tester | reviewer |
|---|---|---|---|
go | go-worker | go-tester | go-reviewer |
python | python-worker | python-tester | python-reviewer |
typescript | ts-worker | ts-tester | ts-reviewer |
react | react-worker | react-tester | react-reviewer |
web | web-worker | web-tester | β |
rust | rust-worker | rust-tester | rust-reviewer |
java | java-worker | java-tester | java-reviewer |
kotlin | kotlin-worker | kotlin-tester | β |
dotnet | dotnet-worker | dotnet-tester | dotnet-reviewer |
ruby | ruby-worker | ruby-tester | β |
php | php-worker | php-tester | β |
swift | swift-worker | swift-tester | β |
cpp | cpp-worker | cpp-tester | β |
| (no pack) | shell-worker | shell-tester | β |
A pack whose pipeline does not name a reviewer uses the generic reviewer. shell-worker / shell-tester belong to no pack; the generic pipeline picks them up for a shell workspace.
slmcode blocks show agent go-tester # its prompt, tools, temperature, skills
slmcode blocks apply go --materialize-agents # copy them into .slmcode/agents/ to edit
Materializing is the supported way to customise one: the copy in .slmcode/agents/ wins over the builtin (see Blocks β Discovery Order).
Custom agents ⨶
.slmcode/agents/<id>.yaml or ~/.slmcode/agents/.
# TUI
/agent edit worker model=qwen2.5-coder:14b
# CLI
slmcode agent list
slmcode agent show worker
slmcode agent edit worker model=qwen2.5-coder:14b provider=ollama
slmcode agent clear-llm worker
Fields: skills, model, provider, endpoint, tools, temperature, max_tokens, max_iter, system_prompt.
LLM inheritance: empty model / provider / endpoint means inherit the active stack (global config.yaml). Per-agent pins always win.
agent.model ?? stack/global.model
agent.provider ?? stack/global.provider
agent.endpoint ?? (agent.provider ? default : global.endpoint)
model_profiles resolve against each agentβs effective model (not only the global one).
Different endpoints β unique backend keys (no accidental shared gateway).
Use anywhere in the pipeline¶
Custom agents are first-class:
- Specialist mode β select them in Studio /
mode: specialist - Board tasks β set
role: night-auditor(dropdown lists all/api/agents) - Pipeline slots β insert before/after/replace any phase in
.slmcode/pipeline.yaml
# .slmcode/pipeline.yaml
slots:
- id: audit-explore
agent: night-auditor
after: explore
input: |
Review exploration for risks.
{{exploration}}
β Pipeline
Coordinator actions π§¶
{
"summary": "Auth clear; tests missing",
"actions": [
{"type": "promote", "task_id": "T2", "text": "deps met"},
{"type": "reassign", "task_id": "T3", "role": "deep"},
{"type": "add_task", "text": "Add regression test", "role": "tester"},
{"type": "note", "task_id": "T1", "text": "edge case"}
],
"focus_files": ["pkg/foo.go"]
}
Air-traffic control, not pilot. Let workers fly the plane.
Delegating π¬¶
slmcode task add "Deep refactor auth" --role deep --column ready_to_dev
slmcode task delegate T1 docs
Project instructions π¶
Auto-loaded from:
AGENTS.md/AGENT.mdCLAUDE.md.cursorrules.slmcode/PROJECT.md
β π¦ Skills Β· π§ Concepts
βοΈ Made with β₯ by UnicoLab