home / skills / madappgang / claude-code / patterns

This skill helps implement agent patterns for proxy mode, TodoWrite integration, and quality checks across Claude Code plugins.

npx playbooks add skill madappgang/claude-code --skill patterns

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
6.3 KB
---
name: patterns
description: Common agent patterns and templates for Claude Code. Use when implementing agents to follow proven patterns for proxy mode, TodoWrite integration, and quality checks.
---
plugin: agentdev
updated: 2026-01-20

# Agent Patterns

## Proxy Mode Pattern

Enable agents to delegate to external AI models via Claudish.

```xml
<critical_constraints>
  <proxy_mode_support>
    **FIRST STEP: Check for Proxy Mode Directive**

    Before executing, check if the incoming prompt starts with:
    ```
    PROXY_MODE: {model_name}
    ```

    If you see this directive:

    1. **Extract model name** (e.g., "x-ai/grok-code-fast-1")
    2. **Extract actual task** (everything after PROXY_MODE line)
    3. **Construct agent invocation**:
       ```bash
       AGENT_PROMPT="Use the Task tool to launch the '{agent-name}' agent:

{actual_task}"
       ```
    4. **Delegate via Claudish**:
       ```bash
       printf '%s' "$AGENT_PROMPT" | npx claudish --stdin --model {model_name} --quiet --auto-approve
       ```
    5. **Return attributed response**:
       ```markdown
       ## {Task Type} via External AI: {model_name}

       {EXTERNAL_AI_RESPONSE}

       ---
       *Generated by: {model_name} via Claudish*
       ```
    6. **STOP** - Do not execute locally

    **If NO PROXY_MODE directive**: Proceed with normal workflow
  </proxy_mode_support>
</critical_constraints>
```

