qualia-framework 4.0.3 → 4.1.0
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/README.md +10 -8
- package/agents/builder.md +12 -2
- package/agents/plan-checker.md +26 -4
- package/agents/planner.md +33 -4
- package/agents/qa-browser.md +5 -1
- package/agents/research-synthesizer.md +2 -0
- package/agents/researcher.md +4 -0
- package/agents/roadmapper.md +11 -5
- package/agents/verifier.md +22 -3
- package/bin/cli.js +121 -4
- package/bin/install.js +13 -2
- package/bin/state.js +52 -2
- package/bin/statusline.js +78 -41
- package/docs/erp-contract.md +37 -2
- package/docs/research/2026-04-21-command-quality-deep-research.md +128 -0
- package/docs/research/2026-04-21-industry-best-practices.md +255 -0
- package/package.json +1 -1
- package/rules/grounding.md +110 -0
- package/skills/qualia-build/SKILL.md +20 -9
- package/skills/qualia-debug/SKILL.md +141 -49
- package/skills/qualia-design/SKILL.md +52 -5
- package/skills/qualia-new/SKILL.md +18 -3
- package/skills/qualia-plan/SKILL.md +11 -8
- package/skills/qualia-report/SKILL.md +141 -60
- package/skills/qualia-review/SKILL.md +36 -16
- package/skills/qualia-skill-new/SKILL.md +1 -1
- package/skills/qualia-verify/SKILL.md +5 -1
- package/templates/tracking.json +1 -0
- package/tests/runner.js +98 -0
|
@@ -1,93 +1,185 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qualia-debug
|
|
3
|
-
description: "
|
|
3
|
+
description: "Investigative debugging — parses symptom from arguments, runs diagnostic scans, identifies root cause, applies minimal fix, writes DEBUG report. Trigger on 'debug', 'find bug', 'fix error', 'something is broken', 'not working', 'weird behavior', 'layout broken', 'CSS issue', 'slow page', 'performance'."
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash
|
|
6
6
|
- Read
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
7
9
|
- Grep
|
|
8
10
|
- Glob
|
|
9
11
|
- Agent
|
|
10
12
|
---
|
|
11
13
|
|
|
12
|
-
# /qualia-debug —
|
|
14
|
+
# /qualia-debug — Investigative Debugging (one-shot)
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
Parse the symptom. Run diagnostics. Find root cause. Apply minimal fix. Write report. **One-shot — no mandatory user questions.**
|
|
15
17
|
|
|
16
18
|
## Usage
|
|
17
19
|
|
|
18
|
-
- `/qualia-debug` —
|
|
19
|
-
- `/qualia-debug
|
|
20
|
-
- `/qualia-debug --
|
|
20
|
+
- `/qualia-debug {symptom}` — investigate a specific symptom
|
|
21
|
+
- `/qualia-debug` — no symptom given: investigate recently-changed files for obvious bugs
|
|
22
|
+
- `/qualia-debug --frontend {symptom}` — layout/z-index/overflow bias
|
|
23
|
+
- `/qualia-debug --perf {symptom}` — performance bias
|
|
21
24
|
|
|
22
|
-
##
|
|
25
|
+
## Tool Budget
|
|
26
|
+
|
|
27
|
+
Max 10 Read/Grep/Bash calls for investigation. If you haven't narrowed to root cause in 10, return `INSUFFICIENT EVIDENCE after 10 steps. Narrowed to: {files}. Recommend: {next diagnostic}.` Do not keep guessing.
|
|
28
|
+
|
|
29
|
+
## Process
|
|
23
30
|
|
|
24
31
|
```bash
|
|
25
32
|
node ~/.claude/bin/qualia-ui.js banner debug
|
|
26
33
|
```
|
|
27
34
|
|
|
28
|
-
###
|
|
35
|
+
### 1. Parse Symptom from $ARGUMENTS
|
|
36
|
+
|
|
37
|
+
- If arguments provided → that's the symptom. Extract: what's broken, where (file/page/feature), when (on click? on load? after change?).
|
|
38
|
+
- If arguments empty → run `git diff HEAD~3 --stat` to find recently-touched files. Treat those as the suspect set. Symptom = "something in recent changes".
|
|
39
|
+
|
|
40
|
+
### 2. Check Known Fixes First (cheap)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
cat ~/.claude/knowledge/common-fixes.md 2>/dev/null | grep -i "{symptom_keywords}"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If a known fix matches, apply it and jump to step 5 (verify). Known fixes are pre-verified patterns — no need to re-investigate.
|
|
47
|
+
|
|
48
|
+
### 3. Diagnostic Scan
|
|
49
|
+
|
|
50
|
+
Run the scan matching the symptom type. All commands in a scan block run as parallel Bash calls in a single response turn.
|
|
51
|
+
|
|
52
|
+
**General mode (default):**
|
|
53
|
+
```bash
|
|
54
|
+
# Compile errors
|
|
55
|
+
npx tsc --noEmit 2>&1 | grep "error TS" | head -20
|
|
56
|
+
|
|
57
|
+
# Empty catch / swallowed errors
|
|
58
|
+
grep -rn "catch\s*{}\|catch\s*(.*)\s*{\s*}" --include="*.ts" --include="*.tsx" app/ components/ src/ lib/ 2>/dev/null | head -10
|
|
59
|
+
|
|
60
|
+
# Recent console.error or thrown errors
|
|
61
|
+
grep -rn "console\.error\|throw new" --include="*.ts" --include="*.tsx" app/ components/ src/ lib/ 2>/dev/null | head -10
|
|
62
|
+
|
|
63
|
+
# Broken imports
|
|
64
|
+
npx tsc --noEmit 2>&1 | grep -i "Cannot find module\|has no exported"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Frontend mode (`--frontend`):**
|
|
68
|
+
```bash
|
|
69
|
+
# Stacking context audit (z-index issues)
|
|
70
|
+
grep -rn "z-index\|z-\[" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null | head -20
|
|
71
|
+
|
|
72
|
+
# Overflow candidates (horizontal scroll, clipping)
|
|
73
|
+
grep -rn "100vw\|overflow.*hidden\|overflow-x\|position.*fixed" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null | head -15
|
|
74
|
+
|
|
75
|
+
# Fixed dimensions breaking mobile
|
|
76
|
+
grep -rn "width:.*[0-9]\+px\|height:.*[0-9]\+px\|w-\[[0-9]\+px\|h-\[[0-9]\+px" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null | grep -v "min-\|max-" | head -10
|
|
77
|
+
|
|
78
|
+
# Flex/grid blowout candidates
|
|
79
|
+
grep -rn "flex\|grid" --include="*.tsx" app/ components/ src/ 2>/dev/null | grep -v "min-w-0\|minmax(0" | wc -l
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Perf mode (`--perf`):**
|
|
83
|
+
```bash
|
|
84
|
+
# Sequential awaits that should be Promise.all
|
|
85
|
+
grep -rn "const.*=.*await" --include="*.tsx" --include="*.ts" app/ src/ 2>/dev/null | grep -v "Promise.all\|Promise.allSettled" | head -15
|
|
86
|
+
|
|
87
|
+
# Large files
|
|
88
|
+
find app/ components/ src/ -name "*.tsx" -o -name "*.ts" 2>/dev/null | xargs wc -l 2>/dev/null | sort -rn | head -10
|
|
89
|
+
|
|
90
|
+
# Missing next/image
|
|
91
|
+
grep -rn "<img " --include="*.tsx" --include="*.jsx" app/ components/ src/ 2>/dev/null | grep -v "next/image" | wc -l
|
|
92
|
+
|
|
93
|
+
# No dynamic imports (possible big bundles)
|
|
94
|
+
grep -rn "import(\|next/dynamic" --include="*.tsx" --include="*.ts" app/ src/ 2>/dev/null | wc -l
|
|
95
|
+
|
|
96
|
+
# Client-boundary usage
|
|
97
|
+
grep -rln "'use client'" --include="*.tsx" app/ components/ src/ 2>/dev/null | wc -l
|
|
98
|
+
```
|
|
29
99
|
|
|
30
|
-
|
|
100
|
+
### 4. Form Hypothesis + Apply Minimal Fix
|
|
101
|
+
|
|
102
|
+
From the diagnostic output, state the root cause in one sentence with `file:line` citation. No hedging — either you have evidence or you write `INSUFFICIENT EVIDENCE` and return (step 6).
|
|
103
|
+
|
|
104
|
+
Apply the minimal fix:
|
|
105
|
+
- Only edit files whose contents caused the symptom
|
|
106
|
+
- One concept per commit — don't fold in cleanup
|
|
107
|
+
- Don't refactor adjacent code
|
|
108
|
+
- If the fix touches > 3 files, stop and ask the user first (major refactor disguised as a debug)
|
|
109
|
+
|
|
110
|
+
### 5. Verify Fix
|
|
31
111
|
|
|
32
112
|
```bash
|
|
33
|
-
|
|
113
|
+
# TypeScript still compiles?
|
|
114
|
+
npx tsc --noEmit 2>&1 | grep -c "error TS" # Expect 0
|
|
115
|
+
|
|
116
|
+
# Symptom reproduction — ideally a grep that would have matched the bug
|
|
117
|
+
# and now returns empty:
|
|
118
|
+
grep -rn "{pattern that represented the bug}" {scope} 2>/dev/null
|
|
34
119
|
```
|
|
35
120
|
|
|
36
|
-
If the
|
|
121
|
+
If the verification fails, revert and return to step 3 with narrower hypothesis.
|
|
37
122
|
|
|
38
|
-
###
|
|
123
|
+
### 6. Write DEBUG Report
|
|
39
124
|
|
|
40
|
-
|
|
41
|
-
- What's happening? (exact error or behavior)
|
|
42
|
-
- What should happen instead?
|
|
43
|
-
- When did it start? (after what change?)
|
|
44
|
-
- What have you tried?
|
|
125
|
+
Write to `.planning/DEBUG-{YYYY-MM-DD-HHMM}.md`:
|
|
45
126
|
|
|
46
|
-
|
|
127
|
+
```markdown
|
|
128
|
+
# Debug Report — {YYYY-MM-DD HH:MM}
|
|
47
129
|
|
|
48
|
-
|
|
130
|
+
**Symptom:** {user description or "recent changes" if no args}
|
|
131
|
+
**Mode:** general | frontend | perf
|
|
132
|
+
**Tool calls used:** {N}/10
|
|
49
133
|
|
|
50
|
-
|
|
134
|
+
## Investigation
|
|
135
|
+
- Diagnostic scans run: {list}
|
|
136
|
+
- Files examined: {list}
|
|
137
|
+
- Patterns searched: {list}
|
|
51
138
|
|
|
52
|
-
|
|
139
|
+
## Root Cause
|
|
140
|
+
{file:line} — "{quoted problematic code}" — {explanation of why it caused the symptom}
|
|
53
141
|
|
|
54
|
-
|
|
142
|
+
## Fix Applied
|
|
143
|
+
- Files: {list}
|
|
144
|
+
- Diff summary: {one paragraph}
|
|
145
|
+
- Verification: {commands run + results}
|
|
55
146
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
4. Implement minimal fix
|
|
60
|
-
5. Verify fix works
|
|
61
|
-
6. Check for related issues
|
|
147
|
+
## Related Observations
|
|
148
|
+
- {any adjacent issues noticed but NOT fixed in this debug pass}
|
|
149
|
+
```
|
|
62
150
|
|
|
63
|
-
###
|
|
151
|
+
### 7. Commit
|
|
64
152
|
|
|
65
153
|
```bash
|
|
66
|
-
git add {specific files}
|
|
154
|
+
git add {specific files you changed}
|
|
67
155
|
git commit -m "fix: {what was broken and why}"
|
|
68
156
|
```
|
|
69
157
|
|
|
70
|
-
##
|
|
158
|
+
## INSUFFICIENT EVIDENCE Return
|
|
71
159
|
|
|
72
|
-
|
|
160
|
+
If you exhaust the 10-call budget without a confident root cause:
|
|
73
161
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
162
|
+
```markdown
|
|
163
|
+
# Debug Report — {YYYY-MM-DD HH:MM}
|
|
164
|
+
|
|
165
|
+
**Symptom:** {description}
|
|
166
|
+
**Outcome:** INSUFFICIENT EVIDENCE after 10 inspection steps
|
|
167
|
+
|
|
168
|
+
## Narrowed To
|
|
169
|
+
- Files examined: {list}
|
|
170
|
+
- Ruled out: {list}
|
|
171
|
+
- Remaining suspects: {list}
|
|
172
|
+
|
|
173
|
+
## Recommended Next Diagnostic
|
|
174
|
+
- {specific next step for the user — e.g., "run `npm run dev` and watch browser console for the specific error", or "add console.log at file:line and reproduce"}
|
|
175
|
+
```
|
|
81
176
|
|
|
82
|
-
|
|
177
|
+
Do NOT apply a speculative fix. Return the report and stop.
|
|
83
178
|
|
|
84
|
-
|
|
85
|
-
1. Profile the bottleneck (network, render, compute, database)
|
|
86
|
-
2. Measure baseline
|
|
87
|
-
3. Identify the hot path
|
|
179
|
+
## Rules
|
|
88
180
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
181
|
+
- **No mandatory questions.** This is one-shot. If symptom args are missing, investigate recent changes.
|
|
182
|
+
- **Root cause or INSUFFICIENT EVIDENCE** — no "probably" fixes.
|
|
183
|
+
- **Minimal fix only.** One concept, one commit. No refactors dressed as debug.
|
|
184
|
+
- **Tool budget is hard.** 10 calls, then stop.
|
|
185
|
+
- **Every fix gets a DEBUG report in .planning/** — creates a searchable record.
|
|
@@ -41,13 +41,49 @@ If DESIGN.md exists → it is law. Use exact values from sections 1-9 (Visual Th
|
|
|
41
41
|
- If `--scope`: grep for matching files in `app/` and `components/`
|
|
42
42
|
- If none: find all `page.tsx`, `layout.tsx`, and component files
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
Count them. If ≤ 5, process in main context (step 3a). If > 5, fan out to parallel agents (step 3b).
|
|
45
45
|
|
|
46
|
-
###
|
|
46
|
+
### 3a. Small File Set (≤ 5 files) — main context
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
Read EVERY target file before modifying. Critique internally using the structured rubric below, then fix everything (step 4).
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
**Critique rubric (required — produces the findings you then fix):**
|
|
51
|
+
|
|
52
|
+
| File | Dimension | Issue | Line | Severity |
|
|
53
|
+
|------|-----------|-------|------|----------|
|
|
54
|
+
| {path} | Typography/Color/Spacing/States/Responsive/A11y/Motion/Microcopy | {specific problem with quote} | {N} | CRITICAL/HIGH/MEDIUM/LOW |
|
|
55
|
+
|
|
56
|
+
Apply fixes to every HIGH and CRITICAL item. MEDIUM items fixed if cheap (same file, same category).
|
|
57
|
+
|
|
58
|
+
### 3b. Large File Set (> 5 files) — parallel fan-out
|
|
59
|
+
|
|
60
|
+
Split target files into batches of 5. Spawn one Agent per batch IN THE SAME RESPONSE TURN (parallel execution). Each agent receives DESIGN.md inlined + its 5 files + the Design Quality Rubric from `rules/grounding.md`. Agents return their batch's critique table + the actual edits applied. The skill orchestrator fans in the results and runs the final verification (step 5).
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Agent(prompt="
|
|
64
|
+
Read your role: builder for design transformation.
|
|
65
|
+
Grounding + rubrics: @~/.claude/rules/grounding.md
|
|
66
|
+
|
|
67
|
+
<design_system>
|
|
68
|
+
{inlined DESIGN.md}
|
|
69
|
+
</design_system>
|
|
70
|
+
|
|
71
|
+
<target_files>
|
|
72
|
+
{5 file paths + their contents}
|
|
73
|
+
</target_files>
|
|
74
|
+
|
|
75
|
+
Apply the Design Quality Rubric to each file. Fix every dimension scoring below 4. Make the literal edits with the Edit tool. Do NOT change logic — only styling.
|
|
76
|
+
|
|
77
|
+
Return:
|
|
78
|
+
- Critique table (File | Dimension | Issue | Line | Before-score | After-score)
|
|
79
|
+
- List of files modified
|
|
80
|
+
- Any anti-pattern greps that remain (report, don't fix beyond scope)
|
|
81
|
+
", subagent_type="general-purpose", description="Design batch {N}")
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Do not process files serially in main context — that's what wastes a context window.
|
|
85
|
+
|
|
86
|
+
### 4. Fix Everything (applies to step 3a OR to each agent in 3b)
|
|
51
87
|
|
|
52
88
|
Use exact values from DESIGN.md when available. Sections map to fixes:
|
|
53
89
|
|
|
@@ -73,11 +109,21 @@ Use exact values from DESIGN.md when available. Sections map to fixes:
|
|
|
73
109
|
|
|
74
110
|
### 5. Verify
|
|
75
111
|
|
|
112
|
+
Parallel batch — run these in a single response turn:
|
|
113
|
+
|
|
76
114
|
```bash
|
|
115
|
+
# TypeScript still compiles?
|
|
77
116
|
npx tsc --noEmit 2>&1 | head -20
|
|
117
|
+
|
|
118
|
+
# Reverted anti-patterns (any match = regression)
|
|
119
|
+
grep -rn "outline.*none\|outline-none" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null | grep -v "focus-visible\|focus:"
|
|
120
|
+
grep -rn "font-family.*Inter\|font-family.*Arial\|font-family.*system-ui\|Space Grotesk" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
|
|
121
|
+
grep -rn "max-w-\[1200\|max-w-\[1280\|max-width.*1200\|max-w-7xl" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
|
|
122
|
+
grep -rn "<img " --include="*.tsx" app/ components/ src/ 2>/dev/null | grep -v "alt="
|
|
123
|
+
grep -rn "from-blue.*to-purple\|from-purple.*to-blue" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
|
|
78
124
|
```
|
|
79
125
|
|
|
80
|
-
Fix any TypeScript errors before committing.
|
|
126
|
+
Fix any TypeScript errors before committing. If any anti-pattern grep returned matches, re-fix those files — the transformation is not complete until these greps return empty.
|
|
81
127
|
|
|
82
128
|
### 6. Commit
|
|
83
129
|
|
|
@@ -105,3 +151,4 @@ git commit -m "style: design transformation"
|
|
|
105
151
|
- Respect DESIGN.md decisions
|
|
106
152
|
- Don't break functionality — only change styling, never logic
|
|
107
153
|
- TypeScript must pass after changes
|
|
154
|
+
- All anti-pattern greps in step 5 must return empty before commit
|
|
@@ -21,8 +21,9 @@ Initialize a project with the **entire arc mapped from kickoff to handoff**. All
|
|
|
21
21
|
|
|
22
22
|
## Flags
|
|
23
23
|
|
|
24
|
-
- `/qualia-new` — full-journey flow, stops after approval (default, backward-compatible)
|
|
24
|
+
- `/qualia-new` — full-journey flow, stops after approval (default, backward-compatible). **Progressive detail**: Milestone 1 gets full phase detail; M2..M{N-1} get sketched (names + one-line goals). Full detail for later milestones is filled in by `/qualia-milestone` when each one opens. This matches how real projects unfold — M1's discoveries reshape M3's plan, so deep-planning M3 now tends to waste effort.
|
|
25
25
|
- `/qualia-new --auto` — full-journey flow, then auto-chains into `/qualia-plan 1 → /qualia-build → /qualia-verify` for Milestone 1
|
|
26
|
+
- `/qualia-new --full-detail` — ALL milestones get full phase-level detail upfront (success criteria per phase for every milestone, not just M1). Use when the client wants a fully-committed plan at kickoff. Trade-off: later milestones often need revision as M1 ships. Combinable with `--auto`.
|
|
26
27
|
- `/qualia-new --quick` — 4-phase flat wizard for trivial projects (landing pages, prototypes). Skips research and journey mapping.
|
|
27
28
|
|
|
28
29
|
## The Shift From Previous Versions
|
|
@@ -238,7 +239,7 @@ Gather any additional requirements the user wants that research missed.
|
|
|
238
239
|
node ~/.claude/bin/qualia-ui.js banner roadmap
|
|
239
240
|
```
|
|
240
241
|
|
|
241
|
-
Spawn the roadmapper with full-journey mandate
|
|
242
|
+
Spawn the roadmapper with full-journey mandate. If the user passed `--full-detail`, include `<full_detail>true</full_detail>` in the prompt so the roadmapper writes complete phase detail for ALL milestones.
|
|
242
243
|
|
|
243
244
|
```
|
|
244
245
|
Agent(prompt="
|
|
@@ -248,7 +249,7 @@ Read your role: @~/.claude/agents/roadmapper.md
|
|
|
248
249
|
Create the FULL JOURNEY for this project:
|
|
249
250
|
- .planning/JOURNEY.md — all milestones (2-5 including Handoff) with exit criteria
|
|
250
251
|
- .planning/REQUIREMENTS.md — requirements grouped by milestone
|
|
251
|
-
- .planning/ROADMAP.md — Milestone 1's phase detail
|
|
252
|
+
- .planning/ROADMAP.md — Milestone 1's phase detail (and ALL milestones if full_detail=true)
|
|
252
253
|
|
|
253
254
|
User-scoped v1 features:
|
|
254
255
|
{list of features selected in Step 9, grouped by category}
|
|
@@ -256,6 +257,10 @@ User-scoped v1 features:
|
|
|
256
257
|
Template type: {template_type from config.json}
|
|
257
258
|
If set, use ~/.claude/qualia-templates/projects/{type}.md as the milestone arc starting point.
|
|
258
259
|
|
|
260
|
+
<full_detail>{true if --full-detail, else false}</full_detail>
|
|
261
|
+
- false (default): Milestone 1 gets full phase detail; M2..M{N-1} stay as sketches. Detail fills in when each milestone opens via /qualia-milestone.
|
|
262
|
+
- true: every milestone (M1..Handoff) gets full phase-level detail in ROADMAP.md upfront. Useful when the client wants a fully-committed plan at kickoff.
|
|
263
|
+
|
|
259
264
|
The final milestone MUST be named 'Handoff' with the fixed 4 phases
|
|
260
265
|
(Polish, Content + SEO, Final QA, Handoff). Do not omit it.
|
|
261
266
|
|
|
@@ -331,6 +336,16 @@ git add .planning/JOURNEY.md .planning/REQUIREMENTS.md .planning/ROADMAP.md .pla
|
|
|
331
336
|
git commit -m "docs: journey + requirements + milestone 1 roadmap ({N} milestones)"
|
|
332
337
|
```
|
|
333
338
|
|
|
339
|
+
**After approval, show the progressive-detail reminder explicitly:**
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
node ~/.claude/bin/qualia-ui.js info "Milestone 1 is fully planned now."
|
|
343
|
+
node ~/.claude/bin/qualia-ui.js info "Milestones 2..{N-1} are sketched (names + one-line goals)."
|
|
344
|
+
node ~/.claude/bin/qualia-ui.js info "Full phase detail for each later milestone gets written when /qualia-milestone opens it."
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
(Skip this block when `--full-detail` was used — all milestones are already fully planned in that case.)
|
|
348
|
+
|
|
334
349
|
### Step 13. Environment Setup
|
|
335
350
|
|
|
336
351
|
Supabase project? `supabase link` or create. Vercel project? `vercel link`. Env vars? `.env.local` with placeholders from PROJECT.md stack.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qualia-plan
|
|
3
|
-
description: "Plan the current phase — spawns planner, validates with plan-checker in a revision loop (max
|
|
3
|
+
description: "Plan the current phase — spawns planner, validates with plan-checker in a revision loop (max 2), optionally runs discuss/research first. Use when ready to plan a phase."
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash
|
|
6
6
|
- Read
|
|
@@ -15,7 +15,7 @@ allowed-tools:
|
|
|
15
15
|
|
|
16
16
|
# /qualia-plan — Plan a Phase
|
|
17
17
|
|
|
18
|
-
Spawn a planner agent to break the current phase into executable tasks, then validate the plan with a checker (up to
|
|
18
|
+
Spawn a planner agent to break the current phase into executable tasks, then validate the plan with a checker (up to 2 revision cycles) before routing to build.
|
|
19
19
|
|
|
20
20
|
## Usage
|
|
21
21
|
|
|
@@ -73,6 +73,7 @@ Spawn the planner:
|
|
|
73
73
|
```
|
|
74
74
|
Agent(prompt="
|
|
75
75
|
Read your role: @~/.claude/agents/planner.md
|
|
76
|
+
Grounding + rubrics: @~/.claude/rules/grounding.md
|
|
76
77
|
|
|
77
78
|
<project_context>
|
|
78
79
|
@.planning/PROJECT.md
|
|
@@ -116,6 +117,7 @@ Read the generated plan. Spawn the plan-checker:
|
|
|
116
117
|
```
|
|
117
118
|
Agent(prompt="
|
|
118
119
|
Read your role: @~/.claude/agents/plan-checker.md
|
|
120
|
+
Grounding + rubrics: @~/.claude/rules/grounding.md
|
|
119
121
|
|
|
120
122
|
<plan_path>.planning/phase-{N}-plan.md</plan_path>
|
|
121
123
|
<phase_goal>{goal from ROADMAP.md}</phase_goal>
|
|
@@ -126,11 +128,12 @@ Validate against the 7 rules. Return PASS or REVISE with structured issues.
|
|
|
126
128
|
", subagent_type="qualia-plan-checker", description="Check plan phase {N}")
|
|
127
129
|
```
|
|
128
130
|
|
|
129
|
-
**Revision loop (max
|
|
131
|
+
**Revision loop (max 2 iterations):**
|
|
130
132
|
|
|
131
133
|
- Iteration 1: Check → if REVISE, re-spawn planner with checker issues
|
|
132
|
-
- Iteration 2: Re-check → if REVISE
|
|
133
|
-
|
|
134
|
+
- Iteration 2: Re-check → if REVISE or BLOCKED, escalate to user
|
|
135
|
+
|
|
136
|
+
Rationale: Amazon/NeurIPS 2025 measured reflection gains at 74→86% for 1 round, 88% for 3 rounds. Iteration 3 only added 2pp over iteration 1 — not worth the extra planner spawn (serial cost ~30-60s).
|
|
134
137
|
|
|
135
138
|
For each revision:
|
|
136
139
|
|
|
@@ -149,12 +152,12 @@ Revise the plan in place. Address every issue. Do NOT add new tasks or change sc
|
|
|
149
152
|
", subagent_type="qualia-planner", description="Revise plan phase {N}")
|
|
150
153
|
```
|
|
151
154
|
|
|
152
|
-
After revision, spawn the checker again. Max
|
|
155
|
+
After revision, spawn the checker again. Max 2 total revision cycles.
|
|
153
156
|
|
|
154
|
-
**If checker returns BLOCKED after
|
|
157
|
+
**If checker returns BLOCKED after 2 cycles:**
|
|
155
158
|
|
|
156
159
|
```bash
|
|
157
|
-
node ~/.claude/bin/qualia-ui.js fail "Plan failed validation after
|
|
160
|
+
node ~/.claude/bin/qualia-ui.js fail "Plan failed validation after 2 revisions"
|
|
158
161
|
```
|
|
159
162
|
|
|
160
163
|
Show the remaining issues. Ask:
|