Skip to content
ceaksan

From OpenSpec to Brainstorm + Court: Spec-Driven Workflow with Worktree

Evolution from OpenSpec CLI to a brainstorm + court pipeline, multi-AI evaluation, and parallel spec-driven development with git worktree.

Apr 19, 2026 3 min read
TL;DR

OpenSpec CLI alone is not enough. Current flow: a brainstorm skill produces the spec, a court skill runs multi-AI evaluation, and plan + implement + critique + retro complete the chain. For large features, git worktree isolates implementation from main.

This post continues from where I covered ADR and spec-driven development foundations. If the basics are familiar, let’s look at how the tools have evolved and what a modern AI-assisted spec-driven workflow looks like in practice.

Evolution: From OpenSpec to Brainstorm + Court

When the first ADR post went out in January 2026, I was actively using OpenSpec. Within a few months, the tools evolved but the core principle stayed the same: spec first, then code. The Court skill implements the multi-AI evaluation approach detailed in Decision Gate v2: Multi-AI Tribunal. Open source: ceaksan/decision-gate.

Current Flow

Spec-driven development flow diagram
PhaseOld (OpenSpec)CurrentWhat Changed
Spec creationopenspec proposalBrainstorm skillAI assistant creates spec via interview, iterative
EvaluationManual reviewCourt (Multi-AI Tribunal)Multiple models cross-evaluate
Decision recordSeparate ADR fileCourt ADR outputCourt auto-generates ADR
Implementationopenspec applyPlan + ImplementBehavioral requirements, max 5/iteration
Archivingopenspec archiveRetroPattern extraction, core-rules update

What Stayed the Same?

  • Spec-first approach: Answering “what” before writing code
  • ADR principle: Documenting “why” behind critical decisions
  • Interview/brainstorm phase: Surfacing assumptions early
  • what + why + how to verify loop

What Changed?

  • Pipeline instead of single tool: OpenSpec was a single CLI tool, now there’s a brainstorm -> court -> plan -> implement -> critique -> retro chain
  • Multi-AI evaluation: Spec is evaluated by multiple models, not a single person/model
  • Automatic ADR: Court skill generates ADR output while evaluating the decision
  • Pattern learning: Retro phase writes learned patterns to core-rules

When to Use Which?

SituationApproach
Adding feature/capabilityBrainstorm -> Court -> Plan
Breaking API changeBrainstorm -> Court -> Plan
Choosing library X vs YCourt (with ADR output)
Architectural pattern decisionCourt (with ADR output)
Technology evaluationBreakdown
Bug fixJust commit message

Workflow with Worktree

Combining spec-driven development phases with git worktree enables parallel work. While the spec and decision flow run on main, implementation proceeds in an isolated worktree.

PhaseWorktree?Reason
Brainstorm + CourtNoJust spec/decision, can be rejected
ImplementationYesCode changes, isolation matters
RetroNoPost-merge, pattern extraction

The six-phase flow plays out in practice with these commands:

# 1-2. Brainstorm + Court (on main)
# /brainstorm -> spec is created
# /court -> GO/DEFER/KILL

# 3. Worktree after GO decision
git worktree add ../project-add-feature -b feat/add-feature
cd ../project-add-feature

# 4. Implement (in worktree)
# /implement -> plan gate + code

# 5. Critique
# /critique -> PASS/REJECTED

# 6. PR & Merge, then retro (on main)
# /retro -> pattern extraction
git worktree remove ../project-add-feature

This approach prevents conflicts on main during large features and buys you the “try experimental things during implementation” freedom, because if the worktree is rejected it just gets removed.

Practical ADR Template

To add this system to your project, two files are sufficient:

  1. docs/adr/_TEMPLATE.md - ADR template
  2. CLAUDE.md or reference in project configuration

An ADR template can have this structure:

# ADR-NNN: Title

**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-YYY
**Spec:** [spec-name](../specs/spec-name.md) <!-- if applicable -->

## Context

Describe the problem and current situation.

## Decision

What did we decide to do and why?

## Consequences

### Positive

- Benefit 1

### Negative

- Trade-off 1

### Alternatives Considered

- Alternative A: Why it was rejected

## Files Changed

| File              | Change                |
| ----------------- | --------------------- |
| `path/to/file.ts` | Description of change |

The Spec line is added when the decision is based on a spec document. The Files Changed table makes the scope concrete and shows which files were affected. When the Court skill auto-generates an ADR, it fills this template.

Relationship with Decision Gate

ADR and spec document the “why” and “what” of a decision. But there’s a question that comes before both: “should we?” For the framework that answers this question, see Decision Gate: The Missing Piece of Vibe Coding.

QuestionToolTiming
Should we?Court / Decision GatePre-decision
Why did we choose this path?ADR (Court output)Post-decision
What will we build, how will we verify?Spec (Brainstorm)Pre-implementation

The pipeline’s three phases map to these three questions: Court answers “should we” and produces the ADR, Brainstorm shapes the spec, and implement + critique show “how we verified it.”

Conclusion

Tools change: OpenSpec CLI gave way to the brainstorm + court pipeline. The core principle remains: answer “what” before starting implementation, document “why” for critical decisions, and isolate large features in a worktree.

If you haven’t looked at the upstream story, why ADR and SDD have different roles, start with the foundations post. I examine how ADRs transform into executable constraints for AI agents in Living Architecture Documentation for AI Agents. You can also check out the Living Architecture project where I converted these findings into a project-agnostic template.

Further Reading

  1. OpenSpec - Spec-Driven Development
  2. Claude Code: Best Practices for Agentic Coding
  3. Gemini CLI Conductor: Context-Driven Development
  4. Git worktree documentation
Key Takeaways
  • 01 OpenSpec's single-tool approach gave way to a brainstorm -> court -> plan -> implement -> critique -> retro pipeline
  • 02 The court skill is a multi-AI tribunal where multiple models cross-evaluate, not a single model verdict
  • 03 Git worktree isolates the implementation phase from main, enabling parallel work
  • 04 The retro phase writes learned patterns into core-rules and iteratively improves the process
  • 05 A commit message is enough for a bug fix; the pipeline is for new capabilities and architectural decisions
Frequently Asked Questions (FAQ)
+ Is OpenSpec still usable?

It still works, but today's AI assistants offer more integrated brainstorm/plan/critique capabilities. The spec-first principle hasn't changed, the tools became smoother.

+ What does the court skill actually do?

It routes a spec or decision proposal to multiple AI models (a tribunal) for cross-evaluation. Output is a GO, DEFER, or KILL verdict plus an auto-generated ADR file.

+ Do I need a worktree for every feature?

No. Small fixes and single-file edits can stay on main. Worktree is meaningful for multi-day, multi-file, or experimental features.

+ Is the retro phase really necessary?

Skip it and the learning is lost. Retro writes the patterns that emerged from the work (which mistake repeated, which shortcut worked) into core-rules and improves the next iteration.

+ Which tools does this flow run on?

Directly with Claude Code's skill system: /brainstorm, /court, /plan, /implement, /critique, /retro. Similar pipelines can be built as custom commands in Cursor or Gemini CLI.