Skip to content

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:

jsonc
{
  "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:

FieldDescription
descriptionHuman-readable description of what this category covers
modelLLM to use for tasks in this category
temperatureCreativity dial for this category (lower = more deterministic)
prompt_appendInstructions 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-work plan 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

jsonc
{
  "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.

Released under the MIT License.