CLAUDE.md · git:20260322.317a097 · 2026-03-22 · sha256 437c8c63918e8d41

CLAUDE.md git:20260322.317a097A

Immutable. This exact content never changes and is served at /api/v1/blob/437c8c63918e8d41.

# Simmer Plugin

## Overview

Simmer is an iterative refinement skill. It takes any artifact — a single file, a workspace of multiple files, a pipeline, a configuration — and hones it repeatedly against user-defined criteria. Evaluation can be subjective (judge-based), objective (runnable script), or hybrid (both).

## Skills Included

| Skill | Triggers | Description |
|-------|----------|-------------|
| `simmer` | "simmer this", "refine this", "hone this", "iterate on this", "optimize this pipeline" | Orchestrator: setup → loop → output |

### Subskills (invoked by orchestrator)

| Subskill | Role |
|----------|------|
| `simmer:simmer-setup` | Identify artifact (file or workspace), elicit criteria, determine evaluation method, produce setup brief |
| `simmer:simmer-generator` | Produce improved candidate from current + ASI feedback + background context |
| `simmer:simmer-judge` | Score candidate 1-10 per criterion (with optional evaluator output), produce ASI |
| `simmer:simmer-judge-board` | Multi-judge panel with deliberation — drop-in replacement for simmer-judge when JUDGE_BOARD enabled |
| `simmer:simmer-reflect` | Record trajectory, track best-so-far, pass ASI forward |

## Flow

```
"Simmer this" / "Refine this" / "Optimize this pipeline"
    ↓
Setup (identify artifact + criteria + evaluation method)
    ↓
Iteration 0: Evaluate the seed
    ↓
Loop N times:
  Generate (address ASI) → Evaluate (run evaluator if present) → Judge (score + new ASI) → Reflect (record)
    ↓
Output best candidate + trajectory
```

## Key Design Decisions

**Context discipline:** Generator doesn't see scores (avoids optimizing for numbers). Judge doesn't see intermediate scores (avoids anchoring). Reflect is the only subskill that sees the full trajectory.

**Seed calibration:** Judge receives the seed artifact + iteration-0 scores on every iteration as a fixed calibration reference. Can score above or below the seed. This compresses score variance across runs.

**ASI (Actionable Side Information):** Judge identifies the highest-leverage direction each round. For single-file targets, this is a single focused fix. For workspace targets, this is a single strategic direction that may involve coordinated changes across multiple files. Focused directional improvement compounds better than scattered edits.

**Pluggable evaluation:** Three modes — judge-only (default, subjective criteria), runnable (script/command output), or hybrid (both). No format contract on evaluator output — the judge interprets whatever the evaluator produces.

**Regression handling:** Reflect tracks best-so-far. If an iteration regresses, next generator receives the best candidate, not the regressed one. In workspace mode, this means git checkout to the best iteration's commit.

**Agency integration (opt-in):** When `USE_AGENCY: true` and the Agency MCP server is available, judges are composed from task-matched primitives for strategic analysis, and the generator is composed for execution craft (formatting, model-aware writing, structural editing — not strategy). The board decides *what* to change; the Agency-composed generator is better at *how* to implement it. Evaluation scores feed back into Agency so primitives evolve across runs. Falls back to manual profiles / standard prompts if Agency is unavailable.

## Artifact Modes

| Mode | Artifact Type | Tracking |
|------|--------------|----------|
| **Single-file** (default) | One file or pasted text | `iteration-N-candidate.md` files |
| **Workspace** | Directory with multiple files | Git commits per iteration |

## Evaluation Modes

| Mode | When to use | How it works |
|------|------------|--------------|
| **Judge-only** (default) | Text artifacts, design docs, creative writing | Judge scores against criteria descriptions |
| **Runnable** | Code, pipelines, configs with test suites | Judge runs command, interprets output alongside criteria |
| **Hybrid** | Pipelines with both metrics and subjective quality | Judge runs command AND scores output against criteria |

## Related Skills

Simmer is part of the test-kitchen family but independently installable:
- `test-kitchen:omakase-off` — parallel design exploration
- `test-kitchen:cookoff` — parallel implementation competition
- `simmer` — iterative refinement of any artifact or workspace

## Directory Structure

```
simmer/
  .claude-plugin/
    plugin.json
  skills/
    SKILL.md                    # Orchestrator
    simmer-setup/
      SKILL.md                  # Identify artifact + elicit criteria + evaluation method
    simmer-generator/
      SKILL.md                  # Produce improved candidate
    simmer-judge/
      SKILL.md                  # Score + produce ASI (with optional evaluator output)
    simmer-reflect/
      SKILL.md                  # Record trajectory + track best
  docs/
    specs/
      2026-03-16-simmer-v2-design.md
  tests/
    integration/
      simmer-scenario.md        # Integration test scenarios
  CLAUDE.md
  README.md
```

## Artifact Output

**Single-file mode:**
```
{OUTPUT_DIR}/                    # Default: docs/simmer
  iteration-0-candidate.md      # Seed
  iteration-1-candidate.md      # Each improved candidate
  iteration-2-candidate.md
  iteration-3-candidate.md
  trajectory.md                 # Running score table
  result.md                     # Final best output
```

**Workspace mode:**
```
{WORKSPACE}/                    # The target directory (modified in place)
  [project files]               # Tracked via git commits per iteration

{OUTPUT_DIR}/
  trajectory.md                 # Running score table
```