Full Configuration Example
This page shows a complete, annotated configuration that uses all of Weave's customization mechanisms together. Use it as a reference when building your own config.
Complete Config
{
// ── Domain-Specific Configurations for Shuttle ─────────────────
// Categories define named variants for different technical domains.
// Loom dynamically learns about these and routes work accordingly.
"categories": {
"backend": {
"description": "Python FastAPI backend",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "Use async/await. Include docstrings."
},
"frontend": {
"description": "React TypeScript UI",
"model": "openai/gpt-5",
"temperature": 0.2,
"prompt_append": "Use React 18+ hooks. Test accessibility."
}
},
// ── Per-Agent Customization ─────────────────────────────────────
// Configure each agent independently. All fields are optional —
// unset fields fall back to the agent's built-in defaults.
"agents": {
"loom": {
"display_name": "Tech Lead",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "When reviewing security-sensitive changes, delegate to BOTH Warp AND Security (GPT)."
},
"tapestry": {
"temperature": 0.0,
"prompt_append": "Coordinate `/start-work` execution carefully: delegate each plan task to Shuttle, verify the result, and keep plan/todo progress precise. Format all todos: [N/M: task]. Use checkmarks for complete.",
"skills": ["tdd"]
},
"shuttle": {
"display_name": "Senior Dev",
"skills": ["company-standards", "testing"],
"prompt_append": "Always verify before marking complete and report results back to Tapestry."
},
"pattern": {
"model": "anthropic/claude-opus-4",
"skills": ["planning-guidelines"],
"prompt_append": "Create detailed acceptance criteria."
},
"thread": {
"model": "anthropic/claude-3-haiku" // Cheaper model for read-only work
}
},
// ── Custom Agents ───────────────────────────────────────────────
// Define your own agents. They appear alongside built-ins in Loom's
// delegation table and follow the same model resolution chain.
"custom_agents": {
"security-gpt": {
"display_name": "Security (GPT)",
"description": "Independent security review using a second model",
"model": "openai/gpt-5",
"category": "advisor",
"cost": "EXPENSIVE",
"prompt": "You are a security auditor. Review code for OWASP Top 10 vulnerabilities. Produce a clear APPROVE or REJECT verdict.",
"tools": { "write": false, "edit": false, "bash": false },
"triggers": [
{ "domain": "Security", "trigger": "Independent security review for cross-model coverage" }
]
},
"docs-writer": {
"display_name": "Docs Writer",
"description": "Technical documentation specialist",
"model": "anthropic/claude-sonnet-4",
"category": "utility",
"cost": "CHEAP",
"prompt_file": ".opencode/prompts/docs-writer.md",
"skills": ["writing-style"],
"triggers": [
{ "domain": "Documentation", "trigger": "README updates, API docs, user guides, changelog entries" }
]
}
},
// ── Selective Disabling ─────────────────────────────────────────
// Remove what you don't need. Arrays from user config and project
// config are merged (union), so you can split across both files.
"disabled_agents": [],
"disabled_tools": [],
"disabled_hooks": ["context-window-monitor"],
"disabled_skills": [],
// ── Continuation Behavior ────────────────────────────────────────
// Keep post-compaction recovery on, but keep generic idle nudges off.
"continuation": {
"recovery": {
"compaction": true
},
"idle": {
"enabled": false,
"work": false,
"workflow": false,
"todo_prompt": false
}
}
}Key Architectural Notes
All Customization is Additive
prompt_append appends, skills prepend, categories layer on top. Base prompts are never modified — your customizations build on them. The only exception is agents.<name>.prompt, which fully replaces the base prompt.
Config is Layered
User-level defaults (~/.config/opencode/weave-opencode.jsonc) + project-level overrides (.opencode/weave-opencode.jsonc) merge gracefully. Nested objects deep-merge, arrays union, scalars favor the project config.
Delegation Flow
In a typical workflow, Loom is the primary orchestrator. When you run /start-work, Tapestry coordinates plan execution by delegating plan tasks to Shuttle and then verifying Shuttle's results before moving to the next step. Categories help Loom choose the right Shuttle variant for the task, while agent prompts and skills refine how each handoff is executed.
Skills are the Primary Extension Point
Skills are portable, reusable, and can be shared across teams or pulled from open-source repos. They're the recommended way to package domain knowledge for consistent reuse. See Skills.
Which Mechanism for Which Use Case
| Use Case | Mechanism |
|---|---|
| Add instructions to a specific agent | prompt_append on agents.<name> |
| Inject reusable domain knowledge | Skills (.opencode/skills/) |
| Optimize models per domain | Categories |
| Change which LLM an agent uses | agents.<name>.model |
| Rename an agent in the UI | agents.<name>.display_name |
| Restrict what tools an agent can use | agents.<name>.tools |
| Replace an agent's entire prompt | agents.<name>.prompt (use sparingly) |
| Add a new specialist agent | custom_agents |
| Add a parallel reviewer with a different model | custom_agents + Loom prompt_append |
| Remove an agent from the system | disabled_agents or agents.<name>.disable |
| Turn off a governance hook | disabled_hooks |
| Disable session analytics | disabled_hooks: ["analytics"] |
| Tune recovery vs idle continuation behavior | continuation |
| Exclude a specific skill | disabled_skills |
| Reshape the entire workflow | Workflow Customization |
