Categories
Categories let you define named, domain-specific configurations for Shuttle (Weave's coding specialist). When Loom delegates work to Shuttle with a 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 how to use it — no manual wiring required.
Loom's dynamic prompt builder produces:
- A delegation table (which agent for which task)
- A category and skills guide (how to invoke Shuttle per domain)
- Tool selection guidance
When Loom decides a task belongs to your backend category, it delegates to Shuttle with that category set. Shuttle then runs with the backend model, temperature, and prompt_append — a fully tailored specialist for that domain.
INFO
Categories are primarily relevant to Shuttle. Other agents (Loom, Tapestry, Pattern, etc.) are 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 will automatically route backend tasks to the backend category (low temperature, Python-focused instructions), frontend tasks to frontend, and infrastructure work to infra — each with the most appropriate model and settings.
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.
