diff --git a/CHANGELOG.md b/CHANGELOG.md index e84904c92..d2e88055b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/commands/gsd/quick.md b/commands/gsd/quick.md index 468d52745..e2ea903af 100644 --- a/commands/gsd/quick.md +++ b/commands/gsd/quick.md @@ -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`. diff --git a/get-shit-done/workflows/help.md b/get-shit-done/workflows/help.md index 8d21b4be2..828047a86 100644 --- a/get-shit-done/workflows/help.md +++ b/get-shit-done/workflows/help.md @@ -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` --- diff --git a/get-shit-done/workflows/quick.md b/get-shit-done/workflows/quick.md index 89441f965..eafe92447 100644 --- a/get-shit-done/workflows/quick.md +++ b/get-shit-done/workflows/quick.md @@ -1,13 +1,15 @@ 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`. @@ -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=" -**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' : ''} @@ -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} - [ ] 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 diff --git a/tests/quick-research.test.cjs b/tests/quick-research.test.cjs index c85e65cc0..c735f3893 100644 --- a/tests/quick-research.test.cjs +++ b/tests/quick-research.test.cjs @@ -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)' ); }); });