qualia-framework 5.4.0 → 5.5.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.
@@ -1,234 +0,0 @@
1
- # Install Redesign — Pilot Results (v5.1.0)
2
-
3
- Captured output and timing measurements for the three install-target
4
- scenarios, run on Linux 6.19 / Node 22 / non-TTY (piped stdin).
5
-
6
- All three scenarios pass cleanly. Total installer wall-clock cost
7
- remains under 200ms; the live-progress lifecycle adds negligible
8
- overhead because most file copies finish under 50ms (sub-50ms ops skip
9
- the "doing" state and go straight to `✓`).
10
-
11
- ## Method
12
-
13
- ```bash
14
- TMP=$(mktemp -d)
15
- START=$(date +%s%N)
16
- printf 'QS-FAWZI-01\n<CHOICE>\n' | HOME="$TMP" node bin/install.js > log.txt 2>&1
17
- END=$(date +%s%N)
18
- echo "wall-clock: $(( (END-START)/1000000 ))ms"
19
- ```
20
-
21
- ANSI codes stripped from the captured logs below for readability. The
22
- real install renders the same lines with OKLCH-tinted teal / dim white
23
- / green / yellow per `bin/qualia-ui.js`.
24
-
25
- ## Scenario 1 — Claude Code only (target=1, the default)
26
-
27
- **Wall-clock:** 99ms · **Lines:** 202 · **Result:** `~/.claude/` populated
28
- (11 entries: agents, bin, CLAUDE.md, hooks, knowledge, qualia-guide.md,
29
- qualia-references, qualia-templates, rules, settings.json, skills),
30
- `~/.codex/` not created.
31
-
32
- ```
33
- ⬢ Q U A L I A
34
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
35
- Framework v5.1.0 · Qualia Solutions
36
- Plan → Build → Verify → Ship
37
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
38
-
39
- Enter install code: QS-FAWZI-01
40
-
41
- ✓ Welcome, Fawzi Goussous
42
- Role: OWNER
43
-
44
- Where would you like to install Qualia?
45
-
46
- [1] Claude Code only — recommended, full feature set
47
- [2] OpenAI Codex only — AGENTS.md (Codex's open standard)
48
- [3] Both — max compatibility
49
-
50
- Choice [1]: 1
51
-
52
- Target: Claude Code
53
-
54
- ▸ Skills
55
- ────────────────────────────────────────
56
- ✓ qualia
57
- ✓ qualia-build
58
- ✓ qualia-debug
59
- ... (33 skills total) ...
60
- ✓ zoho-workflow
61
- └─ 33 skills · 4ms
62
-
63
- ▸ Agents
64
- ────────────────────────────────────────
65
- ✓ builder.md
66
- ... (9 agents total) ...
67
- ✓ visual-evaluator.md
68
- └─ 9 agents · 0ms
69
-
70
- ▸ Rules
71
- ────────────────────────────────────────
72
- ... (10 rules) ...
73
- └─ 10 rules · 0ms
74
-
75
- ▸ Hooks (12 wired)
76
- ▸ Templates (16 entries, recursive)
77
- ▸ Knowledge layer (initialized on first install)
78
- ▸ References (methodology docs)
79
- ▸ Configuration (CLAUDE.md role substituted)
80
- ▸ Scripts (state.js, qualia-ui.js, etc.)
81
- ▸ Knowledge Base (learned-patterns / common-fixes / client-prefs)
82
- ▸ ERP Integration (key opt-in)
83
-
84
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
85
- ⬢ INSTALLED
86
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
87
-
88
- Fawzi Goussous · OWNER · v5.1.0
89
-
90
- Targets Claude Code
91
- Time 99ms
92
-
93
- Skills 33 Agents 9 Hooks 12
94
- Rules 10 Scripts 7 Templates 16
95
-
96
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
- Quick Start
98
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
99
-
100
- 1. Restart Claude Code (loads new settings)
101
- 2. cd into any project and run claude
102
- 3. Try /qualia-new — kickoff a new project
103
-
104
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
105
- Welcome to the future with Qualia.
106
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
- ```
108
-
109
- ## Scenario 2 — Codex only (target=2)
110
-
111
- **Wall-clock:** 183ms (extra cost is the `which codex` probe via
112
- `spawnSync`) · **Lines:** 56 · **Result:** `~/.codex/AGENTS.md` written
113
- with `Role: OWNER` substituted, `~/.claude/` not touched.
114
-
115
- ```
116
- ⬢ Q U A L I A
117
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
- Framework v5.1.0 · Qualia Solutions
119
- ...
120
-
121
- Choice [1]: 2
122
-
123
- Target: Codex
124
-
125
- ▸ Codex
126
- ────────────────────────────────────────
127
- ✓ AGENTS.md (configured as OWNER)
128
- └─ Codex install scope: AGENTS.md only — Codex's runtime does not currently
129
- consume the framework's skills/hooks/agents on disk. AGENTS.md carries
130
- the rules; commands route through Claude Code.
131
-
132
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
133
- ⬢ INSTALLED
134
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
135
-
136
- Fawzi Goussous · OWNER · v5.1.0
137
-
138
- Targets Codex
139
- Time 183ms
140
-
141
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
142
- Quick Start
143
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
-
145
- 1. Open Codex in any project
146
- 2. Codex picks up ~/.codex/AGENTS.md automatically
147
- 3. Ask Codex about Qualia rules — they're in AGENTS.md
148
- ```
149
-
150
- If `which codex` fails (CLI not installed), the section prints a soft
151
- warning before the file write; the AGENTS.md is still written so the
152
- user is set up for when they install Codex via
153
- `npm install -g @openai/codex`.
154
-
155
- ## Scenario 3 — Both (target=3)
156
-
157
- **Wall-clock:** 193ms · **Lines:** 209 · **Result:** Both `~/.claude/`
158
- and `~/.codex/AGENTS.md` populated. Final summary shows
159
- `Targets Claude Code · Codex`.
160
-
161
- The Claude install runs first (identical to Scenario 1), then the Codex
162
- section appends:
163
-
164
- ```
165
- ▸ Codex
166
- ────────────────────────────────────────
167
- ✓ AGENTS.md (configured as OWNER)
168
- └─ Codex install scope: AGENTS.md only — ...
169
- ```
170
-
171
- Final card:
172
-
173
- ```
174
- Targets Claude Code · Codex
175
- Time 193ms
176
- ```
177
-
178
- ## Backward compatibility — legacy single-line piped install
179
-
180
- ```bash
181
- echo "QS-FAWZI-01" | npx qualia-framework install
182
- ```
183
-
184
- still works untouched. The target prompt sees EOF on stdin, normalizes
185
- to `1` (Claude only). Confirmed by test 121 in `tests/bin.test.sh`.
186
-
187
- ## TTY-degradation verification
188
-
189
- In non-TTY mode (output piped to a file), the live-progress primitives
190
- in `bin/qualia-ui.js` skip:
191
-
192
- - The Braille spinner (`spinner()`) — prints a one-shot `→ text` /
193
- `✓ text` instead of an animated frame loop.
194
- - The cursor-up / clear-line overwrites (`step()`) — skips the
195
- `⏳ doing` line and prints the result line directly when finalized.
196
- - Cursor hide/show escapes — never emitted.
197
-
198
- Verified by test 124: `grep` for bare `\r`, `?25` (hide-cursor), and
199
- `\[2K` (clear-line) on a piped install log returns nothing.
200
-
201
- ## Timing budget
202
-
203
- | Scenario | Wall-clock | Lines emitted | Notes |
204
- |----------|------------|---------------|-------|
205
- | 1 — Claude only | 99ms | 202 | Baseline |
206
- | 2 — Codex only | 183ms | 56 | + `which codex` probe (~80ms on Node 22 / Linux) |
207
- | 3 — Both | 193ms | 209 | Claude + Codex back-to-back |
208
-
209
- The spec budget was "≤ 2× the current install time." v5.1 stays comfortably
210
- under it — the live updates and section timing add only the cost of the
211
- extra console.log calls (negligible) and a couple of `Date.now()` calls
212
- per section.
213
-
214
- ## Known limitations / deferred to v5.2
215
-
216
- - **Codex skills/hooks/agents not mirrored.** Codex uses `.toml` agent
217
- format and a different hook schema. AGENTS.md is the rule layer they
218
- share; the rest stays Claude-only until Codex's on-disk surface
219
- stabilizes for cross-mapping.
220
- - **Spinner cosmetics on `cmd.exe`.** Braille frames may render as
221
- boxes on legacy `cmd.exe`. Modern Windows Terminal handles them. The
222
- install completes correctly either way; this is purely cosmetic.
223
- - **`Time` row precision.** Sub-second installs show `Xms`; ≥1s installs
224
- show `X.Ys`. Either format is grep-friendly (regex
225
- `Time *[0-9]+(\.[0-9]+)?(ms|s)`).
226
-
227
- ## What this enables
228
-
229
- A user piping `npx qualia-framework install` from a fresh box now has
230
- a one-keystroke choice between Claude-only (the recommended default)
231
- and shipping Qualia's rule layer to OpenAI Codex via the open AGENTS.md
232
- standard. The live-progress redesign means even a 5-second install
233
- feels like an intentional product, not a hung process. First impression
234
- matches the rest of the framework's polish.
@@ -1,113 +0,0 @@
1
- # Instruction-Budget Audit
2
-
3
- > **Date:** 2026-05-06
4
- > **Trigger:** Re-study of *Skills and Strategies for Real Engineering with Claude Code* (Matt Pocock) and *Context and Tools: Mastering the AI Engineering Lifecycle* (Patrick Debois, Karpathy, Pocock, Mario Zechner).
5
- > **Question:** Does Qualia Framework actually honor the "load on demand, not always" promise written in `CLAUDE.md`?
6
-
7
- ## Finding 1 — `~/.claude/rules/*.md` is loaded eagerly by Claude Code
8
-
9
- Claude Code auto-discovers and injects every Markdown file under `~/.claude/rules/` into the system prompt of every session. This is **harness behavior**, not framework behavior — there is no `@-import` declaration in `~/.claude/CLAUDE.md`, yet the rules appear in the system reminder verbatim.
10
-
11
- **Measured cost (2026-05-06 install):**
12
-
13
- | File | Lines | Notes |
14
- |---|---|---|
15
- | `design-reference.md` | 179 | Motion specs, WCAG checklist, breakpoints |
16
- | `design-rubric.md` | 157 | 8-dimension verifier rubric |
17
- | `design-laws.md` | 148 | OKLCH, color strategy, typography |
18
- | `frontend.md` | 118 | Brand standards |
19
- | `design-brand.md` | 114 | Brand register |
20
- | `design-product.md` | 114 | Product register |
21
- | `grounding.md` | 114 | Severity rubric, citation format |
22
- | `infrastructure.md` | 87 | Stack, MCP servers, CLIs |
23
- | `deployment.md` | 30 | Post-deploy checklist |
24
- | `speed.md` | 23 | Speed rules |
25
- | `context7.md` | 14 | Context7 trigger rule |
26
- | `security.md` | 12 | RLS, auth, secrets |
27
- | **Total** | **1110** | |
28
-
29
- At ~4 chars/line average that is **~28 KB injected on every session**, regardless of whether the user is touching frontend, backend, infra, or nothing.
30
-
31
- The rule files themselves are written under the assumption that a skill or agent will read them on demand (e.g., `agents/builder.md` line 139 says *"Security, design, and performance rules auto-load from `rules/*.md` based on the files you touch"*) — which is correct **inside subagent fork prompts** but **wrong for the user's main session**, where the harness loads them all preemptively.
32
-
33
- ## Finding 2 — `CLAUDE.md` template is already disciplined
34
-
35
- The framework `CLAUDE.md` template is 24 lines and ends with the right note:
36
-
37
- > *"this file stays under 25 lines. Steering rules go into discoverable skills, not into the global system prompt. CLI preferences go into hooks. Stack/architecture details are trivially discoverable in package.json/config."*
38
-
39
- This part is healthy. The leak is in `rules/`, not `CLAUDE.md`.
40
-
41
- ## Finding 3 — Skill dedup hypothesis was wrong
42
-
43
- A first pass suggested deleting `qualia-quick`, `qualia-road`, `qualia-help`, `qualia-handoff` as duplicates. Cross-reference check showed:
44
-
45
- - `qualia-quick` is referenced from `bin/install.js`, `hooks/session-start.js`, `templates/help.html`, `README.md`, `guide.md`, `skills/qualia-prd/SKILL.md`, `skills/qualia-task/SKILL.md` — load-bearing.
46
- - `qualia-road` is referenced from `CLAUDE.md`, `AGENTS.md`, `README.md`, `guide.md`, `skills/qualia-help/SKILL.md` description — load-bearing.
47
- - `qualia-help` opens an HTML reference — distinct purpose from `qualia-road` (terminal map).
48
- - `qualia-handoff` is the final delivery skill, referenced from `bin/state.js:490`, ship/verify, journey-demo — load-bearing.
49
-
50
- **Each skill has a job.** No deletion is safe in this PR. The right fix is *boundary clarity in descriptions* (so the LLM picks correctly), not deletion.
51
-
52
- ## Recommended follow-ups (deferred to separate PRs)
53
-
54
- ### R1 — Move design rules to a lazy folder *(big, risky)*
55
-
56
- ```
57
- ~/.claude/rules/ # always-loaded (HARNESS)
58
- ├── grounding.md (114) # KEEP — universal
59
- ├── security.md (12) # KEEP — universal
60
- ├── speed.md (23) # KEEP — universal
61
- ├── context7.md (14) # KEEP — universal
62
- └── infrastructure.md (87) # KEEP — universal stack
63
- # total: ~250 lines
64
-
65
- ~/.claude/qualia-design/ # explicit-load only
66
- ├── design-laws.md (148)
67
- ├── design-brand.md (114)
68
- ├── design-product.md (114)
69
- ├── design-reference.md (179)
70
- ├── design-rubric.md (157)
71
- ├── frontend.md (118)
72
- └── deployment.md (30) # post-deploy checklist; loaded by /qualia-ship
73
- # total: 860 lines, NOT auto-loaded
74
- ```
75
-
76
- Skills/agents that need design rules `Read` them on demand (already the pattern in `agents/builder.md` and `agents/verifier.md`). The save: **~28 KB → ~6 KB injected per session, ~22 KB recovered.**
77
-
78
- Required changes:
79
- 1. `bin/install.js` — install design rules to `~/.claude/qualia-design/` instead of `~/.claude/rules/`.
80
- 2. Every skill/agent reference path `rules/design-*.md` → `qualia-design/design-*.md` or use `~/.claude/qualia-design/design-*.md` absolute.
81
- 3. Update `hooks/session-start.js` `CRITICAL_FILES` health check.
82
- 4. Migration step in `bin/install.js` to clean up old `~/.claude/rules/design-*.md` for existing installs.
83
-
84
- **Effort:** M-L. **Impact:** ~80% reduction in always-loaded substrate.
85
-
86
- ### R2 — Skill description sharpening *(small, safe)*
87
-
88
- `qualia-quick` and `qualia-task` overlap in description. Tighten:
89
- - `qualia-quick`: "≤1 hour, 1 file, no plan, no spawn — just do it."
90
- - `qualia-task`: "1–3 hours, 1–5 files, fresh builder spawn, atomic commit, no phase plan."
91
-
92
- `qualia-road` and `qualia-help` overlap. Clarify:
93
- - `qualia-road`: "Terminal-rendered workflow map. Use over SSH or when no browser."
94
- - `qualia-help`: "Browser-rendered HTML reference. Default."
95
-
96
- ### R3 — Per-skill versioning + eval harness *(carry-over from notebook 1, source 6 — Debois)*
97
-
98
- Each skill carries its own `version:` in frontmatter and a `tests/skills/{skill-name}.spec.sh` fixture. CI runs the fixture against the skill spec. Catches silent skill rot when CC behavior changes underneath.
99
-
100
- ### R4 — MCP tier-list rule in `rules/speed.md` *(carry-over from notebook 1, source 5 — CLI vs MCP)*
101
-
102
- Codify the "CLI-first" principle. Reference the existing `/supabase` skill replacing 32 supabase MCP tools as the canonical example.
103
-
104
- ## What changed in *this* PR
105
-
106
- This PR ships the changes that don't require user-state migration:
107
-
108
- 1. **Citation enforcement preamble** in `agents/builder.md` and `agents/verifier.md` — closes notebook 2, source #9 (*Never Trust an LLM*). Builders and verifiers must cite `file:line — "quoted"` or write `INSUFFICIENT EVIDENCE`. No hedging, no narration.
109
- 2. **`rules/architecture.md`** — net-new, deep-modules + scout-for-shallow-code from notebook 2 sources #5 + #12 (Pocock de-slop, codebase-not-ready-for-AI). Skill `/qualia-optimize --deepen` already exists; this rule formalizes the architectural taste it scouts for.
110
- 3. **README warning** — "Never run Claude's `/init`" — direct users to `/qualia-new` or `/qualia-map`. Per notebook 2 sources #3 + #8.
111
- 4. **This audit document** — anchors the deferred follow-ups so they don't get lost.
112
-
113
- The relocation in R1 is the biggest single win available; it is intentionally deferred so this PR stays small and reversible.