π§© Agents¶
Twenty-two built-in specialist roles, plus 46 language, UI and task-specific agent blocks. Language packs select worker, tester and reviewer specialists. 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 πΎ |
manager | β | squads + interface contracts | Assemble teams and ownership boundaries |
triage | β | assignee + guidance | Route rejected work to another available agent |
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 βοΈ |
Output contracts and recovery¶
Implementation roles return status, summary and files_changed. Testers return passed, executed commands, summary and failures; a read-only verification task does not need an implementation edit. Reviewers return approved, score, summary and issues. These contracts are enforced by schema and delivery gates. Finalization and recovery preserve the active role's contract, including language-specific testers. Failed or unexecuted checks do not become passes because a file was written.
Review and correction retain each team's charter and frozen interface. A fresh agent dispatch can read the files again after a predecessor's repetition guard has fired; repeated calls within that dispatch and task-wide retry budgets remain bounded.
π§° 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-two 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 alongside UI, repository-insight and OpenShift specialists as agent blocks (pkg/blocks/bundled/agents/), 46 in total; 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