qualia-framework 2.4.4 → 2.4.8
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 +1 -1
- package/bin/cli.js +1 -1
- package/framework/agents/qualia-debugger.md +1 -1
- package/framework/agents/qualia-executor.md +4 -4
- package/framework/agents/qualia-plan-checker.md +2 -2
- package/framework/agents/qualia-roadmapper.md +2 -2
- package/framework/agents/qualia-verifier.md +1 -1
- package/framework/hooks/migration-validate.sh +13 -10
- package/framework/hooks/pre-deploy-gate.sh +14 -12
- package/framework/qualia-framework/VERSION +1 -1
- package/framework/qualia-framework/bin/collect-metrics.sh +8 -12
- package/framework/qualia-framework/bin/qualia-tools.js +1 -1
- package/framework/qualia-framework/references/decimal-phase-calculation.md +4 -4
- package/framework/qualia-framework/references/model-profile-resolution.md +1 -1
- package/framework/qualia-framework/references/phase-argument-parsing.md +3 -3
- package/framework/qualia-framework/references/planning-config.md +5 -5
- package/framework/qualia-framework/references/verification-patterns.md +1 -1
- package/framework/qualia-framework/templates/codebase/structure.md +10 -10
- package/framework/qualia-framework/templates/phase-prompt.md +10 -10
- package/framework/qualia-framework/workflows/add-phase.md +2 -2
- package/framework/qualia-framework/workflows/add-todo.md +3 -3
- package/framework/qualia-framework/workflows/audit-milestone.md +3 -3
- package/framework/qualia-framework/workflows/check-todos.md +2 -2
- package/framework/qualia-framework/workflows/complete-milestone.md +4 -4
- package/framework/qualia-framework/workflows/diagnose-issues.md +1 -1
- package/framework/qualia-framework/workflows/discovery-phase.md +5 -5
- package/framework/qualia-framework/workflows/discuss-phase.md +4 -4
- package/framework/qualia-framework/workflows/execute-plan.md +8 -8
- package/framework/qualia-framework/workflows/help.md +2 -2
- package/framework/qualia-framework/workflows/insert-phase.md +3 -3
- package/framework/qualia-framework/workflows/map-codebase.md +2 -2
- package/framework/qualia-framework/workflows/new-milestone.md +6 -6
- package/framework/qualia-framework/workflows/pause-work.md +2 -2
- package/framework/qualia-framework/workflows/plan-milestone-gaps.md +2 -2
- package/framework/qualia-framework/workflows/plan-phase.md +5 -5
- package/framework/qualia-framework/workflows/quick.md +2 -2
- package/framework/qualia-framework/workflows/remove-phase.md +2 -2
- package/framework/qualia-framework/workflows/research-phase.md +4 -4
- package/framework/qualia-framework/workflows/resume-project.md +2 -2
- package/framework/qualia-framework/workflows/set-profile.md +2 -2
- package/framework/qualia-framework/workflows/settings.md +2 -2
- package/framework/qualia-framework/workflows/update.md +10 -10
- package/framework/qualia-framework/workflows/verify-phase.md +5 -5
- package/framework/qualia-framework/workflows/verify-work.md +4 -4
- package/framework/scripts/sync-to-framework.sh +1 -1
- package/framework/skills/qualia-add-todo/SKILL.md +1 -1
- package/framework/skills/qualia-check-todos/SKILL.md +1 -1
- package/framework/skills/qualia-debug/SKILL.md +2 -2
- package/framework/skills/qualia-discuss-phase/SKILL.md +2 -2
- package/framework/skills/qualia-framework-audit/SKILL.md +1 -1
- package/framework/skills/qualia-list-phase-assumptions/SKILL.md +1 -1
- package/framework/skills/qualia-new-milestone/SKILL.md +4 -4
- package/framework/skills/qualia-optimize/SKILL.md +1 -1
- package/framework/skills/qualia-pause-work/SKILL.md +1 -1
- package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +1 -1
- package/framework/skills/qualia-progress/SKILL.md +1 -1
- package/framework/skills/qualia-quick/SKILL.md +1 -1
- package/framework/skills/qualia-research-phase/SKILL.md +2 -2
- package/framework/skills/qualia-resume-work/SKILL.md +1 -1
- package/framework/skills/qualia-review/SKILL.md +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ npx github:Qualiasolutions/qualia-framework verify
|
|
|
32
32
|
- `~/.claude/hooks/` — 13 hook scripts (pre-commit, deploy gate, etc.)
|
|
33
33
|
- `~/.claude/agents/` — 19 agent definitions
|
|
34
34
|
- `~/.claude/rules/` — Security, frontend, deployment, speed rules
|
|
35
|
-
- `~/.claude/qualia-
|
|
35
|
+
- `~/.claude/qualia-framework/` — Workflow engine
|
|
36
36
|
- `~/.claude/knowledge/` — Shared knowledge base
|
|
37
37
|
- `~/.claude/CLAUDE.md` — Personalized to your role
|
|
38
38
|
- `~/.claude/settings.json` — Merged with your existing config
|
package/bin/cli.js
CHANGED
|
@@ -458,7 +458,7 @@ async function runUpdate() {
|
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
// Clean up removed directories from old versions
|
|
461
|
-
for (const stale of ['commands', 'config', 'core']) {
|
|
461
|
+
for (const stale of ['commands', 'config', 'core', 'qualia-engine']) {
|
|
462
462
|
const p = path.join(CLAUDE_DIR, stale);
|
|
463
463
|
if (fs.existsSync(p)) {
|
|
464
464
|
fs.rmSync(p, { recursive: true, force: true });
|
|
@@ -983,7 +983,7 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
|
|
|
983
983
|
**Check planning config using state load (commit_docs is available from the output):**
|
|
984
984
|
|
|
985
985
|
```bash
|
|
986
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
986
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js state load)
|
|
987
987
|
# commit_docs is in the JSON output
|
|
988
988
|
```
|
|
989
989
|
|
|
@@ -20,7 +20,7 @@ Your job: Execute the plan completely, commit each task, create SUMMARY.md, upda
|
|
|
20
20
|
Load execution context:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
23
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "${PHASE}")
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Extract from init JSON: `executor_model`, `commit_docs`, `phase_dir`, `plans`, `incomplete_plans`.
|
|
@@ -298,7 +298,7 @@ No user permission needed for Rules 1-3.
|
|
|
298
298
|
Before any `checkpoint:human-verify`, ensure verification environment is ready. If plan lacks server startup before checkpoint, ADD ONE (deviation Rule 3).
|
|
299
299
|
|
|
300
300
|
For full automation-first patterns, server lifecycle, CLI handling:
|
|
301
|
-
**See @/home/qualia/.claude/qualia-
|
|
301
|
+
**See @/home/qualia/.claude/qualia-framework/references/checkpoints.md**
|
|
302
302
|
|
|
303
303
|
**Quick reference:** Users NEVER run CLI commands. Users ONLY visit URLs, click UI, evaluate visuals, provide secrets. Claude does all automation.
|
|
304
304
|
|
|
@@ -722,7 +722,7 @@ git commit -m "{type}({phase}-{plan}): {concise task description}
|
|
|
722
722
|
<summary_creation>
|
|
723
723
|
After all tasks complete, create `{phase}-{plan}-SUMMARY.md` at `.planning/phases/XX-name/`.
|
|
724
724
|
|
|
725
|
-
**Use template:** @/home/qualia/.claude/qualia-
|
|
725
|
+
**Use template:** @/home/qualia/.claude/qualia-framework/templates/summary.md
|
|
726
726
|
|
|
727
727
|
**Frontmatter:** phase, plan, subsystem, tags, dependency graph (requires/provides/affects), tech-stack (added/patterns), key-files (created/modified), decisions, metrics (duration, completed date).
|
|
728
728
|
|
|
@@ -844,7 +844,7 @@ Progress: [progress bar]
|
|
|
844
844
|
|
|
845
845
|
<final_commit>
|
|
846
846
|
```bash
|
|
847
|
-
node /home/qualia/.claude/qualia-
|
|
847
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md
|
|
848
848
|
```
|
|
849
849
|
|
|
850
850
|
Separate from per-task commits — captures execution results only.
|
|
@@ -396,7 +396,7 @@ issue:
|
|
|
396
396
|
|
|
397
397
|
Load phase operation context:
|
|
398
398
|
```bash
|
|
399
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
399
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init phase-op "${PHASE_ARG}")
|
|
400
400
|
```
|
|
401
401
|
|
|
402
402
|
Extract from init JSON: `phase_dir`, `phase_number`, `has_plans`, `plan_count`.
|
|
@@ -405,7 +405,7 @@ Orchestrator provides CONTEXT.md content in the verification prompt. If provided
|
|
|
405
405
|
|
|
406
406
|
```bash
|
|
407
407
|
ls "$phase_dir"/*-PLAN.md 2>/dev/null
|
|
408
|
-
node /home/qualia/.claude/qualia-
|
|
408
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js roadmap get-phase "$phase_number"
|
|
409
409
|
ls "$phase_dir"/*-BRIEF.md 2>/dev/null
|
|
410
410
|
```
|
|
411
411
|
|
|
@@ -287,7 +287,7 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings:
|
|
|
287
287
|
|
|
288
288
|
## ROADMAP.md Structure
|
|
289
289
|
|
|
290
|
-
Use template from `/home/qualia/.claude/qualia-
|
|
290
|
+
Use template from `/home/qualia/.claude/qualia-framework/templates/roadmap.md`.
|
|
291
291
|
|
|
292
292
|
Key sections:
|
|
293
293
|
- Overview (2-3 sentences)
|
|
@@ -296,7 +296,7 @@ Key sections:
|
|
|
296
296
|
|
|
297
297
|
## STATE.md Structure
|
|
298
298
|
|
|
299
|
-
Use template from `/home/qualia/.claude/qualia-
|
|
299
|
+
Use template from `/home/qualia/.claude/qualia-framework/templates/state.md`.
|
|
300
300
|
|
|
301
301
|
Key sections:
|
|
302
302
|
- Project Reference (core value, current focus)
|
|
@@ -55,7 +55,7 @@ Set `is_re_verification = false`, proceed with Step 1.
|
|
|
55
55
|
```bash
|
|
56
56
|
ls "$PHASE_DIR"/*-PLAN.md 2>/dev/null
|
|
57
57
|
ls "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null
|
|
58
|
-
node /home/qualia/.claude/qualia-
|
|
58
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js roadmap get-phase "$PHASE_NUM"
|
|
59
59
|
grep -E "^| $PHASE_NUM" .planning/REQUIREMENTS.md 2>/dev/null
|
|
60
60
|
```
|
|
61
61
|
|
|
@@ -26,8 +26,11 @@ check_sql_file() {
|
|
|
26
26
|
q_fail "TRUNCATE in ${file}"
|
|
27
27
|
DESTRUCTIVE=$((DESTRUCTIVE + 1))
|
|
28
28
|
fi
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
# DELETE-without-WHERE: count DELETEs vs WHERE clauses (per-statement approximation)
|
|
30
|
+
local delete_count=$(grep -ciE '\bDELETE\s+FROM\b' "$file" 2>/dev/null || echo 0)
|
|
31
|
+
local where_count=$(grep -ciE '\bWHERE\b' "$file" 2>/dev/null || echo 0)
|
|
32
|
+
if [ "$delete_count" -gt 0 ] && [ "$delete_count" -gt "$where_count" ]; then
|
|
33
|
+
q_fail "DELETE without WHERE in ${file} (${delete_count} DELETEs, ${where_count} WHEREs)"
|
|
31
34
|
DESTRUCTIVE=$((DESTRUCTIVE + 1))
|
|
32
35
|
fi
|
|
33
36
|
if grep -iE '\bALTER\s+TABLE\b.*\bDROP\s+COLUMN\b' "$file" > /dev/null 2>&1; then
|
|
@@ -41,24 +44,24 @@ check_sql_file() {
|
|
|
41
44
|
fi
|
|
42
45
|
}
|
|
43
46
|
|
|
44
|
-
TOTAL=0
|
|
45
47
|
TRIGGERED=false
|
|
46
48
|
|
|
47
49
|
# Mode 1: SQL file written
|
|
48
50
|
if [ -n "$FILE_PATH" ] && [[ "$FILE_PATH" == *.sql ]]; then
|
|
49
51
|
TRIGGERED=true
|
|
50
52
|
check_sql_file "$FILE_PATH"
|
|
51
|
-
TOTAL=$?
|
|
52
53
|
fi
|
|
53
54
|
|
|
54
|
-
# Mode 2: supabase db push
|
|
55
|
+
# Mode 2: supabase db push — only scan new/modified migrations (not historical)
|
|
55
56
|
if [ -n "$COMMAND" ] && echo "$COMMAND" | grep -qE 'supabase\s+db\s+push'; then
|
|
56
57
|
TRIGGERED=true
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
# Scan only uncommitted or recently modified migration files
|
|
59
|
+
MODIFIED_MIGRATIONS=$(git diff --name-only HEAD -- supabase/migrations/*.sql 2>/dev/null; git diff --cached --name-only -- supabase/migrations/*.sql 2>/dev/null; git ls-files --others -- supabase/migrations/*.sql 2>/dev/null)
|
|
60
|
+
if [ -n "$MODIFIED_MIGRATIONS" ]; then
|
|
61
|
+
echo "$MODIFIED_MIGRATIONS" | sort -u | while IFS= read -r sql_file; do
|
|
62
|
+
[ -f "$sql_file" ] && check_sql_file "$sql_file"
|
|
63
|
+
done
|
|
64
|
+
fi
|
|
62
65
|
fi
|
|
63
66
|
|
|
64
67
|
# Block on destructive ops, warn on missing RLS
|
|
@@ -19,20 +19,27 @@ else
|
|
|
19
19
|
COMMAND=""
|
|
20
20
|
fi
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# Skip non-deploy commands first (git, npm, etc. may mention vercel in args/messages)
|
|
23
23
|
case "$COMMAND" in
|
|
24
|
-
|
|
24
|
+
git\ *|npm\ *|node\ *|cat\ *|echo\ *|grep\ *|ls\ *|cd\ *) exit 0 ;;
|
|
25
|
+
esac
|
|
26
|
+
|
|
27
|
+
# Only gate actual vercel production deploy commands
|
|
28
|
+
case "$COMMAND" in
|
|
29
|
+
vercel\ *--prod*|npx\ vercel\ *--prod*|bunx\ vercel\ *--prod*|pnpx\ vercel\ *--prod*) ;;
|
|
25
30
|
*) exit 0 ;;
|
|
26
31
|
esac
|
|
27
32
|
|
|
28
33
|
|
|
29
|
-
# Skip if gate
|
|
34
|
+
# Skip if gate passed recently AND no code changes since
|
|
30
35
|
STAMP="/tmp/.deploy-gate-$(echo "$PWD" | md5sum | cut -c1-8)"
|
|
31
36
|
if [ -f "$STAMP" ]; then
|
|
32
37
|
AGE=$(( $(date +%s) - $(stat -c %Y "$STAMP" 2>/dev/null || echo 0) ))
|
|
33
|
-
|
|
38
|
+
DIRTY=$(git status --porcelain 2>/dev/null | head -1)
|
|
39
|
+
if [ "$AGE" -lt 300 ] && [ -z "$DIRTY" ]; then
|
|
34
40
|
exit 0
|
|
35
41
|
fi
|
|
42
|
+
rm -f "$STAMP"
|
|
36
43
|
fi
|
|
37
44
|
|
|
38
45
|
q_header "PRE-DEPLOY GATE"
|
|
@@ -135,15 +142,10 @@ else
|
|
|
135
142
|
fi
|
|
136
143
|
|
|
137
144
|
# ─── Verdict ───
|
|
145
|
+
# Warning only — /ship skill is the real quality gate. Hook is a safety net.
|
|
138
146
|
if [ "$FAILURES" -gt 0 ]; then
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
"continue": false,
|
|
142
|
-
"stopReason": "◆ Deploy gate: ${FAILURES} check(s) failed",
|
|
143
|
-
"systemMessage": "◆ DEPLOY BLOCKED: ${FAILURES} check(s) failed. ${FAIL_DETAILS}Fix issues and retry with /ship."
|
|
144
|
-
}
|
|
145
|
-
EOJSON
|
|
146
|
-
exit 2
|
|
147
|
+
printf '{"continue":true,"systemMessage":"◆ DEPLOY WARNING: %d check(s) failed. %sThe /ship skill should have caught these — if deploying manually, fix first."}' "$FAILURES" "$FAIL_DETAILS"
|
|
148
|
+
exit 0
|
|
147
149
|
fi
|
|
148
150
|
|
|
149
151
|
WARN_MSG=""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
2.4.
|
|
1
|
+
2.4.8
|
|
@@ -49,18 +49,14 @@ fi
|
|
|
49
49
|
# Lab Notes count
|
|
50
50
|
LAB_NOTES=$(grep -c "^###" .planning/lab-notes.md 2>/dev/null || echo "0")
|
|
51
51
|
|
|
52
|
-
# Completion rate from ROADMAP.md (
|
|
53
|
-
TOTAL_PLANS=$(grep -
|
|
54
|
-
COMPLETED_PLANS=$(grep -
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# FQS = completion_rate / avg_sessions_to_ship * 100 (per OBJECTIVE.md)
|
|
62
|
-
if [ "$SESSIONS" != "?" ] && [ "$SESSIONS" -gt 0 ]; then
|
|
63
|
-
FQS=$(( COMPLETION_RATE * 100 / SESSIONS ))
|
|
52
|
+
# Completion rate from ROADMAP.md (case-insensitive, allows indentation)
|
|
53
|
+
TOTAL_PLANS=$(grep -ciE "^\s*- \[" .planning/ROADMAP.md 2>/dev/null || echo "0")
|
|
54
|
+
COMPLETED_PLANS=$(grep -ciE "^\s*- \[x\]" .planning/ROADMAP.md 2>/dev/null || echo "0")
|
|
55
|
+
|
|
56
|
+
# FQS = (completion_fraction) / sessions * 100 (per OBJECTIVE.md)
|
|
57
|
+
# = COMPLETED_PLANS * 100 / (TOTAL_PLANS * SESSIONS)
|
|
58
|
+
if [ "$TOTAL_PLANS" -gt 0 ] && [ "$SESSIONS" != "?" ] && [ "$SESSIONS" -gt 0 ]; then
|
|
59
|
+
FQS=$(( COMPLETED_PLANS * 100 / (TOTAL_PLANS * SESSIONS) ))
|
|
64
60
|
else
|
|
65
61
|
FQS="?"
|
|
66
62
|
fi
|
|
@@ -1192,7 +1192,7 @@ function cmdStateSnapshot(cwd, raw) {
|
|
|
1192
1192
|
|
|
1193
1193
|
// Parse "Progress: [...] N%" — extract percentage
|
|
1194
1194
|
let progressPercent = null;
|
|
1195
|
-
const progressMatch = content.match(
|
|
1195
|
+
const progressMatch = content.match(/^Progress:.*?(\d+)%/m);
|
|
1196
1196
|
if (progressMatch) progressPercent = parseInt(progressMatch[1], 10);
|
|
1197
1197
|
|
|
1198
1198
|
// Parse "Assigned to: ..."
|
|
@@ -6,7 +6,7 @@ Calculate the next decimal phase number for urgent insertions.
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Get next decimal phase after phase 6
|
|
9
|
-
node /home/qualia/.claude/qualia-
|
|
9
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js phase next-decimal 6
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
Output:
|
|
@@ -32,14 +32,14 @@ With existing decimals:
|
|
|
32
32
|
## Extract Values
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
DECIMAL_INFO=$(node /home/qualia/.claude/qualia-
|
|
35
|
+
DECIMAL_INFO=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js phase next-decimal "${AFTER_PHASE}")
|
|
36
36
|
DECIMAL_PHASE=$(echo "$DECIMAL_INFO" | jq -r '.next')
|
|
37
37
|
BASE_PHASE=$(echo "$DECIMAL_INFO" | jq -r '.base_phase')
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Or with --raw flag:
|
|
41
41
|
```bash
|
|
42
|
-
DECIMAL_PHASE=$(node /home/qualia/.claude/qualia-
|
|
42
|
+
DECIMAL_PHASE=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js phase next-decimal "${AFTER_PHASE}" --raw)
|
|
43
43
|
# Returns just: 06.1
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -57,7 +57,7 @@ DECIMAL_PHASE=$(node /home/qualia/.claude/qualia-engine/bin/qualia-tools.js phas
|
|
|
57
57
|
Decimal phase directories use the full decimal number:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
SLUG=$(node /home/qualia/.claude/qualia-
|
|
60
|
+
SLUG=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js generate-slug "$DESCRIPTION" --raw)
|
|
61
61
|
PHASE_DIR=".planning/phases/${DECIMAL_PHASE}-${SLUG}"
|
|
62
62
|
mkdir -p "$PHASE_DIR"
|
|
63
63
|
```
|
|
@@ -12,7 +12,7 @@ Default: `balanced` if not set or config missing.
|
|
|
12
12
|
|
|
13
13
|
## Lookup Table
|
|
14
14
|
|
|
15
|
-
@/home/qualia/.claude/qualia-
|
|
15
|
+
@/home/qualia/.claude/qualia-framework/references/model-profiles.md
|
|
16
16
|
|
|
17
17
|
Look up the agent in the table for the resolved profile. Pass the model parameter to Task calls:
|
|
18
18
|
|
|
@@ -14,7 +14,7 @@ From `$ARGUMENTS`:
|
|
|
14
14
|
The `find-phase` command handles normalization and validation in one step:
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
PHASE_INFO=$(node /home/qualia/.claude/qualia-
|
|
17
|
+
PHASE_INFO=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js find-phase "${PHASE}")
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
Returns JSON with:
|
|
@@ -45,7 +45,7 @@ fi
|
|
|
45
45
|
Use `roadmap get-phase` to validate phase exists:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
PHASE_CHECK=$(node /home/qualia/.claude/qualia-
|
|
48
|
+
PHASE_CHECK=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js roadmap get-phase "${PHASE}")
|
|
49
49
|
if [ "$(echo "$PHASE_CHECK" | jq -r '.found')" = "false" ]; then
|
|
50
50
|
echo "ERROR: Phase ${PHASE} not found in roadmap"
|
|
51
51
|
exit 1
|
|
@@ -57,5 +57,5 @@ fi
|
|
|
57
57
|
Use `find-phase` for directory lookup:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
PHASE_DIR=$(node /home/qualia/.claude/qualia-
|
|
60
|
+
PHASE_DIR=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js find-phase "${PHASE}" --raw)
|
|
61
61
|
```
|
|
@@ -40,14 +40,14 @@ Configuration options for `.planning/` directory behavior.
|
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
# Commit with automatic commit_docs + gitignore checks:
|
|
43
|
-
node /home/qualia/.claude/qualia-
|
|
43
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs: update state" --files .planning/STATE.md
|
|
44
44
|
|
|
45
45
|
# Load config via state load (returns JSON):
|
|
46
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
46
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js state load)
|
|
47
47
|
# commit_docs is available in the JSON output
|
|
48
48
|
|
|
49
49
|
# Or use init commands which include commit_docs:
|
|
50
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
50
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "1")
|
|
51
51
|
# commit_docs is included in all init command outputs
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -143,13 +143,13 @@ To use uncommitted mode:
|
|
|
143
143
|
|
|
144
144
|
Use `init execute-phase` which returns all config as JSON:
|
|
145
145
|
```bash
|
|
146
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
146
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "1")
|
|
147
147
|
# JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
Or use `state load` for the config values:
|
|
151
151
|
```bash
|
|
152
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
152
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js state load)
|
|
153
153
|
# Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
|
|
154
154
|
```
|
|
155
155
|
|
|
@@ -600,7 +600,7 @@ Some things can't be verified programmatically. Flag these for human testing:
|
|
|
600
600
|
|
|
601
601
|
For automation-first checkpoint patterns, server lifecycle management, CLI installation handling, and error recovery protocols, see:
|
|
602
602
|
|
|
603
|
-
**@/home/qualia/.claude/qualia-
|
|
603
|
+
**@/home/qualia/.claude/qualia-framework/references/checkpoints.md** → `<automation_reference>` section
|
|
604
604
|
|
|
605
605
|
Key principles:
|
|
606
606
|
- Claude sets up verification environment BEFORE presenting checkpoints
|
|
@@ -123,11 +123,11 @@ Template for `.planning/codebase/STRUCTURE.md` - captures physical file organiza
|
|
|
123
123
|
## Directory Layout
|
|
124
124
|
|
|
125
125
|
```
|
|
126
|
-
qualia-
|
|
126
|
+
qualia-framework/
|
|
127
127
|
├── bin/ # Executable entry points
|
|
128
128
|
├── commands/ # Slash command definitions
|
|
129
129
|
│ └── qualia/ # Qualia-specific commands
|
|
130
|
-
├── qualia-
|
|
130
|
+
├── qualia-framework/ # Skill resources
|
|
131
131
|
│ ├── references/ # Principle documents
|
|
132
132
|
│ ├── templates/ # File templates
|
|
133
133
|
│ └── workflows/ # Multi-step procedures
|
|
@@ -151,19 +151,19 @@ qualia-engine/
|
|
|
151
151
|
- Key files: new-project.md, plan-phase.md, execute-plan.md
|
|
152
152
|
- Subdirectories: None (flat structure)
|
|
153
153
|
|
|
154
|
-
**qualia-
|
|
154
|
+
**qualia-framework/references/**
|
|
155
155
|
- Purpose: Core philosophy and guidance documents
|
|
156
156
|
- Contains: principles.md, questioning.md, plan-format.md
|
|
157
157
|
- Key files: principles.md - system philosophy
|
|
158
158
|
- Subdirectories: None
|
|
159
159
|
|
|
160
|
-
**qualia-
|
|
160
|
+
**qualia-framework/templates/**
|
|
161
161
|
- Purpose: Document templates for .planning/ files
|
|
162
162
|
- Contains: Template definitions with frontmatter
|
|
163
163
|
- Key files: project.md, roadmap.md, plan.md, summary.md
|
|
164
164
|
- Subdirectories: codebase/ (new - for stack/architecture/structure templates)
|
|
165
165
|
|
|
166
|
-
**qualia-
|
|
166
|
+
**qualia-framework/workflows/**
|
|
167
167
|
- Purpose: Reusable multi-step procedures
|
|
168
168
|
- Contains: Workflow definitions called by commands
|
|
169
169
|
- Key files: execute-plan.md, research-phase.md
|
|
@@ -211,15 +211,15 @@ qualia-engine/
|
|
|
211
211
|
- Documentation: Update `README.md` with new command
|
|
212
212
|
|
|
213
213
|
**New Template:**
|
|
214
|
-
- Implementation: `qualia-
|
|
214
|
+
- Implementation: `qualia-framework/templates/{name}.md`
|
|
215
215
|
- Documentation: Template is self-documenting (includes guidelines)
|
|
216
216
|
|
|
217
217
|
**New Workflow:**
|
|
218
|
-
- Implementation: `qualia-
|
|
219
|
-
- Usage: Reference from command with `@/home/qualia/.claude/qualia-
|
|
218
|
+
- Implementation: `qualia-framework/workflows/{name}.md`
|
|
219
|
+
- Usage: Reference from command with `@/home/qualia/.claude/qualia-framework/workflows/{name}.md`
|
|
220
220
|
|
|
221
221
|
**New Reference Document:**
|
|
222
|
-
- Implementation: `qualia-
|
|
222
|
+
- Implementation: `qualia-framework/references/{name}.md`
|
|
223
223
|
- Usage: Reference from commands/workflows as needed
|
|
224
224
|
|
|
225
225
|
**Utilities:**
|
|
@@ -228,7 +228,7 @@ qualia-engine/
|
|
|
228
228
|
|
|
229
229
|
## Special Directories
|
|
230
230
|
|
|
231
|
-
**qualia-
|
|
231
|
+
**qualia-framework/**
|
|
232
232
|
- Purpose: Resources installed to /home/qualia/.claude/
|
|
233
233
|
- Source: Copied by bin/install.js during installation
|
|
234
234
|
- Committed: Yes (source of truth)
|
|
@@ -37,10 +37,10 @@ Output: [What artifacts will be created]
|
|
|
37
37
|
</objective>
|
|
38
38
|
|
|
39
39
|
<execution_context>
|
|
40
|
-
@/home/qualia/.claude/qualia-
|
|
41
|
-
@/home/qualia/.claude/qualia-
|
|
40
|
+
@/home/qualia/.claude/qualia-framework/workflows/execute-plan.md
|
|
41
|
+
@/home/qualia/.claude/qualia-framework/templates/summary.md
|
|
42
42
|
[If plan contains checkpoint tasks (type="checkpoint:*"), add:]
|
|
43
|
-
@/home/qualia/.claude/qualia-
|
|
43
|
+
@/home/qualia/.claude/qualia-framework/references/checkpoints.md
|
|
44
44
|
</execution_context>
|
|
45
45
|
|
|
46
46
|
<context>
|
|
@@ -75,7 +75,7 @@ Output: [What artifacts will be created]
|
|
|
75
75
|
<done>[Acceptance criteria]</done>
|
|
76
76
|
</task>
|
|
77
77
|
|
|
78
|
-
<!-- For checkpoint task examples and patterns, see @/home/qualia/.claude/qualia-
|
|
78
|
+
<!-- For checkpoint task examples and patterns, see @/home/qualia/.claude/qualia-framework/references/checkpoints.md -->
|
|
79
79
|
<!-- Key rule: Claude starts dev server BEFORE human-verify checkpoints. User only visits URLs. -->
|
|
80
80
|
|
|
81
81
|
<task type="checkpoint:decision" gate="blocking">
|
|
@@ -268,7 +268,7 @@ TDD features get dedicated plans with `type: tdd`.
|
|
|
268
268
|
→ Yes: Create a TDD plan
|
|
269
269
|
→ No: Standard task in standard plan
|
|
270
270
|
|
|
271
|
-
See `/home/qualia/.claude/qualia-
|
|
271
|
+
See `/home/qualia/.claude/qualia-framework/references/tdd.md` for TDD plan structure.
|
|
272
272
|
|
|
273
273
|
---
|
|
274
274
|
|
|
@@ -372,9 +372,9 @@ Output: Working dashboard component.
|
|
|
372
372
|
</objective>
|
|
373
373
|
|
|
374
374
|
<execution_context>
|
|
375
|
-
@/home/qualia/.claude/qualia-
|
|
376
|
-
@/home/qualia/.claude/qualia-
|
|
377
|
-
@/home/qualia/.claude/qualia-
|
|
375
|
+
@/home/qualia/.claude/qualia-framework/workflows/execute-plan.md
|
|
376
|
+
@/home/qualia/.claude/qualia-framework/templates/summary.md
|
|
377
|
+
@/home/qualia/.claude/qualia-framework/references/checkpoints.md
|
|
378
378
|
</execution_context>
|
|
379
379
|
|
|
380
380
|
<context>
|
|
@@ -497,7 +497,7 @@ user_setup:
|
|
|
497
497
|
|
|
498
498
|
**Result:** Execute-plan generates `{phase}-USER-SETUP.md` with checklist for the user.
|
|
499
499
|
|
|
500
|
-
See `/home/qualia/.claude/qualia-
|
|
500
|
+
See `/home/qualia/.claude/qualia-framework/templates/user-setup.md` for full schema and examples
|
|
501
501
|
|
|
502
502
|
---
|
|
503
503
|
|
|
@@ -564,4 +564,4 @@ Task completion ≠ Goal achievement. A task "create chat component" can complet
|
|
|
564
564
|
5. Gaps found → fix plans created → execute → re-verify
|
|
565
565
|
6. All must_haves pass → phase complete
|
|
566
566
|
|
|
567
|
-
See `/home/qualia/.claude/qualia-
|
|
567
|
+
See `/home/qualia/.claude/qualia-framework/workflows/verify-phase.md` for verification logic.
|
|
@@ -29,7 +29,7 @@ Exit.
|
|
|
29
29
|
Load phase operation context:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
32
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init phase-op "0")
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
Check `roadmap_exists` from init JSON. If false:
|
|
@@ -79,7 +79,7 @@ Convert the phase description to a kebab-case slug.
|
|
|
79
79
|
|
|
80
80
|
Use `init phase-op` which provides `phase_slug` computed from phase name, or call:
|
|
81
81
|
```bash
|
|
82
|
-
slug=$(node /home/qualia/.claude/qualia-
|
|
82
|
+
slug=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js generate-slug "$description" --raw)
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Phase directory name: `{two-digit-phase}-{slug}`
|
|
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
12
12
|
Load todo context:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
15
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init todos)
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
|
|
@@ -83,7 +83,7 @@ Use values from init context: `timestamp` and `date` are already available.
|
|
|
83
83
|
|
|
84
84
|
Generate slug for the title:
|
|
85
85
|
```bash
|
|
86
|
-
slug=$(node /home/qualia/.claude/qualia-
|
|
86
|
+
slug=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js generate-slug "$title" --raw)
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
Write to `.planning/todos/pending/${date}-${slug}.md`:
|
|
@@ -118,7 +118,7 @@ If `.planning/STATE.md` exists:
|
|
|
118
118
|
Commit the todo and any updated state:
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
|
-
node /home/qualia/.claude/qualia-
|
|
121
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
Tool respects `commit_docs` config and gitignore automatically.
|
|
@@ -11,21 +11,21 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
11
11
|
## 0. Initialize Milestone Context
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
14
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init milestone-op)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
|
|
18
18
|
|
|
19
19
|
Resolve integration checker model:
|
|
20
20
|
```bash
|
|
21
|
-
CHECKER_MODEL=$(node /home/qualia/.claude/qualia-
|
|
21
|
+
CHECKER_MODEL=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js resolve-model qualia-integration-checker --raw)
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
## 1. Determine Milestone Scope
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
# Get phases in milestone (sorted numerically, handles decimals)
|
|
28
|
-
node /home/qualia/.claude/qualia-
|
|
28
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js phases list
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
- Parse version from arguments or detect current from ROADMAP.md
|
|
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
12
12
|
Load todo context:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
15
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init todos)
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
|
|
@@ -154,7 +154,7 @@ If todo was moved to done/, commit the change:
|
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
156
|
git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
|
|
157
|
-
node /home/qualia/.claude/qualia-
|
|
157
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
Tool respects `commit_docs` config and gitignore automatically.
|
|
@@ -133,7 +133,7 @@ Extract one-liners from SUMMARY.md files using summary-extract:
|
|
|
133
133
|
```bash
|
|
134
134
|
# For each phase in milestone, extract one-liner
|
|
135
135
|
for summary in .planning/phases/*-*/*-SUMMARY.md; do
|
|
136
|
-
node /home/qualia/.claude/qualia-
|
|
136
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
|
|
137
137
|
done
|
|
138
138
|
```
|
|
139
139
|
|
|
@@ -373,7 +373,7 @@ Update `.planning/ROADMAP.md` — group completed milestone phases:
|
|
|
373
373
|
Extract completed milestone details to archive.
|
|
374
374
|
|
|
375
375
|
1. Create `.planning/milestones/v[X.Y]-ROADMAP.md`
|
|
376
|
-
2. Read `/home/qualia/.claude/qualia-
|
|
376
|
+
2. Read `/home/qualia/.claude/qualia-framework/templates/milestone-archive.md` template
|
|
377
377
|
3. Extract from ROADMAP.md: all phases in milestone (by number range), full phase details, plan lists with checkmarks
|
|
378
378
|
4. Extract from PROJECT.md: key decisions, validated requirements
|
|
379
379
|
5. Fill template placeholders: {{VERSION}}, {{MILESTONE_NAME}}, {{DATE}}, {{PHASE_START}}, {{PHASE_END}}, {{TOTAL_PLANS}}, {{MILESTONE_DESCRIPTION}}, {{PHASES_SECTION}}, {{DECISIONS_FROM_PROJECT}}, {{ISSUES_RESOLVED_DURING_MILESTONE}}
|
|
@@ -599,7 +599,7 @@ Check branching strategy and offer merge options.
|
|
|
599
599
|
Use `init milestone-op` for context, or load config directly:
|
|
600
600
|
|
|
601
601
|
```bash
|
|
602
|
-
INIT=$(node /home/qualia/.claude/qualia-
|
|
602
|
+
INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "1")
|
|
603
603
|
```
|
|
604
604
|
|
|
605
605
|
Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template` from init JSON.
|
|
@@ -777,7 +777,7 @@ git push origin v[X.Y]
|
|
|
777
777
|
Commit milestone completion.
|
|
778
778
|
|
|
779
779
|
```bash
|
|
780
|
-
node /home/qualia/.claude/qualia-
|
|
780
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
|
|
781
781
|
```
|
|
782
782
|
```
|
|
783
783
|
|
|
@@ -158,7 +158,7 @@ Update status in frontmatter to "diagnosed".
|
|
|
158
158
|
|
|
159
159
|
Commit the updated UAT.md:
|
|
160
160
|
```bash
|
|
161
|
-
node /home/qualia/.claude/qualia-
|
|
161
|
+
node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs({phase}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase}-UAT.md"
|
|
162
162
|
```
|
|
163
163
|
</step>
|
|
164
164
|
|