qualia-framework 3.4.0 → 3.6.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/hooks/pre-push.js CHANGED
@@ -1,44 +1,104 @@
1
1
  #!/usr/bin/env node
2
- // ~/.claude/hooks/pre-push.js — update tracking.json with last commit + timestamp.
3
- // PreToolUse hook on `git push*` commands. state.js handles phase/status sync;
4
- // this just stamps the file so the ERP sees fresh commit info on every push.
5
- // Cross-platform (Windows/macOS/Linux).
2
+ // ~/.claude/hooks/pre-push.js — stamp tracking.json + commit it before push.
3
+ // PreToolUse hook on `git push*` commands. The stamp is included in the push
4
+ // via a small bot commit (no-verify, bot author) so the ERP which reads
5
+ // tracking.json straight from git — sees fresh data on every push.
6
+ //
7
+ // Cross-platform (Windows/macOS/Linux). No external dependencies.
8
+ //
9
+ // History rationale: a previous version (≤v3.4.1) wrote the stamp to
10
+ // tracking.json and then `git add`-ed it, but the actual `git push` ran on
11
+ // the snapshot already prepared by Claude Code's tool dispatcher — so the
12
+ // stamp never made it onto the wire. This rewrite creates a real commit so
13
+ // the next `git push` it spawned by Claude Code includes it.
6
14
 
7
15
  const fs = require("fs");
8
16
  const path = require("path");
17
+ const os = require("os");
9
18
  const { spawnSync } = require("child_process");
10
19
 
11
20
  const _traceStart = Date.now();
12
-
21
+ const HOME = os.homedir();
13
22
  const TRACKING = path.join(".planning", "tracking.json");
23
+ const BOT_AUTHOR = "Qualia Framework <bot@qualia.solutions>";
24
+ const SHELL = process.platform === "win32";
14
25
 
