qualia-framework 2.4.0 → 2.4.2

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.
Files changed (39) hide show
  1. package/bin/collect-metrics.sh +62 -0
  2. package/framework/agents/qualia-phase-researcher.md +6 -3
  3. package/framework/agents/qualia-planner.md +10 -7
  4. package/framework/agents/qualia-research-synthesizer.md +110 -147
  5. package/framework/agents/red-team-qa.md +130 -0
  6. package/framework/hooks/auto-format.sh +9 -1
  7. package/framework/hooks/migration-validate.sh +21 -16
  8. package/framework/hooks/pre-commit.sh +13 -5
  9. package/framework/hooks/pre-deploy-gate.sh +23 -1
  10. package/framework/hooks/retention-cleanup.sh +4 -4
  11. package/framework/hooks/save-session-state.sh +18 -10
  12. package/framework/hooks/session-context-loader.sh +21 -0
  13. package/framework/hooks/skill-announce.sh +2 -0
  14. package/framework/install.ps1 +6 -6
  15. package/framework/install.sh +6 -4
  16. package/framework/qualia-engine/VERSION +1 -1
  17. package/framework/qualia-engine/bin/collect-metrics.sh +71 -0
  18. package/framework/qualia-engine/bin/qualia-tools.js +104 -63
  19. package/framework/qualia-engine/references/continuation-prompt.md +97 -0
  20. package/framework/qualia-engine/references/employee-guide.md +167 -0
  21. package/framework/qualia-engine/templates/lab-notes.md +16 -0
  22. package/framework/qualia-engine/templates/roadmap.md +2 -8
  23. package/framework/qualia-engine/workflows/execute-phase.md +17 -17
  24. package/framework/qualia-engine/workflows/new-project.md +37 -114
  25. package/framework/qualia-engine/workflows/progress.md +63 -28
  26. package/framework/skills/client-handoff/SKILL.md +13 -3
  27. package/framework/skills/deep-research/SKILL.md +34 -71
  28. package/framework/skills/learn/SKILL.md +29 -5
  29. package/framework/skills/qualia/SKILL.md +57 -17
  30. package/framework/skills/qualia-complete-milestone/SKILL.md +29 -7
  31. package/framework/skills/qualia-evolve/SKILL.md +200 -0
  32. package/framework/skills/qualia-execute-phase/SKILL.md +1 -1
  33. package/framework/skills/qualia-guide/SKILL.md +32 -0
  34. package/framework/skills/qualia-help/SKILL.md +62 -60
  35. package/framework/skills/qualia-new-project/SKILL.md +32 -30
  36. package/framework/skills/qualia-report/SKILL.md +217 -0
  37. package/framework/skills/qualia-start/SKILL.md +31 -59
  38. package/framework/skills/qualia-verify-work/SKILL.md +20 -3
  39. package/package.json +1 -1
