qualia-framework 2.5.1 → 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 +706 -417
- 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 +31 -17
- 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/{framework/rules → rules}/deployment.md +0 -0
- /package/{framework/rules → rules}/security.md +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-pause
|
|
3
|
+
description: "Save session context for seamless handoff. Creates .continue-here.md so the next session picks up exactly where you left off. Trigger on 'pause', 'stop for now', 'save progress', 'continue later', 'pick up tomorrow'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-pause — Session Handoff
|
|
7
|
+
|
|
8
|
+
Save context so the next session picks up where you left off.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/bin/qualia-ui.js banner pause
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 1. Read State
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
cat .planning/STATE.md 2>/dev/null
|
|
20
|
+
git status --short 2>/dev/null
|
|
21
|
+
git log --oneline -5 2>/dev/null
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. Create `.continue-here.md`
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
# Continue Here
|
|
28
|
+
|
|
29
|
+
## Session Summary
|
|
30
|
+
{What was accomplished — from conversation context + git log}
|
|
31
|
+
|
|
32
|
+
## Current Phase
|
|
33
|
+
Phase {N}: {name} — {status}
|
|
34
|
+
|
|
35
|
+
## In Progress
|
|
36
|
+
- {What's partially done}
|
|
37
|
+
- {Where exactly work stopped}
|
|
38
|
+
|
|
39
|
+
## Next Steps
|
|
40
|
+
1. {Immediate next action}
|
|
41
|
+
2. {Following action}
|
|
42
|
+
|
|
43
|
+
## Decisions Made
|
|
44
|
+
- {Decision and rationale}
|
|
45
|
+
|
|
46
|
+
## Blockers
|
|
47
|
+
- {Any unresolved issues}
|
|
48
|
+
|
|
49
|
+
## Files Modified
|
|
50
|
+
- {List from git status/diff}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Commit
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
git add .continue-here.md {any uncommitted work files}
|
|
57
|
+
git commit -m "WIP: {phase name} — session handoff"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
node ~/.claude/bin/state.js transition --to note --notes "Session paused — see .continue-here.md"
|
|
62
|
+
```
|
|
63
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-plan
|
|
3
|
+
description: "Plan the current phase — spawns planner agent in fresh context. Use when ready to plan a phase."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-plan — Plan a Phase
|
|
7
|
+
|
|
8
|
+
Spawn a planner agent to break the current phase into executable tasks.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
`/qualia-plan` — plan the next unplanned phase
|
|
12
|
+
`/qualia-plan {N}` — plan specific phase
|
|
13
|
+
`/qualia-plan {N} --gaps` — plan fixes for verification failures
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
### 1. Determine Phase & Load Knowledge
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cat .planning/STATE.md 2>/dev/null
|
|
21
|
+
cat ~/.claude/knowledge/learned-patterns.md 2>/dev/null
|
|
22
|
+
cat ~/.claude/knowledge/client-prefs.md 2>/dev/null
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If no phase number given, use the current phase from STATE.md.
|
|
26
|
+
If any learned patterns apply to this phase's work, pass them to the planner in the spawn prompt under a `## Relevant Learnings` section.
|
|
27
|
+
If this is a client project and `client-prefs.md` has an entry for the client, include those preferences in the planner context.
|
|
28
|
+
|
|
29
|
+
### 2. Spawn Planner (Fresh Context)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
node ~/.claude/bin/qualia-ui.js banner plan {N} "{phase name from STATE.md}"
|
|
33
|
+
node ~/.claude/bin/qualia-ui.js spawn planner "Breaking phase into tasks..."
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Spawn a subagent with `agents/planner.md` instructions:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Agent(prompt="
|
|
40
|
+
Read your role: @agents/planner.md
|
|
41
|
+
|
|
42
|
+
Project context:
|
|
43
|
+
@.planning/PROJECT.md
|
|
44
|
+
|
|
45
|
+
Current state:
|
|
46
|
+
@.planning/STATE.md
|
|
47
|
+
|
|
48
|
+
Phase {N} goal: {goal from STATE.md roadmap}
|
|
49
|
+
Phase {N} success criteria: {criteria from STATE.md}
|
|
50
|
+
|
|
51
|
+
{If --gaps: Also read @.planning/phase-{N}-verification.md for failures to fix}
|
|
52
|
+
|
|
53
|
+
Create the plan file at .planning/phase-{N}-plan.md
|
|
54
|
+
", subagent_type="qualia-planner", description="Plan phase {N}")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 3. Review Plan
|
|
58
|
+
|
|
59
|
+
Read the generated plan. Present the summary using the UI helpers:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
node ~/.claude/bin/qualia-ui.js divider
|
|
63
|
+
node ~/.claude/bin/qualia-ui.js ok "Plan ready: {count} tasks across {count} waves"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Then, for each wave, print:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
node ~/.claude/bin/qualia-ui.js wave {wave_num} {wave_total} {task_count_in_wave}
|
|
70
|
+
node ~/.claude/bin/qualia-ui.js task 1 "{task title}"
|
|
71
|
+
node ~/.claude/bin/qualia-ui.js task 2 "{task title}"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
End with an approval prompt (plain text, no UI helper): *"Approve? (yes / adjust)"*
|
|
75
|
+
|
|
76
|
+
If "adjust" — get feedback, re-spawn planner with revision context.
|
|
77
|
+
|
|
78
|
+
### 4. Update State
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node ~/.claude/bin/state.js transition --to planned --phase {N}
|
|
82
|
+
```
|
|
83
|
+
If state.js returns an error, show it to the employee and stop.
|
|
84
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
node ~/.claude/bin/qualia-ui.js end "PHASE {N} PLANNED" "/qualia-build {N}"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Gap Closure Mode (`--gaps`)
|
|
91
|
+
|
|
92
|
+
When invoked as `/qualia-plan {N} --gaps`, the planner is in gap-closure mode:
|
|
93
|
+
|
|
94
|
+
1. Read `.planning/phase-{N}-verification.md` — extract ONLY the FAIL items
|
|
95
|
+
2. For each FAIL item, create a targeted fix task:
|
|
96
|
+
- **Files:** The specific files that failed verification
|
|
97
|
+
- **Action:** The specific fix needed (not "fix auth" — "add session persistence check in `src/lib/auth.ts` signIn function")
|
|
98
|
+
- **Done when:** The exact verification criterion that previously failed, restated
|
|
99
|
+
3. Do NOT re-plan passing items. Do NOT add new features. Gap plans are surgical.
|
|
100
|
+
4. Write to `.planning/phase-{N}-gaps-plan.md` (separate from original plan)
|
|
101
|
+
5. All gap tasks are Wave 1 (parallel) unless they share files
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-polish
|
|
3
|
+
description: "Design and UX pass — anti-AI-slop, genuine craft, responsive, accessible. Run after all phases are verified."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-polish — Design Pass
|
|
7
|
+
|
|
8
|
+
Makes it look like a human designer built it. Kills AI slop. Run after all feature phases are verified.
|
|
9
|
+
|
|
10
|
+
## The Standard
|
|
11
|
+
|
|
12
|
+
Every site Qualia ships must feel **designed, not generated.** AI-generated sites have tells:
|
|
13
|
+
- Identical card grids with rounded corners and soft shadows
|
|
14
|
+
- Blue-purple gradients on everything
|
|
15
|
+
- Inter/system-ui font with no hierarchy
|
|
16
|
+
- Generic hero with centered text and a stock gradient background
|
|
17
|
+
- Fixed-width containers leaving dead space on wide screens
|
|
18
|
+
- No motion, no personality, no opinion
|
|
19
|
+
- Perfect symmetry everywhere (real design has tension)
|
|
20
|
+
|
|
21
|
+
**Kill all of these.** A Qualia site should make someone ask "who designed this?" — not "which template is this?"
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
node ~/.claude/bin/qualia-ui.js banner polish
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 0. Load Design Context
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cat .planning/DESIGN.md 2>/dev/null || echo "NO_DESIGN"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If DESIGN.md exists → it's the standard. Read ALL 12 sections. Key sections for polish:
|
|
36
|
+
- §1 Visual Theme — the feel and signature details
|
|
37
|
+
- §2 Color Palette — exact hex values, CSS variables, contrast ratios
|
|
38
|
+
- §3 Typography — hierarchy table with exact sizes/weights/spacing
|
|
39
|
+
- §4 Components — exact button/card/input/badge specs
|
|
40
|
+
- §5 Layout — spacing scale, grid strategy
|
|
41
|
+
- §6 Depth & Elevation — shadow levels with exact rgba values
|
|
42
|
+
- §7 Do's/Don'ts — brand-specific guardrails
|
|
43
|
+
- §9 Agent Prompt Guide — quick reference for common patterns
|
|
44
|
+
- §10 Accessibility — WCAG checklist
|
|
45
|
+
- §11 Hardening — stress-test criteria
|
|
46
|
+
- §12 Anti-Slop Detection — grep patterns for automated checks
|
|
47
|
+
|
|
48
|
+
If no DESIGN.md → use `rules/frontend.md` defaults.
|
|
49
|
+
|
|
50
|
+
Read EVERY frontend file before modifying. No blind edits.
|
|
51
|
+
|
|
52
|
+
### 1. AI Slop Detector
|
|
53
|
+
|
|
54
|
+
Run these checks first. Any hits = mandatory fixes.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Generic fonts (the #1 AI tell)
|
|
58
|
+
grep -rn "Inter\|Roboto\|Arial\|Helvetica\|system-ui\|Space.Grotesk" --include="*.tsx" --include="*.css" --include="*.scss" --include="tailwind*" app/ components/ src/ 2>/dev/null | grep -v node_modules
|
|
59
|
+
|
|
60
|
+
# Hardcoded max-width containers (screams template)
|
|
61
|
+
grep -rn "max-w-7xl\|max-w-\[1200\|max-w-\[1280\|max-width.*1200\|max-width.*1280" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
|
|
62
|
+
|
|
63
|
+
# Blue-purple gradients
|
|
64
|
+
grep -rn "from-blue.*to-purple\|from-purple.*to-blue\|linear-gradient.*blue.*purple\|linear-gradient.*purple.*blue\|from-indigo.*to-violet" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
|
|
65
|
+
|
|
66
|
+
# Card grid monotony (same card component repeated in a grid)
|
|
67
|
+
grep -rn "grid-cols-3\|grid-cols-4" --include="*.tsx" app/ components/ src/ 2>/dev/null | head -5
|
|
68
|
+
|
|
69
|
+
# Generic hero patterns
|
|
70
|
+
grep -rn "text-center.*mx-auto\|Hero\|hero" --include="*.tsx" app/ components/ src/ 2>/dev/null | head -5
|
|
71
|
+
|
|
72
|
+
# Scattered hardcoded colors (no design system)
|
|
73
|
+
grep -rn "text-\[#\|bg-\[#\|border-\[#\|color:.*#\|background:.*#" --include="*.tsx" app/ components/ src/ 2>/dev/null | wc -l
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Every hit gets fixed.** Not flagged — fixed.
|
|
77
|
+
|
|
78
|
+
### 2. Typography Pass
|
|
79
|
+
|
|
80
|
+
**Goal:** A reader should feel the type was chosen, not defaulted.
|
|
81
|
+
|
|
82
|
+
- Pick a distinctive display font. Not Inter, not Roboto, not system. Something with character: Clash Display, Cabinet Grotesk, General Sans, Satoshi, Plus Jakarta Sans, Outfit, Sora, Manrope. Pair with a clean body font.
|
|
83
|
+
- Establish clear hierarchy: display (hero text) → h1 → h2 → h3 → body → caption
|
|
84
|
+
- Body: 16px minimum, line-height 1.5-1.7
|
|
85
|
+
- Headings: tighter line-height (1.1-1.3), negative letter-spacing (-0.02em) for display sizes
|
|
86
|
+
- Weight hierarchy: Regular (400) for body, Medium (500) for labels, Semibold (600) for headings, Bold (700) for display
|
|
87
|
+
- Prose content: `max-width: 65ch`. Everything else: fluid full-width.
|
|
88
|
+
- Use `clamp()` for fluid sizing: `clamp(2rem, 1rem + 3vw, 3.75rem)` for h1
|
|
89
|
+
|
|
90
|
+
### 3. Color & Surfaces
|
|
91
|
+
|
|
92
|
+
**Goal:** A palette that looks intentional, not random.
|
|
93
|
+
|
|
94
|
+
- Define all colors as CSS variables or Tailwind config — zero scattered hex values
|
|
95
|
+
- One dominant brand color. One sharp accent for CTAs that pops against the page.
|
|
96
|
+
- Surfaces: layer them. Background → card → elevated card. Use subtle shade differences, not just white-on-white.
|
|
97
|
+
- Dark mode (if present): rethink surfaces, don't just invert. Slightly reduce contrast. Use darker brand colors, not just white→black swap.
|
|
98
|
+
- Semantic colors with non-color indicators: success (green + checkmark), error (red + icon), warning (amber + triangle)
|
|
99
|
+
- Verify WCAG AA: 4.5:1 for normal text, 3:1 for large text (18px+ bold or 24px+)
|
|
100
|
+
|
|
101
|
+
### 4. Layout & Spacing
|
|
102
|
+
|
|
103
|
+
**Goal:** Full-width, fluid, generous. No dead space gutters.
|
|
104
|
+
|
|
105
|
+
- Full-width layouts with fluid padding: `clamp(1rem, 5vw, 4rem)` horizontal
|
|
106
|
+
- 8px spacing grid: 4, 8, 12, 16, 24, 32, 48, 64, 96
|
|
107
|
+
- Tight spacing within groups (related items). Generous spacing between sections.
|
|
108
|
+
- Break symmetry where it serves the design — offset grids, overlapping elements, diagonal flow
|
|
109
|
+
- Varied layouts: not every section should be a centered-text-with-cards-below. Use side-by-side, staggered, asymmetric, full-bleed.
|
|
110
|
+
- Section spacing: `clamp(2rem, 8vw, 6rem)` vertical padding
|
|
111
|
+
|
|
112
|
+
### 5. Interactive States
|
|
113
|
+
|
|
114
|
+
**Goal:** Every clickable thing responds. Every async operation shows progress.
|
|
115
|
+
|
|
116
|
+
- **Hover:** color shift or underline within 150ms ease-out. `cursor: pointer` on ALL clickables.
|
|
117
|
+
- **Focus:** visible ring (2px+ offset, contrasting color). Never `outline: none` without replacement.
|
|
118
|
+
- **Active/pressed:** subtle scale down (`transform: scale(0.98)`) or color shift.
|
|
119
|
+
- **Disabled:** opacity 0.5 + `cursor: not-allowed` + `aria-disabled="true"`
|
|
120
|
+
- **Loading:** skeleton shimmer or spinner on every async operation. Never a blank void.
|
|
121
|
+
- **Empty:** helpful message + CTA on empty lists/tables. Not just "No results."
|
|
122
|
+
- **Error:** user-friendly message + recovery action. Not raw error text. Use `aria-live="assertive"`.
|
|
123
|
+
|
|
124
|
+
### 6. Motion & Personality
|
|
125
|
+
|
|
126
|
+
**Goal:** The site feels alive, not static. But tasteful — not a circus.
|
|
127
|
+
|
|
128
|
+
- Page load: stagger children entrance (50-80ms delay between items, `fadeUp` animation, 300ms)
|
|
129
|
+
- Hover transitions: 150-200ms ease-out
|
|
130
|
+
- Section transitions: 300-500ms with `cubic-bezier(0.4, 0, 0.2, 1)`
|
|
131
|
+
- One signature motion that gives the site personality (parallax, scroll-triggered reveal, magnetic buttons, morphing shapes)
|
|
132
|
+
- **Always** `prefers-reduced-motion: reduce` — disable non-essential animation
|
|
133
|
+
- CSS-only for static sites, `motion/react` (formerly Framer Motion) for React
|
|
134
|
+
|
|
135
|
+
### 7. Accessibility (Non-Negotiable)
|
|
136
|
+
|
|
137
|
+
- Semantic HTML: `nav`, `main`, `section`, `article`, `header`, `footer` — not div soup
|
|
138
|
+
- One `h1` per page, sequential heading order (no h1 → h3 skip)
|
|
139
|
+
- All images: descriptive `alt` (or `alt=""` + `aria-hidden` if decorative)
|
|
140
|
+
- All form inputs: visible `<label>` with `htmlFor` — not placeholder-only
|
|
141
|
+
- All interactive elements: keyboard accessible (Tab, Enter, Escape, Arrow keys)
|
|
142
|
+
- Touch targets: 44x44px minimum
|
|
143
|
+
- Skip link: `<a href="#main" class="sr-only focus:not-sr-only">` as first focusable element
|
|
144
|
+
- `<html lang="en">` set
|
|
145
|
+
- Color never the sole information carrier — icons, text, patterns as supplements
|
|
146
|
+
- `aria-live="polite"` for toast notifications and dynamic content updates
|
|
147
|
+
|
|
148
|
+
### 8. Responsive (Mobile-First)
|
|
149
|
+
|
|
150
|
+
- Base styles for mobile (320px), scale up with `min-width` breakpoints
|
|
151
|
+
- Test at: 320px (small phone), 375px (iPhone), 768px (iPad), 1024px (laptop), 1440px (desktop)
|
|
152
|
+
- No horizontal scroll at any viewport
|
|
153
|
+
- Navigation: hamburger/drawer on mobile, full horizontal on desktop
|
|
154
|
+
- Stack on mobile, expand on desktop
|
|
155
|
+
- Fluid typography with `clamp()`
|
|
156
|
+
- Images: `max-width: 100%`, responsive `srcset`, `next/image` with width/height
|
|
157
|
+
- Tables: card layout or horizontal scroll on mobile
|
|
158
|
+
|
|
159
|
+
### 9. Harden (Edge Cases)
|
|
160
|
+
|
|
161
|
+
After all visual work, stress-test:
|
|
162
|
+
- Long text: does a 200-character username break the layout?
|
|
163
|
+
- Empty everywhere: all lists empty, all data missing — does it still make sense?
|
|
164
|
+
- Error everywhere: every fetch fails — are error states visible and helpful?
|
|
165
|
+
- 320px viewport: nothing overflows, nothing clips, nothing overlaps
|
|
166
|
+
- Keyboard only: Tab through the entire app — can you reach everything? Is focus visible?
|
|
167
|
+
- Slow network: are loading states visible? Does content stream in or flash?
|
|
168
|
+
|
|
169
|
+
### 10. Verify & Ship
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npx tsc --noEmit 2>&1 | head -20
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Fix any TypeScript errors.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
git add {changed files}
|
|
179
|
+
git commit -m "polish: design pass — typography, color, states, motion, responsive, a11y"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
node ~/.claude/bin/state.js transition --to polished
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
node ~/.claude/bin/qualia-ui.js divider
|
|
188
|
+
node ~/.claude/bin/qualia-ui.js ok "AI slop: killed"
|
|
189
|
+
node ~/.claude/bin/qualia-ui.js ok "Typography: {brief}"
|
|
190
|
+
node ~/.claude/bin/qualia-ui.js ok "Color: {brief}"
|
|
191
|
+
node ~/.claude/bin/qualia-ui.js ok "Layout: {brief}"
|
|
192
|
+
node ~/.claude/bin/qualia-ui.js ok "States: {brief}"
|
|
193
|
+
node ~/.claude/bin/qualia-ui.js ok "Motion: {brief}"
|
|
194
|
+
node ~/.claude/bin/qualia-ui.js ok "Accessibility: {brief}"
|
|
195
|
+
node ~/.claude/bin/qualia-ui.js ok "Responsive: {brief}"
|
|
196
|
+
node ~/.claude/bin/qualia-ui.js ok "Hardened: {brief}"
|
|
197
|
+
node ~/.claude/bin/qualia-ui.js end "POLISHED" "/qualia-ship"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Rules
|
|
201
|
+
|
|
202
|
+
1. **Read before write.** Understand every file before changing it.
|
|
203
|
+
2. **DESIGN.md is law.** If it exists, follow it. Don't override client decisions.
|
|
204
|
+
3. **Don't break functionality.** Only change styling, never logic.
|
|
205
|
+
4. **AI slop is a bug.** Generic fonts, card grids, blue-purple gradients, centered-everything — treat these as defects, not preferences.
|
|
206
|
+
5. **TypeScript must pass** after every change.
|
|
207
|
+
6. **One commit** at the end — not per category.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qualia-quick
|
|
3
|
+
description: "Fast path for small tasks — bug fixes, tweaks, hot fixes. Skips full phase planning."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /qualia-quick — Quick Task
|
|
7
|
+
|
|
8
|
+
For tasks under 1 hour that don't need full phase planning. Single file changes, bug fixes, config tweaks, typo fixes.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/bin/qualia-ui.js banner quick
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
1. **Understand:** Ask what needs to be done (or read the instruction)
|
|
17
|
+
2. **Build:** Do it directly — read before write, MVP only
|
|
18
|
+
3. **Verify:** Run `npx tsc --noEmit`, test locally
|
|
19
|
+
4. **Commit:** Atomic commit with clear message
|
|
20
|
+
5. **Update:** Update tracking.json notes field
|
|
21
|
+
|
|
22
|
+
End with:
|
|
23
|
+
```bash
|
|
24
|
+
node ~/.claude/bin/qualia-ui.js end "QUICK FIX DONE"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
git add {specific files}
|
|
29
|
+
git commit -m "fix: {description}"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
No plan file. No subagents. Just build and ship.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node ~/.claude/bin/state.js transition --to note --notes "{brief description of what was done}"
|
|
36
|
+
```
|
|
37
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
@@ -0,0 +1,114 @@
|
|
|
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 (if enabled)
|
|
77
|
+
|
|
78
|
+
Read `~/.claude/.qualia-config.json` and check the `erp` object:
|
|
79
|
+
- If `erp.enabled` is `false`, skip this step and print: "ERP upload skipped (disabled in config)."
|
|
80
|
+
- If `erp.enabled` is `true` (default) or the `erp` field is missing (backward compatibility), proceed with the upload.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Read ERP config
|
|
84
|
+
ERP_URL=$(node -e "try{const c=JSON.parse(require('fs').readFileSync(require('os').homedir()+'/.claude/.qualia-config.json','utf8'));console.log(c.erp?.url||'https://portal.qualiasolutions.net')}catch{console.log('https://portal.qualiasolutions.net')}")
|
|
85
|
+
ERP_ENABLED=$(node -e "try{const c=JSON.parse(require('fs').readFileSync(require('os').homedir()+'/.claude/.qualia-config.json','utf8'));console.log(c.erp?.enabled!==false)}catch{console.log('true')}")
|
|
86
|
+
|
|
87
|
+
API_KEY=$(cat ~/.claude/.erp-api-key 2>/dev/null)
|
|
88
|
+
REPORT_FILE=".planning/reports/report-{date}.md"
|
|
89
|
+
EMAIL=$(git config user.email)
|
|
90
|
+
PROJECT=$(basename $(pwd))
|
|
91
|
+
|
|
92
|
+
# Only upload if ERP is enabled
|
|
93
|
+
if [ "$ERP_ENABLED" = "true" ]; then
|
|
94
|
+
curl -s -X POST "$ERP_URL/api/claude/report-upload" \
|
|
95
|
+
-H "X-API-Key: $API_KEY" \
|
|
96
|
+
-F "file=@$REPORT_FILE" \
|
|
97
|
+
-F "employee_email=$EMAIL" \
|
|
98
|
+
-F "project_name=$PROJECT"
|
|
99
|
+
fi
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
If the upload succeeds, print: "Report uploaded to ERP. You can now clock out."
|
|
103
|
+
If it fails (no API key, network error), print the error and tell the employee to ask Fawzi.
|
|
104
|
+
If ERP is disabled, print: "ERP upload skipped (disabled in config)."
|
|
105
|
+
|
|
106
|
+
### 6. Update State
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
node ~/.claude/bin/state.js transition --to activity --notes "Session report generated"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Do NOT manually edit STATE.md or tracking.json — state.js handles both.
|
|
113
|
+
|
|
114
|
+
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).
|