qualia-framework 2.6.0 → 3.2.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/CLAUDE.md +64 -0
- package/README.md +103 -30
- package/agents/builder.md +110 -0
- package/agents/planner.md +134 -0
- package/agents/qa-browser.md +186 -0
- package/agents/verifier.md +221 -0
- package/bin/cli.js +336 -531
- package/bin/install.js +570 -0
- package/bin/qualia-ui.js +299 -0
- package/bin/state.js +630 -0
- package/bin/statusline.js +252 -0
- package/guide.md +63 -0
- package/hooks/auto-update.js +139 -0
- package/hooks/branch-guard.js +47 -0
- package/hooks/migration-guard.js +60 -0
- package/hooks/pre-compact.js +32 -0
- package/hooks/pre-deploy-gate.js +110 -0
- package/hooks/pre-push.js +33 -0
- package/hooks/session-start.js +170 -0
- package/package.json +29 -20
- package/rules/design-reference.md +179 -0
- package/rules/frontend.md +126 -0
- package/skills/qualia/SKILL.md +87 -0
- package/skills/qualia-build/SKILL.md +97 -0
- package/skills/qualia-debug/SKILL.md +87 -0
- package/skills/qualia-design/SKILL.md +93 -0
- package/skills/qualia-handoff/SKILL.md +66 -0
- package/skills/qualia-idk/SKILL.md +8 -0
- package/skills/qualia-learn/SKILL.md +88 -0
- package/skills/qualia-new/SKILL.md +323 -0
- package/{framework/skills → skills}/qualia-optimize/SKILL.md +1 -1
- package/skills/qualia-pause/SKILL.md +63 -0
- package/skills/qualia-plan/SKILL.md +101 -0
- package/skills/qualia-polish/SKILL.md +157 -0
- package/skills/qualia-quick/SKILL.md +37 -0
- package/skills/qualia-report/SKILL.md +105 -0
- package/skills/qualia-resume/SKILL.md +49 -0
- package/skills/qualia-review/SKILL.md +76 -0
- package/skills/qualia-ship/SKILL.md +90 -0
- package/skills/qualia-skill-new/SKILL.md +167 -0
- package/skills/qualia-task/SKILL.md +91 -0
- package/skills/qualia-verify/SKILL.md +113 -0
- package/templates/DESIGN.md +137 -0
- package/templates/plan.md +28 -0
- package/templates/project.md +22 -0
- package/templates/state.md +27 -0
- package/templates/tracking.json +20 -0
- package/tests/bin.test.sh +673 -0
- package/tests/hooks.test.sh +315 -0
- package/tests/state.test.sh +535 -0
- package/tests/statusline.test.sh +243 -0
- package/bin/collect-metrics.sh +0 -62
- package/framework/.claudeignore +0 -51
- package/framework/CLAUDE.md +0 -51
- package/framework/MCP_SETUP.md +0 -229
- package/framework/agents/architecture-strategist.md +0 -53
- package/framework/agents/backend-agent.md +0 -150
- package/framework/agents/code-simplicity-reviewer.md +0 -86
- package/framework/agents/frontend-agent.md +0 -111
- package/framework/agents/kieran-typescript-reviewer.md +0 -96
- package/framework/agents/performance-oracle.md +0 -111
- package/framework/agents/qualia-codebase-mapper.md +0 -761
- package/framework/agents/qualia-debugger.md +0 -1204
- package/framework/agents/qualia-executor.md +0 -882
- package/framework/agents/qualia-integration-checker.md +0 -424
- package/framework/agents/qualia-phase-researcher.md +0 -457
- package/framework/agents/qualia-plan-checker.md +0 -700
- package/framework/agents/qualia-planner.md +0 -1245
- package/framework/agents/qualia-project-researcher.md +0 -603
- package/framework/agents/qualia-research-synthesizer.md +0 -200
- package/framework/agents/qualia-roadmapper.md +0 -606
- package/framework/agents/qualia-verifier.md +0 -686
- package/framework/agents/red-team-qa.md +0 -130
- package/framework/agents/security-auditor.md +0 -72
- package/framework/agents/team-orchestrator.md +0 -229
- package/framework/agents/teams/framework-audit-team.md +0 -66
- package/framework/agents/teams/full-stack-team.md +0 -48
- package/framework/agents/teams/optimize-team.md +0 -53
- package/framework/agents/teams/review-team.md +0 -70
- package/framework/agents/teams/ship-team.md +0 -86
- package/framework/agents/test-agent.md +0 -182
- package/framework/hooks/auto-format.sh +0 -54
- package/framework/hooks/block-env-edit.sh +0 -42
- package/framework/hooks/branch-guard.sh +0 -43
- package/framework/hooks/confirm-delete.sh +0 -59
- package/framework/hooks/migration-validate.sh +0 -77
- package/framework/hooks/notification-speak.sh +0 -16
- package/framework/hooks/pre-commit.sh +0 -100
- package/framework/hooks/pre-compact.sh +0 -56
- package/framework/hooks/pre-deploy-gate.sh +0 -160
- package/framework/hooks/qualia-colors.sh +0 -32
- package/framework/hooks/retention-cleanup.sh +0 -62
- package/framework/hooks/save-session-state.sh +0 -185
- package/framework/hooks/session-context-loader.sh +0 -96
- package/framework/hooks/session-learn.sh +0 -32
- package/framework/hooks/skill-announce.sh +0 -123
- package/framework/hooks/tool-error-announce.sh +0 -27
- package/framework/install.ps1 +0 -323
- package/framework/install.sh +0 -313
- package/framework/qualia-framework/VERSION +0 -1
- package/framework/qualia-framework/assets/qualia-logo.png +0 -0
- package/framework/qualia-framework/bin/collect-metrics.sh +0 -67
- package/framework/qualia-framework/bin/generate-report-docx.py +0 -429
- package/framework/qualia-framework/bin/qualia-tools.js +0 -2201
- package/framework/qualia-framework/bin/qualia-tools.test.js +0 -1054
- package/framework/qualia-framework/references/checkpoints.md +0 -775
- package/framework/qualia-framework/references/completion-checklists.md +0 -359
- package/framework/qualia-framework/references/continuation-format.md +0 -249
- package/framework/qualia-framework/references/continuation-prompt.md +0 -97
- package/framework/qualia-framework/references/decimal-phase-calculation.md +0 -65
- package/framework/qualia-framework/references/design-quality.md +0 -56
- package/framework/qualia-framework/references/employee-guide.md +0 -167
- package/framework/qualia-framework/references/git-integration.md +0 -254
- package/framework/qualia-framework/references/git-planning-commit.md +0 -50
- package/framework/qualia-framework/references/model-profile-resolution.md +0 -32
- package/framework/qualia-framework/references/model-profiles.md +0 -73
- package/framework/qualia-framework/references/phase-argument-parsing.md +0 -61
- package/framework/qualia-framework/references/planning-config.md +0 -195
- package/framework/qualia-framework/references/questioning.md +0 -141
- package/framework/qualia-framework/references/tdd.md +0 -263
- package/framework/qualia-framework/references/ui-brand.md +0 -160
- package/framework/qualia-framework/references/verification-patterns.md +0 -612
- package/framework/qualia-framework/templates/DEBUG.md +0 -159
- package/framework/qualia-framework/templates/DESIGN.md +0 -81
- package/framework/qualia-framework/templates/UAT.md +0 -247
- package/framework/qualia-framework/templates/codebase/architecture.md +0 -255
- package/framework/qualia-framework/templates/codebase/concerns.md +0 -310
- package/framework/qualia-framework/templates/codebase/conventions.md +0 -307
- package/framework/qualia-framework/templates/codebase/integrations.md +0 -280
- package/framework/qualia-framework/templates/codebase/stack.md +0 -186
- package/framework/qualia-framework/templates/codebase/structure.md +0 -285
- package/framework/qualia-framework/templates/codebase/testing.md +0 -480
- package/framework/qualia-framework/templates/config.json +0 -35
- package/framework/qualia-framework/templates/context.md +0 -283
- package/framework/qualia-framework/templates/continue-here.md +0 -78
- package/framework/qualia-framework/templates/debug-subagent-prompt.md +0 -91
- package/framework/qualia-framework/templates/discovery.md +0 -146
- package/framework/qualia-framework/templates/lab-notes.md +0 -16
- package/framework/qualia-framework/templates/milestone-archive.md +0 -123
- package/framework/qualia-framework/templates/milestone.md +0 -115
- package/framework/qualia-framework/templates/phase-prompt.md +0 -567
- package/framework/qualia-framework/templates/planner-subagent-prompt.md +0 -117
- package/framework/qualia-framework/templates/project.md +0 -184
- package/framework/qualia-framework/templates/projects/ai-agent.md +0 -156
- package/framework/qualia-framework/templates/projects/mobile-app.md +0 -181
- package/framework/qualia-framework/templates/projects/voice-agent.md +0 -134
- package/framework/qualia-framework/templates/projects/website.md +0 -137
- package/framework/qualia-framework/templates/requirements.md +0 -231
- package/framework/qualia-framework/templates/research-project/ARCHITECTURE.md +0 -204
- package/framework/qualia-framework/templates/research-project/FEATURES.md +0 -147
- package/framework/qualia-framework/templates/research-project/PITFALLS.md +0 -200
- package/framework/qualia-framework/templates/research-project/STACK.md +0 -120
- package/framework/qualia-framework/templates/research-project/SUMMARY.md +0 -170
- package/framework/qualia-framework/templates/research.md +0 -552
- package/framework/qualia-framework/templates/roadmap.md +0 -206
- package/framework/qualia-framework/templates/state.md +0 -179
- package/framework/qualia-framework/templates/summary-complex.md +0 -59
- package/framework/qualia-framework/templates/summary-minimal.md +0 -41
- package/framework/qualia-framework/templates/summary-standard.md +0 -48
- package/framework/qualia-framework/templates/summary.md +0 -246
- package/framework/qualia-framework/templates/user-setup.md +0 -311
- package/framework/qualia-framework/templates/verification-report.md +0 -322
- package/framework/qualia-framework/workflows/add-phase.md +0 -179
- package/framework/qualia-framework/workflows/add-todo.md +0 -157
- package/framework/qualia-framework/workflows/audit-milestone.md +0 -241
- package/framework/qualia-framework/workflows/check-todos.md +0 -176
- package/framework/qualia-framework/workflows/complete-milestone.md +0 -858
- package/framework/qualia-framework/workflows/diagnose-issues.md +0 -219
- package/framework/qualia-framework/workflows/discovery-phase.md +0 -289
- package/framework/qualia-framework/workflows/discuss-phase.md +0 -534
- package/framework/qualia-framework/workflows/execute-phase.md +0 -559
- package/framework/qualia-framework/workflows/execute-plan.md +0 -438
- package/framework/qualia-framework/workflows/help.md +0 -470
- package/framework/qualia-framework/workflows/insert-phase.md +0 -220
- package/framework/qualia-framework/workflows/list-phase-assumptions.md +0 -178
- package/framework/qualia-framework/workflows/map-codebase.md +0 -327
- package/framework/qualia-framework/workflows/new-milestone.md +0 -363
- package/framework/qualia-framework/workflows/new-project.md +0 -982
- package/framework/qualia-framework/workflows/pause-work.md +0 -122
- package/framework/qualia-framework/workflows/plan-milestone-gaps.md +0 -256
- package/framework/qualia-framework/workflows/plan-phase.md +0 -422
- package/framework/qualia-framework/workflows/progress.md +0 -389
- package/framework/qualia-framework/workflows/quick.md +0 -252
- package/framework/qualia-framework/workflows/remove-phase.md +0 -326
- package/framework/qualia-framework/workflows/research-phase.md +0 -74
- package/framework/qualia-framework/workflows/resume-project.md +0 -306
- package/framework/qualia-framework/workflows/set-profile.md +0 -80
- package/framework/qualia-framework/workflows/settings.md +0 -145
- package/framework/qualia-framework/workflows/transition.md +0 -556
- package/framework/qualia-framework/workflows/update.md +0 -197
- package/framework/qualia-framework/workflows/verify-phase.md +0 -195
- package/framework/qualia-framework/workflows/verify-work.md +0 -625
- package/framework/rules/context7.md +0 -14
- package/framework/rules/frontend.md +0 -33
- package/framework/rules/speed.md +0 -23
- package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
- package/framework/scripts/apply-retention.sh +0 -120
- package/framework/scripts/bootstrap-pop-os.sh +0 -354
- package/framework/scripts/claude-voice +0 -13
- package/framework/scripts/cleanup.sh +0 -131
- package/framework/scripts/cowork-mode.sh +0 -141
- package/framework/scripts/generate-project-claude-md.sh +0 -153
- package/framework/scripts/load-test-webhook.js +0 -172
- package/framework/scripts/say.py +0 -236
- package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +0 -167
- package/framework/scripts/showcase-video-recorder/playwright-helpers.js +0 -216
- package/framework/scripts/speak.py +0 -55
- package/framework/scripts/speak.sh +0 -18
- package/framework/scripts/status.sh +0 -138
- package/framework/scripts/sync-to-framework.sh +0 -65
- package/framework/scripts/voice-hotkey.py +0 -227
- package/framework/scripts/voice-input.sh +0 -51
- package/framework/skills/animate/SKILL.md +0 -202
- package/framework/skills/bolder/SKILL.md +0 -144
- package/framework/skills/browser-qa/SKILL.md +0 -536
- package/framework/skills/clarify/SKILL.md +0 -179
- package/framework/skills/client-handoff/SKILL.md +0 -135
- package/framework/skills/collab-onboard/SKILL.md +0 -111
- package/framework/skills/colorize/SKILL.md +0 -170
- package/framework/skills/critique/SKILL.md +0 -126
- package/framework/skills/deep-research/SKILL.md +0 -240
- package/framework/skills/delight/SKILL.md +0 -329
- package/framework/skills/deploy/SKILL.md +0 -261
- package/framework/skills/deploy-verify/SKILL.md +0 -377
- package/framework/skills/deploy-verify/scripts/canary-check.sh +0 -206
- package/framework/skills/deploy-verify/scripts/check-console-errors.js +0 -147
- package/framework/skills/deploy-verify/scripts/check-cwv.js +0 -139
- package/framework/skills/deploy-verify/scripts/project-detect.sh +0 -84
- package/framework/skills/deploy-verify/scripts/verify.sh +0 -548
- package/framework/skills/design-quieter/SKILL.md +0 -130
- package/framework/skills/distill/SKILL.md +0 -149
- package/framework/skills/docs-lookup/SKILL.md +0 -79
- package/framework/skills/fcm-notifications/SKILL.md +0 -125
- package/framework/skills/financial-ledger/SKILL.md +0 -1039
- package/framework/skills/frontend-master/NOTICE.md +0 -4
- package/framework/skills/frontend-master/SKILL.md +0 -127
- package/framework/skills/frontend-master/reference/color-and-contrast.md +0 -132
- package/framework/skills/frontend-master/reference/interaction-design.md +0 -123
- package/framework/skills/frontend-master/reference/motion-design.md +0 -99
- package/framework/skills/frontend-master/reference/responsive-design.md +0 -114
- package/framework/skills/frontend-master/reference/spatial-design.md +0 -100
- package/framework/skills/frontend-master/reference/typography.md +0 -131
- package/framework/skills/frontend-master/reference/ux-writing.md +0 -107
- package/framework/skills/harden/SKILL.md +0 -357
- package/framework/skills/i18n-rtl/SKILL.md +0 -752
- package/framework/skills/learn/SKILL.md +0 -95
- package/framework/skills/memory/SKILL.md +0 -50
- package/framework/skills/mobile-expo/SKILL.md +0 -977
- package/framework/skills/mobile-expo/references/store-checklist.md +0 -550
- package/framework/skills/nestjs-backend/README.md +0 -73
- package/framework/skills/nestjs-backend/SKILL.md +0 -446
- package/framework/skills/nestjs-backend/references/templates.md +0 -1173
- package/framework/skills/normalize/SKILL.md +0 -79
- package/framework/skills/onboard/SKILL.md +0 -242
- package/framework/skills/openrouter-agent/SKILL.md +0 -922
- package/framework/skills/polish/SKILL.md +0 -209
- package/framework/skills/pr/SKILL.md +0 -66
- package/framework/skills/qualia/SKILL.md +0 -199
- package/framework/skills/qualia-add-todo/SKILL.md +0 -68
- package/framework/skills/qualia-audit-milestone/SKILL.md +0 -95
- package/framework/skills/qualia-check-todos/SKILL.md +0 -55
- package/framework/skills/qualia-complete-milestone/SKILL.md +0 -134
- package/framework/skills/qualia-debug/SKILL.md +0 -149
- package/framework/skills/qualia-design/SKILL.md +0 -203
- package/framework/skills/qualia-discuss-phase/SKILL.md +0 -72
- package/framework/skills/qualia-evolve/SKILL.md +0 -200
- package/framework/skills/qualia-execute-phase/SKILL.md +0 -89
- package/framework/skills/qualia-framework-audit/SKILL.md +0 -604
- package/framework/skills/qualia-guide/SKILL.md +0 -32
- package/framework/skills/qualia-help/SKILL.md +0 -114
- package/framework/skills/qualia-idk/SKILL.md +0 -352
- package/framework/skills/qualia-list-phase-assumptions/SKILL.md +0 -67
- package/framework/skills/qualia-new-milestone/SKILL.md +0 -72
- package/framework/skills/qualia-new-project/SKILL.md +0 -232
- package/framework/skills/qualia-pause-work/SKILL.md +0 -96
- package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +0 -57
- package/framework/skills/qualia-plan-phase/SKILL.md +0 -104
- package/framework/skills/qualia-production-check/SKILL.md +0 -0
- package/framework/skills/qualia-progress/SKILL.md +0 -53
- package/framework/skills/qualia-quick/SKILL.md +0 -89
- package/framework/skills/qualia-report/SKILL.md +0 -166
- package/framework/skills/qualia-research-phase/SKILL.md +0 -88
- package/framework/skills/qualia-resume-work/SKILL.md +0 -62
- package/framework/skills/qualia-review/SKILL.md +0 -263
- package/framework/skills/qualia-start/SKILL.md +0 -161
- package/framework/skills/qualia-verify-work/SKILL.md +0 -132
- package/framework/skills/rag/SKILL.md +0 -750
- package/framework/skills/responsive/SKILL.md +0 -231
- package/framework/skills/retro/SKILL.md +0 -284
- package/framework/skills/sakani-conventions/SKILL.md +0 -136
- package/framework/skills/sakani-conventions/evals/evals.json +0 -23
- package/framework/skills/sakani-conventions/references/entities.md +0 -365
- package/framework/skills/sakani-conventions/references/error-codes.md +0 -95
- package/framework/skills/seo-master/SKILL.md +0 -490
- package/framework/skills/seo-master/references/checklist.md +0 -199
- package/framework/skills/seo-master/references/structured-data.md +0 -609
- package/framework/skills/ship/SKILL.md +0 -239
- package/framework/skills/stack-researcher/SKILL.md +0 -215
- package/framework/skills/status/SKILL.md +0 -154
- package/framework/skills/status/scripts/health-check.sh +0 -562
- package/framework/skills/subscription-payments/SKILL.md +0 -250
- package/framework/skills/supabase/SKILL.md +0 -973
- package/framework/skills/supabase/references/templates.md +0 -159
- package/framework/skills/team/SKILL.md +0 -67
- package/framework/skills/test-runner/SKILL.md +0 -202
- package/framework/skills/voice-agent/SKILL.md +0 -1312
- package/framework/skills/zoho-workflow/SKILL.md +0 -51
- package/framework/statusline-command.sh +0 -117
- package/framework/teams/default/inboxes/plan-04.json +0 -9
- package/framework/teams/review-team.md +0 -75
- package/framework/teams/ship-team.md +0 -86
- package/profiles/fawzi.json +0 -16
- package/profiles/hasan.json +0 -16
- package/profiles/moayad.json +0 -16
- package/templates/CLAUDE-owner.md +0 -52
- package/templates/CLAUDE.md.hbs +0 -58
- package/templates/env.claude.template +0 -12
- package/templates/settings.json +0 -172
- package/uninstall.sh +0 -90
- /package/{framework/rules → rules}/deployment.md +0 -0
- /package/{framework/rules → rules}/security.md +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-report
|
|
3
|
+
description: "Generate session report and commit to repo. Mandatory before clock-out."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-report — Session Report
|
|
7
|
+
|
|
8
|
+
Generate a concise report of what was done. Committed to git and uploaded to the ERP for clock-out.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/bin/qualia-ui.js banner report
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 1. Gather Data
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
SINCE="8 hours ago"
|
|
20
|
+
echo "---COMMITS---"
|
|
21
|
+
git log --oneline --since="$SINCE" 2>/dev/null | head -20
|
|
22
|
+
echo "---STATS---"
|
|
23
|
+
echo "COUNT:$(git log --oneline --since="$SINCE" 2>/dev/null | wc -l)"
|
|
24
|
+
echo "---PROJECT---"
|
|
25
|
+
echo "DIR:$(basename $(pwd))"
|
|
26
|
+
echo "BRANCH:$(git branch --show-current 2>/dev/null)"
|
|
27
|
+
echo "---STATE---"
|
|
28
|
+
node ~/.claude/bin/state.js check 2>/dev/null
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 2. Synthesize
|
|
32
|
+
|
|
33
|
+
Build a concise summary:
|
|
34
|
+
- **What was done:** 3-6 bullet points. Start with verbs (Built, Fixed, Added). Group related commits.
|
|
35
|
+
- **Blockers:** Only if something is actually blocked.
|
|
36
|
+
- **Next:** 1-3 clear next actions.
|
|
37
|
+
|
|
38
|
+
### 3. Generate Report
|
|
39
|
+
|
|
40
|
+
Write to `.planning/reports/report-{YYYY-MM-DD}.md`:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# Session Report — {YYYY-MM-DD}
|
|
44
|
+
|
|
45
|
+
**Project:** {name}
|
|
46
|
+
**Employee:** {git user.name}
|
|
47
|
+
**Branch:** {branch}
|
|
48
|
+
**Phase:** {N} — {name} ({status})
|
|
49
|
+
**Date:** {YYYY-MM-DD}
|
|
50
|
+
|
|
51
|
+
## What Was Done
|
|
52
|
+
- {accomplishment 1}
|
|
53
|
+
- {accomplishment 2}
|
|
54
|
+
- {accomplishment 3}
|
|
55
|
+
|
|
56
|
+
## Blockers
|
|
57
|
+
None. / - {blocker}
|
|
58
|
+
|
|
59
|
+
## Next Steps
|
|
60
|
+
1. {next action}
|
|
61
|
+
2. {next action}
|
|
62
|
+
|
|
63
|
+
## Commits
|
|
64
|
+
{list from git log}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 4. Commit and Push
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
mkdir -p .planning/reports
|
|
71
|
+
git add .planning/reports/report-{date}.md
|
|
72
|
+
git commit -m "report: session {YYYY-MM-DD}"
|
|
73
|
+
git push
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 5. Upload to ERP
|
|
77
|
+
|
|
78
|
+
**This step is MANDATORY** — the clock-out modal requires the report to be uploaded.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
ERP_URL="https://portal.qualiasolutions.net"
|
|
82
|
+
API_KEY=$(cat ~/.claude/.erp-api-key 2>/dev/null)
|
|
83
|
+
REPORT_FILE=".planning/reports/report-{date}.md"
|
|
84
|
+
EMAIL=$(git config user.email)
|
|
85
|
+
PROJECT=$(basename $(pwd))
|
|
86
|
+
|
|
87
|
+
curl -s -X POST "$ERP_URL/api/claude/report-upload" \
|
|
88
|
+
-H "X-API-Key: $API_KEY" \
|
|
89
|
+
-F "file=@$REPORT_FILE" \
|
|
90
|
+
-F "employee_email=$EMAIL" \
|
|
91
|
+
-F "project_name=$PROJECT"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If the upload succeeds, print: "Report uploaded to ERP. You can now clock out."
|
|
95
|
+
If it fails (no API key, network error), print the error and tell the employee to ask Fawzi.
|
|
96
|
+
|
|
97
|
+
### 6. Update State
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
node ~/.claude/bin/state.js transition --to activity --notes "Session report generated"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
104
|
+
|
|
105
|
+
Employee cannot skip this. Run `/qualia-report` before clock-out.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-resume
|
|
3
|
+
description: "Restore context from a previous session. Reads .continue-here.md or STATE.md, summarizes where you left off, routes to next action. Trigger on 'resume', 'continue', 'pick up where I left off', 'what was I doing'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-resume — Resume Work
|
|
7
|
+
|
|
8
|
+
Restore context and route to the right next action.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
### 1. Find Context (priority order)
|
|
13
|
+
|
|
14
|
+
1. `.continue-here.md` — richest source, from `/qualia-pause`
|
|
15
|
+
2. `.planning/STATE.md` — project state
|
|
16
|
+
3. Git history — `git log --oneline -10` + `git diff --stat`
|
|
17
|
+
|
|
18
|
+
### 2. Restore
|
|
19
|
+
|
|
20
|
+
**If `.continue-here.md` exists:** Read fully. Summarize: what was done, what's in progress, next steps, blockers.
|
|
21
|
+
|
|
22
|
+
**If only STATE.md:** Read STATE.md + tracking.json. Show current phase and status.
|
|
23
|
+
|
|
24
|
+
**If neither:** Reconstruct from git. Present findings, ask user to confirm.
|
|
25
|
+
|
|
26
|
+
### 3. Detect Incomplete Work
|
|
27
|
+
|
|
28
|
+
- Phase has plan but no verification → execution may be incomplete
|
|
29
|
+
- Uncommitted changes → `git status --short`
|
|
30
|
+
- Phase marked in-progress in STATE.md
|
|
31
|
+
|
|
32
|
+
### 4. Present and Route
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node ~/.claude/bin/qualia-ui.js banner resume
|
|
36
|
+
node ~/.claude/bin/qualia-ui.js info "Last session: {summary}"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If uncommitted changes:
|
|
40
|
+
```bash
|
|
41
|
+
node ~/.claude/bin/qualia-ui.js warn "{N} uncommitted files"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
End with the next command:
|
|
45
|
+
```bash
|
|
46
|
+
node ~/.claude/bin/qualia-ui.js next "{next command}"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Clean up `.continue-here.md` after restoration (or offer to keep it).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-review
|
|
3
|
+
description: "Production audit and code review. General review, --web for web app audit, --ai for AI/voice agent audit. Trigger on 'review', 'audit', 'code review', 'security check', 'production check'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-review — Production Audit
|
|
7
|
+
|
|
8
|
+
Deep review with severity-scored findings. Different from `/qualia-verify` (which checks phase goals). This checks production readiness.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
- `/qualia-review` — General code review
|
|
13
|
+
- `/qualia-review --web` — Web app production audit
|
|
14
|
+
- `/qualia-review --ai` — AI/voice agent audit
|
|
15
|
+
|
|
16
|
+
## General Review (default)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node ~/.claude/bin/qualia-ui.js banner review
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Spawn parallel agents analyzing:
|
|
23
|
+
|
|
24
|
+
1. **Code Quality** — Clean code, TypeScript strictness, naming, readability
|
|
25
|
+
2. **Security** — OWASP top 10, auth server-side, RLS policies, secrets scan
|
|
26
|
+
3. **Architecture** — Component boundaries, coupling, API contracts
|
|
27
|
+
4. **Performance** — N+1 queries, bundle size, caching, render performance
|
|
28
|
+
5. **Test Coverage** — Gaps, edge cases, test quality
|
|
29
|
+
|
|
30
|
+
## --web (Web App Audit)
|
|
31
|
+
|
|
32
|
+
Full production readiness for Next.js + Supabase + Vercel:
|
|
33
|
+
|
|
34
|
+
**Security:** No secrets in code, HTTPS, CORS restricted, CSP headers, rate limiting, npm audit clean.
|
|
35
|
+
|
|
36
|
+
**Performance:** Core Web Vitals (LCP < 2.5s, CLS < 0.1), image optimization, bundle analysis, query performance.
|
|
37
|
+
|
|
38
|
+
**Reliability:** Error boundaries, API error handling, graceful degradation, health check endpoint.
|
|
39
|
+
|
|
40
|
+
**Observability:** Error tracking (Sentry), structured logging, uptime monitoring, analytics.
|
|
41
|
+
|
|
42
|
+
## --ai (AI/Voice Agent Audit)
|
|
43
|
+
|
|
44
|
+
Auto-detect stack (VAPI, ElevenLabs, Retell, OpenAI, Anthropic, pgvector).
|
|
45
|
+
|
|
46
|
+
**Prompt Safety:** System prompts not exposed, injection defenses, no eval() on AI output, token limits.
|
|
47
|
+
|
|
48
|
+
**Conversation Flow:** Off-topic handling, context window management, error recovery, human handoff.
|
|
49
|
+
|
|
50
|
+
**Voice (if detected):** Latency < 500ms, interruption handling, silence timeout, webhook security.
|
|
51
|
+
|
|
52
|
+
**RAG (if detected):** Embedding consistency, chunk size, retrieval relevance, index refresh.
|
|
53
|
+
|
|
54
|
+
**Resilience:** Provider failover, timeout handling, cost monitoring, streaming error recovery.
|
|
55
|
+
|
|
56
|
+
## Output
|
|
57
|
+
|
|
58
|
+
Every finding:
|
|
59
|
+
- **What** — description
|
|
60
|
+
- **Where** — `file:line`
|
|
61
|
+
- **Fix** — concrete suggestion
|
|
62
|
+
- **Severity** — CRITICAL / HIGH / MEDIUM / LOW
|
|
63
|
+
|
|
64
|
+
Write to `.planning/REVIEW.md`. CRITICAL or HIGH findings are deploy blockers — `/qualia-ship` checks for them.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
⬢ Review Complete
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
Critical: {N}
|
|
70
|
+
High: {N}
|
|
71
|
+
Medium: {N}
|
|
72
|
+
Low: {N}
|
|
73
|
+
|
|
74
|
+
{If blockers: Fix CRITICAL/HIGH before /qualia-ship}
|
|
75
|
+
{If clean: Ready to ship}
|
|
76
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-ship
|
|
3
|
+
description: "Deploy to production — quality gates, commit, push, deploy, verify. Use when ready to go live."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-ship — Deploy
|
|
7
|
+
|
|
8
|
+
Full deployment pipeline with quality gates.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/bin/qualia-ui.js banner ship
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 1. Quality Gates
|
|
17
|
+
|
|
18
|
+
Run in sequence. Auto-fix failures (up to 2 attempts).
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx tsc --noEmit # TypeScript — must pass
|
|
22
|
+
npx eslint . --max-warnings 0 # Lint — auto-fix first
|
|
23
|
+
npm run build # Build — must succeed
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
On failure:
|
|
27
|
+
1. Summarize what failed in plain language
|
|
28
|
+
2. Auto-fix
|
|
29
|
+
3. Re-run the gate
|
|
30
|
+
4. If still failing after 2 attempts: tell the employee, suggest `/qualia-debug`
|
|
31
|
+
|
|
32
|
+
### 2. Security Check
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# service_role in client code?
|
|
36
|
+
grep -r "service_role" app/ components/ src/ 2>/dev/null | grep -v node_modules | grep -v ".server."
|
|
37
|
+
# Should be ZERO matches
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Git
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git add {specific changed files}
|
|
44
|
+
git commit -m "ship: {project name} production deploy"
|
|
45
|
+
git push
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Employee stays on feature branch. Never push to main.
|
|
49
|
+
|
|
50
|
+
### 4. Deploy
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
vercel --prod # Website/AI agent
|
|
54
|
+
# OR
|
|
55
|
+
supabase functions deploy # Edge functions
|
|
56
|
+
# OR
|
|
57
|
+
wrangler deploy # Cloudflare Workers
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 5. Post-Deploy Verification
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# HTTP 200
|
|
64
|
+
curl -s -o /dev/null -w "%{http_code}" {domain}
|
|
65
|
+
|
|
66
|
+
# Latency under 500ms
|
|
67
|
+
curl -s -o /dev/null -w "%{time_total}" {domain}
|
|
68
|
+
|
|
69
|
+
# Auth endpoint responds
|
|
70
|
+
curl -s -o /dev/null -w "%{http_code}" {domain}/api/auth/callback
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 6. Report
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node ~/.claude/bin/qualia-ui.js divider
|
|
77
|
+
node ~/.claude/bin/qualia-ui.js ok "URL: {production url}"
|
|
78
|
+
node ~/.claude/bin/qualia-ui.js ok "Status: HTTP 200"
|
|
79
|
+
node ~/.claude/bin/qualia-ui.js ok "Latency: {time}ms"
|
|
80
|
+
node ~/.claude/bin/qualia-ui.js ok "Auth endpoint responds"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
node ~/.claude/bin/state.js transition --to shipped --deployed-url {production url}
|
|
85
|
+
```
|
|
86
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
node ~/.claude/bin/qualia-ui.js end "SHIPPED" "/qualia-handoff"
|
|
90
|
+
```
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-skill-new
|
|
3
|
+
description: "Author a new Qualia skill or agent. Use when the user says 'create a new skill', 'add a skill', 'I want to build a skill', 'make this a reusable command', 'turn this into a skill'. Generates the SKILL.md, registers it in the right location, and optionally ships to the framework repo."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-skill-new — Author a New Skill
|
|
7
|
+
|
|
8
|
+
You are about to create a reusable slash command. Skills are the leverage of the Qualia framework — if the team does something twice, it probably belongs here.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/bin/qualia-ui.js banner skill-new
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 1. Scope Decision
|
|
17
|
+
|
|
18
|
+
Ask the user with AskUserQuestion:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
question: "Where should this skill live?"
|
|
22
|
+
header: "Scope"
|
|
23
|
+
options:
|
|
24
|
+
- label: "Framework skill (ships to the team)"
|
|
25
|
+
description: "Edit qualia-framework repo. Everyone gets it on next update."
|
|
26
|
+
- label: "Local skill (just me)"
|
|
27
|
+
description: "Lives only in ~/.claude/skills/. Not shared."
|
|
28
|
+
- label: "Agent instead of a skill"
|
|
29
|
+
description: "This is a subagent role, not a slash command. Creates agents/{name}.md."
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 1a. Resolve framework directory
|
|
33
|
+
|
|
34
|
+
If the user chose **Framework skill** or a framework-scoped **Agent**, resolve `${FRAMEWORK_DIR}` — the checkout path of this user's qualia-framework repo — BEFORE computing any target paths. Never hardcode `/home/<user>/...`; different teammates and operating systems have different paths.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Priority order: env var → git detection → ask user
|
|
38
|
+
FRAMEWORK_DIR="${QUALIA_FRAMEWORK_DIR:-}"
|
|
39
|
+
if [ -z "$FRAMEWORK_DIR" ] && git -C . rev-parse --show-toplevel >/dev/null 2>&1; then
|
|
40
|
+
ORIGIN=$(git -C . config --get remote.origin.url 2>/dev/null)
|
|
41
|
+
case "$ORIGIN" in
|
|
42
|
+
*qualia-framework*) FRAMEWORK_DIR=$(git -C . rev-parse --show-toplevel) ;;
|
|
43
|
+
esac
|
|
44
|
+
fi
|
|
45
|
+
echo "${FRAMEWORK_DIR:-UNRESOLVED}"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If the command prints `UNRESOLVED`, ask the user: *"Where is your qualia-framework checkout? (absolute path, or type 'local' to save only to ~/.claude/)"*. If they type `local`, downgrade the scope to Local. Otherwise store the answer as `${FRAMEWORK_DIR}` for the rest of the session.
|
|
49
|
+
|
|
50
|
+
**Framework** → target: `${FRAMEWORK_DIR}/skills/{name}/SKILL.md`
|
|
51
|
+
**Local** → target: `~/.claude/skills/{name}/SKILL.md`
|
|
52
|
+
**Agent** → target: `${FRAMEWORK_DIR}/agents/{name}.md` (framework) or `~/.claude/agents/{name}.md` (local)
|
|
53
|
+
|
|
54
|
+
### 2. Gather Requirements
|
|
55
|
+
|
|
56
|
+
Ask the user — one question at a time, natural conversation:
|
|
57
|
+
|
|
58
|
+
1. **"What's the name?"** — kebab-case, prefix with `qualia-` for framework skills. E.g., `qualia-seed-db`.
|
|
59
|
+
2. **"What does it do?"** — one sentence, used as the description.
|
|
60
|
+
3. **"How does the user invoke it?"** — trigger phrases they'd naturally say. E.g., "seed the database", "load test data", "populate dev db".
|
|
61
|
+
4. **"Does it need planning / building / verification?"** — if yes, it probably should spawn an agent. If no, it's a direct-action skill.
|
|
62
|
+
5. **"What files does it read or write?"** — tells you what tools to restrict to.
|
|
63
|
+
|
|
64
|
+
### 3. Read Reference Skills
|
|
65
|
+
|
|
66
|
+
Before writing, read two existing skills that are structurally similar:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Short direct-action skill reference:
|
|
70
|
+
cat ~/.claude/skills/qualia-learn/SKILL.md
|
|
71
|
+
|
|
72
|
+
# Skill-that-spawns-an-agent reference:
|
|
73
|
+
cat ~/.claude/skills/qualia-plan/SKILL.md
|
|
74
|
+
|
|
75
|
+
# Interactive wizard reference:
|
|
76
|
+
cat ~/.claude/skills/qualia-new/SKILL.md
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Pick the closest pattern and copy its structure.
|
|
80
|
+
|
|
81
|
+
### 4. Write the SKILL.md
|
|
82
|
+
|
|
83
|
+
Every SKILL.md MUST have:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
---
|
|
87
|
+
name: {kebab-case-name}
|
|
88
|
+
description: "{one sentence}. {trigger phrases}"
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
# /{name} — {Human Title}
|
|
92
|
+
|
|
93
|
+
{one-paragraph explanation}
|
|
94
|
+
|
|
95
|
+
## Usage
|
|
96
|
+
|
|
97
|
+
`/{name}` — {default behavior}
|
|
98
|
+
`/{name} {arg}` — {with argument}
|
|
99
|
+
|
|
100
|
+
## Process
|
|
101
|
+
|
|
102
|
+
### 1. {First Step}
|
|
103
|
+
{specifics}
|
|
104
|
+
|
|
105
|
+
### 2. {Second Step}
|
|
106
|
+
{specifics}
|
|
107
|
+
|
|
108
|
+
### N. Update State (only if this skill changes project state)
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
node ~/.claude/bin/state.js transition --to {status} ...
|
|
112
|
+
```
|
|
113
|
+
Do NOT manually edit STATE.md or tracking.json.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Description field rules:**
|
|
117
|
+
- MUST include trigger phrases the user would naturally say
|
|
118
|
+
- The Claude Code router matches user messages against descriptions — if you don't list triggers, the skill never fires
|
|
119
|
+
- Bad: `"Manages database seeding."` (no triggers)
|
|
120
|
+
- Good: `"Seed the database with test data. Trigger on 'seed db', 'load test data', 'populate dev'."`
|
|
121
|
+
|
|
122
|
+
### 5. Test the Skill
|
|
123
|
+
|
|
124
|
+
Spawn a fresh subagent to simulate running the skill — does it make sense without the context you have right now?
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Agent(prompt="
|
|
128
|
+
Read this skill: @~/.claude/skills/{name}/SKILL.md
|
|
129
|
+
|
|
130
|
+
Pretend the user just said '{one of the trigger phrases}'. Walk through what you would do, step by step. Flag anything ambiguous or missing.
|
|
131
|
+
", subagent_type="general-purpose", description="Test skill {name}")
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Fix any ambiguity the test agent found.
|
|
135
|
+
|
|
136
|
+
### 6. Install (if framework skill)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Framework skill — copy to local .claude for immediate testing
|
|
140
|
+
mkdir -p ~/.claude/skills/{name}
|
|
141
|
+
cp "${FRAMEWORK_DIR}/skills/{name}/SKILL.md" ~/.claude/skills/{name}/SKILL.md
|
|
142
|
+
|
|
143
|
+
# Verify it parses
|
|
144
|
+
node -e "const fs=require('fs');const os=require('os');const path=require('path');const c=fs.readFileSync(path.join(os.homedir(),'.claude/skills/{name}/SKILL.md'),'utf8');if(!c.includes('---'))throw new Error('missing frontmatter');if(!c.match(/^name:\s*\S/m))throw new Error('missing name');if(!c.match(/^description:\s*\S/m))throw new Error('missing description');console.log('OK')"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 7. Commit (framework skills only)
|
|
148
|
+
|
|
149
|
+
Do NOT commit unless the user explicitly says "commit" or "ship it".
|
|
150
|
+
|
|
151
|
+
When they do:
|
|
152
|
+
```bash
|
|
153
|
+
cd "${FRAMEWORK_DIR}"
|
|
154
|
+
git add skills/{name}/
|
|
155
|
+
git commit -m "feat: add /{name} skill"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Remind the user to run `npx qualia-framework update` on their other machines, or bump the version and `npm publish`.
|
|
159
|
+
|
|
160
|
+
## Anti-Patterns
|
|
161
|
+
|
|
162
|
+
- ❌ **Description without triggers** — the skill won't fire
|
|
163
|
+
- ❌ **Multiple commands in one skill** — split into two skills
|
|
164
|
+
- ❌ **Direct file writes instead of state.js** — always use state.js for STATE.md/tracking.json
|
|
165
|
+
- ❌ **Hardcoded project paths** — use `.planning/` relative or `~/.claude/` absolute, never `/home/specific-user/`
|
|
166
|
+
- ❌ **Skills that spawn agents without passing PROJECT.md and STATE.md context** — agents are blind by default
|
|
167
|
+
- ❌ **Skills longer than ~150 lines** — split or move logic to an agent
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-task
|
|
3
|
+
description: "Build a single task — more structured than /qualia-quick, lighter than /qualia-build. Spawns a fresh builder agent for one focused task."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-task — Single Task Builder
|
|
7
|
+
|
|
8
|
+
Build one thing properly. Fresh builder context, atomic commit, but no phase plan needed.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
`/qualia-task` — describe what to build interactively
|
|
12
|
+
`/qualia-task {description}` — build it directly
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
- One feature, 1-5 files, clear scope, 1-3 hours of work
|
|
16
|
+
- Adding a single feature, component, API route, or integration
|
|
17
|
+
- Refactoring one module
|
|
18
|
+
- Building something specific someone asked for
|
|
19
|
+
|
|
20
|
+
## Process
|
|
21
|
+
|
|
22
|
+
### 1. Clarify
|
|
23
|
+
|
|
24
|
+
If no description provided, ask: **"What do you want to build?"**
|
|
25
|
+
|
|
26
|
+
Then use AskUserQuestion:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
question: "How complex is this task?"
|
|
30
|
+
header: "Scope"
|
|
31
|
+
options:
|
|
32
|
+
- label: "Small (1-2hrs)"
|
|
33
|
+
description: "Single file or component, straightforward implementation"
|
|
34
|
+
- label: "Medium (2-3hrs)"
|
|
35
|
+
description: "Multiple files, some integration work, needs testing"
|
|
36
|
+
- label: "Large (3hrs+)"
|
|
37
|
+
description: "Significant feature, multiple components — use /qualia-plan instead"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If "Large" — suggest `/qualia-plan` instead. Ask if they want to proceed anyway.
|
|
41
|
+
|
|
42
|
+
### 2. Task Spec
|
|
43
|
+
|
|
44
|
+
Write a quick task spec (don't save to file, just confirm with user):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
node ~/.claude/bin/qualia-ui.js banner task
|
|
48
|
+
node ~/.claude/bin/qualia-ui.js info "What: {what to build}"
|
|
49
|
+
node ~/.claude/bin/qualia-ui.js info "Files: {files to create/modify}"
|
|
50
|
+
node ~/.claude/bin/qualia-ui.js info "Done: {what done looks like}"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Ask: **"Good to build?"**
|
|
54
|
+
|
|
55
|
+
### 3. Build
|
|
56
|
+
|
|
57
|
+
Spawn a builder agent with the task:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Agent(subagent_type: "qualia-builder")
|
|
61
|
+
|
|
62
|
+
Task: {task description}
|
|
63
|
+
Files: {files to create/modify}
|
|
64
|
+
Done when: {completion criteria}
|
|
65
|
+
|
|
66
|
+
Context: Read PROJECT.md if it exists. Follow all rules (security, frontend, deployment).
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The builder runs in fresh context — reads before writing, follows rules, commits atomically.
|
|
70
|
+
|
|
71
|
+
### 4. Verify
|
|
72
|
+
|
|
73
|
+
After the builder finishes:
|
|
74
|
+
- Run `npx tsc --noEmit` if TypeScript
|
|
75
|
+
- Quick smoke test if applicable
|
|
76
|
+
- Review what was built
|
|
77
|
+
|
|
78
|
+
### 5. Report
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node ~/.claude/bin/qualia-ui.js divider
|
|
82
|
+
node ~/.claude/bin/qualia-ui.js ok "Task: {description}"
|
|
83
|
+
node ~/.claude/bin/qualia-ui.js ok "Files: {files changed}"
|
|
84
|
+
node ~/.claude/bin/qualia-ui.js ok "Commit: {commit hash}"
|
|
85
|
+
node ~/.claude/bin/qualia-ui.js end "TASK COMPLETE"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
node ~/.claude/bin/state.js transition --to note --notes "{task description}"
|
|
90
|
+
```
|
|
91
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-verify
|
|
3
|
+
description: "Goal-backward verification — checks if the phase ACTUALLY works, not just if tasks completed. Spawns verifier agent."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-verify — Verify a Phase
|
|
7
|
+
|
|
8
|
+
Spawn a verifier agent to check if the phase goal was achieved. Does NOT trust build summaries — greps the actual codebase.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
`/qualia-verify` — verify the current built phase
|
|
12
|
+
`/qualia-verify {N}` — verify specific phase
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### 1. Load Context
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
echo "---PLAN---"
|
|
20
|
+
cat .planning/phase-{N}-plan.md 2>/dev/null
|
|
21
|
+
echo "---PREVIOUS---"
|
|
22
|
+
cat .planning/phase-{N}-verification.md 2>/dev/null || echo "NONE"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. Spawn Verifier (Fresh Context)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
node ~/.claude/bin/qualia-ui.js banner verify {N} "{phase name}"
|
|
29
|
+
node ~/.claude/bin/qualia-ui.js spawn verifier "Goal-backward check..."
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Agent(prompt="
|
|
34
|
+
Read your role: @agents/verifier.md
|
|
35
|
+
|
|
36
|
+
Phase plan with success criteria:
|
|
37
|
+
@.planning/phase-{N}-plan.md
|
|
38
|
+
|
|
39
|
+
{If re-verification: Previous verification with gaps:}
|
|
40
|
+
{@.planning/phase-{N}-verification.md}
|
|
41
|
+
|
|
42
|
+
Verify this phase. Write report to .planning/phase-{N}-verification.md
|
|
43
|
+
", subagent_type="qualia-verifier", description="Verify phase {N}")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2b. Browser QA (if phase touched frontend)
|
|
47
|
+
|
|
48
|
+
If the phase plan's Files section includes any `.tsx`, `.jsx`, `.css`, `.scss`, or `app/`/`pages/`/`components/` paths, ALSO spawn the browser QA agent in parallel:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Detect frontend touch
|
|
52
|
+
grep -l "\.tsx\|\.jsx\|\.css\|app/\|components/\|pages/" .planning/phase-{N}-plan.md && FRONTEND=true
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If frontend:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Agent(prompt="
|
|
59
|
+
Read your role: @agents/qa-browser.md
|
|
60
|
+
|
|
61
|
+
Phase plan: @.planning/phase-{N}-plan.md
|
|
62
|
+
Existing verification: @.planning/phase-{N}-verification.md
|
|
63
|
+
|
|
64
|
+
Drive the running dev server and test the routes this phase touched. Append a '## Browser QA' section to the verification file.
|
|
65
|
+
", subagent_type="qualia-qa-browser", description="Browser QA phase {N}")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Wait for both the main verifier and the QA browser agent before moving to step 3. If Playwright MCP is unavailable, the QA browser agent returns BLOCKED — that's not a phase failure, just a note in the report.
|
|
69
|
+
|
|
70
|
+
### 3. Present Results
|
|
71
|
+
|
|
72
|
+
Read the verification report. Present:
|
|
73
|
+
|
|
74
|
+
**If PASS:**
|
|
75
|
+
```bash
|
|
76
|
+
node ~/.claude/bin/qualia-ui.js ok "All {count} criteria passed"
|
|
77
|
+
node ~/.claude/bin/qualia-ui.js end "PHASE {N} VERIFIED" "/qualia-plan {N+1}"
|
|
78
|
+
```
|
|
79
|
+
(If phase == total phases, use `/qualia-polish` as the next command.)
|
|
80
|
+
|
|
81
|
+
**If FAIL:**
|
|
82
|
+
```bash
|
|
83
|
+
node ~/.claude/bin/qualia-ui.js ok "Passed: {pass_count}"
|
|
84
|
+
node ~/.claude/bin/qualia-ui.js fail "Failed: {fail_count}"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Then for each gap:
|
|
88
|
+
```bash
|
|
89
|
+
node ~/.claude/bin/qualia-ui.js fail "{gap description}"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
End:
|
|
93
|
+
```bash
|
|
94
|
+
node ~/.claude/bin/qualia-ui.js end "PHASE {N} GAPS FOUND" "/qualia-plan {N} --gaps"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 4. Update State
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
node ~/.claude/bin/state.js transition --to verified --phase {N} --verification {pass|fail}
|
|
101
|
+
```
|
|
102
|
+
If PASS and more phases: state.js auto-advances to the next phase.
|
|
103
|
+
If FAIL and gap_cycles >= 2: state.js returns GAP_CYCLE_LIMIT — tell the employee to escalate.
|
|
104
|
+
If FAIL and gap_cycles < 2: proceed to `/qualia-plan {N} --gaps`.
|
|
105
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
106
|
+
|
|
107
|
+
### 5. Passive Knowledge Capture (on FAIL)
|
|
108
|
+
|
|
109
|
+
When verification fails, after showing the gaps, ask the user:
|
|
110
|
+
|
|
111
|
+
> *"Was any of this a recurring issue worth saving to common-fixes.md? (yes / no / which ones)"*
|
|
112
|
+
|
|
113
|
+
If yes, for each flagged gap spawn a brief `/qualia-learn` flow with type=`fix` — the gap title and fix direction from the verification report become the entry. Do NOT save every failure automatically — only the ones the user flags. The point is to build a real knowledge base, not a log of every mistake.
|