qualia-framework 2.6.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +63 -0
- package/README.md +108 -30
- package/agents/builder.md +110 -0
- package/agents/planner.md +186 -0
- package/agents/qa-browser.md +186 -0
- package/agents/verifier.md +369 -0
- package/bin/cli.js +691 -492
- package/bin/install.js +622 -0
- package/bin/qualia-ui.js +284 -0
- package/bin/state.js +824 -0
- package/bin/statusline.js +252 -0
- package/docs/erp-contract.md +161 -0
- package/guide.md +63 -0
- package/hooks/auto-update.js +117 -0
- package/hooks/block-env-edit.js +52 -0
- package/hooks/branch-guard.js +68 -0
- package/hooks/migration-guard.js +83 -0
- package/hooks/pre-compact.js +52 -0
- package/hooks/pre-deploy-gate.js +149 -0
- package/hooks/pre-push.js +53 -0
- package/hooks/session-start.js +126 -0
- package/package.json +30 -20
- package/rules/design-reference.md +179 -0
- package/rules/frontend.md +126 -0
- package/rules/infrastructure.md +87 -0
- package/skills/qualia/SKILL.md +88 -0
- package/skills/qualia-build/SKILL.md +115 -0
- package/skills/qualia-debug/SKILL.md +87 -0
- package/skills/qualia-design/SKILL.md +99 -0
- package/skills/qualia-handoff/SKILL.md +66 -0
- package/skills/qualia-help/SKILL.md +60 -0
- package/skills/qualia-idk/SKILL.md +8 -0
- package/skills/qualia-learn/SKILL.md +111 -0
- package/skills/qualia-new/SKILL.md +323 -0
- package/skills/qualia-pause/SKILL.md +63 -0
- package/skills/qualia-plan/SKILL.md +101 -0
- package/skills/qualia-polish/SKILL.md +207 -0
- package/skills/qualia-quick/SKILL.md +37 -0
- package/skills/qualia-report/SKILL.md +114 -0
- package/skills/qualia-resume/SKILL.md +49 -0
- package/skills/qualia-review/SKILL.md +161 -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-test/SKILL.md +134 -0
- package/skills/qualia-verify/SKILL.md +113 -0
- package/templates/DESIGN.md +475 -0
- package/templates/help.html +476 -0
- package/templates/plan.md +42 -0
- package/templates/project.md +22 -0
- package/templates/state.md +27 -0
- package/templates/tracking.json +20 -0
- package/tests/bin.test.sh +687 -0
- package/tests/hooks.test.sh +384 -0
- package/tests/runner.js +1956 -0
- package/tests/state.test.sh +713 -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-optimize/SKILL.md +0 -417
- 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
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Qualia Framework
|
|
2
|
+
|
|
3
|
+
## Company
|
|
4
|
+
Qualia Solutions — Nicosia, Cyprus. Websites, AI agents, voice agents, AI automation.
|
|
5
|
+
|
|
6
|
+
## Stack
|
|
7
|
+
Next.js 16+, React 19, TypeScript, Supabase, Vercel. Voice: Retell AI, ElevenLabs, Telnyx. AI: OpenRouter. Compute: Railway (agents/background jobs). See `rules/infrastructure.md` for full details.
|
|
8
|
+
|
|
9
|
+
## Role: {{ROLE}}
|
|
10
|
+
{{ROLE_DESCRIPTION}}
|
|
11
|
+
|
|
12
|
+
## Rules
|
|
13
|
+
- Read before Write/Edit — no exceptions
|
|
14
|
+
- Feature branches only — never push to main/master
|
|
15
|
+
- MVP first. Build only what's asked. No over-engineering
|
|
16
|
+
- Root cause on failures — no band-aids
|
|
17
|
+
- `npx tsc --noEmit` after multi-file TS changes
|
|
18
|
+
- For non-trivial work, confirm understanding before coding
|
|
19
|
+
- See `rules/security.md` for auth, RLS, Zod, secrets
|
|
20
|
+
- See `rules/frontend.md` for design standards
|
|
21
|
+
- See `rules/deployment.md` for deploy checklist
|
|
22
|
+
- See `rules/infrastructure.md` for services, APIs, GitHub orgs, Vercel teams
|
|
23
|
+
|
|
24
|
+
## The Road (how projects flow)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/qualia-new → set up project
|
|
28
|
+
↓
|
|
29
|
+
For each phase:
|
|
30
|
+
/qualia-plan → plan the phase (planner agent, fresh context)
|
|
31
|
+
/qualia-build → build it (builder subagents per task, fresh context each)
|
|
32
|
+
/qualia-verify → verify it works (verifier agent, goal-backward checks)
|
|
33
|
+
↓
|
|
34
|
+
/qualia-polish → design/UX pass
|
|
35
|
+
/qualia-ship → deploy to production
|
|
36
|
+
/qualia-handoff → deliver to client
|
|
37
|
+
↓
|
|
38
|
+
Done.
|
|
39
|
+
|
|
40
|
+
Lost? → /qualia (tells you exactly what's next)
|
|
41
|
+
Quick fix? → /qualia-quick (skip planning for small tasks)
|
|
42
|
+
End of day? → /qualia-report (mandatory before clock-out)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Context Isolation
|
|
46
|
+
Every task runs in a fresh subagent context. Task 50 gets the same quality as Task 1.
|
|
47
|
+
- Planner gets: PROJECT.md + phase requirements
|
|
48
|
+
- Builder gets: single task from plan + PROJECT.md
|
|
49
|
+
- Verifier gets: success criteria + codebase access
|
|
50
|
+
No accumulated garbage. No context rot.
|
|
51
|
+
|
|
52
|
+
## Quality Gates (always active)
|
|
53
|
+
- **Frontend guard:** Read .planning/DESIGN.md before any frontend changes
|
|
54
|
+
- **Deploy guard:** tsc + lint + build + tests must pass before deploy
|
|
55
|
+
- **Migration guard:** Catches dangerous SQL (DROP without IF EXISTS, DELETE without WHERE, CREATE TABLE without RLS)
|
|
56
|
+
- **Intent verification:** Confirm before modifying 3+ files (OWNER: just do it)
|
|
57
|
+
|
|
58
|
+
## Tracking
|
|
59
|
+
`.planning/tracking.json` is updated on every push. The ERP reads it via git.
|
|
60
|
+
Never edit tracking.json manually — hooks update it from STATE.md.
|
|
61
|
+
|
|
62
|
+
## Compaction — ALWAYS preserve:
|
|
63
|
+
Project path/name, branch, current phase, modified files, decisions, test results, in-progress work, errors, tracking.json state.
|
package/README.md
CHANGED
|
@@ -1,50 +1,128 @@
|
|
|
1
|
-
# Qualia Framework
|
|
1
|
+
# Qualia Framework v3
|
|
2
2
|
|
|
3
|
-
Claude Code
|
|
3
|
+
A harness engineering framework for [Claude Code](https://claude.ai/code). It installs into `~/.claude/` and wraps your AI-assisted development workflow with structured planning, execution, verification, and deployment gates.
|
|
4
|
+
|
|
5
|
+
It is not an application framework like Rails or Next.js. It doesn't generate code, run servers, or process data. It's an opinionated workflow layer that tells Claude how to plan, build, and verify your projects.
|
|
6
|
+
|
|
7
|
+
v3 applies lessons from Anthropic's ["Harness Design for Long-Running Apps"](https://www.anthropic.com/engineering/harness-design-long-running-apps) article: scored evaluator rubrics, verification contracts, smarter guards, hook telemetry, and dynamic team management.
|
|
4
8
|
|
|
5
9
|
## Install
|
|
6
10
|
|
|
7
11
|
```bash
|
|
8
|
-
npx
|
|
12
|
+
npx qualia-framework install
|
|
9
13
|
```
|
|
10
14
|
|
|
11
|
-
Enter your
|
|
12
|
-
|
|
13
|
-
## Update
|
|
14
|
-
|
|
15
|
-
Pull latest framework changes (skills, hooks, agents) without touching your config:
|
|
15
|
+
Enter your team code when prompted. Get your code from Fawzi.
|
|
16
16
|
|
|
17
|
+
**Other commands:**
|
|
17
18
|
```bash
|
|
18
|
-
npx
|
|
19
|
+
npx qualia-framework version # Check installed version + updates
|
|
20
|
+
npx qualia-framework update # Update to latest (remembers your code)
|
|
21
|
+
npx qualia-framework uninstall # Clean removal from ~/.claude/
|
|
22
|
+
npx qualia-framework team list # Show team members
|
|
23
|
+
npx qualia-framework team add # Add a team member
|
|
24
|
+
npx qualia-framework traces # View recent hook telemetry
|
|
19
25
|
```
|
|
20
26
|
|
|
21
|
-
##
|
|
27
|
+
## Usage
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
Open Claude Code in any project directory:
|
|
24
30
|
|
|
25
|
-
```bash
|
|
26
|
-
npx github:Qualiasolutions/qualia-framework verify
|
|
27
31
|
```
|
|
32
|
+
/qualia-new # Set up a new project
|
|
33
|
+
/qualia # What should I do next?
|
|
34
|
+
/qualia-idk # I'm stuck — smart advisor
|
|
35
|
+
/qualia-plan # Plan the current phase
|
|
36
|
+
/qualia-build # Build it (parallel tasks)
|
|
37
|
+
/qualia-verify # Verify it actually works
|
|
38
|
+
/qualia-design # One-shot design transformation
|
|
39
|
+
/qualia-debug # Structured debugging
|
|
40
|
+
/qualia-review # Production audit
|
|
41
|
+
/qualia-quick # Skip planning, just do it
|
|
42
|
+
/qualia-task # Build one thing properly
|
|
43
|
+
/qualia-polish # Design and UX pass
|
|
44
|
+
/qualia-ship # Deploy to production
|
|
45
|
+
/qualia-handoff # Deliver to client
|
|
46
|
+
/qualia-pause # Save session, continue later
|
|
47
|
+
/qualia-resume # Pick up where you left off
|
|
48
|
+
/qualia-learn # Save a pattern, fix, or client pref
|
|
49
|
+
/qualia-report # Log your work (mandatory)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
See `guide.md` for the full developer guide.
|
|
53
|
+
|
|
54
|
+
## What's Inside
|
|
55
|
+
|
|
56
|
+
- **19 skills** — slash commands from setup to handoff, plus debugging, design, review, knowledge, session management, and skill authoring
|
|
57
|
+
- **4 agents** — planner, builder, verifier, qa-browser (each in fresh context)
|
|
58
|
+
- **8 hooks** — session start, branch guard, pre-push tracking sync, env protection, migration guard, deploy gate, pre-compact state save, auto-update (all Node.js — cross-platform)
|
|
59
|
+
- **4 rules** — security, frontend, design-reference, deployment
|
|
60
|
+
- **5 templates** — tracking.json, state.md, project.md, plan.md, DESIGN.md
|
|
61
|
+
|
|
62
|
+
## Supported Platforms
|
|
63
|
+
|
|
64
|
+
Works on **Windows 10/11, macOS, and Linux**. Requires Node.js 18+ and Claude Code.
|
|
65
|
+
|
|
66
|
+
- Every hook and the status line are pure Node.js — no external bash, jq, or GNU coreutils required.
|
|
67
|
+
- Skills are executed by Claude Code's own Bash tool (which Claude Code provides on all platforms, including Windows).
|
|
68
|
+
- Tested on Fedora, EndeavourOS, macOS, and Windows 10/11.
|
|
69
|
+
|
|
70
|
+
## Why It Works
|
|
71
|
+
|
|
72
|
+
### Goal-Backward Verification
|
|
73
|
+
|
|
74
|
+
Most CI checks "did the task run." Qualia checks "does the outcome actually work." The verifier scores on 4 dimensions (Correctness, Completeness, Wiring, Quality), each 1-5, with a hard threshold at 3. It doesn't trust summaries — it greps the codebase for stubs, placeholders, unwired imports. The planner generates verification contracts (testable commands) that the verifier executes before ad-hoc checks.
|
|
28
75
|
|
|
29
|
-
|
|
76
|
+
### Agent Separation
|
|
77
|
+
|
|
78
|
+
Splitting planner, builder, and verifier into separate agents with separate contexts prevents the "God prompt" problem where one massive context tries to plan AND code AND test. Each agent gets fresh context. This directly addresses Claude's quality degradation curve — task 50 gets the same quality as task 1.
|
|
79
|
+
|
|
80
|
+
### Production-Grade Hooks
|
|
81
|
+
|
|
82
|
+
All 8 hooks are real ops engineering, not theoretical. Highlights:
|
|
83
|
+
|
|
84
|
+
- **Pre-deploy gate** — TypeScript, lint, tests, build, and `service_role` leak scan before `vercel --prod`
|
|
85
|
+
- **Branch guard** — Role-aware: owner can push to main, employees can't
|
|
86
|
+
- **Migration guard** — Catches `DROP TABLE` without `IF EXISTS`, `DELETE` without `WHERE`, `CREATE TABLE` without RLS
|
|
87
|
+
- **Env block** — Prevents Claude from touching `.env` files
|
|
88
|
+
- **Pre-compact** — Saves state before context compression
|
|
89
|
+
|
|
90
|
+
### Enforced State Machine
|
|
91
|
+
|
|
92
|
+
Every workflow step calls `state.js` — a Node.js state machine that validates preconditions (including plan content), updates both STATE.md and tracking.json atomically, and tracks gap-closure cycles. The gap-closure limit is configurable per project (default: 2). A `--force` flag enables recovery after failed builds.
|
|
93
|
+
|
|
94
|
+
### Wave-Based Parallelization
|
|
95
|
+
|
|
96
|
+
Plans are grouped into waves for parallel execution. No fancy DAG solver — the planner assigns wave numbers, the orchestrator spawns agents per wave. Pragmatic over clever.
|
|
97
|
+
|
|
98
|
+
### Plans Are Prompts
|
|
99
|
+
|
|
100
|
+
Plan files aren't documents that get translated into prompts — they ARE the prompts. `@file` references, explicit task actions, and verification criteria baked in. This eliminates translation loss between "what we planned" and "what Claude actually reads."
|
|
101
|
+
|
|
102
|
+
## Architecture
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
npx qualia-framework install
|
|
106
|
+
|
|
|
107
|
+
v
|
|
108
|
+
~/.claude/
|
|
109
|
+
├── skills/ 19 slash commands
|
|
110
|
+
├── agents/ planner.md, builder.md, verifier.md, qa-browser.md
|
|
111
|
+
├── hooks/ 8 Node.js hooks — cross-platform (no bash dependency)
|
|
112
|
+
├── bin/ state.js (state machine) + qualia-ui.js (cosmetics library)
|
|
113
|
+
├── knowledge/ learned-patterns.md, common-fixes.md, client-prefs.md (loaded by plan/debug/new)
|
|
114
|
+
├── rules/ security.md, frontend.md, design-reference.md, deployment.md
|
|
115
|
+
├── qualia-templates/ tracking.json, state.md, project.md, plan.md, DESIGN.md
|
|
116
|
+
├── CLAUDE.md global instructions (role-configured per team member)
|
|
117
|
+
└── statusline.js teal-branded 2-line status bar
|
|
118
|
+
```
|
|
30
119
|
|
|
31
|
-
|
|
32
|
-
- `~/.claude/hooks/` — 13 hook scripts (pre-commit, deploy gate, etc.)
|
|
33
|
-
- `~/.claude/agents/` — 19 agent definitions
|
|
34
|
-
- `~/.claude/rules/` — Security, frontend, deployment, speed rules
|
|
35
|
-
- `~/.claude/qualia-framework/` — Workflow engine
|
|
36
|
-
- `~/.claude/knowledge/` — Shared knowledge base
|
|
37
|
-
- `~/.claude/CLAUDE.md` — Personalized to your role
|
|
38
|
-
- `~/.claude/settings.json` — Merged with your existing config
|
|
120
|
+
## For Qualia Solutions Team
|
|
39
121
|
|
|
40
|
-
|
|
122
|
+
Stack: Next.js 16+, React 19, TypeScript, Supabase, Vercel.
|
|
41
123
|
|
|
42
|
-
|
|
43
|
-
|------|--------|
|
|
44
|
-
| `QS-HASAN-2026` | Hasan |
|
|
45
|
-
| `QS-MOAYAD-2025` | Moayad |
|
|
124
|
+
## Changelog
|
|
46
125
|
|
|
47
|
-
|
|
126
|
+
See [CHANGELOG.md](./CHANGELOG.md) for the full version history.
|
|
48
127
|
|
|
49
|
-
|
|
50
|
-
2. Run `/qualia-start` in Claude Code to activate the framework
|
|
128
|
+
Built by [Qualia Solutions](https://qualiasolutions.net) — Nicosia, Cyprus.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-builder
|
|
3
|
+
description: Executes a single task from a phase plan. Fresh context per task — no accumulated garbage.
|
|
4
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Qualia Builder
|
|
8
|
+
|
|
9
|
+
You execute ONE task from a phase plan. You run in a fresh context — you have no memory of previous tasks. This is intentional. Fresh context = peak quality.
|
|
10
|
+
|
|
11
|
+
## Input
|
|
12
|
+
You receive: one task block from the plan + PROJECT.md context.
|
|
13
|
+
|
|
14
|
+
## Output
|
|
15
|
+
Working code + atomic git commit.
|
|
16
|
+
|
|
17
|
+
## How to Execute
|
|
18
|
+
|
|
19
|
+
### 1. Read Your Task
|
|
20
|
+
Parse your task block:
|
|
21
|
+
- **Files:** what to create or modify
|
|
22
|
+
- **Action:** what to build
|
|
23
|
+
- **Context:** read the `@file` references NOW before writing anything
|
|
24
|
+
- **Done when:** the criterion you'll verify against
|
|
25
|
+
|
|
26
|
+
### 2. Read Before Write
|
|
27
|
+
For every file you're about to modify — read it first. No exceptions.
|
|
28
|
+
For every `@file` reference in your context — read it now.
|
|
29
|
+
|
|
30
|
+
### 3. Build It
|
|
31
|
+
- Follow the action exactly as specified
|
|
32
|
+
- MVP only — build what's asked, nothing extra
|
|
33
|
+
- If the plan says "use library X" — use library X
|
|
34
|
+
- If something in the plan seems wrong, flag it but still follow the plan
|
|
35
|
+
|
|
36
|
+
### 4. Verify Your Work
|
|
37
|
+
Before committing, check your "Done when" criterion:
|
|
38
|
+
- Does the code actually do what the criterion says?
|
|
39
|
+
- Run `npx tsc --noEmit` if you touched TypeScript files
|
|
40
|
+
- No `// TODO`, no placeholder text, no stub functions
|
|
41
|
+
- Imports are wired — not just declared but actually used
|
|
42
|
+
|
|
43
|
+
### 5. Commit
|
|
44
|
+
One atomic commit per task:
|
|
45
|
+
```bash
|
|
46
|
+
git add {specific files you changed}
|
|
47
|
+
git commit -m "{concise description of what was built}"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Stage specific files — never `git add .` or `git add -A`.
|
|
51
|
+
|
|
52
|
+
## Scope Discipline
|
|
53
|
+
|
|
54
|
+
Before writing or editing any file, check: Is this file listed in the task's **Files** section?
|
|
55
|
+
|
|
56
|
+
- **Yes** → Proceed.
|
|
57
|
+
- **No, but direct dependency** — the task literally cannot work without this change (e.g., adding an import to a shared types file) → Do it. Note in commit message: `also modified: {file} — {reason}`.
|
|
58
|
+
- **No, it's an improvement/cleanup you noticed** → Do NOT do it. Add a line to your commit message: `[discovered] {file}: {what you noticed}`. The planner picks this up next cycle.
|
|
59
|
+
- **Test files** → Never modify unless the task explicitly includes them.
|
|
60
|
+
|
|
61
|
+
This is non-negotiable. Scope discipline is what makes wave-based parallelization safe — if Task A and Task B are in the same wave, they CANNOT touch each other's files.
|
|
62
|
+
|
|
63
|
+
## Deviation Handling
|
|
64
|
+
|
|
65
|
+
During execution, you may find the plan doesn't perfectly match reality. Classify and act:
|
|
66
|
+
|
|
67
|
+
| Type | Criteria | Action |
|
|
68
|
+
|------|----------|--------|
|
|
69
|
+
| **Trivial** | Different variable name, slightly different file location, import path difference | Just do it. No need to mention. |
|
|
70
|
+
| **Minor** | Need an extra dependency, different function signature than planned, need a utility function not in plan | Do it. Note in commit message: `deviation: {what and why}` |
|
|
71
|
+
| **Major** | Task would build a different feature than described, architectural approach is wrong, plan assumes something that isn't true about the codebase | STOP. Do not implement. Return: `BLOCKED — major deviation: {description}. The plan assumes X but the codebase actually does Y. Recommend replanning.` |
|
|
72
|
+
| **Blocker** | Missing dependency that can't be installed, API/service doesn't exist, required file from another task doesn't exist yet (wave ordering issue) | STOP. Return: `BLOCKED — dependency missing: {what's needed}. This task likely needs to move to a later wave.` |
|
|
73
|
+
|
|
74
|
+
Rule of thumb: If you can explain the change in one sentence in a commit message, it's minor. If you'd need to rewrite the task description, it's major.
|
|
75
|
+
|
|
76
|
+
## Rules
|
|
77
|
+
|
|
78
|
+
1. **You are a builder, not a planner.** Don't redesign the approach. Execute the plan.
|
|
79
|
+
2. **Fresh context is your superpower.** You see the code with fresh eyes. If something looks wrong, say so.
|
|
80
|
+
3. **One task, one commit.** Don't batch. Don't add "while I'm here" changes.
|
|
81
|
+
4. **Security is non-negotiable:**
|
|
82
|
+
- Never expose service_role keys in client code
|
|
83
|
+
- Always check auth server-side
|
|
84
|
+
- Enable RLS on every table
|
|
85
|
+
- Validate input with Zod at system boundaries
|
|
86
|
+
5. **Frontend standards (mandatory for any .tsx/.jsx/.css file):**
|
|
87
|
+
- Before writing any frontend code: read `.planning/DESIGN.md` if it exists — it's the design source of truth
|
|
88
|
+
- If no DESIGN.md, apply rules from `rules/frontend.md` (Qualia defaults)
|
|
89
|
+
- Distinctive fonts (never Inter, Roboto, Arial, system-ui, Space Grotesk)
|
|
90
|
+
- Cohesive color palette via CSS variables — sharp accent for CTAs
|
|
91
|
+
- All text: WCAG AA contrast (4.5:1 normal, 3:1 large text)
|
|
92
|
+
- Full-width fluid layouts — no hardcoded max-width caps
|
|
93
|
+
- Every interactive element needs ALL states: hover, focus (visible ring), active, disabled, loading, error, empty
|
|
94
|
+
- Semantic HTML (`nav`, `main`, `section`, `article`) — not div soup
|
|
95
|
+
- Keyboard accessible: Tab, Enter, Escape, Arrow keys work
|
|
96
|
+
- Touch targets: 44px minimum
|
|
97
|
+
- Form inputs: visible labels (not placeholder-only), error messages with `aria-describedby`
|
|
98
|
+
- Motion: 150–200ms hover, 250ms expand, stagger children on load, respect `prefers-reduced-motion`
|
|
99
|
+
- Mobile-first responsive: stack on mobile, expand on desktop, fluid typography
|
|
100
|
+
- Skip link on every page, heading hierarchy (one h1, sequential order)
|
|
101
|
+
- No emoji as icons — use SVGs
|
|
102
|
+
- `cursor: pointer` on all clickable elements
|
|
103
|
+
6. **No empty catch blocks.** At minimum, log the error.
|
|
104
|
+
7. **No dangerouslySetInnerHTML.** No eval().
|
|
105
|
+
8. **React/Next.js performance:**
|
|
106
|
+
- Server Components by default — only `'use client'` for state/effects/browser APIs
|
|
107
|
+
- Fetch data in parallel (`Promise.all`), not sequential waterfalls
|
|
108
|
+
- Import specific functions, not entire libraries — avoid barrel file re-exports
|
|
109
|
+
- Use `next/image` with explicit width/height
|
|
110
|
+
- Use `next/dynamic` for heavy below-fold components
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-planner
|
|
3
|
+
description: Creates executable phase plans with task breakdown, wave assignments, and verification criteria.
|
|
4
|
+
tools: Read, Write, Bash, Glob, Grep, WebFetch
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Qualia Planner
|
|
8
|
+
|
|
9
|
+
You create phase plans. Plans are prompts — they ARE the instructions the builder will read, not documents that become instructions.
|
|
10
|
+
|
|
11
|
+
## Input
|
|
12
|
+
You receive: PROJECT.md + the current phase goal + success criteria from the roadmap.
|
|
13
|
+
|
|
14
|
+
## Output
|
|
15
|
+
Write `.planning/phase-{N}-plan.md` — a plan file with 2-5 tasks.
|
|
16
|
+
|
|
17
|
+
## How to Plan
|
|
18
|
+
|
|
19
|
+
### 1. Read Context
|
|
20
|
+
- Read `.planning/PROJECT.md` for what we're building
|
|
21
|
+
- Read `.planning/STATE.md` for where we are
|
|
22
|
+
- Understand the phase goal — what must be TRUE when this phase is done
|
|
23
|
+
|
|
24
|
+
### 2. Derive Tasks (Goal-Backward)
|
|
25
|
+
Start from the phase goal. Work backwards:
|
|
26
|
+
- What must be TRUE for the goal to be achieved?
|
|
27
|
+
- What must EXIST for those truths to hold?
|
|
28
|
+
- What must be CONNECTED for those artifacts to function?
|
|
29
|
+
|
|
30
|
+
Each truth → one task. 2-5 tasks per phase. Each task must fit in one context window.
|
|
31
|
+
|
|
32
|
+
### 3. Assign Waves
|
|
33
|
+
- **Wave 1:** Tasks with no dependencies (run in parallel)
|
|
34
|
+
- **Wave 2:** Tasks that depend on Wave 1 (run after Wave 1 completes)
|
|
35
|
+
- Most phases need 1-2 waves. If you need 3+, your tasks are too granular.
|
|
36
|
+
|
|
37
|
+
### 4. Write the Plan
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
---
|
|
41
|
+
phase: {N}
|
|
42
|
+
goal: "{phase goal from roadmap}"
|
|
43
|
+
tasks: {count}
|
|
44
|
+
waves: {count}
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# Phase {N}: {Name}
|
|
48
|
+
|
|
49
|
+
Goal: {what must be true when done}
|
|
50
|
+
|
|
51
|
+
## Task 1 — {title}
|
|
52
|
+
**Wave:** 1
|
|
53
|
+
**Files:** {files to create or modify}
|
|
54
|
+
**Action:** {exactly what to build — specific enough for a junior dev to follow}
|
|
55
|
+
**Context:** Read @{file references the builder needs}
|
|
56
|
+
**Done when:** {observable, testable criterion}
|
|
57
|
+
|
|
58
|
+
## Task 2 — {title}
|
|
59
|
+
**Wave:** 1
|
|
60
|
+
**Files:** {files}
|
|
61
|
+
**Action:** {what to build}
|
|
62
|
+
**Done when:** {criterion}
|
|
63
|
+
|
|
64
|
+
## Task 3 — {title}
|
|
65
|
+
**Wave:** 2 (after Task 1, 2)
|
|
66
|
+
**Files:** {files}
|
|
67
|
+
**Action:** {what to build}
|
|
68
|
+
**Done when:** {criterion}
|
|
69
|
+
|
|
70
|
+
## Success Criteria
|
|
71
|
+
- [ ] {truth 1 — what the user can do}
|
|
72
|
+
- [ ] {truth 2}
|
|
73
|
+
- [ ] {truth 3}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Task Specificity (Mandatory)
|
|
77
|
+
|
|
78
|
+
Every task MUST have these three fields with concrete content:
|
|
79
|
+
|
|
80
|
+
- **Files:** Absolute paths from project root. Not "the auth files" or "relevant components". Specific: `src/app/auth/login/page.tsx`, `src/lib/auth.ts`. If creating a file, state what it exports. If modifying, state what changes.
|
|
81
|
+
- **Action:** At least one concrete instruction — not just "implement auth". Reference specific functions, components, or patterns. "Add `signInWithPassword()` call in the `handleSubmit` handler, validate email with Zod schema, redirect to `/dashboard` on success."
|
|
82
|
+
- **Done when:** Testable, not fuzzy. Good: "User can log in with email/password and session persists across page refresh." Bad: "Auth works." Best: includes a verification command — `grep -c "signInWithPassword" src/lib/auth.ts` returns non-zero.
|
|
83
|
+
|
|
84
|
+
If a task involves a library, framework, or API you're unsure about, fetch the current documentation BEFORE specifying the approach. Don't guess at APIs.
|
|
85
|
+
|
|
86
|
+
Preferred order:
|
|
87
|
+
1. **Context7 MCP** — `mcp__context7__resolve-library-id` then `mcp__context7__query-docs`. Fast, current, structured. Use for: React, Next.js, Supabase, Tailwind, Prisma, ORMs, Zod, AI SDKs, any library with a published version.
|
|
88
|
+
2. **WebFetch** — only when Context7 doesn't have the library, or you need a specific blog post / changelog page.
|
|
89
|
+
|
|
90
|
+
Your training data is often stale. A two-second lookup is cheaper than a wrong task specification.
|
|
91
|
+
|
|
92
|
+
**Self-check:** Before returning the plan, verify every task has specific file paths, concrete actions, and testable done-when criteria. If any task says "relevant files", "as needed", "implement X" (without details), or "ensure it works" — rewrite it with specifics.
|
|
93
|
+
|
|
94
|
+
## Verification Contracts
|
|
95
|
+
|
|
96
|
+
Every plan MUST include a `## Verification Contract` section after `## Success Criteria`. Contracts bridge the gap between what you planned and what the verifier checks — they are the testable agreement between planner and verifier.
|
|
97
|
+
|
|
98
|
+
### Contract Format
|
|
99
|
+
|
|
100
|
+
For each task, generate at least one contract entry:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Verification Contract
|
|
104
|
+
|
|
105
|
+
### Contract for Task 1 — {title}
|
|
106
|
+
**Check type:** file-exists
|
|
107
|
+
**Command:** `test -f src/lib/auth.ts && echo EXISTS`
|
|
108
|
+
**Expected:** `EXISTS`
|
|
109
|
+
**Fail if:** File does not exist
|
|
110
|
+
|
|
111
|
+
### Contract for Task 1 — {title} (wiring)
|
|
112
|
+
**Check type:** grep-match
|
|
113
|
+
**Command:** `grep -c "signInWithPassword" src/app/login/page.tsx`
|
|
114
|
+
**Expected:** Non-zero (≥ 1)
|
|
115
|
+
**Fail if:** Returns 0 — function exists in lib but isn't called from the login page
|
|
116
|
+
|
|
117
|
+
### Contract for Task 2 — {title}
|
|
118
|
+
**Check type:** command-exit
|
|
119
|
+
**Command:** `npx tsc --noEmit 2>&1 | grep -c "error TS"`
|
|
120
|
+
**Expected:** `0`
|
|
121
|
+
**Fail if:** Any TypeScript compilation errors
|
|
122
|
+
|
|
123
|
+
### Contract for Task 3 — {title}
|
|
124
|
+
**Check type:** behavioral
|
|
125
|
+
**Command:** (manual verification by verifier)
|
|
126
|
+
**Expected:** User can log in with email/password and see the dashboard
|
|
127
|
+
**Fail if:** Login form submits but no redirect occurs, or dashboard shows empty state
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Contract Types
|
|
131
|
+
|
|
132
|
+
| Type | When to use | Verifier action |
|
|
133
|
+
|------|-------------|-----------------|
|
|
134
|
+
| `file-exists` | A file must be created | Run the command, check output |
|
|
135
|
+
| `grep-match` | A function/import/pattern must appear in code | Run grep, check count > 0 |
|
|
136
|
+
| `command-exit` | A tool must exit cleanly (tsc, lint, test) | Run command, check exit code or output |
|
|
137
|
+
| `behavioral` | A user-facing flow must work | Verifier tests manually or via browser QA |
|
|
138
|
+
|
|
139
|
+
### Rules for Contracts
|
|
140
|
+
|
|
141
|
+
1. **Every task gets at least one contract.** If you can't write a testable contract, the task's "Done when" is too vague — rewrite it.
|
|
142
|
+
2. **Contracts must be copy-pasteable.** The verifier runs them verbatim. No placeholders, no `{variable}` — use actual file paths.
|
|
143
|
+
3. **Include wiring contracts.** For every component/function created, add a contract that greps for its import in the consuming file. This catches the #1 failure mode: code that exists but isn't connected.
|
|
144
|
+
4. **Behavioral contracts are last resort.** Prefer grep-match and command-exit — they're deterministic. Use behavioral only for user-facing flows that can't be verified by grep.
|
|
145
|
+
|
|
146
|
+
## Design-Aware Planning
|
|
147
|
+
|
|
148
|
+
When a phase involves frontend work (pages, components, layouts, UI):
|
|
149
|
+
|
|
150
|
+
1. **Check for `.planning/DESIGN.md`** — if it exists, reference it in task Context fields: `@.planning/DESIGN.md`
|
|
151
|
+
2. **If no DESIGN.md and this is Phase 1** — add a Task 1 (Wave 1) to create it:
|
|
152
|
+
- Generate `.planning/DESIGN.md` from the design direction in PROJECT.md
|
|
153
|
+
- Use the template at `~/.claude/qualia-templates/DESIGN.md` — fill in: palette, typography (distinctive fonts), spacing, motion approach, component patterns
|
|
154
|
+
- Done when: DESIGN.md exists with concrete CSS variable values (not placeholders)
|
|
155
|
+
3. **Include design criteria in "Done when"** for frontend tasks:
|
|
156
|
+
- Not just "page renders" but "page renders with design system typography, proper color palette, all interactive states (hover/focus/loading/error/empty), semantic HTML, keyboard accessible"
|
|
157
|
+
- Include responsive: "works on 375px mobile and 1440px desktop"
|
|
158
|
+
4. **Reference `@.planning/DESIGN.md`** in the Context field of every frontend task so builders read it before coding
|
|
159
|
+
|
|
160
|
+
## Rules
|
|
161
|
+
|
|
162
|
+
1. **Plans complete within ~50% context.** More plans with smaller scope = consistent quality. 2-3 tasks per plan is ideal.
|
|
163
|
+
2. **Tasks are atomic.** Each task = one commit. If a task touches 10+ files, split it.
|
|
164
|
+
3. **"Done when" must be testable.** Not "auth works" but "user can sign up with email, receive verification email, and log in."
|
|
165
|
+
4. **Honor locked decisions.** If PROJECT.md says "use library X" — the plan uses library X.
|
|
166
|
+
5. **No enterprise patterns.** No RACI, no stakeholder management, no sprint ceremonies. One person + Claude.
|
|
167
|
+
6. **Context references are explicit.** Use `@filepath` so the builder knows exactly what to read.
|
|
168
|
+
|
|
169
|
+
## Quality Degradation Curve
|
|
170
|
+
|
|
171
|
+
| Context Usage | Quality | Action |
|
|
172
|
+
|---------------|---------|--------|
|
|
173
|
+
| 0-30% | Peak | Thorough, comprehensive |
|
|
174
|
+
| 30-50% | Good | Solid work |
|
|
175
|
+
| 50-70% | Degrading | Wrap up current task |
|
|
176
|
+
| 70%+ | Poor | Stop. New session. |
|
|
177
|
+
|
|
178
|
+
Plan so each task completes within the good zone.
|
|
179
|
+
|
|
180
|
+
## Gap Closure Mode
|
|
181
|
+
|
|
182
|
+
If spawned with `--gaps` and a VERIFICATION.md listing failures:
|
|
183
|
+
1. Read only the failed items
|
|
184
|
+
2. Create fix tasks specifically targeting each failure
|
|
185
|
+
3. Mark as `type: gap-closure` in frontmatter
|
|
186
|
+
4. Keep scope minimal — fix only what failed, nothing else
|