15
- try {
16
- if (fs.existsSync(TRACKING)) {
17
- const r = spawnSync("git", ["log", "--oneline", "-1", "--format=%h"], {
18
- encoding: "utf8",
19
- timeout: 3000,
20
- });
21
- const lastCommit = ((r.stdout || "").trim());
22
- const now = new Date().toISOString().replace(/\.\d+Z$/, "Z");
23
-
24
- const t = JSON.parse(fs.readFileSync(TRACKING, "utf8"));
25
- if (lastCommit) t.last_commit = lastCommit;
26
- t.last_updated = now;
27
- fs.writeFileSync(TRACKING, JSON.stringify(t, null, 2) + "\n");
28
-
29
- spawnSync("git", ["add", TRACKING], { timeout: 3000 });
26
+ function git(args, opts = {}) {
27
+ return spawnSync("git", args, {
28
+ encoding: "utf8",
29
+ timeout: 5000,
30
+ shell: SHELL,
31
+ ...opts,
32
+ });
33
+ }
34
+
35
+ function atomicWrite(file, content) {
36
+ const tmp = `${file}.tmp.${process.pid}`;
37
+ fs.writeFileSync(tmp, content);
38
+ fs.renameSync(tmp, file);
39
+ }
40
+
41
+ function inGitRepo() {
42
+ const r = git(["rev-parse", "--is-inside-work-tree"], { stdio: ["ignore", "pipe", "ignore"] });
43
+ return r.status === 0 && (r.stdout || "").trim() === "true";
44
+ }
45
+
46
+ function commitStamp() {
47
+ if (!fs.existsSync(TRACKING)) return { skipped: "no-tracking-file" };
48
+ if (!inGitRepo()) return { skipped: "not-a-git-repo" };
49
+
50
+ // Read current commit + stamp
51
+ const head = git(["log", "--oneline", "-1", "--format=%h"]);
52
+ const lastCommit = ((head.stdout || "").trim());
53
+ const now = new Date().toISOString().replace(/\.\d+Z$/, "Z");
54
+
55
+ // Mutate tracking.json (atomic). Tolerate CRLF on Windows-edited files.
56
+ let raw, parsed;
57
+ try {
58
+ raw = fs.readFileSync(TRACKING, "utf8");
59
+ parsed = JSON.parse(raw);
60
+ } catch (err) {
61
+ return { skipped: "tracking-unreadable", error: err.message };
30
62
  }
31
- } catch (err) {
32
- process.stderr.write(`WARNING: tracking sync failed: ${err.message}\n`);
63
+
64
+ const before = JSON.stringify({ last_commit: parsed.last_commit, last_updated: parsed.last_updated });
65
+ if (lastCommit) parsed.last_commit = lastCommit;
66
+ parsed.last_updated = now;
67
+ parsed.last_pushed_at = now;
68
+ const after = JSON.stringify({ last_commit: parsed.last_commit, last_updated: parsed.last_updated });
69
+ if (before === after) return { skipped: "no-change" };
70
+
71
+ atomicWrite(TRACKING, JSON.stringify(parsed, null, 2) + "\n");
72
+
73
+ // Commit so the stamp is part of the push that's about to happen.
74
+ // --no-verify: skip user pre-commit hooks (this is a bot commit).
75
+ // --no-gpg-sign: don't pop a signing prompt for a chore commit.
76
+ // --author: attribute to bot, not user.
77
+ const add = git(["add", TRACKING]);
78
+ if (add.status !== 0) return { skipped: "git-add-failed", error: add.stderr };
79
+
80
+ const commit = git([
81
+ "commit",
82
+ "--no-verify",
83
+ "--no-gpg-sign",
84
+ "--author", BOT_AUTHOR,
85
+ "-m", `chore(track): ERP sync ${now}`,
86
+ ]);
87
+ if (commit.status !== 0) {
88
+ // If commit failed (e.g., empty diff because git's auto-CRLF normalized
89
+ // the only change to nothing), restore the file to keep the working tree
90
+ // clean and move on. Not fatal.
91
+ return { skipped: "git-commit-failed", error: (commit.stderr || commit.stdout || "").trim() };
92
+ }
93
+ return { committed: true, sha: lastCommit, ts: now };
33
94
  }
34
95
 
35
- function _trace(hookName, result, extra) {
96
+ function _trace(result, extra) {
36
97
  try {
37
- const os = require("os");
38
- const traceDir = path.join(os.homedir(), ".claude", ".qualia-traces");
98
+ const traceDir = path.join(HOME, ".claude", ".qualia-traces");
39
99
  if (!fs.existsSync(traceDir)) fs.mkdirSync(traceDir, { recursive: true });
40
100
  const entry = {
41
- hook: hookName,
101
+ hook: "pre-push",
42
102
  result,
43
103
  timestamp: new Date().toISOString(),
44
104
  duration_ms: Date.now() - _traceStart,
@@ -49,5 +109,12 @@ function _trace(hookName, result, extra) {
49
109
  } catch {}
50
110
  }
51
111
 
52
- _trace("pre-push", "allow");
112
+ try {
113
+ const result = commitStamp();
114
+ _trace("allow", result);
115
+ } catch (err) {
116
+ // Never block a push — log and exit clean.
117
+ _trace("allow", { error: err.message });
118
+ }
119
+
53
120
  process.exit(0);
@@ -14,6 +14,12 @@ const { spawnSync } = require("child_process");
14
14
 
15
15
  const _traceStart = Date.now();
16
16
 
17
+ // ANSI colors used by the no-project welcome panel. Defined here because this
18
+ // file does not import qualia-ui (the hook must run even on a broken install).
19
+ const TEAL = "\x1b[38;2;0;206;209m";
20
+ const DIM = "\x1b[38;2;80;90;100m";
21
+ const RESET = "\x1b[0m";
22
+
17
23
  const HOME = os.homedir();
18
24
  const UI = path.join(HOME, ".claude", "bin", "qualia-ui.js");
19
25
  const STATE_FILE = path.join(".planning", "STATE.md");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qualia-framework",
3
- "version": "3.4.0",
3
+ "version": "3.6.0",
4
4
  "description": "Claude Code workflow framework by Qualia Solutions. Plan, build, verify, ship.",
5
5
  "bin": {
6
6
  "qualia-framework": "./bin/cli.js"
@@ -61,7 +61,7 @@ Spawn a fresh builder subagent:
61
61
 
62
62
  ```
63
63
  Agent(prompt="
64
- Read your role: @agents/builder.md
64
+ Read your role: @~/.claude/agents/builder.md
65
65
 
66
66
  Project context:
67
67
  @.planning/PROJECT.md
@@ -47,28 +47,28 @@ Map 4 dimensions in parallel for speed. Each writes one file in `.planning/codeb
47
47
 
48
48
  ```
49
49
  Agent 1: Architecture scanner
50
- Task(prompt="
50
+ Agent(prompt="
51
51
  Scan the current codebase and produce .planning/codebase/architecture.md.
52
52
  Identify: entry points, folder structure, module boundaries, data flow.
53
53
  Focus on WHAT the codebase does, not HOW to fix it.
54
54
  ", subagent_type="general-purpose", description="Architecture scan")
55
55
 
56
56
  Agent 2: Stack detector
57
- Task(prompt="
57
+ Agent(prompt="
58
58
  Detect the tech stack. Read package.json, requirements.txt, Gemfile, etc.
59
59
  Produce .planning/codebase/stack.md listing: runtime, framework, key libraries,
60
60
  database, hosting, CI. Include version numbers.
61
61
  ", subagent_type="general-purpose", description="Stack detection")
62
62
 
63
63
  Agent 3: Conventions analyzer
64
- Task(prompt="
64
+ Agent(prompt="
65
65
  Analyze code style and conventions. Sample 10-15 files across the codebase.
66
66
  Produce .planning/codebase/conventions.md listing: naming, component patterns,
67
67
  file organization, import style, test style, commit message format.
68
68
  ", subagent_type="general-purpose", description="Conventions analysis")
69
69
 
70
70
  Agent 4: Concerns scanner
71
- Task(prompt="
71
+ Agent(prompt="
72
72
  Scan for code quality concerns — NOT to fix, just to document.
73
73
  Look for: TODO/FIXME, deprecated APIs, outdated dependencies, missing tests,
74
74
  security smells (hardcoded secrets, no input validation).
@@ -140,7 +140,7 @@ For EVERY finding, output in this exact format:
140
140
  - **Fix**: [concrete fix suggestion]
141
141
  - **Severity**: CRITICAL | HIGH | MEDIUM | LOW
142
142
  </task>",
143
- subagent_type="frontend-agent",
143
+ subagent_type="general-purpose",
144
144
  description="Frontend optimization analysis"
145
145
  )
146
146
  ```
@@ -193,7 +193,7 @@ For EVERY finding, output:
193
193
  - **Fix**: [concrete suggestion]
194
194
  - **Severity**: CRITICAL | HIGH | MEDIUM | LOW
195
195
  </task>",
196
- subagent_type="backend-agent",
196
+ subagent_type="general-purpose",
197
197
  description="Backend optimization analysis"
198
198
  )
199
199
  ```
@@ -240,7 +240,7 @@ For EVERY finding, output:
240
240
  - **Fix**: [concrete suggestion]
241
241
  - **Severity**: CRITICAL | HIGH | MEDIUM | LOW
242
242
  </task>",
243
- subagent_type="performance-oracle",
243
+ subagent_type="general-purpose",
244
244
  description="Performance optimization analysis"
245
245
  )
246
246
  ```
@@ -274,7 +274,7 @@ Output:
274
274
  - **Pattern consolidation** (where Wave 1 findings share a root cause)
275
275
  - Each finding in the same format: What/Where/Why/Fix/Severity
276
276
  </task>",
277
- subagent_type="architecture-strategist",
277
+ subagent_type="general-purpose",
278
278
  description="Architecture synthesis"
279
279
  )
280
280
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: qualia-quick
3
- description: "Fast path for small tasks — bug fixes, tweaks, hot fixes. Skips full phase planning."
3
+ description: "Fast path for small tasks — bug fixes, tweaks, hot fixes. Skips full phase planning. Trigger on 'quick fix', 'small change', 'tweak', 'hot fix', 'one-line fix', 'quick edit', 'small bug'."
4
4
  ---
5
5
 
6
6
  # /qualia-quick — Quick Task
@@ -31,7 +31,7 @@ node ~/.claude/bin/qualia-ui.js spawn verifier "Goal-backward check..."
31
31
 
32
32
  ```
33
33
  Agent(prompt="
34
- Read your role: @agents/verifier.md
34
+ Read your role: @~/.claude/agents/verifier.md
35
35
 
36
36
  Phase plan with success criteria AND verification contracts:
37
37
  @.planning/phase-{N}-plan.md
@@ -56,7 +56,7 @@ If frontend:
56
56
 
57
57
  ```
58
58
  Agent(prompt="
59
- Read your role: @agents/qa-browser.md
59
+ Read your role: @~/.claude/agents/qa-browser.md
60
60
 
61
61
  Phase plan: @.planning/phase-{N}-plan.md
62
62
  Existing verification: @.planning/phase-{N}-verification.md
@@ -37,6 +37,22 @@
37
37
  -webkit-font-smoothing: antialiased;
38
38
  }
39
39
 
40
+ /* ─── Version Pill (top-right) ───────────── */
41
+ .version-pill {
42
+ position: fixed;
43
+ top: 1rem;
44
+ right: 1rem;
45
+ z-index: 10;
46
+ padding: 0.3rem 0.75rem;
47
+ background: var(--bg-card);
48
+ border: 1px solid var(--border);
49
+ border-radius: 999px;
50
+ font-family: var(--font-mono);
51
+ font-size: 0.7rem;
52
+ color: var(--teal);
53
+ letter-spacing: 0.04em;
54
+ }
55
+
40
56
  /* ─── Header ─────────────────────────────── */
41
57
  .header {
42
58
  padding: clamp(2rem, 6vw, 4rem) clamp(1.5rem, 5vw, 4rem);
@@ -134,6 +150,12 @@
134
150
  color: var(--text-subtle);
135
151
  margin-bottom: 0.75rem;
136
152
  }
153
+ .cmd-group-note {
154
+ font-size: 0.78rem;
155
+ color: var(--text-subtle);
156
+ margin: -0.5rem 0 0.75rem 0;
157
+ font-style: italic;
158
+ }
137
159
  .cmd {
138
160
  display: flex;
139
161
  gap: 1rem;
@@ -150,7 +172,7 @@
150
172
  font-size: 0.85rem;
151
173
  color: var(--teal);
152
174
  white-space: nowrap;
153
- min-width: 160px;
175
+ min-width: 200px;
154
176
  }
155
177
  .cmd-desc {
156
178
  font-size: 0.85rem;
@@ -244,6 +266,14 @@
244
266
  color: var(--text-subtle);
245
267
  }
246
268
  .footer strong { color: var(--teal); font-weight: 500; }
269
+ .footer-version {
270
+ display: block;
271
+ margin-top: 0.5rem;
272
+ font-family: var(--font-mono);
273
+ font-size: 0.7rem;
274
+ color: var(--text-subtle);
275
+ letter-spacing: 0.04em;
276
+ }
247
277
 
248
278
  /* ─── Responsive ─────────────────────────── */
249
279
  @media (max-width: 640px) {
@@ -251,6 +281,7 @@
251
281
  .cmd-name { min-width: unset; }
252
282
  .road { flex-direction: column; align-items: flex-start; }
253
283
  .road-arrow { display: none; }
284
+ .version-pill { top: 0.5rem; right: 0.5rem; font-size: 0.65rem; }
254
285
  }
255
286
 
256
287
  @media (prefers-reduced-motion: reduce) {
@@ -260,11 +291,13 @@
260
291
  </head>
261
292
  <body>
262
293
 
294
+ <div class="version-pill">v3.6.0</div>
295
+
263
296
  <div class="header">
264
297
  <div class="header-content">
265
298
  <h1><span>Qualia</span> Framework</h1>
266
299
  <p>Plan, build, verify, ship. The AI-powered workflow for Qualia Solutions.</p>
267
- <div class="version">v{{VERSION}}</div>
300
+ <div class="version">v3.6.0 &middot; 26 skills</div>
268
301
  </div>
269
302
  </div>
270
303
 
@@ -293,73 +326,106 @@
293
326
  </div>
294
327
  </section>
295
328
 
296
- <!-- Commands -->
329
+ <!-- Skills -->
297
330
  <section>
298
- <h2>Commands</h2>
331
+ <h2>Skills (26)</h2>
299
332
 
333
+ <!-- Road (core flow) -->
300
334
  <div class="cmd-group">
301
- <h3>Navigation</h3>
335
+ <h3>Road &mdash; Core Flow</h3>
336
+ <p class="cmd-group-note">The seven steps every project walks through.</p>
337
+ <div class="commands">
338
+ <div class="cmd"><span class="cmd-name">/qualia-new</span><span class="cmd-desc">Set up a new project from scratch &mdash; deep questioning, parallel research, REQUIREMENTS.md, ROADMAP.md, approval gate. Use when starting any new client project.</span></div>
339
+ <div class="cmd"><span class="cmd-name">/qualia-plan</span><span class="cmd-desc">Plan the current phase &mdash; spawns planner, validates with plan-checker in a revision loop (max 3), optionally runs discuss/research first. Use when ready to plan a phase.</span></div>
340
+ <div class="cmd"><span class="cmd-name">/qualia-build</span><span class="cmd-desc">Execute the current phase &mdash; spawns builder subagents per task with wave-based parallelization. Fresh context per task.</span></div>
341
+ <div class="cmd"><span class="cmd-name">/qualia-verify</span><span class="cmd-desc">Goal-backward verification &mdash; checks if the phase ACTUALLY works, not just if tasks completed. Spawns verifier agent.</span></div>
342
+ <div class="cmd"><span class="cmd-name">/qualia-polish</span><span class="cmd-desc">Design and UX pass &mdash; anti-AI-slop, genuine craft, responsive, accessible. Run after all phases are verified.</span></div>
343
+ <div class="cmd"><span class="cmd-name">/qualia-ship</span><span class="cmd-desc">Deploy to production &mdash; quality gates, commit, push, deploy, verify. Use when ready to go live.</span></div>
344
+ <div class="cmd"><span class="cmd-name">/qualia-handoff</span><span class="cmd-desc">Client delivery &mdash; credentials, handover doc, final update. Use after shipping.</span></div>
345
+ </div>
346
+ </div>
347
+
348
+ <!-- Phase Depth (optional) -->
349
+ <div class="cmd-group">
350
+ <h3>Phase Depth &mdash; Optional</h3>
351
+ <p class="cmd-group-note">Used before / around /qualia-plan when a phase needs deeper context.</p>
302
352
  <div class="commands">
303
- <div class="cmd"><span class="cmd-name">/qualia</span><span class="cmd-desc">What should I do next? Reads project state, tells you the exact command.</span></div>
304
- <div class="cmd"><span class="cmd-name">/qualia-idk</span><span class="cmd-desc">Same as /qualia. For when you're stuck.</span></div>
305
- <div class="cmd"><span class="cmd-name">/qualia-resume</span><span class="cmd-desc">Pick up where you left off from a previous session.</span></div>
306
- <div class="cmd"><span class="cmd-name">/qualia-pause</span><span class="cmd-desc">Save progress. Creates .continue-here.md for next session.</span></div>
353
+ <div class="cmd"><span class="cmd-name">/qualia-discuss</span><span class="cmd-desc">Capture phase decisions, trade-offs, and constraints BEFORE planning. Use for complex phases with regulatory, compliance, or architectural stakes. Creates .planning/phase-{N}-context.md that planner honors as locked input.</span></div>
354
+ <div class="cmd"><span class="cmd-name">/qualia-research</span><span class="cmd-desc">Deep-research a niche domain or library BEFORE planning a specific phase. Spawns the researcher agent with Context7/WebFetch access. Writes to .planning/phase-{N}-research.md.</span></div>
355
+ <div class="cmd"><span class="cmd-name">/qualia-map</span><span class="cmd-desc">Map an existing codebase to infer architecture, stack, conventions, and what's already built. For brownfield projects &mdash; run BEFORE /qualia-new so Validated requirements get inferred from existing code.</span></div>
356
+ <div class="cmd"><span class="cmd-name">/qualia-milestone</span><span class="cmd-desc">Close out a completed milestone and prep the next one. Archives the current milestone's artifacts, updates REQUIREMENTS.md to mark v1 requirements Complete, and creates the next milestone roadmap.</span></div>
307
357
  </div>
308
358
  </div>
309
359
 
360
+ <!-- Quality -->
310
361
  <div class="cmd-group">
311
- <h3>Project Setup</h3>
362
+ <h3>Quality</h3>
363
+ <p class="cmd-group-note">Diagnose, audit, optimize, polish, test.</p>
312
364
  <div class="commands">
313
- <div class="cmd"><span class="cmd-name">/qualia-new</span><span class="cmd-desc">Interactive wizard. Asks about client, scope, design, stack. Creates everything.</span></div>
365
+ <div class="cmd"><span class="cmd-name">/qualia-debug</span><span class="cmd-desc">Structured debugging &mdash; symptom gathering, diagnosis confirmation, root cause analysis. Trigger on 'debug', 'find bug', 'fix error', 'something is broken'.</span></div>
366
+ <div class="cmd"><span class="cmd-name">/qualia-review</span><span class="cmd-desc">Production audit with scored diagnostics. Runs real commands, scores findings by severity. Trigger on 'review', 'audit', 'code review', 'security check'.</span></div>
367
+ <div class="cmd"><span class="cmd-name">/qualia-optimize</span><span class="cmd-desc">Deep optimization pass &mdash; reads .planning/ AND codebase to find performance, design, UI, backend, and frontend issues. Spawns parallel specialist agents. Supports --perf, --ui, --backend, --alignment, --fix flags.</span></div>
368
+ <div class="cmd"><span class="cmd-name">/qualia-polish</span><span class="cmd-desc">Design and UX pass &mdash; anti-AI-slop, genuine craft, responsive, accessible. Run after all phases are verified.</span></div>
369
+ <div class="cmd"><span class="cmd-name">/qualia-test</span><span class="cmd-desc">Generate or run tests for client projects. Trigger on 'write tests', 'add tests', 'test this', 'test coverage'.</span></div>
314
370
  </div>
315
371
  </div>
316
372
 
373
+ <!-- Quick Paths -->
317
374
  <div class="cmd-group">
318
- <h3>Build Loop</h3>
375
+ <h3>Quick Paths</h3>
376
+ <p class="cmd-group-note">Lightweight alternatives when the full road is overkill.</p>
319
377
  <div class="commands">
320
- <div class="cmd"><span class="cmd-name">/qualia-plan</span><span class="cmd-desc">Plan the current phase. AI generates tasks with success criteria.</span></div>
321
- <div class="cmd"><span class="cmd-name">/qualia-build</span><span class="cmd-desc">Build it. Fresh AI agent per task, parallel waves.</span></div>
322
- <div class="cmd"><span class="cmd-name">/qualia-verify</span><span class="cmd-desc">Verify it actually works. Greps code, scores on 4 dimensions.</span></div>
378
+ <div class="cmd"><span class="cmd-name">/qualia-quick</span><span class="cmd-desc">Fast path for small tasks &mdash; bug fixes, tweaks, hot fixes. Skips full phase planning.</span></div>
379
+ <div class="cmd"><span class="cmd-name">/qualia-task</span><span class="cmd-desc">Build a single task &mdash; more structured than /qualia-quick, lighter than /qualia-build. Spawns a fresh builder agent for one focused task.</span></div>
380
+ <div class="cmd"><span class="cmd-name">/qualia-design</span><span class="cmd-desc">One-shot design transformation &mdash; critiques, fixes, polishes, hardens, makes responsive. No reports, no choices, just makes it professional.</span></div>
323
381
  </div>
324
382
  </div>
325
383
 
384
+ <!-- Knowledge -->
326
385
  <div class="cmd-group">
327
- <h3>Quick Work</h3>
386
+ <h3>Knowledge</h3>
387
+ <p class="cmd-group-note">Persist learnings and log work.</p>
328
388
  <div class="commands">
329
- <div class="cmd"><span class="cmd-name">/qualia-quick</span><span class="cmd-desc">Skip planning. For bug fixes, tweaks, hot fixes under 1 hour.</span></div>
330
- <div class="cmd"><span class="cmd-name">/qualia-task</span><span class="cmd-desc">One focused task. More structured than quick, lighter than build.</span></div>
389
+ <div class="cmd"><span class="cmd-name">/qualia-learn</span><span class="cmd-desc">Save a learning, pattern, fix, or client preference to the knowledge base. Persists across projects and sessions.</span></div>
390
+ <div class="cmd"><span class="cmd-name">/qualia-report</span><span class="cmd-desc">Generate session report and commit to repo. Mandatory before clock-out.</span></div>
331
391
  </div>
332
392
  </div>
333
393
 
394
+ <!-- Session -->
334
395
  <div class="cmd-group">
335
- <h3>Design & Quality</h3>
396
+ <h3>Session</h3>
397
+ <p class="cmd-group-note">Hand off and resume context cleanly.</p>
336
398
  <div class="commands">
337
- <div class="cmd"><span class="cmd-name">/qualia-design</span><span class="cmd-desc">One-shot design fix. Reads DESIGN.md, kills AI slop, makes it professional.</span></div>
338
- <div class="cmd"><span class="cmd-name">/qualia-polish</span><span class="cmd-desc">Full design pass. Typography, color, states, motion, a11y, responsive, hardening.</span></div>
339
- <div class="cmd"><span class="cmd-name">/qualia-review</span><span class="cmd-desc">Production audit. Security, performance, reliability. Scored diagnostics.</span></div>
399
+ <div class="cmd"><span class="cmd-name">/qualia-pause</span><span class="cmd-desc">Save session context for seamless handoff. Creates .continue-here.md so the next session picks up exactly where you left off.</span></div>
400
+ <div class="cmd"><span class="cmd-name">/qualia-resume</span><span class="cmd-desc">Restore context from a previous session. Reads .continue-here.md or STATE.md, summarizes where you left off, routes to next action.</span></div>
340
401
  </div>
341
402
  </div>
342
403
 
404
+ <!-- Navigation -->
343
405
  <div class="cmd-group">
344
- <h3>Ship & Deliver</h3>
406
+ <h3>Navigation</h3>
407
+ <p class="cmd-group-note">When you don't know what to do next.</p>
345
408
  <div class="commands">
346
- <div class="cmd"><span class="cmd-name">/qualia-ship</span><span class="cmd-desc">Quality gates, commit, push, deploy to Vercel, post-deploy verification.</span></div>
347
- <div class="cmd"><span class="cmd-name">/qualia-handoff</span><span class="cmd-desc">Client delivery. Credentials, docs, handover package.</span></div>
348
- <div class="cmd"><span class="cmd-name">/qualia-report</span><span class="cmd-desc">Log your session. Mandatory before clock-out. Uploads to ERP.</span></div>
409
+ <div class="cmd"><span class="cmd-name">/qualia</span><span class="cmd-desc">Smart router &mdash; reads project state, classifies your situation, tells you the exact next command. Use whenever you're unsure about your next step.</span></div>
410
+ <div class="cmd"><span class="cmd-name">/qualia-idk</span><span class="cmd-desc">Alias for /qualia. The smart router handles all 'idk', 'what now', 'I'm stuck' situations.</span></div>
411
+ <div class="cmd"><span class="cmd-name">/qualia-help</span><span class="cmd-desc">Open the Qualia Framework reference guide in the browser. A beautiful themed HTML page with all commands, rules, services, and the road.</span></div>
349
412
  </div>
350
413
  </div>
351
414
 
415
+ <!-- Meta -->
352
416
  <div class="cmd-group">
353
- <h3>Debugging & Learning</h3>
417
+ <h3>Meta</h3>
418
+ <p class="cmd-group-note">Extend the framework itself.</p>
354
419
  <div class="commands">
355
- <div class="cmd"><span class="cmd-name">/qualia-debug</span><span class="cmd-desc">Structured debugging. Symptom &rarr; diagnosis &rarr; root cause &rarr; fix.</span></div>
356
- <div class="cmd"><span class="cmd-name">/qualia-learn</span><span class="cmd-desc">Save a pattern, fix, or client preference to the knowledge base.</span></div>
357
- <div class="cmd"><span class="cmd-name">/qualia-test</span><span class="cmd-desc">Generate or run tests. Auto-detects framework.</span></div>
420
+ <div class="cmd"><span class="cmd-name">/qualia-skill-new</span><span class="cmd-desc">Author a new Qualia skill or agent. Generates the SKILL.md, registers it in the right location, and optionally ships to the framework repo.</span></div>
358
421
  </div>
359
422
  </div>
423
+ </section>
360
424
 
425
+ <!-- CLI -->
426
+ <section>
427
+ <h2>CLI (Terminal)</h2>
361
428
  <div class="cmd-group">
362
- <h3>CLI (Terminal)</h3>
363
429
  <div class="commands">
364
430
  <div class="cmd"><span class="cmd-name">qualia-framework install</span><span class="cmd-desc">Install or reinstall the framework.</span></div>
365
431
  <div class="cmd"><span class="cmd-name">qualia-framework update</span><span class="cmd-desc">Update to the latest version.</span></div>
@@ -470,6 +536,7 @@
470
536
  <div class="footer">
471
537
  <strong>Welcome to the future with Qualia.</strong><br>
472
538
  Qualia Solutions &mdash; Nicosia, Cyprus
539
+ <span class="footer-version">qualia-framework v3.6.0 &middot; 26 skills</span>
473
540
  </div>
474
541
 
475
542
  </body>
@@ -3,6 +3,9 @@
3
3
  "client": "",
4
4
  "type": "",
5
5
  "assigned_to": "",
6
+ "team_id": "",
7
+ "project_id": "",
8
+ "git_remote": "",
6
9
  "milestone": 1,
7
10
  "phase": 0,
8
11
  "phase_name": "",
@@ -14,14 +17,20 @@
14
17
  "verification": "pending",
15
18
  "gap_cycles": {},
16
19
  "blockers": [],
20
+ "session_started_at": "",
17
21
  "last_updated": "",
22
+ "last_pushed_at": "",
18
23
  "last_commit": "",
24
+ "build_count": 0,
25
+ "deploy_count": 0,
19
26
  "deployed_url": "",
20
27
  "notes": "",
28
+ "submitted_by": "",
21
29
  "lifetime": {
22
30
  "tasks_completed": 0,
23
31
  "phases_completed": 0,
24
32
  "milestones_completed": 0,
25
- "total_phases": 0
33
+ "total_phases": 0,
34
+ "last_closed_milestone": 0
26
35
  }
27
36
  }