feat(quick): make --full include all phases, add --validate flag

--full now enables discussion + research + plan-checking + verification.
New --validate flag covers what --full previously did (plan-checking +
verification only). All downstream workflow logic uses $VALIDATE_MODE.

Closes #1498

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Elliot Drel
2026-03-31 09:07:08 -04:00
parent 1421dc07bc
commit 5217b7b74a
5 changed files with 71 additions and 51 deletions

View File

@@ -6,6 +6,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Changed
- **`/gsd:quick --full` flag** — Now enables all phases (discussion + research + plan-checking + verification). New `--validate` flag covers previous `--full` behavior (plan-checking + verification only) (#1498)
## [1.30.0] - 2026-03-26
### Added

View File

@@ -1,7 +1,7 @@
---
name: gsd:quick
description: Execute a quick task with GSD guarantees (atomic commits, state tracking) but skip optional agents
argument-hint: "[--full] [--discuss] [--research]"
argument-hint: "[--full] [--validate] [--discuss] [--research]"
allowed-tools:
- Read
- Write
@@ -24,11 +24,13 @@ Quick mode is the same system with a shorter path:
**`--discuss` flag:** Lightweight discussion phase before planning. Surfaces assumptions, clarifies gray areas, captures decisions in CONTEXT.md. Use when the task has ambiguity worth resolving upfront.
**`--full` flag:** Enables plan-checking (max 2 iterations) and post-execution verification. Use when you want quality guarantees without full milestone ceremony.
**`--full` flag:** Enables the complete quality pipeline — discussion + research + plan-checking + verification. One flag for everything.
**`--validate` flag:** Enables plan-checking (max 2 iterations) and post-execution verification only. Use when you want quality guarantees without discussion or research.
**`--research` flag:** Spawns a focused research agent before planning. Investigates implementation approaches, library options, and pitfalls for the task. Use when you're unsure of the best approach.
Flags are composable: `--discuss --research --full` gives discussion + research + plan-checking + verification.
Granular flags are composable: `--discuss --research --validate` gives the same result as `--full`.
</objective>
<execution_context>

View File

@@ -134,7 +134,7 @@ Usage: `/gsd:do I want to start a new milestone`
### Quick Mode
**`/gsd:quick [--full] [--discuss] [--research]`**
**`/gsd:quick [--full] [--validate] [--discuss] [--research]`**
Execute small, ad-hoc tasks with GSD guarantees but skip optional agents.
Quick mode uses the same system with a shorter path:
@@ -143,14 +143,16 @@ Quick mode uses the same system with a shorter path:
- Updates STATE.md tracking (not ROADMAP.md)
Flags enable additional quality steps:
- `--full` — Complete quality pipeline: discussion + research + plan-checking + verification
- `--validate` — Plan-checking (max 2 iterations) and post-execution verification only
- `--discuss` — Lightweight discussion to surface gray areas before planning
- `--research` — Focused research agent investigates approaches before planning
- `--full` — Adds plan-checking (max 2 iterations) and post-execution verification
Flags are composable: `--discuss --research --full` gives the complete quality pipeline for a single task.
Granular flags are composable: `--discuss --research --validate` gives the same as `--full`.
Usage: `/gsd:quick`
Usage: `/gsd:quick --research --full`
Usage: `/gsd:quick --full`
Usage: `/gsd:quick --research --validate`
Result: Creates `.planning/quick/NNN-slug/PLAN.md`, `.planning/quick/NNN-slug/SUMMARY.md`
---

View File

@@ -1,13 +1,15 @@
<purpose>
Execute small, ad-hoc tasks with GSD guarantees (atomic commits, STATE.md tracking). Quick mode spawns gsd-planner (quick mode) + gsd-executor(s), tracks tasks in `.planning/quick/`, and updates STATE.md's "Quick Tasks Completed" table.
With `--discuss` flag: lightweight discussion phase before planning. Surfaces assumptions, clarifies gray areas, captures decisions in CONTEXT.md so the planner treats them as locked.
With `--full` flag: enables the complete quality pipeline — discussion + research + plan-checking + verification. One flag for everything.
With `--full` flag: enables plan-checking (max 2 iterations) and post-execution verification for quality guarantees without full milestone ceremony.
With `--validate` flag: enables plan-checking (max 2 iterations) and post-execution verification only. Use when you want quality guarantees without discussion or research.
With `--discuss` flag: lightweight discussion phase before planning. Surfaces assumptions, clarifies gray areas, captures decisions in CONTEXT.md so the planner treats them as locked.
With `--research` flag: spawns a focused research agent before planning. Investigates implementation approaches, library options, and pitfalls. Use when you're unsure how to approach a task.
Flags are composable: `--discuss --research --full` gives discussion + research + plan-checking + verification.
Granular flags are composable: `--discuss --research --validate` gives the same result as `--full`.
</purpose>
<required_reading>
@@ -27,9 +29,10 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo
**Step 1: Parse arguments and get task description**
Parse `$ARGUMENTS` for:
- `--full` flag → store as `$FULL_MODE` (true/false)
- `--discuss` flag → store as `$DISCUSS_MODE` (true/false)
- `--research` flag → store as `$RESEARCH_MODE` (true/false)
- `--full` flag → store `$FULL_MODE=true`, `$DISCUSS_MODE=true`, `$RESEARCH_MODE=true`, `$VALIDATE_MODE=true`
- `--validate` flag → store `$VALIDATE_MODE=true`
- `--discuss` flag → store `$DISCUSS_MODE=true`
- `--research` flag → store `$RESEARCH_MODE=true`
- Remaining text → use as `$DESCRIPTION` if non-empty
If `$DESCRIPTION` is empty after parsing, prompt user interactively:
@@ -48,25 +51,34 @@ If still empty, re-prompt: "Please provide a task description."
Display banner based on active flags:
If `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$FULL_MODE`:
If `$FULL_MODE` (all phases enabled — `--full` or all granular flags):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (DISCUSS + RESEARCH + FULL)
GSD ► QUICK TASK (FULL)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ Discussion + research + plan checking + verification enabled
```
If `$DISCUSS_MODE` and `$FULL_MODE` (no research):
If `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` (no `$FULL_MODE` — composed granularly):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (DISCUSS + FULL)
GSD ► QUICK TASK (DISCUSS + RESEARCH + VALIDATE)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ Discussion + research + plan checking + verification enabled
```
If `$DISCUSS_MODE` and `$VALIDATE_MODE` (no research):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (DISCUSS + VALIDATE)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ Discussion + plan checking + verification enabled
```
If `$DISCUSS_MODE` and `$RESEARCH_MODE` (no full):
If `$DISCUSS_MODE` and `$RESEARCH_MODE` (no validate):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (DISCUSS + RESEARCH)
@@ -75,10 +87,10 @@ If `$DISCUSS_MODE` and `$RESEARCH_MODE` (no full):
◆ Discussion + research enabled
```
If `$RESEARCH_MODE` and `$FULL_MODE` (no discuss):
If `$RESEARCH_MODE` and `$VALIDATE_MODE` (no discuss):
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (RESEARCH + FULL)
GSD ► QUICK TASK (RESEARCH + VALIDATE)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ Research + plan checking + verification enabled
@@ -102,10 +114,10 @@ If `$RESEARCH_MODE` only:
◆ Research phase enabled — investigating approaches before planning
```
If `$FULL_MODE` only:
If `$VALIDATE_MODE` only:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GSD ► QUICK TASK (FULL MODE)
GSD ► QUICK TASK (VALIDATE)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ Plan checking + verification enabled
@@ -367,16 +379,16 @@ If research file not found, warn but continue: "Research agent did not produce o
**Step 5: Spawn planner (quick mode)**
**If `$FULL_MODE`:** Use `quick-full` mode with stricter constraints.
**If `$VALIDATE_MODE`:** Use `quick-full` mode with stricter constraints.
**If NOT `$FULL_MODE`:** Use standard `quick` mode.
**If NOT `$VALIDATE_MODE`:** Use standard `quick` mode.
```
Task(
prompt="
<planning_context>
**Mode:** ${FULL_MODE ? 'quick-full' : 'quick'}
**Mode:** ${VALIDATE_MODE ? 'quick-full' : 'quick'}
**Directory:** ${QUICK_DIR}
**Description:** ${DESCRIPTION}
@@ -397,9 +409,9 @@ ${AGENT_SKILLS_PLANNER}
- Create a SINGLE plan with 1-3 focused tasks
- Quick tasks should be atomic and self-contained
${RESEARCH_MODE ? '- Research findings are available — use them to inform library/pattern choices' : '- No research phase'}
${FULL_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
${FULL_MODE ? '- MUST generate `must_haves` in plan frontmatter (truths, artifacts, key_links)' : ''}
${FULL_MODE ? '- Each task MUST have `files`, `action`, `verify`, `done` fields' : ''}
${VALIDATE_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
${VALIDATE_MODE ? '- MUST generate `must_haves` in plan frontmatter (truths, artifacts, key_links)' : ''}
${VALIDATE_MODE ? '- Each task MUST have `files`, `action`, `verify`, `done` fields' : ''}
</constraints>
<output>
@@ -422,9 +434,9 @@ If plan not found, error: "Planner failed to create ${quick_id}-PLAN.md"
---
**Step 5.5: Plan-checker loop (only when `$FULL_MODE`)**
**Step 5.5: Plan-checker loop (only when `$VALIDATE_MODE`)**
Skip this step entirely if NOT `$FULL_MODE`.
Skip this step entirely if NOT `$VALIDATE_MODE`.
Display banner:
```
@@ -577,9 +589,9 @@ Note: For quick tasks producing multiple plans (rare), spawn executors in parall
---
**Step 6.5: Verification (only when `$FULL_MODE`)**
**Step 6.5: Verification (only when `$VALIDATE_MODE`)**
Skip this step entirely if NOT `$FULL_MODE`.
Skip this step entirely if NOT `$VALIDATE_MODE`.
Display banner:
```
@@ -636,7 +648,7 @@ Read STATE.md and check for `### Quick Tasks Completed` section.
Insert after `### Blockers/Concerns` section:
**If `$FULL_MODE`:**
**If `$VALIDATE_MODE`:**
```markdown
### Quick Tasks Completed
@@ -644,7 +656,7 @@ Insert after `### Blockers/Concerns` section:
|---|-------------|------|--------|--------|-----------|
```
**If NOT `$FULL_MODE`:**
**If NOT `$VALIDATE_MODE`:**
```markdown
### Quick Tasks Completed
@@ -652,18 +664,18 @@ Insert after `### Blockers/Concerns` section:
|---|-------------|------|--------|-----------|
```
**Note:** If the table already exists, match its existing column format. If adding `--full` to a project that already has quick tasks without a Status column, add the Status column to the header and separator rows, and leave Status empty for the new row's predecessors.
**Note:** If the table already exists, match its existing column format. If adding `--validate` (or `--full`) to a project that already has quick tasks without a Status column, add the Status column to the header and separator rows, and leave Status empty for the new row's predecessors.
**7c. Append new row to table:**
Use `date` from init:
**If `$FULL_MODE` (or table has Status column):**
**If `$VALIDATE_MODE` (or table has Status column):**
```markdown
| ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | ${VERIFICATION_STATUS} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
```
**If NOT `$FULL_MODE` (and table has no Status column):**
**If NOT `$VALIDATE_MODE` (and table has no Status column):**
```markdown
| ${quick_id} | ${DESCRIPTION} | ${date} | ${commit_hash} | [${quick_id}-${slug}](./quick/${quick_id}-${slug}/) |
```
@@ -689,7 +701,7 @@ Build file list:
- `.planning/STATE.md`
- If `$DISCUSS_MODE` and context file exists: `${QUICK_DIR}/${quick_id}-CONTEXT.md`
- If `$RESEARCH_MODE` and research file exists: `${QUICK_DIR}/${quick_id}-RESEARCH.md`
- If `$FULL_MODE` and verification file exists: `${QUICK_DIR}/${quick_id}-VERIFICATION.md`
- If `$VALIDATE_MODE` and verification file exists: `${QUICK_DIR}/${quick_id}-VERIFICATION.md`
```bash
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs(quick-${quick_id}): ${DESCRIPTION}" --files ${file_list}
@@ -702,11 +714,11 @@ commit_hash=$(git rev-parse --short HEAD)
Display completion output:
**If `$FULL_MODE`:**
**If `$VALIDATE_MODE`:**
```
---
GSD > QUICK TASK COMPLETE (FULL MODE)
GSD > QUICK TASK COMPLETE (VALIDATED)
Quick Task ${quick_id}: ${DESCRIPTION}
@@ -720,7 +732,7 @@ Commit: ${commit_hash}
Ready for next task: /gsd:quick ${GSD_WS}
```
**If NOT `$FULL_MODE`:**
**If NOT `$VALIDATE_MODE`:**
```
---
@@ -742,16 +754,17 @@ Ready for next task: /gsd:quick ${GSD_WS}
<success_criteria>
- [ ] ROADMAP.md validation passes
- [ ] User provides task description
- [ ] `--full`, `--discuss`, and `--research` flags parsed from arguments when present
- [ ] `--full`, `--validate`, `--discuss`, and `--research` flags parsed from arguments when present
- [ ] `--full` sets all booleans (`$FULL_MODE`, `$DISCUSS_MODE`, `$RESEARCH_MODE`, `$VALIDATE_MODE`)
- [ ] Slug generated (lowercase, hyphens, max 40 chars)
- [ ] Quick ID generated (YYMMDD-xxx format, 2s Base36 precision)
- [ ] Directory created at `.planning/quick/YYMMDD-xxx-slug/`
- [ ] (--discuss) Gray areas identified and presented, decisions captured in `${quick_id}-CONTEXT.md`
- [ ] (--research) Research agent spawned, `${quick_id}-RESEARCH.md` created
- [ ] `${quick_id}-PLAN.md` created by planner (honors CONTEXT.md decisions when --discuss, uses RESEARCH.md findings when --research)
- [ ] (--full) Plan checker validates plan, revision loop capped at 2
- [ ] (--validate) Plan checker validates plan, revision loop capped at 2
- [ ] `${quick_id}-SUMMARY.md` created by executor
- [ ] (--full) `${quick_id}-VERIFICATION.md` created by verifier
- [ ] STATE.md updated with quick task row (Status column when --full)
- [ ] (--validate) `${quick_id}-VERIFICATION.md` created by verifier
- [ ] STATE.md updated with quick task row (Status column when --validate)
- [ ] Artifacts committed
</success_criteria>

View File

@@ -279,19 +279,19 @@ describe('quick workflow: banner variants for flag combinations', () => {
);
});
test('has banner for research + full mode', () => {
test('has banner for research + validate mode', () => {
content = fs.readFileSync(path.join(WORKFLOWS_DIR, 'quick.md'), 'utf-8');
assert.ok(
content.includes('RESEARCH + FULL)'),
'should have banner for --research --full'
content.includes('RESEARCH + VALIDATE)'),
'should have banner for --research --validate'
);
});
test('has banner for all three flags', () => {
test('has banner for full mode (all phases)', () => {
content = fs.readFileSync(path.join(WORKFLOWS_DIR, 'quick.md'), 'utf-8');
assert.ok(
content.includes('DISCUSS + RESEARCH + FULL)'),
'should have banner for --discuss --research --full'
content.includes('QUICK TASK (FULL)'),
'should have banner for --full (all phases enabled)'
);
});
});