Skip to content

Categories

Categories let you define named, domain-specific configurations for Shuttle (Weave's specialist worker). Each category generates a shuttle-{name} agent descriptor that inherits from the base shuttle agent with category-specific overrides. Adapters decide how those descriptors are materialised in a concrete harness.

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 category blocks to your .weave/config.weave:

weave
category backend {
  description "Python FastAPI backend"
  models ["anthropic/claude-opus-4"]
  temperature 0.1
  patterns ["src/api/**", "src/server/**", "src/db/**", "**/*.py"]
  prompt_append "Use async/await. Include docstrings. Follow PEP 8."
}

category frontend {
  description "React TypeScript UI"
  models ["openai/gpt-5"]
  temperature 0.2
  patterns ["src/components/**", "src/pages/**", "**/*.tsx", "**/*.css"]
  prompt_append "Use React 18+ hooks. Test accessibility. Use Tailwind CSS."
}

Each category supports:

FieldDescription
descriptionHuman-readable description of what this category covers
modelsOrdered model preference list for this category's shuttle agent
patternsGlob patterns for file-based routing
temperatureTemperature hint for this category's shuttle agent
prompt_appendInstructions appended to Shuttle's prompt for this category
prompt_append_fileFile path appended to Shuttle's prompt for this category
tool_policyTool policy overrides for this category's shuttle agent

Generated Agents

Each category block generates a shuttle-{category-name} agent descriptor. For example:

  • category backend generates shuttle-backend
  • category frontend generates shuttle-frontend

These descriptors carry the category's model list, temperature, appended prompt, and tool policy. Adapters receive these descriptors through the same spawnSubagent path as all other agents.

How Categories Work with Routing

When patterns are configured, adapters that support file-pattern routing can use them to route file-specific work to the appropriate category shuttle. Categories without patterns are still available as domain-specific specialists but are not auto-routed from file matches.

Adapters that support delegation routing (such as the OpenCode adapter) include category shuttle agents in Loom's delegation table. Loom can then delegate to shuttle-backend or shuttle-frontend based on the task domain. The routing metadata comes from the category descriptors generated by the engine; how adapters surface this routing to Loom is adapter-owned.

INFO

Categories are relevant to Shuttle and Shuttle-derived category routing. Other agents (Loom, Tapestry, Pattern, etc.) are configured directly via their own agent blocks, not through categories.

Example: Full-Stack Project

weave
category backend {
  description "Python FastAPI backend services"
  models ["anthropic/claude-opus-4"]
  temperature 0.1
  patterns ["src/api/**", "src/server/**", "src/db/**", "**/*.py"]
  prompt_append "Use async/await throughout. Add type hints to all functions. Include docstrings for public APIs. Follow PEP 8."
}

category frontend {
  description "React TypeScript UI components"
  models ["openai/gpt-5"]
  temperature 0.2
  patterns ["src/components/**", "src/pages/**", "**/*.tsx", "**/*.css"]
  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."
}

category infra {
  description "Terraform and Docker infrastructure"
  models ["anthropic/claude-opus-4"]
  temperature 0.0
  patterns ["infra/**", "**/*.tf", "**/Dockerfile"]
  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, the engine generates shuttle-backend, shuttle-frontend, and shuttle-infra descriptors. Adapters that support delegation routing expose these to Loom, which can then prefer the right specialist for each task.

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.

Released under the MIT License.