@@ -0,0 +1,217 @@
1
+ ---
2
+ name: qualia-report
3
+ description: "Generate a session work report for owner review — what was assigned, what was done, what deviated, what's next. Use this skill whenever the user says 'report', 'done for today', 'session report', 'log my work', 'what did I do', 'end of day', 'wrapping up', 'signing off', or finishes a working session. Also trigger when user mentions 'daily report', 'status update', 'work summary', or wants to document what they accomplished."
4
+ ---
5
+
6
+ # Qualia Report — Session Work Report
7
+
8
+ Generate a structured report of what was done in this session. This is for the owner to review — assigned vs done, deviations, blockers, and next steps.
9
+
10
+ ## Usage
11
+
12
+ `/qualia-report` — Generate report for current session
13
+ `/qualia-report --week` — Aggregate reports from the last 7 days
14
+
15
+ ## When to Run
16
+
17
+ The framework should suggest this when:
18
+ - Employee says "done for today", "stopping", "wrapping up", "signing off"
19
+ - Employee has been working for 1+ hours and mentions pausing
20
+ - A phase is completed or verified
21
+ - Before running `/qualia-pause-work` (report first, then pause)
22
+
23
+ ## Process
24
+
25
+ ### 1. Gather Session Data
26
+
27
+ **From git (what actually changed):**
28
+ ```bash
29
+ # Commits made this session (last N hours or since last report)
30
+ LAST_REPORT=$(ls -t .planning/reports/report-*.md 2>/dev/null | head -1)
31
+ if [ -n "$LAST_REPORT" ]; then
32
+ SINCE=$(grep -m1 "^Date:" "$LAST_REPORT" | sed 's/^Date: *//')
33
+ else
34
+ SINCE="8 hours ago"
35
+ fi
36
+ git log --oneline --since="$SINCE" --author="$(git config user.name)" 2>/dev/null
37
+ git diff --stat HEAD~5..HEAD 2>/dev/null | tail -5
38
+ ```
39
+
40
+ **From STATE.md (where the project stands):**
41
+ - Current phase and status
42
+ - Progress percentage
43
+ - Assigned to whom
44
+
45
+ **From ROADMAP.md (what was planned):**
46
+ - Which phase was being worked on
47
+ - What the phase goal is
48
+ - What the success criteria are
49
+
50
+ **From SUMMARY.md files (if any were created this session):**
51
+ - Phase execution summaries
52
+ - Deviations noted
53
+ - Decisions made
54
+
55
+ **From UAT.md files (if any were created this session):**
56
+ - Test results
57
+ - Issues found
58
+
59
+ **From git diff (what files changed):**
60
+ ```bash
61
+ git diff --name-only HEAD~5..HEAD 2>/dev/null | head -30
62
+ ```
63
+
64
+ ### 2. Analyze: Assigned vs Done
65
+
66
+ Compare what ROADMAP.md says the current phase should deliver against what was actually built:
67
+
68
+ - **Planned:** [from ROADMAP.md phase goal + success criteria]
69
+ - **Completed:** [from commits + SUMMARY.md]
70
+ - **Partially done:** [started but not finished]
71
+ - **Not started:** [planned but untouched]
72
+ - **Unplanned work:** [things done that weren't in the plan]
73
+
74
+ ### 3. Generate Report
75
+
76
+ Create `.planning/reports/report-{YYYY-MM-DD-HHMM}.md`:
77
+
78
+ ```markdown
79
+ # Session Report
80
+
81
+ **Project:** {from PROJECT.md or directory name}
82
+ **Date:** {YYYY-MM-DD HH:MM}
83
+ **Employee:** {from STATE.md "Assigned to" or git config user.name}
84
+ **Duration:** {estimated from first to last commit, or "~X hours"}
85
+ **Phase:** {N} of {total} — {phase name}
86
+
87
+ ## What Was Assigned
88
+
89
+ {Phase goal from ROADMAP.md}
90
+
91
+ Success criteria:
92
+ 1. {criterion 1}
93
+ 2. {criterion 2}
94
+ 3. {criterion 3}
95
+
96
+ ## What Was Done
97
+
98
+ {Summary of actual work, derived from commits and file changes}
99
+
100
+ - {accomplishment 1}
101
+ - {accomplishment 2}
102
+ - {accomplishment 3}
103
+
104
+ ### Files Changed
105
+ {Top 15 files modified, grouped by area}
106
+
107
+ ### Commits
108
+ {List of commits this session}
109
+
110
+ ## Progress
111
+
112
+ | Criterion | Status |
113
+ |-----------|--------|
114
+ | {criterion 1} | Done / Partial / Not started |
115
+ | {criterion 2} | Done / Partial / Not started |
116
+ | {criterion 3} | Done / Partial / Not started |
117
+
118
+ **Phase progress:** {X}% → {Y}% (moved {delta}%)
119
+ **Overall project:** {A}% → {B}%
120
+
121
+ ## Deviations
122
+
123
+ {Anything done differently from the plan — and why}
124
+
125
+ - {deviation 1}: {reason}
126
+
127
+ {If no deviations: "None — followed the plan."}
128
+
129
+ ## Blockers & Issues
130
+
131
+ {Anything that slowed down or blocked work}
132
+
133
+ - {blocker 1}: {status — resolved / still blocking}
134
+
135
+ {If none: "None — clear session."}
136
+
137
+ ## Decisions Made
138
+
139
+ {Any choices that affect future work}
140
+
141
+ | Decision | Why | Impact |
142
+ |----------|-----|--------|
143
+ | {choice} | {reason} | {what it affects} |
144
+
145
+ ## Next Session
146
+
147
+ **What to do next:**
148
+ 1. {immediate next action}
149
+ 2. {following action}
150
+
151
+ **Suggested command:** `/qualia-plan-phase {N}` or `/qualia-execute-phase {N}` etc.
152
+
153
+ ---
154
+ *Generated by /qualia-report at {timestamp}*
155
+ ```
156
+
157
+ ### 4. Commit Report
158
+
159
+ ```bash
160
+ mkdir -p .planning/reports
161
+ git add .planning/reports/report-{timestamp}.md
162
+ git commit -m "report: session report {date} — {employee name}"
163
+ ```
164
+
165
+ ### 5. Update STATE.md
166
+
167
+ Update the `Last activity` and `Last worked by` fields in STATE.md.
168
+
169
+ ### 6. Suggest Next Steps
170
+
171
+ > "Report saved to `.planning/reports/report-{date}.md`"
172
+ >
173
+ > "Want to also save session context? Run `/qualia-pause-work`"
174
+ > "Ready to keep going? Run `/qualia-plan-phase {N}`"
175
+
176
+ ## Weekly Aggregate (`--week`)
177
+
178
+ When run with `--week`, reads all reports from the last 7 days and produces a summary:
179
+
180
+ ```markdown
181
+ # Weekly Report — {project name}
182
+
183
+ **Period:** {date} to {date}
184
+ **Employee:** {name}
185
+
186
+ ## Summary
187
+
188
+ - **Sessions:** {count}
189
+ - **Phases progressed:** Phase {X} → Phase {Y}
190
+ - **Overall progress:** {A}% → {B}%
191
+ - **Commits:** {total}
192
+
193
+ ## Per-Session Breakdown
194
+
195
+ | Date | Phase | Progress | Key Accomplishment |
196
+ |------|-------|----------|-------------------|
197
+ | {date} | Phase 3 | +15% | Built auth flow |
198
+ | {date} | Phase 3 | +10% | Added RLS policies |
199
+ | {date} | Phase 4 | +5% | Started chat UI |
200
+
201
+ ## Cumulative Deviations
202
+
203
+ {Any patterns — repeated blockers, scope changes, etc.}
204
+
205
+ ## Blockers Still Open
206
+
207
+ {Unresolved from any session}
208
+
209
+ ## Next Week
210
+
211
+ {What's ahead based on ROADMAP.md}
212
+ ```
213
+
214
+ Save to `.planning/reports/weekly-{date}.md`.
215
+
216
+ ---
217
+ > Stuck? Type `/qualia-idk` · Lost? Type `/qualia-help`
@@ -20,75 +20,52 @@ You will:
20
20
 
21
21
  **CRITICAL**: Do NOT dump raw bash output. YOU format the dashboard as styled text output.
22
22
 
23
- ## Step 1: Gather Project Data
23
+ ## Step 1: Gather ALL Data (2 bash calls max)
24
24
 
25
- Run these bash commands to collect info (combine where possible):
25
+ **CRITICAL: Run exactly 2 bash calls in parallel.** Do NOT split these into separate calls.
26
26
 
27
- ```bash
28
- pwd
29
- ```
30
-
31
- ```bash
32
- node -e "try{const p=require('./package.json');console.log(p.name||'')}catch(e){console.log('')}" 2>/dev/null
33
- ```
34
-
35
- ```bash
36
- git branch --show-current 2>/dev/null || echo ""
37
- ```
38
-
39
- ```bash
40
- git status --porcelain 2>/dev/null | wc -l
41
- ```
27
+ ### Call 1 — Project & System Health
42
28
 
43
- ```bash
44
- node -v 2>/dev/null || echo "none"
45
- ```
29
+ Run this single combined command:
46
30
 
47
31
  ```bash
48
- test -f tsconfig.json && echo "yes" || echo "no"
32
+ echo "---PROJECT---"
33
+ echo "DIR:$(pwd)"
34
+ echo "NAME:$(node -e "try{const p=require('./package.json');console.log(p.name||'')}catch(e){console.log('')}" 2>/dev/null)"
35
+ echo "BRANCH:$(git branch --show-current 2>/dev/null || echo '')"
36
+ echo "CHANGES:$(git status --porcelain 2>/dev/null | wc -l)"
37
+ echo "NODE:$(node -v 2>/dev/null || echo 'none')"
38
+ echo "TS:$(test -f tsconfig.json && echo 'yes' || echo 'no')"
39
+ echo "SUPABASE:$(test -d supabase && echo 'yes' || echo 'no')"
40
+ echo "PLANNING:$(test -d .planning && echo 'yes' || echo 'no')"
41
+ echo "NEXTCONF:$(ls next.config.* 2>/dev/null | head -1)"
42
+ echo "EXPO:$(ls app.json expo.json 2>/dev/null | head -1)"
43
+ echo "PYTHON:$(ls app.py main.py 2>/dev/null | head -1)"
44
+ echo "HANDOFF:$(test -f .continue-here.md && echo 'yes' || echo 'no')"
45
+ echo "---SYSTEM---"
46
+ HOOKS_OK=0; HOOKS_TOTAL=0; for h in branch-guard pre-commit confirm-delete migration-validate pre-deploy-gate block-env-edit auto-format session-context-loader retention-cleanup pre-compact save-session-state session-learn notification-speak qualia-colors skill-announce tool-error-announce; do HOOKS_TOTAL=$((HOOKS_TOTAL+1)); test -f "$HOME/.claude/hooks/${h}.sh" && HOOKS_OK=$((HOOKS_OK+1)); done; echo "HOOKS:${HOOKS_OK}/${HOOKS_TOTAL}"
47
+ echo "ENGINE:$(test -f "$HOME/.claude/qualia-framework/bin/qualia-tools.js" && echo 'ok' || echo 'MISSING')"
48
+ echo "VERSION:$(cat "$HOME/.claude/qualia-framework/VERSION" 2>/dev/null || echo 'unknown')"
49
49
  ```
50
50
 
51
- ```bash
52
- test -d supabase && echo "supabase:yes" || echo "supabase:no"; test -d .planning && echo "planning:yes" || echo "planning:no"; ls next.config.* 2>/dev/null | head -1; ls app.json expo.json 2>/dev/null | head -1; ls app.py main.py 2>/dev/null | head -1
53
- ```
51
+ ### Call 2 — Session Context
54
52
 
55
- ```bash
56
- HOOKS_OK=0; HOOKS_TOTAL=0; for h in branch-guard pre-commit confirm-delete migration-validate pre-deploy-gate block-env-edit auto-format session-context-loader retention-cleanup pre-compact save-session-state session-learn notification-speak qualia-colors skill-announce tool-error-announce; do HOOKS_TOTAL=$((HOOKS_TOTAL+1)); test -f "$HOME/.claude/hooks/${h}.sh" && HOOKS_OK=$((HOOKS_OK+1)); done; echo "${HOOKS_OK}/${HOOKS_TOTAL}"
57
- ```
53
+ Run this single combined command:
58
54
 
59
55
  ```bash
60
- # Qualia engine health
61
- test -f "$HOME/.claude/qualia-engine/bin/qualia-tools.js" && echo "engine:ok" || echo "engine:MISSING"
62
- cat "$HOME/.claude/qualia-engine/VERSION" 2>/dev/null || echo "engine:no-version"
63
- ```
64
-
65
- If `.planning/STATE.md` exists, read it. If `.planning/ROADMAP.md` exists, read it.
66
-
67
- Classify project type from signals: `web` | `voice` | `mobile` | `python-agent` | `edge-functions` | `framework` | `unknown`
68
-
69
- ## Step 2: Gather Session Context
70
-
71
- This replaces the old session-context-loader. Run these:
72
-
73
- ```bash
74
- # Cross-project session digest (last 5 sessions)
56
+ echo "---DIGEST---"
75
57
  tail -n +4 ~/.claude/knowledge/session-digest.md 2>/dev/null | head -5
58
+ echo "---STALE---"
59
+ NOW=$(date +%s); find ~/.claude/knowledge -maxdepth 1 -name "*.md" -type f | while read f; do B=$(basename "$f"); [ "$B" = "session-digest.md" ] && continue; AGE=$(( (NOW - $(stat -c %Y "$f" 2>/dev/null || echo $NOW)) / 86400 )); [ "$AGE" -gt 30 ] && echo "${B} (${AGE}d)"; done
60
+ echo "---PULSE---"
61
+ for DIR in ~/Projects/*/; do [ -d "$DIR/.git" ] || continue; LAST=$(git -C "$DIR" log --oneline -1 --since="7 days ago" --format="%ar" 2>/dev/null); [ -n "$LAST" ] && echo "$(basename "$DIR")(${LAST})"; done | head -10
76
62
  ```
77
63
 
78
- ```bash
79
- # Stale knowledge detection (>30 days) — only top-level .md files
80
- NOW=$(date +%s); find ~/.claude/knowledge -maxdepth 1 -name "*.md" -type f | while read f; do B=$(basename "$f"); [ "$B" = "session-digest.md" ] && continue; AGE=$(( (NOW - $(stat -c %Y "$f" 2>/dev/null || echo $NOW)) / 86400 )); [ "$AGE" -gt 30 ] && echo "STALE: ${B} (${AGE}d)"; done
81
- ```
64
+ ### After bash calls
82
65
 
83
- ```bash
84
- # Project pulse (git activity in last 7 days)
85
- for DIR in ~/Projects/*/; do [ -d "$DIR/.git" ] || continue; LAST=$(git -C "$DIR" log --oneline -1 --since="7 days ago" --format="%ar" 2>/dev/null); [ -n "$LAST" ] && echo "$(basename "$DIR")(${LAST})"; done | head -10
86
- ```
66
+ If PLANNING is "yes", read `.planning/STATE.md` and `.planning/ROADMAP.md` (use the Read tool, not bash).
87
67
 
88
- ```bash
89
- # Check for .continue-here.md (auto-handoff from previous session)
90
- test -f .continue-here.md && echo "HANDOFF: .continue-here.md exists" || echo ""
91
- ```
68
+ Classify project type from signals: `web` | `voice` | `mobile` | `python-agent` | `edge-functions` | `framework` | `unknown`
92
69
 
93
70
  ## Step 3: Render the Dashboard
94
71
 
@@ -123,11 +100,6 @@ test -f .continue-here.md && echo "HANDOFF: .continue-here.md exists" || echo ""
123
100
  Status executed
124
101
  DESIGN.md ✓ REVIEW.md ▲ stale
125
102
 
126
- ── GATES ───────────────────────────────
127
- ✓ Frontend guard ✓ Deploy guard
128
- ✓ Intent verify ✓ Security rules
129
- ✓ TypeScript ✓ .env protection
130
-
131
103
  ── PATTERNS ────────────────────────────
132
104
  frontend-master responsive seo-master ship
133
105
 
@@ -93,7 +93,23 @@ For items relevant to this phase's scope, verify each one:
93
93
 
94
94
  Do NOT check items outside this phase's scope (e.g., don't check deployment items during a Phase 1 verify).
