Approve

Approve a specification phase

BrighterCommand 250 updated 23d ago
Claude CodeGeneric
View source ↗
---
allowed-tools: Bash(cat:*), Bash(test:*), Bash(touch:*), Bash(ls:*), Bash(echo:*), Bash(grep:*), Read, Write, Edit, Glob, AskUserQuestion
description: Approve a specification phase
argument-hint: requirements|design [adr-number]|tasks
---

## Context

Current spec directory: specs/

**Workflow**: Issue -> Requirements -> ADR(s) -> Tasks -> Tests -> Code

## Your Task

First, read `specs/.current-spec` to determine the active specification directory.

Parse $ARGUMENTS to extract phase and optional ADR number:
- Format: "requirements" or "design" or "design 0043" or "tasks"
- Phase is the first word
- ADR number (if provided) is the second word

### For "requirements" Phase

1. Verify `requirements.md` exists in the spec directory
2. Create approval marker: `touch specs/{current-spec}/.requirements-approved`
3. Inform user about next steps:
   - Next: Create one or more ADRs using `/spec:design [focus-area]`
   - Reminder: First ADR should be first commit on feature branch

### For "design" Phase

1. Verify at least one ADR exists for this spec
2. Read `specs/{current-spec}/.adr-list` to find associated ADRs
3. Determine which ADRs to approve:
   - **If ADR number specified** (e.g., "design 0043"): Approve only that ADR
   - **If no ADR number**: Approve ALL ADRs in the `.adr-list`

4. For each ADR to approve:
   - Read the ADR file from `docs/adr/{adr-filename}`
   - Use Edit tool to update Status from "Proposed" to "Accepted"
   - Find the line containing "## Status" followed by "Proposed"
   - Replace "Proposed" with "Accepted"

5. Create approval marker: `touch specs/{current-spec}/.design-approved`
6. Show user which ADRs were approved
7. Remind the user to commit the approved ADRs to git.
8. **Choose the implementation path (the certainty fork).** If more ADRs are still
   needed, tell the user to run `/spec:design [another-focus-area]` first and stop here.
   Otherwise the design is complete and there are **two** ways to break the work down — use
   `AskUserQuestion` to let the user pick:

   - **Attended — review each test** (`/spec:tasks` → `/spec:approve tasks` →
     `/spec:implement`): generates `tasks.md`, then a strict Red → **user approval** → Green
     → Refactor loop in the main agent on **sonnet**. Use this when the work is uncertain and
     each test should be reviewed in the IDE before implementation.
   - **Unattended — review in batches** (`/spec:ralph-tasks` → `/spec:ralph-implement`):
     generates `ralph-tasks.md` directly from this approved design (no `tasks.md` step, no
     per-test approval gates), then a self-driving loop on **opus** (auto mode) that delegates
     each task to a **sonnet** sub-agent. Use this when the work is well-understood and can be
     reviewed after a batch of tasks rather than at every test.

   This is "choose by certainty": some work warrants reviewing every test; other work can be
   reviewed at the end of a batch. Present both, let the user choose, and point them at the
   first command of the path they pick. Do **not** run that command yourself — just direct
   them to it.

### For "tasks" Phase

1. Verify `tasks.md` exists in the spec directory
2. Create approval marker: `touch specs/{current-spec}/.tasks-approved`
3. Inform user about next steps:
   - Next: Begin implementation using `/spec:implement`
   - Follow TDD: Write tests first, then code

### Invalid Phase

If phase name is not recognized, show valid options:
- `requirements` - Approve requirements specification
- `design [adr-number]` - Approve ADR(s) and update status to Accepted
- `tasks` - Approve task list

## Examples

```bash
# Approve requirements
/spec:approve requirements

# Approve all ADRs for current spec
/spec:approve design

# Approve specific ADR
/spec:approve design 0043

# Approve tasks
/spec:approve tasks

Use Edit tool to update ADR status, touch command for approval markers. ```

Maintain Approve?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

Approve on getagentictools
[![Approve on getagentictools](https://getagentictools.com/badge/loops/brightercommand-approve-requirements.svg)](https://getagentictools.com/loops/brightercommand-approve-requirements?ref=badge)