Skip to content

🧩 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. 🎭

🧬

Mix brains: cheap local explorer + sharper cloud reviewer in one run β€” see Providers. Budget diplomacy is a feature.


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).

curl -s localhost:7420/api/agents | jq '.[].id'
# TUI: /agents

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.md
  • CLAUDE.md
  • .cursorrules
  • .slmcode/PROJECT.md

✨ Tiny AGENTS.md

# Agents
- Tiny, reviewable diffs
- No drive-by refactors
- Match existing style

β†’ πŸ¦‹ Skills Β· 🧠 Concepts

β˜€οΈ Made with β™₯ by UnicoLab