Skip to content

Design agent

flowchart LR
  Triggers@{ shape: bolt, label: "Triggers" }
  DesignAgent["Design agent"]
  Issue@{ shape: notch-rect, label: "Issue
type: Feature / labels: Draft" }

  Triggers --triggers--> DesignAgent
  DesignAgent -- edits --> Issue

  class Triggers triggersOrange
  class DesignAgent designPurple

  classDef triggersOrange fill:#ffe8d4,stroke:#d66a28,color:#d66a28
  classDef designPurple fill:#f0d4f8,stroke:#a836e5,color:#a836e5

The Design agent reads a feature request, explores the codebase, and writes a comprehensive technical specification back to the issue. It bridges the gap between “here’s an idea” and “here’s what to build and how.”

Type: LLM (Claude)
Script: .autoducks/agents/design/pre.sh + post.sh

EventCondition
Issue comment/agents design
Issue assignedIssue has the Draft label
Pre-execution
  1. Reacts to the trigger comment with 👀.
  2. Fetches the issue content (title + body) and writes it to /tmp/issue-request.md.
LLM execution

The agent reads /tmp/issue-request.md and CLAUDE.md (codebase context), then explores the repository (read-only: Read, Bash for listing/grepping).

It writes a full design specification to /tmp/design-spec.md covering:

  • Problem statement — what the feature request is actually asking for
  • Proposed solution — the approach, with rationale
  • Architecture / design notes — how it fits into existing code
  • Affected files — which files will need to change and why
  • Out of scope — what won’t be addressed
  • Acceptance criteria — testable criteria for the implementation
Post-execution
  1. Validates that /tmp/design-spec.md was produced. On failure: reacts with 😕, posts an error comment, exits.
  2. Updates the issue body with the design specification.
  3. Sets the issue type to Feature.
  4. Removes the Draft label.
  5. Reacts with 👍 and posts a comment suggesting /agents devise to create the tactical plan.
  • Issue body updated with the full design specification
  • Issue type set to Feature
  • Draft label removed
permissions:
contents: read
issues: write
pull-requests: write
id-token: write

You can override model and reasoning settings inline:

/agents design --model claude-opus-4-7 --reasoning high
ArgumentDefaultDescription
--modelFrom .autoducks/autoducks.jsonClaude model to use
--reasoningFrom .autoducks/autoducks.jsonReasoning effort (low, medium, high)