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
package/framework/install.sh
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Qualia Framework v2.0 — Linux Installer
|
|
3
|
-
# Usage: git clone <repo> && cd qualia-framework && ./install.sh
|
|
4
|
-
#
|
|
5
|
-
# Tested on: Ubuntu 22.04+, Pop!_OS 22.04+, Endeavour OS (Arch), Cosmic
|
|
6
|
-
# Requires: Node.js 18+, Claude Code CLI, bash 4+
|
|
7
|
-
#
|
|
8
|
-
# What it does:
|
|
9
|
-
# 1. Copies all framework files to ~/.claude/
|
|
10
|
-
# 2. Sets up hooks, agents, skills, engine, knowledge, rules
|
|
11
|
-
# 3. Configures settings.json (merges with existing)
|
|
12
|
-
# 4. Makes hooks executable
|
|
13
|
-
# 5. Verifies installation
|
|
14
|
-
|
|
15
|
-
set -euo pipefail
|
|
16
|
-
|
|
17
|
-
# Colors (Qualia teal palette)
|
|
18
|
-
Q_TEAL='\033[38;2;0;188;175m'
|
|
19
|
-
Q_BRIGHT='\033[38;2;45;226;210m'
|
|
20
|
-
Q_PASS='\033[38;2;52;211;153m'
|
|
21
|
-
Q_WARN='\033[38;2;234;179;8m'
|
|
22
|
-
Q_FAIL='\033[38;2;239;68;68m'
|
|
23
|
-
Q_WHITE='\033[38;2;220;225;230m'
|
|
24
|
-
Q_DIM='\033[38;2;70;78;88m'
|
|
25
|
-
Q_RESET='\033[0m'
|
|
26
|
-
|
|
27
|
-
CLAUDE_DIR="$HOME/.claude"
|
|
28
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
29
|
-
|
|
30
|
-
printf "\n"
|
|
31
|
-
printf "${Q_TEAL}━━━${Q_RESET} ${Q_BRIGHT}◆ QUALIA FRAMEWORK v2.0${Q_RESET}\n"
|
|
32
|
-
printf "\n"
|
|
33
|
-
|
|
34
|
-
# ─── Step 1: Verify source ───
|
|
35
|
-
if [ ! -d "$SCRIPT_DIR/skills" ] || [ ! -d "$SCRIPT_DIR/agents" ]; then
|
|
36
|
-
printf "${Q_FAIL} ✗ Run this script from the qualia-framework directory.${Q_RESET}\n"
|
|
37
|
-
exit 1
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
printf "${Q_WARN}[1/6] Prerequisites${Q_RESET}\n"
|
|
41
|
-
|
|
42
|
-
# Check Claude Code
|
|
43
|
-
if ! command -v claude >/dev/null 2>&1; then
|
|
44
|
-
printf "${Q_FAIL} ✗ Claude Code CLI not found${Q_RESET}\n"
|
|
45
|
-
printf " npm install -g @anthropic-ai/claude-code\n"
|
|
46
|
-
exit 1
|
|
47
|
-
fi
|
|
48
|
-
printf "${Q_PASS} ✓ Claude Code CLI${Q_RESET}\n"
|
|
49
|
-
|
|
50
|
-
# Check Node.js
|
|
51
|
-
if ! command -v node >/dev/null 2>&1; then
|
|
52
|
-
printf "${Q_FAIL} ✗ Node.js not found${Q_RESET}\n"
|
|
53
|
-
exit 1
|
|
54
|
-
fi
|
|
55
|
-
printf "${Q_PASS} ✓ Node.js $(node -v)${Q_RESET}\n"
|
|
56
|
-
|
|
57
|
-
# Check optional deps
|
|
58
|
-
command -v jq >/dev/null 2>&1 && printf "${Q_PASS} ✓ jq${Q_RESET}\n" || printf "${Q_WARN} ▲ jq not found (optional — deploy-verify scripts need it)${Q_RESET}\n"
|
|
59
|
-
command -v bc >/dev/null 2>&1 && printf "${Q_PASS} ✓ bc${Q_RESET}\n" || printf "${Q_WARN} ▲ bc not found (optional — install: pacman -S bc / apt install bc)${Q_RESET}\n"
|
|
60
|
-
|
|
61
|
-
# ─── Step 1b: Role selection ───
|
|
62
|
-
printf "\n${Q_BRIGHT}Who are you?${Q_RESET}\n\n"
|
|
63
|
-
printf " 1) ${Q_WHITE}Fawzi${Q_RESET} (Owner — full access)\n"
|
|
64
|
-
printf " 2) ${Q_WHITE}Employee${Q_RESET} (Team member — guided workflow)\n\n"
|
|
65
|
-
|
|
66
|
-
# Read from terminal even if script is piped
|
|
67
|
-
read -rp "Select [1/2]: " ROLE_CHOICE </dev/tty
|
|
68
|
-
|
|
69
|
-
case "$ROLE_CHOICE" in
|
|
70
|
-
1)
|
|
71
|
-
ROLE="owner"
|
|
72
|
-
ROLE_NAME="Fawzi"
|
|
73
|
-
printf "${Q_PASS} ✓ Owner mode${Q_RESET}\n"
|
|
74
|
-
;;
|
|
75
|
-
2)
|
|
76
|
-
read -rp "Enter your name: " EMPLOYEE_NAME </dev/tty
|
|
77
|
-
ROLE="employee"
|
|
78
|
-
ROLE_NAME="$EMPLOYEE_NAME"
|
|
79
|
-
printf "${Q_PASS} ✓ Employee mode — $ROLE_NAME${Q_RESET}\n"
|
|
80
|
-
;;
|
|
81
|
-
*)
|
|
82
|
-
ROLE="employee"
|
|
83
|
-
ROLE_NAME="Team Member"
|
|
84
|
-
printf "${Q_WARN} ▲ Defaulting to employee mode${Q_RESET}\n"
|
|
85
|
-
;;
|
|
86
|
-
esac
|
|
87
|
-
|
|
88
|
-
printf "\n"
|
|
89
|
-
|
|
90
|
-
# ─── Step 2: Create directory structure ───
|
|
91
|
-
printf "${Q_WARN}[2/6] Directory structure${Q_RESET}\n"
|
|
92
|
-
|
|
93
|
-
mkdir -p "$CLAUDE_DIR"/{skills,agents,hooks,rules,knowledge/retros,qualia-framework/{bin,references,templates,workflows},projects,session-env}
|
|
94
|
-
|
|
95
|
-
printf "${Q_PASS} ✓ Ready${Q_RESET}\n"
|
|
96
|
-
|
|
97
|
-
# ─── Step 3: Copy framework files ───
|
|
98
|
-
printf "${Q_WARN}[3/6] Installing files${Q_RESET}\n"
|
|
99
|
-
|
|
100
|
-
# Skills
|
|
101
|
-
SKILL_COUNT=0
|
|
102
|
-
for skill_dir in "$SCRIPT_DIR"/skills/*/; do
|
|
103
|
-
skill_name=$(basename "$skill_dir")
|
|
104
|
-
mkdir -p "$CLAUDE_DIR/skills/$skill_name"
|
|
105
|
-
cp -r "$skill_dir"* "$CLAUDE_DIR/skills/$skill_name/" 2>/dev/null || true
|
|
106
|
-
SKILL_COUNT=$((SKILL_COUNT + 1))
|
|
107
|
-
done
|
|
108
|
-
printf "${Q_PASS} ✓ $SKILL_COUNT skills${Q_RESET}\n"
|
|
109
|
-
|
|
110
|
-
# Agents
|
|
111
|
-
cp "$SCRIPT_DIR"/agents/*.md "$CLAUDE_DIR/agents/" 2>/dev/null || true
|
|
112
|
-
if [ -d "$SCRIPT_DIR/agents/teams" ]; then
|
|
113
|
-
mkdir -p "$CLAUDE_DIR/agents/teams"
|
|
114
|
-
cp "$SCRIPT_DIR"/agents/teams/*.md "$CLAUDE_DIR/agents/teams/" 2>/dev/null || true
|
|
115
|
-
fi
|
|
116
|
-
AGENT_COUNT=$(find "$CLAUDE_DIR/agents" -maxdepth 1 -name "*.md" -type f | wc -l)
|
|
117
|
-
printf "${Q_PASS} ✓ $AGENT_COUNT agents${Q_RESET}\n"
|
|
118
|
-
|
|
119
|
-
# Hooks
|
|
120
|
-
cp "$SCRIPT_DIR"/hooks/*.sh "$CLAUDE_DIR/hooks/" 2>/dev/null || true
|
|
121
|
-
chmod +x "$CLAUDE_DIR"/hooks/*.sh
|
|
122
|
-
HOOK_COUNT=$(find "$CLAUDE_DIR/hooks" -name "*.sh" -type f | wc -l)
|
|
123
|
-
printf "${Q_PASS} ✓ $HOOK_COUNT hooks${Q_RESET}\n"
|
|
124
|
-
|
|
125
|
-
# Qualia Engine
|
|
126
|
-
cp -r "$SCRIPT_DIR"/qualia-framework/* "$CLAUDE_DIR/qualia-framework/" 2>/dev/null || true
|
|
127
|
-
# Clean up old path if it exists from previous installs
|
|
128
|
-
[ -d "$CLAUDE_DIR/qualia-engine" ] && rm -rf "$CLAUDE_DIR/qualia-engine"
|
|
129
|
-
printf "${Q_PASS} ✓ Qualia engine${Q_RESET}\n"
|
|
130
|
-
|
|
131
|
-
# Rules
|
|
132
|
-
cp "$SCRIPT_DIR"/rules/*.md "$CLAUDE_DIR/rules/" 2>/dev/null || true
|
|
133
|
-
RULE_COUNT=$(find "$CLAUDE_DIR/rules" -name "*.md" -type f | wc -l)
|
|
134
|
-
printf "${Q_PASS} ✓ $RULE_COUNT rules${Q_RESET}\n"
|
|
135
|
-
|
|
136
|
-
# Knowledge base
|
|
137
|
-
cp "$SCRIPT_DIR"/knowledge/*.md "$CLAUDE_DIR/knowledge/" 2>/dev/null || true
|
|
138
|
-
KNOWLEDGE_COUNT=$(find "$CLAUDE_DIR/knowledge" -maxdepth 1 -name "*.md" -type f | wc -l)
|
|
139
|
-
printf "${Q_PASS} ✓ $KNOWLEDGE_COUNT knowledge files${Q_RESET}\n"
|
|
140
|
-
|
|
141
|
-
# Statusline
|
|
142
|
-
[ -f "$SCRIPT_DIR/statusline-command.sh" ] && cp "$SCRIPT_DIR/statusline-command.sh" "$CLAUDE_DIR/statusline-command.sh" && chmod +x "$CLAUDE_DIR/statusline-command.sh"
|
|
143
|
-
|
|
144
|
-
# CLAUDE.md — role-based
|
|
145
|
-
if [ "$ROLE" = "owner" ]; then
|
|
146
|
-
cp "$SCRIPT_DIR/CLAUDE.md" "$CLAUDE_DIR/CLAUDE.md"
|
|
147
|
-
printf "${Q_PASS} ✓ CLAUDE.md (owner)${Q_RESET}\n"
|
|
148
|
-
elif [ ! -f "$CLAUDE_DIR/CLAUDE.md" ]; then
|
|
149
|
-
cat > "$CLAUDE_DIR/CLAUDE.md" << EMPLOYEE_EOF
|
|
150
|
-
# CLAUDE.md — DEVELOPER Profile
|
|
151
|
-
|
|
152
|
-
## Identity
|
|
153
|
-
**$ROLE_NAME** — Developer at Qualia Solutions.
|
|
154
|
-
|
|
155
|
-
- Stack: Next.js 16+, React 19, TypeScript, Supabase, Vercel, Retell AI, ElevenLabs, Telnyx, OpenRouter
|
|
156
|
-
|
|
157
|
-
## Role: DEVELOPER
|
|
158
|
-
|
|
159
|
-
You are a developer at Qualia Solutions, working under Fawzi Goussous (founder).
|
|
160
|
-
- Work on feature branches only — never push to main/master
|
|
161
|
-
- Use \`/ship\` to deploy — it runs quality gates, auto-creates feature branches, and deploys
|
|
162
|
-
- Cannot modify the Qualia framework (CLAUDE.md, skills, hooks)
|
|
163
|
-
- Ask Fawzi when unsure about architecture decisions
|
|
164
|
-
|
|
165
|
-
## Rules
|
|
166
|
-
- Read before Write/Edit — no exceptions
|
|
167
|
-
- Feature branches only — never commit to main/master
|
|
168
|
-
- MVP first. Build only what's asked. No over-engineering.
|
|
169
|
-
- \`npx tsc --noEmit\` after multi-file TS changes
|
|
170
|
-
- See \`rules/security.md\` for auth, RLS, Zod, secrets rules
|
|
171
|
-
- See \`rules/frontend.md\` for design standards
|
|
172
|
-
|
|
173
|
-
## Getting Started
|
|
174
|
-
- Run \`/collab-onboard\` when joining a new project — it explains what's built and how to contribute
|
|
175
|
-
- Onboarding guide: ~/Projects/qualia-erp/docs/trainee-onboarding.md
|
|
176
|
-
|
|
177
|
-
## Workflow
|
|
178
|
-
- **MANDATORY FIRST ACTION**: On every session start, invoke the \`qualia-start\` skill before doing anything else.
|
|
179
|
-
- Run \`/qualia-review\` before deploying
|
|
180
|
-
- Run \`/browser-qa\` after frontend changes
|
|
181
|
-
- Run \`/pr\` to submit work for review — never push to main directly
|
|
182
|
-
- Run \`/qualia-idk\` if stuck — it suggests next steps and can escalate to Fawzi
|
|
183
|
-
- Ask for help if stuck — don't guess
|
|
184
|
-
|
|
185
|
-
## Qualia Mode (always active)
|
|
186
|
-
These behaviors apply to ALL interactions:
|
|
187
|
-
- **Frontend guard:** Read .planning/DESIGN.md before any frontend file changes
|
|
188
|
-
- **Deploy guard:** Check .planning/REVIEW.md freshness before any deploy command
|
|
189
|
-
- **Intent verification:** Confirm before modifying 3+ files in one response
|
|
190
|
-
- **Quality defaults:** Security rules, tsc checks, RLS consideration — always enforced
|
|
191
|
-
|
|
192
|
-
## Compaction — ALWAYS preserve:
|
|
193
|
-
Project path/name/ref, branch, modified files, decisions, test results, in-progress work, errors, Qualia mode active/inactive state.
|
|
194
|
-
EMPLOYEE_EOF
|
|
195
|
-
printf "${Q_PASS} ✓ CLAUDE.md (developer — $ROLE_NAME)${Q_RESET}\n"
|
|
196
|
-
else
|
|
197
|
-
printf "${Q_WARN} ▲ CLAUDE.md exists — skipped${Q_RESET}\n"
|
|
198
|
-
fi
|
|
199
|
-
|
|
200
|
-
# ─── Step 4: Configure settings.json ───
|
|
201
|
-
printf "${Q_WARN}[4/6] Settings${Q_RESET}\n"
|
|
202
|
-
|
|
203
|
-
if [ -f "$CLAUDE_DIR/settings.json" ]; then
|
|
204
|
-
cp "$CLAUDE_DIR/settings.json" "$CLAUDE_DIR/settings.json.backup.$(date +%s)"
|
|
205
|
-
printf "${Q_DIM} Backed up existing settings${Q_RESET}\n"
|
|
206
|
-
|
|
207
|
-
node -e "
|
|
208
|
-
const fs = require('fs');
|
|
209
|
-
const existing = JSON.parse(fs.readFileSync('$CLAUDE_DIR/settings.json', 'utf8'));
|
|
210
|
-
const template = JSON.parse(fs.readFileSync('$SCRIPT_DIR/settings.json', 'utf8'));
|
|
211
|
-
existing.env = { ...template.env, ...existing.env };
|
|
212
|
-
for (const [event, matchers] of Object.entries(template.hooks || {})) {
|
|
213
|
-
if (!existing.hooks) existing.hooks = {};
|
|
214
|
-
if (!existing.hooks[event]) {
|
|
215
|
-
existing.hooks[event] = matchers;
|
|
216
|
-
} else {
|
|
217
|
-
for (const matcher of matchers) {
|
|
218
|
-
const exists = existing.hooks[event].some(m =>
|
|
219
|
-
m.matcher === matcher.matcher &&
|
|
220
|
-
JSON.stringify(m.hooks) === JSON.stringify(matcher.hooks)
|
|
221
|
-
);
|
|
222
|
-
if (!exists) existing.hooks[event].push(matcher);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
fs.writeFileSync('$CLAUDE_DIR/settings.json', JSON.stringify(existing, null, 2));
|
|
227
|
-
" 2>/dev/null && printf "${Q_PASS} ✓ Settings merged${Q_RESET}\n" || printf "${Q_WARN} ▲ Settings merge failed — manual merge needed${Q_RESET}\n"
|
|
228
|
-
else
|
|
229
|
-
cp "$SCRIPT_DIR/settings.json" "$CLAUDE_DIR/settings.json"
|
|
230
|
-
printf "${Q_PASS} ✓ Settings installed${Q_RESET}\n"
|
|
231
|
-
fi
|
|
232
|
-
|
|
233
|
-
# ─── Step 5: Platform setup ───
|
|
234
|
-
printf "${Q_WARN}[5/6] Platform setup${Q_RESET}\n"
|
|
235
|
-
|
|
236
|
-
# Make qualia-tools executable
|
|
237
|
-
[ -f "$CLAUDE_DIR/qualia-framework/bin/qualia-tools.js" ] && chmod +x "$CLAUDE_DIR/qualia-framework/bin/qualia-tools.js"
|
|
238
|
-
|
|
239
|
-
# Askpass helper (works with zenity, kdialog, or falls back to terminal)
|
|
240
|
-
if [ ! -f "$CLAUDE_DIR/askpass.sh" ]; then
|
|
241
|
-
cat > "$CLAUDE_DIR/askpass.sh" << 'ASKPASS_EOF'
|
|
242
|
-
#!/bin/bash
|
|
243
|
-
if command -v zenity >/dev/null 2>&1; then
|
|
244
|
-
zenity --password --title="sudo password" 2>/dev/null
|
|
245
|
-
elif command -v kdialog >/dev/null 2>&1; then
|
|
246
|
-
kdialog --password "sudo password" 2>/dev/null
|
|
247
|
-
else
|
|
248
|
-
read -rsp "Password: " pass </dev/tty
|
|
249
|
-
echo "$pass"
|
|
250
|
-
fi
|
|
251
|
-
ASKPASS_EOF
|
|
252
|
-
chmod +x "$CLAUDE_DIR/askpass.sh"
|
|
253
|
-
fi
|
|
254
|
-
|
|
255
|
-
printf "${Q_PASS} ✓ Tools ready${Q_RESET}\n"
|
|
256
|
-
|
|
257
|
-
# Detect distro
|
|
258
|
-
if [ -f /etc/os-release ]; then
|
|
259
|
-
DISTRO=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
|
|
260
|
-
printf "${Q_DIM} Detected: $DISTRO${Q_RESET}\n"
|
|
261
|
-
fi
|
|
262
|
-
|
|
263
|
-
# ─── Step 6: Verify ───
|
|
264
|
-
printf "${Q_WARN}[6/6] Verifying${Q_RESET}\n"
|
|
265
|
-
|
|
266
|
-
ERRORS=0
|
|
267
|
-
|
|
268
|
-
for check in \
|
|
269
|
-
"agents/qualia-executor.md" \
|
|
270
|
-
"agents/qualia-planner.md" \
|
|
271
|
-
"agents/qualia-verifier.md" \
|
|
272
|
-
"hooks/pre-deploy-gate.sh" \
|
|
273
|
-
"hooks/branch-guard.sh" \
|
|
274
|
-
"hooks/qualia-colors.sh" \
|
|
275
|
-
"skills/qualia-start/SKILL.md" \
|
|
276
|
-
"skills/browser-qa/SKILL.md" \
|
|
277
|
-
"skills/ship/SKILL.md" \
|
|
278
|
-
"qualia-framework/bin/qualia-tools.js" \
|
|
279
|
-
"CLAUDE.md"; do
|
|
280
|
-
if [ ! -f "$CLAUDE_DIR/$check" ]; then
|
|
281
|
-
printf "${Q_FAIL} ✗ Missing: $check${Q_RESET}\n"
|
|
282
|
-
ERRORS=$((ERRORS + 1))
|
|
283
|
-
fi
|
|
284
|
-
done
|
|
285
|
-
|
|
286
|
-
# Check hooks executable
|
|
287
|
-
for hook in "$CLAUDE_DIR"/hooks/*.sh; do
|
|
288
|
-
[ -x "$hook" ] || { printf "${Q_FAIL} ✗ Not executable: $(basename "$hook")${Q_RESET}\n"; ERRORS=$((ERRORS + 1)); }
|
|
289
|
-
done
|
|
290
|
-
|
|
291
|
-
# Check node available for hooks
|
|
292
|
-
command -v node >/dev/null 2>&1 || { printf "${Q_FAIL} ✗ node not in PATH — hooks will silently fail${Q_RESET}\n"; ERRORS=$((ERRORS + 1)); }
|
|
293
|
-
|
|
294
|
-
if [ "$ERRORS" -gt 0 ]; then
|
|
295
|
-
printf "\n${Q_FAIL} ✗ $ERRORS error(s) — check above${Q_RESET}\n"
|
|
296
|
-
exit 1
|
|
297
|
-
fi
|
|
298
|
-
|
|
299
|
-
printf "${Q_PASS} ✓ All checks passed${Q_RESET}\n"
|
|
300
|
-
|
|
301
|
-
# ─── Summary ───
|
|
302
|
-
printf "\n"
|
|
303
|
-
printf "${Q_TEAL}━━━${Q_RESET} ${Q_BRIGHT}◆ INSTALLED${Q_RESET}\n\n"
|
|
304
|
-
printf " ${Q_WHITE}Skills: $SKILL_COUNT Agents: $AGENT_COUNT Hooks: $HOOK_COUNT Rules: $RULE_COUNT${Q_RESET}\n\n"
|
|
305
|
-
printf " ${Q_BRIGHT}Quick Start:${Q_RESET}\n"
|
|
306
|
-
printf " 1. ${Q_DIM}cd${Q_RESET} into any project\n"
|
|
307
|
-
printf " 2. Run ${Q_TEAL}claude${Q_RESET}\n"
|
|
308
|
-
printf " 3. Qualia mode activates automatically\n\n"
|
|
309
|
-
printf " ${Q_BRIGHT}Key Commands:${Q_RESET}\n"
|
|
310
|
-
printf " ${Q_TEAL}/qualia${Q_RESET} Smart router — tells you what to do next\n"
|
|
311
|
-
printf " ${Q_TEAL}/qualia-help${Q_RESET} All available commands\n"
|
|
312
|
-
printf " ${Q_TEAL}/ship${Q_RESET} Full deploy pipeline\n"
|
|
313
|
-
printf " ${Q_TEAL}/pr${Q_RESET} Quick pull request\n\n"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.5.1
|
|
Binary file
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Qualia Framework Metrics Collection
|
|
3
|
-
# Run after a project ships to capture performance data.
|
|
4
|
-
# Usage: collect-metrics.sh [project-dir]
|
|
5
|
-
# Output: appends to ~/.claude/knowledge/framework-metrics.md
|
|
6
|
-
|
|
7
|
-
PROJECT_DIR="${1:-.}"
|
|
8
|
-
METRICS_FILE="$HOME/.claude/knowledge/framework-metrics.md"
|
|
9
|
-
DATE=$(date +%Y-%m-%d)
|
|
10
|
-
|
|
11
|
-
# Ensure metrics file exists
|
|
12
|
-
if [ ! -f "$METRICS_FILE" ]; then
|
|
13
|
-
cat > "$METRICS_FILE" << 'HEADER'
|
|
14
|
-
# Framework Performance Metrics
|
|
15
|
-
|
|
16
|
-
> Auto-collected after each project ships. Read by `/qualia-evolve` to optimize the framework.
|
|
17
|
-
|
|
18
|
-
| Date | Project | Phases | Sessions | Deviations | IDK Calls | Verify Pass Rate | Lab Notes | FQS |
|
|
19
|
-
|------|---------|--------|----------|------------|-----------|-----------------|-----------|-----|
|
|
20
|
-
HEADER
|
|
21
|
-
fi
|
|
22
|
-
|
|
23
|
-
cd "$PROJECT_DIR" || exit 1
|
|
24
|
-
|
|
25
|
-
# Project name
|
|
26
|
-
PROJECT=$(basename "$(pwd)")
|
|
27
|
-
|
|
28
|
-
# Phase count
|
|
29
|
-
PHASES=$(ls -d .planning/phases/*/ 2>/dev/null | wc -l)
|
|
30
|
-
|
|
31
|
-
# Session count (from session-digest entries for this project)
|
|
32
|
-
SESSIONS=$(grep -c "$PROJECT" ~/.claude/knowledge/session-digest.md 2>/dev/null || echo "?")
|
|
33
|
-
|
|
34
|
-
# Deviation count (gap-fix plans)
|
|
35
|
-
DEVIATIONS=$(find .planning/phases/ -name "*-PLAN.md" -exec grep -l "gaps" {} \; 2>/dev/null | wc -l)
|
|
36
|
-
|
|
37
|
-
# IDK calls (search session digest for qualia-idk mentions with this project)
|
|
38
|
-
IDK_CALLS=$(grep "$PROJECT" ~/.claude/knowledge/session-digest.md 2>/dev/null | grep -c "idk\|stuck\|lost" || echo "0")
|
|
39
|
-
|
|
40
|
-
# Verify pass rate (UAT files with PASSED vs total UAT files)
|
|
41
|
-
TOTAL_UAT=$(find .planning/phases/ -name "*-UAT.md" 2>/dev/null | wc -l)
|
|
42
|
-
PASSED_UAT=$(grep -rl "PASSED\|✅.*Overall" .planning/phases/*/*.md 2>/dev/null | wc -l)
|
|
43
|
-
if [ "$TOTAL_UAT" -gt 0 ]; then
|
|
44
|
-
PASS_RATE=$(( PASSED_UAT * 100 / TOTAL_UAT ))%
|
|
45
|
-
else
|
|
46
|
-
PASS_RATE="n/a"
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
# Lab Notes count
|
|
50
|
-
LAB_NOTES=$(grep -c "^###" .planning/lab-notes.md 2>/dev/null || echo "0")
|
|
51
|
-
|
|
52
|
-
# Completion rate from ROADMAP.md (case-insensitive, allows indentation)
|
|
53
|
-
TOTAL_PLANS=$(grep -ciE "^\s*- \[" .planning/ROADMAP.md 2>/dev/null || echo "0")
|
|
54
|
-
COMPLETED_PLANS=$(grep -ciE "^\s*- \[x\]" .planning/ROADMAP.md 2>/dev/null || echo "0")
|
|
55
|
-
|
|
56
|
-
# FQS = (completion_fraction) / sessions * 100 (per OBJECTIVE.md)
|
|
57
|
-
# = COMPLETED_PLANS * 100 / (TOTAL_PLANS * SESSIONS)
|
|
58
|
-
if [ "$TOTAL_PLANS" -gt 0 ] && [ "$SESSIONS" != "?" ] && [ "$SESSIONS" -gt 0 ]; then
|
|
59
|
-
FQS=$(( COMPLETED_PLANS * 100 / (TOTAL_PLANS * SESSIONS) ))
|
|
60
|
-
else
|
|
61
|
-
FQS="?"
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
# Append to metrics file
|
|
65
|
-
echo "| $DATE | $PROJECT | $PHASES | $SESSIONS | $DEVIATIONS | $IDK_CALLS | $PASS_RATE | $LAB_NOTES | $FQS |" >> "$METRICS_FILE"
|
|
66
|
-
|
|
67
|
-
echo "Metrics collected for $PROJECT → $METRICS_FILE"
|