Categories
Categories let you define named, domain-specific configurations for Shuttle (Weave's specialist worker). When Loom delegates work to Shuttle with a category, or when Tapestry routes a /start-work plan task to shuttle-{category}, Shuttle picks up that category's model, temperature, and custom instructions automatically.
Use categories when you have distinct technical domains in your project that benefit from different models or settings — for example, a monorepo with separate frontend (React) and backend (Python) workstreams.
Defining Categories
Add a top-level categories object in your config:
{
"categories": {
"backend": {
"description": "Python FastAPI backend",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "Use async/await. Include docstrings. Follow PEP 8."
},
"frontend": {
"description": "React TypeScript UI",
"model": "openai/gpt-5",
"temperature": 0.2,
"prompt_append": "Use React 18+ hooks. Test accessibility. Use Tailwind CSS."
}
}
}Each category supports:
| Field | Description |
|---|---|
description | Human-readable description of what this category covers |
model | LLM to use for tasks in this category |
temperature | Creativity dial for this category (lower = more deterministic) |
prompt_append | Instructions appended to Shuttle's prompt for this category |
How Loom Uses Categories
Loom's prompt is dynamically generated based on the categories defined in your config. When you add a new category, Loom automatically learns which category-specific Shuttle agents are available — no manual wiring required.
Loom's dynamic prompt builder produces:
- A delegation table (which agent for which task)
- A category routing guide (which
shuttle-{category}agents exist and when to prefer them) - Tool selection guidance
When category patterns are configured, Loom is guided to prefer the matching shuttle-{category} agent instead of generic shuttle. For example, if a task matches your backend category, Loom should prefer shuttle-backend, which inherits that category's model, temperature, and prompt_append.
Categories without patterns are still available to Loom as domain-specific specialists, but they are not auto-routed from file matches. Loom uses them when the task domain is clear from the request.
How Tapestry Uses Categories
During /start-work plan execution, Tapestry can also route category-specific work to shuttle-{category} agents. This uses the same category configuration, so a task routed to shuttle-backend inherits the backend model, temperature, and prompt_append just like a Loom → shuttle-{category} delegation.
In practice, categories power both routing paths:
- Loom →
shuttle-{category}for category-aware delegation during interactive orchestration - Tapestry →
shuttle-{category}for category-aware task execution during/start-workplan execution
INFO
Categories are primarily relevant to Shuttle and Shuttle-derived category routing. Loom can delegate to category-specific shuttle-{category} agents (or use generic shuttle when nothing matches), and Tapestry can route /start-work execution tasks to shuttle-{category}. Other agents themselves (Loom, Tapestry, Pattern, etc.) are still configured directly via agents.<name> in your config, not through categories.
Example: Full-Stack Project
{
"categories": {
"backend": {
"description": "Python FastAPI backend services",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "Use async/await throughout. Add type hints to all functions. Include docstrings for public APIs. Follow PEP 8."
},
"frontend": {
"description": "React TypeScript UI components",
"model": "openai/gpt-5",
"temperature": 0.2,
"prompt_append": "Use React 18+ hooks only (no class components). Use Tailwind CSS for styling. Test with React Testing Library. Ensure WCAG 2.1 AA accessibility."
},
"infra": {
"description": "Terraform and Docker infrastructure",
"model": "anthropic/claude-opus-4",
"temperature": 0.0,
"prompt_append": "Use Terraform 1.9+. Follow the principle of least privilege for IAM. Add comments to all non-obvious resource configurations."
}
}
}With this config, Loom can prefer shuttle-backend, shuttle-frontend, or shuttle-infra when a task matches those category patterns — each with the most appropriate model and settings. During /start-work plan execution, Tapestry can likewise dispatch work to shuttle-backend, shuttle-frontend, or shuttle-infra using those same category definitions.
Combining with Skills
Categories and skills work well together. You can assign skills to specific agents that are commonly invoked for a category's workload. For example, assign your python-typing and fastapi-patterns skills to Shuttle, and they'll be available when working in the backend category.