**Key Elements:**
- Check for directive first
- Use `--auto-approve` flag
- Clear attribution in response
- STOP after proxy (don't continue locally)

---

## TodoWrite Integration Pattern

Every agent must track workflow progress.

```xml
<critical_constraints>
  <todowrite_requirement>
    You MUST use TodoWrite to track your workflow.

    **Before starting**, create todo list:
    1. Phase 1 description
    2. Phase 2 description
    3. Phase 3 description

    **Update continuously**:
    - Mark "in_progress" when starting
    - Mark "completed" immediately after finishing
    - Keep only ONE task "in_progress" at a time
  </todowrite_requirement>
</critical_constraints>

<workflow>
  <phase number="1" name="Phase Name">
    <step>Initialize TodoWrite with all phases</step>
    <step>Mark PHASE 1 as in_progress</step>
    <step>... perform work ...</step>
    <step>Mark PHASE 1 as completed</step>
    <step>Mark PHASE 2 as in_progress</step>
  </phase>
</workflow>
```

---

## Quality Checks Pattern (Implementers)

```xml
<implementation_standards>
  <quality_checks mandatory="true">
    Before presenting code, perform these checks in order:

    <check name="formatting" order="1">
      <tool>Biome.js</tool>
      <command>bun run format</command>
      <requirement>Must pass</requirement>
      <on_failure>Fix and retry</on_failure>
    </check>

    <check name="linting" order="2">
      <tool>Biome.js</tool>
      <command>bun run lint</command>
      <requirement>All errors resolved</requirement>
      <on_failure>Fix errors, retry</on_failure>
    </check>

    <check name="type_checking" order="3">
      <tool>TypeScript</tool>
      <command>bun run typecheck</command>
      <requirement>Zero type errors</requirement>
      <on_failure>Resolve errors, retry</on_failure>
    </check>

    <check name="testing" order="4">
      <tool>Vitest</tool>
      <command>bun test</command>
      <requirement>All tests pass</requirement>
      <on_failure>Fix failing tests</on_failure>
    </check>
  </quality_checks>
</implementation_standards>
```

---

## Review Feedback Pattern (Reviewers)

```xml
<review_criteria>
  <feedback_format>
    ## Review: {name}

    **Status**: PASS | CONDITIONAL | FAIL
    **Reviewer**: {model}

    **Issue Summary**:
    - CRITICAL: {count}
    - HIGH: {count}
    - MEDIUM: {count}
    - LOW: {count}

    ### CRITICAL Issues
    #### Issue 1: {Title}
    - **Category**: YAML | XML | Security | Completeness
    - **Description**: What's wrong
    - **Impact**: Why it matters
    - **Fix**: How to fix it
    - **Location**: Section/line reference

    ### HIGH Priority Issues
    [Same format]

    ### Approval Decision
    **Status**: PASS | CONDITIONAL | FAIL
    **Rationale**: Why this status
  </feedback_format>
</review_criteria>

<approval_criteria>
  <status name="PASS">
    - 0 CRITICAL issues
    - 0-2 HIGH issues
    - All core sections present
  </status>
  <status name="CONDITIONAL">
    - 0 CRITICAL issues
    - 3-5 HIGH issues
    - Core functionality works
  </status>
  <status name="FAIL">
    - 1+ CRITICAL issues
    - OR 6+ HIGH issues
    - Blocks functionality
  </status>
</approval_criteria>
```

---

## Orchestrator Phase Pattern (Commands)

```xml
<phases>
  <phase number="1" name="Descriptive Name">
    <objective>Clear statement of what this phase achieves</objective>

    <steps>
      <step>Mark PHASE 1 as in_progress in TodoWrite</step>
      <step>Detailed action step</step>
      <step>Detailed action step</step>
      <step>Mark PHASE 1 as completed</step>
    </steps>

    <quality_gate>
      Exit criteria - what must be true to proceed
    </quality_gate>
  </phase>
</phases>

<delegation_rules>
  <rule scope="design">ALL design → architect agent</rule>
  <rule scope="implementation">ALL implementation → developer agent</rule>
  <rule scope="review">ALL reviews → reviewer agent</rule>
</delegation_rules>
```

---

## Agent Templates

### Planner Template
```yaml
---
name: {domain}-architect
description: |
  Plans {domain} features with comprehensive design.
  Examples: (1) "Design X" (2) "Plan Y" (3) "Architect Z"
model: sonnet
color: purple
tools: TodoWrite, Read, Write, Glob, Grep, Bash
---
```

### Implementer Template
```yaml
---
name: {domain}-developer
description: |
  Implements {domain} features with quality checks.
  Examples: (1) "Create X" (2) "Build Y" (3) "Implement Z"
model: sonnet
color: green
tools: TodoWrite, Read, Write, Edit, Bash, Glob, Grep
---
```

### Reviewer Template
```yaml
---
name: {domain}-reviewer
description: |
  Reviews {domain} code for quality and standards.
  Examples: (1) "Review X" (2) "Validate Y" (3) "Check Z"
model: sonnet
color: cyan
tools: TodoWrite, Read, Glob, Grep, Bash
---
```

### Orchestrator Template
```yaml
---
description: |
  Orchestrates {workflow} with multi-agent coordination.
  Workflow: PHASE 1 → PHASE 2 → PHASE 3
allowed-tools: Task, AskUserQuestion, Bash, Read, TodoWrite, Glob, Grep
---
```

Overview

This skill provides a collection of proven agent patterns and templates for building Claude Code agents in TypeScript. It standardizes proxy delegation, TodoWrite workflow tracking, quality checks, review feedback, and orchestrator phase structure. Use these patterns to speed implementation and enforce consistent behavior across agents.

How this skill works

The skill inspects incoming prompts for a PROXY_MODE directive and delegates to external models via Claudish when present, returning an attributed response and stopping local execution. It enforces TodoWrite integration so agents create and update a single in_progress task while progressing through defined phases. It also requires sequential quality checks (format, lint, typecheck, tests) before presenting code and supplies templates for planner, implementer, reviewer, and orchestrator agents.

When to use it

  • When you need to delegate a request to an external model using Claudish (proxy mode).
  • When building agents that must track progress and state via TodoWrite.
  • When implementing code-producing agents that must pass formatting, linting, type checking, and tests.
  • When creating multi-agent workflows with clear phase orchestration and delegation rules.
  • When standardizing review output and approval criteria for automated reviewers.

Best practices

  • Always check for a PROXY_MODE directive as the first step and stop local execution if present.
  • Construct clear Task-tool prompts for Claudish and include explicit attribution in the response.
  • Initialize TodoWrite with all phases before starting and ensure only one task is marked in_progress at a time.
  • Run quality checks in order: formatting, linting, type checking, then testing; fix failures before proceeding.
  • Use provided YAML/CLI templates for agent roles to enforce consistent tooling, models, and responsibilities.

Example use cases

  • Proxy a heavy code analysis request to a specialized external model while attributing the result and halting local processing.
  • Implement a feature using the orchestrator pattern: mark phase states in TodoWrite, run quality gates, and delegate tasks to developer and reviewer agents.
  • Create an implementer agent that formats, lints, typechecks, and tests code before submitting a PR or patch.
  • Run an automated reviewer agent that emits standardized review feedback with PASS/CONDITIONAL/FAIL status and structured issue breakdown.

FAQ

What happens when a PROXY_MODE directive is present?

The agent extracts the model and task, delegates execution via Claudish using --auto-approve, returns an attributed response, and stops local processing.

What quality checks are mandatory before presenting code?

Run formatting (Biome.js), linting (Biome.js), type checking (TypeScript), and tests (Vitest) in that order and fix failures before continuing.