maestro-flow 0.3.9 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/workflow-collab-planner.md +1 -1
- package/.claude/agents/workflow-executor.md +1 -1
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -1
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +1 -1
- package/.claude/commands/maestro-analyze.md +46 -3
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-execute.md +14 -0
- package/.claude/commands/maestro-plan.md +16 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue-discover.md +2 -2
- package/.claude/commands/manage-issue.md +5 -5
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +335 -0
- package/.codex/skills/maestro-analyze/SKILL.md +84 -75
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +233 -0
- package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
- package/.codex/skills/maestro-execute/SKILL.md +435 -438
- package/.codex/skills/maestro-fork/SKILL.md +68 -0
- package/.codex/skills/maestro-init/SKILL.md +171 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +62 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +66 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +93 -105
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +93 -104
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +14 -11
- package/README.zh-CN.md +14 -11
- package/chains/issue-lifecycle.json +13 -13
- package/chains/singles/issue-analyze.json +3 -3
- package/chains/singles/issue-execute.json +3 -3
- package/chains/singles/issue-plan.json +3 -3
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
- package/dashboard/dist-server/src/hooks/constants.js +151 -16
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +5 -0
- package/dist/src/commands/collab.d.ts +1 -34
- package/dist/src/commands/collab.d.ts.map +1 -1
- package/dist/src/commands/collab.js +8 -76
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +5 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +115 -10
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
- package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +5 -1
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.js +7 -3
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
- package/dist/src/hooks/constants.d.ts +92 -12
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +151 -16
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +2 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +2 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
- package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
- package/dist/src/hooks/guards/preflight-guard.js +95 -0
- package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/preflight-core.d.ts +37 -0
- package/dist/src/hooks/preflight-core.d.ts.map +1 -0
- package/dist/src/hooks/preflight-core.js +86 -0
- package/dist/src/hooks/preflight-core.js.map +1 -0
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +8 -17
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +269 -112
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/i18n/locales/en.d.ts.map +1 -1
- package/dist/src/i18n/locales/en.js +5 -0
- package/dist/src/i18n/locales/en.js.map +1 -1
- package/dist/src/i18n/locales/zh.d.ts.map +1 -1
- package/dist/src/i18n/locales/zh.js +5 -0
- package/dist/src/i18n/locales/zh.js.map +1 -1
- package/dist/src/i18n/types.d.ts +5 -0
- package/dist/src/i18n/types.d.ts.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/collab-adapter.d.ts +17 -0
- package/dist/src/tools/collab-adapter.d.ts.map +1 -1
- package/dist/src/tools/collab-adapter.js +138 -0
- package/dist/src/tools/collab-adapter.js.map +1 -1
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts +24 -0
- package/dist/src/tools/merge-validator.d.ts.map +1 -0
- package/dist/src/tools/merge-validator.js +220 -0
- package/dist/src/tools/merge-validator.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/dist/src/types/index.d.ts +5 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
- package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
- package/templates/search-tools.md +1 -1
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +471 -471
- package/workflows/cli-tools-usage.md +44 -27
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/delegate-usage.md +3 -3
- package/workflows/execute.md +1 -1
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +343 -343
- package/workflows/issue-analyze.md +6 -2
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue-execute.md +6 -3
- package/workflows/issue-plan.md +5 -2
- package/workflows/maestro-coordinate.codex.md +281 -470
- package/workflows/maestro-coordinate.md +14 -14
- package/workflows/maestro-link-coordinate.md +2 -2
- package/workflows/maestro.codex.md +710 -0
- package/workflows/maestro.md +10 -11
- package/workflows/map.md +111 -111
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +1 -1
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/.claude/commands/manage-issue-analyze.md +0 -62
- package/.claude/commands/manage-issue-execute.md +0 -73
- package/.claude/commands/manage-issue-plan.md +0 -62
- package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
- package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
- package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
package/workflows/quick.md
CHANGED
|
@@ -1,497 +1,497 @@
|
|
|
1
|
-
# Quick Task Workflow
|
|
2
|
-
|
|
3
|
-
Execute small, ad-hoc tasks with workflow guarantees (atomic commits, state tracking). Quick mode spawns workflow-planner (quick mode) + workflow-executor(s), tracks tasks in `.workflow/scratch/`, and updates state.json.
|
|
4
|
-
|
|
5
|
-
With `--discuss`: lightweight decision extraction before planning. Identifies gray areas, conducts interactive discussion, classifies decisions as Locked/Free/Deferred in context.md so the planner treats Locked decisions as constraints and Free decisions as implementer discretion.
|
|
6
|
-
|
|
7
|
-
With `--full`: enables plan-checking (max 2 iterations) and post-execution verification.
|
|
8
|
-
|
|
9
|
-
Flags are composable: `--discuss --full` gives discussion + plan-checking + verification.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Prerequisites
|
|
14
|
-
|
|
15
|
-
- `.workflow/state.json` must exist (project initialized)
|
|
16
|
-
- Quick tasks can run mid-phase -- validation only checks project exists, not phase status
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
### Step 1: Parse Arguments
|
|
21
|
-
|
|
22
|
-
**Parse $ARGUMENTS for flags and description:**
|
|
23
|
-
|
|
24
|
-
Extract:
|
|
25
|
-
- `--full` flag -> store as `$FULL_MODE` (true/false)
|
|
26
|
-
- `--discuss` flag -> store as `$DISCUSS_MODE` (true/false)
|
|
27
|
-
- Remaining text -> use as `$DESCRIPTION`
|
|
28
|
-
|
|
29
|
-
If `$DESCRIPTION` is empty after parsing:
|
|
30
|
-
```
|
|
31
|
-
AskUserQuestion(
|
|
32
|
-
header: "Quick Task",
|
|
33
|
-
question: "What do you want to do?",
|
|
34
|
-
followUp: null
|
|
35
|
-
)
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Store response as `$DESCRIPTION`.
|
|
39
|
-
If still empty, re-prompt: "Please provide a task description."
|
|
40
|
-
|
|
41
|
-
Display banner based on active flags:
|
|
42
|
-
|
|
43
|
-
If `$DISCUSS_MODE` and `$FULL_MODE`:
|
|
44
|
-
```
|
|
45
|
-
------------------------------------------------------------
|
|
46
|
-
WORKFLOW > QUICK TASK (DISCUSS + FULL)
|
|
47
|
-
------------------------------------------------------------
|
|
48
|
-
Discussion + plan checking + verification enabled
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
If `$DISCUSS_MODE` only:
|
|
52
|
-
```
|
|
53
|
-
------------------------------------------------------------
|
|
54
|
-
WORKFLOW > QUICK TASK (DISCUSS)
|
|
55
|
-
------------------------------------------------------------
|
|
56
|
-
Discussion phase enabled -- surfacing gray areas before planning
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
If `$FULL_MODE` only:
|
|
60
|
-
```
|
|
61
|
-
------------------------------------------------------------
|
|
62
|
-
WORKFLOW > QUICK TASK (FULL MODE)
|
|
63
|
-
------------------------------------------------------------
|
|
64
|
-
Plan checking + verification enabled
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Default (no flags):
|
|
68
|
-
```
|
|
69
|
-
------------------------------------------------------------
|
|
70
|
-
WORKFLOW > QUICK TASK
|
|
71
|
-
------------------------------------------------------------
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
### Step 2: Validate Project
|
|
77
|
-
|
|
78
|
-
**Validate project state:**
|
|
79
|
-
|
|
80
|
-
Check .workflow/ exists and has state.json:
|
|
81
|
-
```bash
|
|
82
|
-
test -f .workflow/state.json && echo "exists" || echo "missing"
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
If missing: Error -- "Quick mode requires an initialized project. Run /workflow:init first."
|
|
86
|
-
|
|
87
|
-
Quick tasks can run mid-phase -- validation only checks project exists, not phase status.
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
### Step 3: Create Scratch Directory
|
|
92
|
-
|
|
93
|
-
**Create scratch directory:**
|
|
94
|
-
|
|
95
|
-
Generate slug from $DESCRIPTION (lowercase, hyphens, max 40 chars).
|
|
96
|
-
Set date to current date (YYYY-MM-DD).
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
QUICK_DIR=".workflow/scratch/quick-${slug}-${date}"
|
|
100
|
-
mkdir -p "$QUICK_DIR/.task"
|
|
101
|
-
mkdir -p "$QUICK_DIR/.summaries"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Write index.json:
|
|
105
|
-
```json
|
|
106
|
-
{
|
|
107
|
-
"id": "quick-{slug}-{date}",
|
|
108
|
-
"type": "quick",
|
|
109
|
-
"title": "{$DESCRIPTION}",
|
|
110
|
-
"status": "active",
|
|
111
|
-
"created_at": "{ISO timestamp}",
|
|
112
|
-
"updated_at": "{ISO timestamp}",
|
|
113
|
-
"flags": {
|
|
114
|
-
"discuss": {$DISCUSS_MODE},
|
|
115
|
-
"full": {$FULL_MODE}
|
|
116
|
-
},
|
|
117
|
-
"plan": {
|
|
118
|
-
"task_ids": [],
|
|
119
|
-
"task_count": 0
|
|
120
|
-
},
|
|
121
|
-
"execution": {
|
|
122
|
-
"method": "agent",
|
|
123
|
-
"tasks_completed": 0,
|
|
124
|
-
"tasks_total": 0
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Report: "Creating quick task: {$DESCRIPTION}\nDirectory: {$QUICK_DIR}"
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
### Step 4: Discussion Phase (only when $DISCUSS_MODE)
|
|
134
|
-
|
|
135
|
-
**Lightweight discussion:**
|
|
136
|
-
|
|
137
|
-
Skip entirely if NOT $DISCUSS_MODE.
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
------------------------------------------------------------
|
|
141
|
-
WORKFLOW > DISCUSSING QUICK TASK
|
|
142
|
-
------------------------------------------------------------
|
|
143
|
-
Surfacing gray areas for: {$DESCRIPTION}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**4a. Identify gray areas:**
|
|
147
|
-
|
|
148
|
-
Analyze $DESCRIPTION to identify 2-4 gray areas -- implementation decisions that would change the outcome. Use domain-aware heuristic:
|
|
149
|
-
- Something users **SEE** -> layout, density, interactions, states
|
|
150
|
-
- Something users **CALL** -> responses, errors, auth, versioning
|
|
151
|
-
- Something users **RUN** -> output format, flags, modes, error handling
|
|
152
|
-
- Something users **READ** -> structure, tone, depth, flow
|
|
153
|
-
- Something being **ORGANIZED** -> criteria, grouping, naming, exceptions
|
|
154
|
-
|
|
155
|
-
**4b. Present gray areas:**
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
AskUserQuestion(
|
|
159
|
-
header: "Gray Areas",
|
|
160
|
-
question: "Which areas need clarification before planning?",
|
|
161
|
-
options: [
|
|
162
|
-
{ label: "{area_1}", description: "{why_it_matters}" },
|
|
163
|
-
{ label: "{area_2}", description: "{why_it_matters}" },
|
|
164
|
-
{ label: "{area_3}", description: "{why_it_matters}" },
|
|
165
|
-
{ label: "All clear", description: "Skip discussion -- I know what I want" }
|
|
166
|
-
],
|
|
167
|
-
multiSelect: true
|
|
168
|
-
)
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
If user selects "All clear" -> skip to Step 5 (no context.md written).
|
|
172
|
-
|
|
173
|
-
**4c. Discuss selected areas:**
|
|
174
|
-
|
|
175
|
-
For each selected area, ask 1-2 focused questions:
|
|
176
|
-
```
|
|
177
|
-
AskUserQuestion(
|
|
178
|
-
header: "{area_name}",
|
|
179
|
-
question: "{specific question}",
|
|
180
|
-
options: [
|
|
181
|
-
{ label: "{choice_1}", description: "{what this means}" },
|
|
182
|
-
{ label: "{choice_2}", description: "{what this means}" },
|
|
183
|
-
{ label: "You decide", description: "Claude's discretion" }
|
|
184
|
-
]
|
|
185
|
-
)
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Max 2 questions per area. Collect all decisions.
|
|
189
|
-
|
|
190
|
-
**4d. Classify decisions:**
|
|
191
|
-
|
|
192
|
-
- **Locked**: firm decisions that cannot be changed during implementation
|
|
193
|
-
- **Free**: open for implementation discretion (implementer can choose)
|
|
194
|
-
- **Deferred**: postponed (captured but not acted on in this quick task)
|
|
195
|
-
|
|
196
|
-
**4e. Write context.md:**
|
|
197
|
-
|
|
198
|
-
```markdown
|
|
199
|
-
# Quick Task: {$DESCRIPTION} - Context
|
|
200
|
-
|
|
201
|
-
**Gathered:** {date}
|
|
202
|
-
**Status:** Ready for planning
|
|
203
|
-
|
|
204
|
-
## Task Boundary
|
|
205
|
-
|
|
206
|
-
{$DESCRIPTION}
|
|
207
|
-
|
|
208
|
-
## Constraints
|
|
209
|
-
|
|
210
|
-
### Locked
|
|
211
|
-
{decisions that are final and must be followed}
|
|
212
|
-
|
|
213
|
-
### Free
|
|
214
|
-
{decisions left to implementer discretion, including "You decide" areas}
|
|
215
|
-
|
|
216
|
-
### Deferred
|
|
217
|
-
{ideas captured but out of scope for this quick task}
|
|
218
|
-
|
|
219
|
-
## Code Context
|
|
220
|
-
{relevant code references from discussion, if any}
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Write to `${QUICK_DIR}/context.md`.
|
|
224
|
-
Report: "Context captured: ${QUICK_DIR}/context.md"
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
### Step 4.5: Load Project Specs
|
|
229
|
-
|
|
230
|
-
```
|
|
231
|
-
specs_content = maestro spec load --category
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
Passed inline to planner agent in Step 5.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
### Step 5: Spawn Planner
|
|
239
|
-
|
|
240
|
-
**Spawn workflow-planner in quick mode:**
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
Task(
|
|
244
|
-
prompt="
|
|
245
|
-
<planning_context>
|
|
246
|
-
|
|
247
|
-
**Mode:** ${FULL_MODE ? 'quick-full' : 'quick'}
|
|
248
|
-
**Directory:** ${QUICK_DIR}
|
|
249
|
-
**Description:** ${DESCRIPTION}
|
|
250
|
-
|
|
251
|
-
Read these files:
|
|
252
|
-
- .workflow/state.json (Project state)
|
|
253
|
-
- ./CLAUDE.md (Project instructions, if exists)
|
|
254
|
-
|
|
255
|
-
Project specs (pre-loaded in Step 4.5):
|
|
256
|
-
${specs_content || 'No specs found.'}
|
|
257
|
-
${DISCUSS_MODE ? '- ' + QUICK_DIR + '/context.md (User decisions -- locked)' : ''}
|
|
258
|
-
|
|
259
|
-
</planning_context>
|
|
260
|
-
|
|
261
|
-
<constraints>
|
|
262
|
-
- Create a SINGLE plan with 1-3 focused tasks
|
|
263
|
-
- Quick tasks should be atomic and self-contained
|
|
264
|
-
- No research phase
|
|
265
|
-
${FULL_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
|
|
266
|
-
${FULL_MODE ? '- Each task MUST have files, action, convergence.criteria, implementation fields' : ''}
|
|
267
|
-
</constraints>
|
|
268
|
-
|
|
269
|
-
<output>
|
|
270
|
-
Write plan to: ${QUICK_DIR}/plan.json
|
|
271
|
-
Write tasks to: ${QUICK_DIR}/.task/TASK-{NNN}.json
|
|
272
|
-
Return: ## PLANNING COMPLETE with plan path
|
|
273
|
-
</output>
|
|
274
|
-
",
|
|
275
|
-
subagent_type="workflow-planner",
|
|
276
|
-
description="Quick plan: ${DESCRIPTION}"
|
|
277
|
-
)
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
After planner returns:
|
|
281
|
-
1. Verify plan.json exists at `${QUICK_DIR}/plan.json`
|
|
282
|
-
2. Update index.json plan fields
|
|
283
|
-
3. Report: "Plan created: ${QUICK_DIR}/plan.json"
|
|
284
|
-
|
|
285
|
-
If plan not found: "Planner failed to create plan.json"
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
### Step 6: Plan Checker (only when $FULL_MODE)
|
|
290
|
-
|
|
291
|
-
**Plan-checker loop:**
|
|
292
|
-
|
|
293
|
-
Skip entirely if NOT $FULL_MODE.
|
|
294
|
-
|
|
295
|
-
```
|
|
296
|
-
------------------------------------------------------------
|
|
297
|
-
WORKFLOW > CHECKING PLAN
|
|
298
|
-
------------------------------------------------------------
|
|
299
|
-
Spawning plan checker...
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
```
|
|
303
|
-
Task(
|
|
304
|
-
prompt="
|
|
305
|
-
Verify quick task plan.
|
|
306
|
-
|
|
307
|
-
Read: ${QUICK_DIR}/plan.json and ${QUICK_DIR}/.task/TASK-*.json
|
|
308
|
-
|
|
309
|
-
Check dimensions:
|
|
310
|
-
- Requirement coverage: Does the plan address the task description?
|
|
311
|
-
- Task completeness: Do tasks have files, action, convergence.criteria, implementation?
|
|
312
|
-
- Scope sanity: Appropriately sized for quick task (1-3 tasks)?
|
|
313
|
-
${DISCUSS_MODE ? '- Context compliance: Does plan honor decisions from context.md?' : ''}
|
|
314
|
-
|
|
315
|
-
Return one of:
|
|
316
|
-
- ## VERIFICATION PASSED
|
|
317
|
-
- ## ISSUES FOUND -- structured issue list
|
|
318
|
-
",
|
|
319
|
-
subagent_type="workflow-plan-checker",
|
|
320
|
-
description="Check quick plan: ${DESCRIPTION}"
|
|
321
|
-
)
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
**Handle checker return:**
|
|
325
|
-
|
|
326
|
-
- **VERIFICATION PASSED:** Continue to Step 7.
|
|
327
|
-
- **ISSUES FOUND:** Enter revision loop.
|
|
328
|
-
|
|
329
|
-
**Revision loop (max 2 iterations):**
|
|
330
|
-
|
|
331
|
-
If iteration_count < 2:
|
|
332
|
-
- Display: "Sending back to planner for revision... (iteration {N}/2)"
|
|
333
|
-
- Spawn planner with revision context + checker issues
|
|
334
|
-
- Re-check with checker
|
|
335
|
-
- Increment iteration_count
|
|
336
|
-
|
|
337
|
-
If iteration_count >= 2:
|
|
338
|
-
- Display: "Max iterations reached. {N} issues remain."
|
|
339
|
-
- Offer: 1) Force proceed, 2) Abort
|
|
340
|
-
|
|
341
|
-
---
|
|
342
|
-
|
|
343
|
-
### Step 7: Spawn Executor
|
|
344
|
-
|
|
345
|
-
**Spawn workflow-executor:**
|
|
346
|
-
|
|
347
|
-
```
|
|
348
|
-
Task(
|
|
349
|
-
prompt="
|
|
350
|
-
Execute quick task.
|
|
351
|
-
|
|
352
|
-
Read:
|
|
353
|
-
- ${QUICK_DIR}/plan.json (Plan)
|
|
354
|
-
- ${QUICK_DIR}/.task/TASK-*.json (Tasks)
|
|
355
|
-
- .workflow/state.json (Project state)
|
|
356
|
-
- ./CLAUDE.md (Project instructions, if exists)
|
|
357
|
-
|
|
358
|
-
Constraints:
|
|
359
|
-
- Execute all tasks in the plan
|
|
360
|
-
- Commit each task atomically
|
|
361
|
-
- Create summary for each task at: ${QUICK_DIR}/.summaries/TASK-{NNN}-summary.md
|
|
362
|
-
",
|
|
363
|
-
subagent_type="workflow-executor",
|
|
364
|
-
description="Execute: ${DESCRIPTION}"
|
|
365
|
-
)
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
After executor returns:
|
|
369
|
-
1. Verify summaries exist
|
|
370
|
-
2. Update index.json execution fields
|
|
371
|
-
3. Report completion status
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
### Step 8: Verification (only when $FULL_MODE)
|
|
376
|
-
|
|
377
|
-
**Post-execution verification:**
|
|
378
|
-
|
|
379
|
-
Skip entirely if NOT $FULL_MODE.
|
|
380
|
-
|
|
381
|
-
```
|
|
382
|
-
------------------------------------------------------------
|
|
383
|
-
WORKFLOW > VERIFYING RESULTS
|
|
384
|
-
------------------------------------------------------------
|
|
385
|
-
Spawning verifier...
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
```
|
|
389
|
-
Task(
|
|
390
|
-
prompt="
|
|
391
|
-
Verify quick task goal achievement.
|
|
392
|
-
Task directory: ${QUICK_DIR}
|
|
393
|
-
Task goal: ${DESCRIPTION}
|
|
394
|
-
|
|
395
|
-
Read: ${QUICK_DIR}/plan.json and ${QUICK_DIR}/.summaries/
|
|
396
|
-
|
|
397
|
-
Check plan objectives against actual codebase.
|
|
398
|
-
Write verification result to: ${QUICK_DIR}/verification.json
|
|
399
|
-
",
|
|
400
|
-
subagent_type="workflow-verifier",
|
|
401
|
-
description="Verify: ${DESCRIPTION}"
|
|
402
|
-
)
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
Read verification result:
|
|
406
|
-
| Status | Action |
|
|
407
|
-
|--------|--------|
|
|
408
|
-
| passed | Store "Verified", continue |
|
|
409
|
-
| gaps_found | Display gaps, offer: 1) Re-run executor, 2) Accept as-is |
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
### Step 9: Update State
|
|
414
|
-
|
|
415
|
-
**Update state.json:**
|
|
416
|
-
|
|
417
|
-
Read state.json. Add quick task to accumulated_context or quick_tasks array.
|
|
418
|
-
|
|
419
|
-
Record:
|
|
420
|
-
```json
|
|
421
|
-
{
|
|
422
|
-
"id": "quick-{slug}-{date}",
|
|
423
|
-
"description": "{$DESCRIPTION}",
|
|
424
|
-
"completed_at": "{ISO timestamp}",
|
|
425
|
-
"directory": "{$QUICK_DIR}",
|
|
426
|
-
"verified": {$FULL_MODE ? verification_status : "skipped"}
|
|
427
|
-
}
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
Update last_updated timestamp.
|
|
431
|
-
|
|
432
|
-
---
|
|
433
|
-
|
|
434
|
-
### Step 10: Commit and Complete
|
|
435
|
-
|
|
436
|
-
**Final commit and completion:**
|
|
437
|
-
|
|
438
|
-
Update index.json status to "completed".
|
|
439
|
-
|
|
440
|
-
Commit quick task artifacts:
|
|
441
|
-
```bash
|
|
442
|
-
git add "${QUICK_DIR}/" .workflow/state.json
|
|
443
|
-
git commit -m "quick({slug}): ${DESCRIPTION}"
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
Display completion:
|
|
447
|
-
|
|
448
|
-
If $FULL_MODE:
|
|
449
|
-
```
|
|
450
|
-
------------------------------------------------------------
|
|
451
|
-
WORKFLOW > QUICK TASK COMPLETE (FULL MODE)
|
|
452
|
-
------------------------------------------------------------
|
|
453
|
-
|
|
454
|
-
Quick Task: {$DESCRIPTION}
|
|
455
|
-
|
|
456
|
-
Summary: ${QUICK_DIR}/.summaries/
|
|
457
|
-
Verification: ${QUICK_DIR}/verification.json ({status})
|
|
458
|
-
Directory: ${QUICK_DIR}
|
|
459
|
-
|
|
460
|
-
------------------------------------------------------------
|
|
461
|
-
Ready for next task: /workflow:quick
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
If NOT $FULL_MODE:
|
|
465
|
-
```
|
|
466
|
-
------------------------------------------------------------
|
|
467
|
-
WORKFLOW > QUICK TASK COMPLETE
|
|
468
|
-
------------------------------------------------------------
|
|
469
|
-
|
|
470
|
-
Quick Task: {$DESCRIPTION}
|
|
471
|
-
|
|
472
|
-
Summary: ${QUICK_DIR}/.summaries/
|
|
473
|
-
Directory: ${QUICK_DIR}
|
|
474
|
-
|
|
475
|
-
------------------------------------------------------------
|
|
476
|
-
Ready for next task: /workflow:quick
|
|
477
|
-
```
|
|
478
|
-
|
|
479
|
-
---
|
|
480
|
-
|
|
481
|
-
## Success Criteria
|
|
482
|
-
|
|
483
|
-
- [ ] --full and --discuss flags parsed from arguments when present
|
|
484
|
-
- [ ] Flags are composable (--discuss --full works)
|
|
485
|
-
- [ ] User provides task description (prompted if missing)
|
|
486
|
-
- [ ] Project validated (state.json exists)
|
|
487
|
-
- [ ] Scratch directory created at .workflow/scratch/quick-{slug}-{date}/
|
|
488
|
-
- [ ] index.json created in scratch dir
|
|
489
|
-
- [ ] (--discuss) Gray areas identified, decisions captured in context.md
|
|
490
|
-
- [ ] (--discuss) context.md honors "All clear" skip and "You decide" discretion
|
|
491
|
-
- [ ] plan.json + .task/TASK-*.json created by planner
|
|
492
|
-
- [ ] (--full) Plan checker validates plan, revision loop capped at 2
|
|
493
|
-
- [ ] .summaries/TASK-*-summary.md created by executor
|
|
494
|
-
- [ ] (--full) verification.json created by verifier
|
|
495
|
-
- [ ] state.json updated with quick task record
|
|
496
|
-
- [ ] Artifacts committed
|
|
497
|
-
- [ ] index.json status set to "completed"
|
|
1
|
+
# Quick Task Workflow
|
|
2
|
+
|
|
3
|
+
Execute small, ad-hoc tasks with workflow guarantees (atomic commits, state tracking). Quick mode spawns workflow-planner (quick mode) + workflow-executor(s), tracks tasks in `.workflow/scratch/`, and updates state.json.
|
|
4
|
+
|
|
5
|
+
With `--discuss`: lightweight decision extraction before planning. Identifies gray areas, conducts interactive discussion, classifies decisions as Locked/Free/Deferred in context.md so the planner treats Locked decisions as constraints and Free decisions as implementer discretion.
|
|
6
|
+
|
|
7
|
+
With `--full`: enables plan-checking (max 2 iterations) and post-execution verification.
|
|
8
|
+
|
|
9
|
+
Flags are composable: `--discuss --full` gives discussion + plan-checking + verification.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- `.workflow/state.json` must exist (project initialized)
|
|
16
|
+
- Quick tasks can run mid-phase -- validation only checks project exists, not phase status
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
### Step 1: Parse Arguments
|
|
21
|
+
|
|
22
|
+
**Parse $ARGUMENTS for flags and description:**
|
|
23
|
+
|
|
24
|
+
Extract:
|
|
25
|
+
- `--full` flag -> store as `$FULL_MODE` (true/false)
|
|
26
|
+
- `--discuss` flag -> store as `$DISCUSS_MODE` (true/false)
|
|
27
|
+
- Remaining text -> use as `$DESCRIPTION`
|
|
28
|
+
|
|
29
|
+
If `$DESCRIPTION` is empty after parsing:
|
|
30
|
+
```
|
|
31
|
+
AskUserQuestion(
|
|
32
|
+
header: "Quick Task",
|
|
33
|
+
question: "What do you want to do?",
|
|
34
|
+
followUp: null
|
|
35
|
+
)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Store response as `$DESCRIPTION`.
|
|
39
|
+
If still empty, re-prompt: "Please provide a task description."
|
|
40
|
+
|
|
41
|
+
Display banner based on active flags:
|
|
42
|
+
|
|
43
|
+
If `$DISCUSS_MODE` and `$FULL_MODE`:
|
|
44
|
+
```
|
|
45
|
+
------------------------------------------------------------
|
|
46
|
+
WORKFLOW > QUICK TASK (DISCUSS + FULL)
|
|
47
|
+
------------------------------------------------------------
|
|
48
|
+
Discussion + plan checking + verification enabled
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If `$DISCUSS_MODE` only:
|
|
52
|
+
```
|
|
53
|
+
------------------------------------------------------------
|
|
54
|
+
WORKFLOW > QUICK TASK (DISCUSS)
|
|
55
|
+
------------------------------------------------------------
|
|
56
|
+
Discussion phase enabled -- surfacing gray areas before planning
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If `$FULL_MODE` only:
|
|
60
|
+
```
|
|
61
|
+
------------------------------------------------------------
|
|
62
|
+
WORKFLOW > QUICK TASK (FULL MODE)
|
|
63
|
+
------------------------------------------------------------
|
|
64
|
+
Plan checking + verification enabled
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Default (no flags):
|
|
68
|
+
```
|
|
69
|
+
------------------------------------------------------------
|
|
70
|
+
WORKFLOW > QUICK TASK
|
|
71
|
+
------------------------------------------------------------
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Step 2: Validate Project
|
|
77
|
+
|
|
78
|
+
**Validate project state:**
|
|
79
|
+
|
|
80
|
+
Check .workflow/ exists and has state.json:
|
|
81
|
+
```bash
|
|
82
|
+
test -f .workflow/state.json && echo "exists" || echo "missing"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
If missing: Error -- "Quick mode requires an initialized project. Run /workflow:init first."
|
|
86
|
+
|
|
87
|
+
Quick tasks can run mid-phase -- validation only checks project exists, not phase status.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Step 3: Create Scratch Directory
|
|
92
|
+
|
|
93
|
+
**Create scratch directory:**
|
|
94
|
+
|
|
95
|
+
Generate slug from $DESCRIPTION (lowercase, hyphens, max 40 chars).
|
|
96
|
+
Set date to current date (YYYY-MM-DD).
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
QUICK_DIR=".workflow/scratch/quick-${slug}-${date}"
|
|
100
|
+
mkdir -p "$QUICK_DIR/.task"
|
|
101
|
+
mkdir -p "$QUICK_DIR/.summaries"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Write index.json:
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"id": "quick-{slug}-{date}",
|
|
108
|
+
"type": "quick",
|
|
109
|
+
"title": "{$DESCRIPTION}",
|
|
110
|
+
"status": "active",
|
|
111
|
+
"created_at": "{ISO timestamp}",
|
|
112
|
+
"updated_at": "{ISO timestamp}",
|
|
113
|
+
"flags": {
|
|
114
|
+
"discuss": {$DISCUSS_MODE},
|
|
115
|
+
"full": {$FULL_MODE}
|
|
116
|
+
},
|
|
117
|
+
"plan": {
|
|
118
|
+
"task_ids": [],
|
|
119
|
+
"task_count": 0
|
|
120
|
+
},
|
|
121
|
+
"execution": {
|
|
122
|
+
"method": "agent",
|
|
123
|
+
"tasks_completed": 0,
|
|
124
|
+
"tasks_total": 0
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Report: "Creating quick task: {$DESCRIPTION}\nDirectory: {$QUICK_DIR}"
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Step 4: Discussion Phase (only when $DISCUSS_MODE)
|
|
134
|
+
|
|
135
|
+
**Lightweight discussion:**
|
|
136
|
+
|
|
137
|
+
Skip entirely if NOT $DISCUSS_MODE.
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
------------------------------------------------------------
|
|
141
|
+
WORKFLOW > DISCUSSING QUICK TASK
|
|
142
|
+
------------------------------------------------------------
|
|
143
|
+
Surfacing gray areas for: {$DESCRIPTION}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**4a. Identify gray areas:**
|
|
147
|
+
|
|
148
|
+
Analyze $DESCRIPTION to identify 2-4 gray areas -- implementation decisions that would change the outcome. Use domain-aware heuristic:
|
|
149
|
+
- Something users **SEE** -> layout, density, interactions, states
|
|
150
|
+
- Something users **CALL** -> responses, errors, auth, versioning
|
|
151
|
+
- Something users **RUN** -> output format, flags, modes, error handling
|
|
152
|
+
- Something users **READ** -> structure, tone, depth, flow
|
|
153
|
+
- Something being **ORGANIZED** -> criteria, grouping, naming, exceptions
|
|
154
|
+
|
|
155
|
+
**4b. Present gray areas:**
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
AskUserQuestion(
|
|
159
|
+
header: "Gray Areas",
|
|
160
|
+
question: "Which areas need clarification before planning?",
|
|
161
|
+
options: [
|
|
162
|
+
{ label: "{area_1}", description: "{why_it_matters}" },
|
|
163
|
+
{ label: "{area_2}", description: "{why_it_matters}" },
|
|
164
|
+
{ label: "{area_3}", description: "{why_it_matters}" },
|
|
165
|
+
{ label: "All clear", description: "Skip discussion -- I know what I want" }
|
|
166
|
+
],
|
|
167
|
+
multiSelect: true
|
|
168
|
+
)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
If user selects "All clear" -> skip to Step 5 (no context.md written).
|
|
172
|
+
|
|
173
|
+
**4c. Discuss selected areas:**
|
|
174
|
+
|
|
175
|
+
For each selected area, ask 1-2 focused questions:
|
|
176
|
+
```
|
|
177
|
+
AskUserQuestion(
|
|
178
|
+
header: "{area_name}",
|
|
179
|
+
question: "{specific question}",
|
|
180
|
+
options: [
|
|
181
|
+
{ label: "{choice_1}", description: "{what this means}" },
|
|
182
|
+
{ label: "{choice_2}", description: "{what this means}" },
|
|
183
|
+
{ label: "You decide", description: "Claude's discretion" }
|
|
184
|
+
]
|
|
185
|
+
)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Max 2 questions per area. Collect all decisions.
|
|
189
|
+
|
|
190
|
+
**4d. Classify decisions:**
|
|
191
|
+
|
|
192
|
+
- **Locked**: firm decisions that cannot be changed during implementation
|
|
193
|
+
- **Free**: open for implementation discretion (implementer can choose)
|
|
194
|
+
- **Deferred**: postponed (captured but not acted on in this quick task)
|
|
195
|
+
|
|
196
|
+
**4e. Write context.md:**
|
|
197
|
+
|
|
198
|
+
```markdown
|
|
199
|
+
# Quick Task: {$DESCRIPTION} - Context
|
|
200
|
+
|
|
201
|
+
**Gathered:** {date}
|
|
202
|
+
**Status:** Ready for planning
|
|
203
|
+
|
|
204
|
+
## Task Boundary
|
|
205
|
+
|
|
206
|
+
{$DESCRIPTION}
|
|
207
|
+
|
|
208
|
+
## Constraints
|
|
209
|
+
|
|
210
|
+
### Locked
|
|
211
|
+
{decisions that are final and must be followed}
|
|
212
|
+
|
|
213
|
+
### Free
|
|
214
|
+
{decisions left to implementer discretion, including "You decide" areas}
|
|
215
|
+
|
|
216
|
+
### Deferred
|
|
217
|
+
{ideas captured but out of scope for this quick task}
|
|
218
|
+
|
|
219
|
+
## Code Context
|
|
220
|
+
{relevant code references from discussion, if any}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Write to `${QUICK_DIR}/context.md`.
|
|
224
|
+
Report: "Context captured: ${QUICK_DIR}/context.md"
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### Step 4.5: Load Project Specs
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
specs_content = maestro spec load --category coding
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Passed inline to planner agent in Step 5.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### Step 5: Spawn Planner
|
|
239
|
+
|
|
240
|
+
**Spawn workflow-planner in quick mode:**
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
Task(
|
|
244
|
+
prompt="
|
|
245
|
+
<planning_context>
|
|
246
|
+
|
|
247
|
+
**Mode:** ${FULL_MODE ? 'quick-full' : 'quick'}
|
|
248
|
+
**Directory:** ${QUICK_DIR}
|
|
249
|
+
**Description:** ${DESCRIPTION}
|
|
250
|
+
|
|
251
|
+
Read these files:
|
|
252
|
+
- .workflow/state.json (Project state)
|
|
253
|
+
- ./CLAUDE.md (Project instructions, if exists)
|
|
254
|
+
|
|
255
|
+
Project specs (pre-loaded in Step 4.5):
|
|
256
|
+
${specs_content || 'No specs found.'}
|
|
257
|
+
${DISCUSS_MODE ? '- ' + QUICK_DIR + '/context.md (User decisions -- locked)' : ''}
|
|
258
|
+
|
|
259
|
+
</planning_context>
|
|
260
|
+
|
|
261
|
+
<constraints>
|
|
262
|
+
- Create a SINGLE plan with 1-3 focused tasks
|
|
263
|
+
- Quick tasks should be atomic and self-contained
|
|
264
|
+
- No research phase
|
|
265
|
+
${FULL_MODE ? '- Target ~40% context usage (structured for verification)' : '- Target ~30% context usage (simple, focused)'}
|
|
266
|
+
${FULL_MODE ? '- Each task MUST have files, action, convergence.criteria, implementation fields' : ''}
|
|
267
|
+
</constraints>
|
|
268
|
+
|
|
269
|
+
<output>
|
|
270
|
+
Write plan to: ${QUICK_DIR}/plan.json
|
|
271
|
+
Write tasks to: ${QUICK_DIR}/.task/TASK-{NNN}.json
|
|
272
|
+
Return: ## PLANNING COMPLETE with plan path
|
|
273
|
+
</output>
|
|
274
|
+
",
|
|
275
|
+
subagent_type="workflow-planner",
|
|
276
|
+
description="Quick plan: ${DESCRIPTION}"
|
|
277
|
+
)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
After planner returns:
|
|
281
|
+
1. Verify plan.json exists at `${QUICK_DIR}/plan.json`
|
|
282
|
+
2. Update index.json plan fields
|
|
283
|
+
3. Report: "Plan created: ${QUICK_DIR}/plan.json"
|
|
284
|
+
|
|
285
|
+
If plan not found: "Planner failed to create plan.json"
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### Step 6: Plan Checker (only when $FULL_MODE)
|
|
290
|
+
|
|
291
|
+
**Plan-checker loop:**
|
|
292
|
+
|
|
293
|
+
Skip entirely if NOT $FULL_MODE.
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
------------------------------------------------------------
|
|
297
|
+
WORKFLOW > CHECKING PLAN
|
|
298
|
+
------------------------------------------------------------
|
|
299
|
+
Spawning plan checker...
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
Task(
|
|
304
|
+
prompt="
|
|
305
|
+
Verify quick task plan.
|
|
306
|
+
|
|
307
|
+
Read: ${QUICK_DIR}/plan.json and ${QUICK_DIR}/.task/TASK-*.json
|
|
308
|
+
|
|
309
|
+
Check dimensions:
|
|
310
|
+
- Requirement coverage: Does the plan address the task description?
|
|
311
|
+
- Task completeness: Do tasks have files, action, convergence.criteria, implementation?
|
|
312
|
+
- Scope sanity: Appropriately sized for quick task (1-3 tasks)?
|
|
313
|
+
${DISCUSS_MODE ? '- Context compliance: Does plan honor decisions from context.md?' : ''}
|
|
314
|
+
|
|
315
|
+
Return one of:
|
|
316
|
+
- ## VERIFICATION PASSED
|
|
317
|
+
- ## ISSUES FOUND -- structured issue list
|
|
318
|
+
",
|
|
319
|
+
subagent_type="workflow-plan-checker",
|
|
320
|
+
description="Check quick plan: ${DESCRIPTION}"
|
|
321
|
+
)
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
**Handle checker return:**
|
|
325
|
+
|
|
326
|
+
- **VERIFICATION PASSED:** Continue to Step 7.
|
|
327
|
+
- **ISSUES FOUND:** Enter revision loop.
|
|
328
|
+
|
|
329
|
+
**Revision loop (max 2 iterations):**
|
|
330
|
+
|
|
331
|
+
If iteration_count < 2:
|
|
332
|
+
- Display: "Sending back to planner for revision... (iteration {N}/2)"
|
|
333
|
+
- Spawn planner with revision context + checker issues
|
|
334
|
+
- Re-check with checker
|
|
335
|
+
- Increment iteration_count
|
|
336
|
+
|
|
337
|
+
If iteration_count >= 2:
|
|
338
|
+
- Display: "Max iterations reached. {N} issues remain."
|
|
339
|
+
- Offer: 1) Force proceed, 2) Abort
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Step 7: Spawn Executor
|
|
344
|
+
|
|
345
|
+
**Spawn workflow-executor:**
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
Task(
|
|
349
|
+
prompt="
|
|
350
|
+
Execute quick task.
|
|
351
|
+
|
|
352
|
+
Read:
|
|
353
|
+
- ${QUICK_DIR}/plan.json (Plan)
|
|
354
|
+
- ${QUICK_DIR}/.task/TASK-*.json (Tasks)
|
|
355
|
+
- .workflow/state.json (Project state)
|
|
356
|
+
- ./CLAUDE.md (Project instructions, if exists)
|
|
357
|
+
|
|
358
|
+
Constraints:
|
|
359
|
+
- Execute all tasks in the plan
|
|
360
|
+
- Commit each task atomically
|
|
361
|
+
- Create summary for each task at: ${QUICK_DIR}/.summaries/TASK-{NNN}-summary.md
|
|
362
|
+
",
|
|
363
|
+
subagent_type="workflow-executor",
|
|
364
|
+
description="Execute: ${DESCRIPTION}"
|
|
365
|
+
)
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
After executor returns:
|
|
369
|
+
1. Verify summaries exist
|
|
370
|
+
2. Update index.json execution fields
|
|
371
|
+
3. Report completion status
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
### Step 8: Verification (only when $FULL_MODE)
|
|
376
|
+
|
|
377
|
+
**Post-execution verification:**
|
|
378
|
+
|
|
379
|
+
Skip entirely if NOT $FULL_MODE.
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
------------------------------------------------------------
|
|
383
|
+
WORKFLOW > VERIFYING RESULTS
|
|
384
|
+
------------------------------------------------------------
|
|
385
|
+
Spawning verifier...
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
```
|
|
389
|
+
Task(
|
|
390
|
+
prompt="
|
|
391
|
+
Verify quick task goal achievement.
|
|
392
|
+
Task directory: ${QUICK_DIR}
|
|
393
|
+
Task goal: ${DESCRIPTION}
|
|
394
|
+
|
|
395
|
+
Read: ${QUICK_DIR}/plan.json and ${QUICK_DIR}/.summaries/
|
|
396
|
+
|
|
397
|
+
Check plan objectives against actual codebase.
|
|
398
|
+
Write verification result to: ${QUICK_DIR}/verification.json
|
|
399
|
+
",
|
|
400
|
+
subagent_type="workflow-verifier",
|
|
401
|
+
description="Verify: ${DESCRIPTION}"
|
|
402
|
+
)
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Read verification result:
|
|
406
|
+
| Status | Action |
|
|
407
|
+
|--------|--------|
|
|
408
|
+
| passed | Store "Verified", continue |
|
|
409
|
+
| gaps_found | Display gaps, offer: 1) Re-run executor, 2) Accept as-is |
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
### Step 9: Update State
|
|
414
|
+
|
|
415
|
+
**Update state.json:**
|
|
416
|
+
|
|
417
|
+
Read state.json. Add quick task to accumulated_context or quick_tasks array.
|
|
418
|
+
|
|
419
|
+
Record:
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"id": "quick-{slug}-{date}",
|
|
423
|
+
"description": "{$DESCRIPTION}",
|
|
424
|
+
"completed_at": "{ISO timestamp}",
|
|
425
|
+
"directory": "{$QUICK_DIR}",
|
|
426
|
+
"verified": {$FULL_MODE ? verification_status : "skipped"}
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Update last_updated timestamp.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### Step 10: Commit and Complete
|
|
435
|
+
|
|
436
|
+
**Final commit and completion:**
|
|
437
|
+
|
|
438
|
+
Update index.json status to "completed".
|
|
439
|
+
|
|
440
|
+
Commit quick task artifacts:
|
|
441
|
+
```bash
|
|
442
|
+
git add "${QUICK_DIR}/" .workflow/state.json
|
|
443
|
+
git commit -m "quick({slug}): ${DESCRIPTION}"
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
Display completion:
|
|
447
|
+
|
|
448
|
+
If $FULL_MODE:
|
|
449
|
+
```
|
|
450
|
+
------------------------------------------------------------
|
|
451
|
+
WORKFLOW > QUICK TASK COMPLETE (FULL MODE)
|
|
452
|
+
------------------------------------------------------------
|
|
453
|
+
|
|
454
|
+
Quick Task: {$DESCRIPTION}
|
|
455
|
+
|
|
456
|
+
Summary: ${QUICK_DIR}/.summaries/
|
|
457
|
+
Verification: ${QUICK_DIR}/verification.json ({status})
|
|
458
|
+
Directory: ${QUICK_DIR}
|
|
459
|
+
|
|
460
|
+
------------------------------------------------------------
|
|
461
|
+
Ready for next task: /workflow:quick
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
If NOT $FULL_MODE:
|
|
465
|
+
```
|
|
466
|
+
------------------------------------------------------------
|
|
467
|
+
WORKFLOW > QUICK TASK COMPLETE
|
|
468
|
+
------------------------------------------------------------
|
|
469
|
+
|
|
470
|
+
Quick Task: {$DESCRIPTION}
|
|
471
|
+
|
|
472
|
+
Summary: ${QUICK_DIR}/.summaries/
|
|
473
|
+
Directory: ${QUICK_DIR}
|
|
474
|
+
|
|
475
|
+
------------------------------------------------------------
|
|
476
|
+
Ready for next task: /workflow:quick
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Success Criteria
|
|
482
|
+
|
|
483
|
+
- [ ] --full and --discuss flags parsed from arguments when present
|
|
484
|
+
- [ ] Flags are composable (--discuss --full works)
|
|
485
|
+
- [ ] User provides task description (prompted if missing)
|
|
486
|
+
- [ ] Project validated (state.json exists)
|
|
487
|
+
- [ ] Scratch directory created at .workflow/scratch/quick-{slug}-{date}/
|
|
488
|
+
- [ ] index.json created in scratch dir
|
|
489
|
+
- [ ] (--discuss) Gray areas identified, decisions captured in context.md
|
|
490
|
+
- [ ] (--discuss) context.md honors "All clear" skip and "You decide" discretion
|
|
491
|
+
- [ ] plan.json + .task/TASK-*.json created by planner
|
|
492
|
+
- [ ] (--full) Plan checker validates plan, revision loop capped at 2
|
|
493
|
+
- [ ] .summaries/TASK-*-summary.md created by executor
|
|
494
|
+
- [ ] (--full) verification.json created by verifier
|
|
495
|
+
- [ ] state.json updated with quick task record
|
|
496
|
+
- [ ] Artifacts committed
|
|
497
|
+
- [ ] index.json status set to "completed"
|