95
95
 
96
- ### 6. Design Quality Check (Frontend Phases)
96
+ ### 6. Red-Team QA (Optional Adversarial Pass)
97
+
98
+ After cooperative verification passes (all UAT items green), offer an adversarial stress test:
99
+
100
+ > "UAT passed. Want to run red-team QA? This spawns an adversarial agent that actively tries to break the implementation — edge cases, error paths, permission bypasses. Run it? (recommended for phases with auth, payments, or user input)"
101
+
102
+ If accepted, spawn the `red-team-qa` agent:
103
+ - Pass ONLY the phase goal text (from ROADMAP.md) — do NOT pass SUMMARY.md or PLAN.md
104
+ - The agent works from the goal + codebase alone (prevents confirmation bias)
105
+ - Agent produces an attack report with BROKEN / WEAK / SOLID verdicts
106
+
107
+ **On red-team results:**
108
+ - **BROKEN findings**: treat as UAT failures — add to UAT.md, route to gap planning
109
+ - **WEAK findings**: add as advisory notes in UAT.md, user decides whether to fix
110
+ - **All SOLID**: add "Red-team QA: PASSED" to UAT.md, proceed
111
+
112
+ ### 7. Design Quality Check (Frontend Phases)
97
113
 
98
114
  If the phase involves frontend work (detected from PLAN.md file references or phase description), after UAT passes with zero issues, suggest the design quality workflow:
99
115
 
@@ -101,15 +117,16 @@ If the phase involves frontend work (detected from PLAN.md file references or ph
101
117
 
102
118
  This is advisory — user can skip by running the next command directly.
103
119
 
104
- ### 7. Update State
120
+ ### 8. Update State
105
121
 
106
122
  Update `.planning/STATE.md` to reflect verification status.
107
123
 
108
124
  ### Agents Used
109
125
  | Agent | File | Role |
110
126
  |-------|------|------|
127
+ | `red-team-qa` | `~/.claude/agents/red-team-qa.md` | Adversarial QA — tries to break the implementation |
111
128
  | `qualia-planner` | `~/.claude/agents/qualia-planner.md` | Creates fix plans from diagnosed gaps |
112
129
  | `qualia-plan-checker` | `~/.claude/agents/qualia-plan-checker.md` | Validates fix plans (max 3 iterations) |
113
130
 
114
131
  ---
115
- > Stuck? Type `/qualia-idk` · Lost? Type `/qualia-help`
132
+ > Stuck? Type `/qualia-idk` · Lost? Type `/qualia-help` · Done for today? Type `/qualia-report`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qualia-framework",
3
- "version": "2.4.0",
3
+ "version": "2.4.2",
4
4
  "description": "Qualia Solutions — Claude Code Framework",
5
5
  "bin": {
6
6
  "qualia-framework": "./bin/cli.js"