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/bin/cli.js +13 -2
- package/bin/install.js +28 -5
- package/bin/state.js +287 -47
- package/bin/statusline.js +40 -20
- package/docs/erp-contract.md +23 -2
- package/hooks/auto-update.js +54 -70
- package/hooks/branch-guard.js +64 -6
- package/hooks/migration-guard.js +85 -10
- package/hooks/pre-compact.js +28 -4
- package/hooks/pre-deploy-gate.js +46 -6
- package/hooks/pre-push.js +94 -27
- package/hooks/session-start.js +6 -0
- package/package.json +1 -1
- package/skills/qualia-build/SKILL.md +1 -1
- package/skills/qualia-map/SKILL.md +4 -4
- package/skills/qualia-optimize/SKILL.md +4 -4
- package/skills/qualia-quick/SKILL.md +1 -1
- package/skills/qualia-verify/SKILL.md +2 -2
- package/templates/help.html +98 -31
- package/templates/tracking.json +10 -1
- package/tests/runner.js +395 -0
- package/tests/state.test.sh +40 -0
- package/skills/qualia-idk/SKILL.md +0 -8
package/hooks/pre-push.js
CHANGED
|
@@ -1,44 +1,104 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// ~/.claude/hooks/pre-push.js —
|
|
3
|
-
// PreToolUse hook on `git push*` commands.
|
|
4
|
-
//
|
|
5
|
-
//
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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(
|
|
96
|
+
function _trace(result, extra) {
|
|
36
97
|
try {
|
|
37
|
-
const
|
|
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:
|
|
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
|
-
|
|
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);
|
package/hooks/session-start.js
CHANGED
|
@@ -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
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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:
|
|
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:
|
|
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
|
package/templates/help.html
CHANGED
|
@@ -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:
|
|
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">
|
|
300
|
+
<div class="version">v3.6.0 · 26 skills</div>
|
|
268
301
|
</div>
|
|
269
302
|
</div>
|
|
270
303
|
|
|
@@ -293,73 +326,106 @@
|
|
|
293
326
|
</div>
|
|
294
327
|
</section>
|
|
295
328
|
|
|
296
|
-
<!--
|
|
329
|
+
<!-- Skills -->
|
|
297
330
|
<section>
|
|
298
|
-
<h2>
|
|
331
|
+
<h2>Skills (26)</h2>
|
|
299
332
|
|
|
333
|
+
<!-- Road (core flow) -->
|
|
300
334
|
<div class="cmd-group">
|
|
301
|
-
<h3>
|
|
335
|
+
<h3>Road — 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 — 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 — 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 — 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 — 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 — 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 — 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 — 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 — 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">
|
|
304
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
305
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
306
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
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 — 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>
|
|
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-
|
|
365
|
+
<div class="cmd"><span class="cmd-name">/qualia-debug</span><span class="cmd-desc">Structured debugging — 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 — 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 — 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>
|
|
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-
|
|
321
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
322
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
378
|
+
<div class="cmd"><span class="cmd-name">/qualia-quick</span><span class="cmd-desc">Fast path for small tasks — 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 — 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 — 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>
|
|
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-
|
|
330
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
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>
|
|
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-
|
|
338
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
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>
|
|
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
|
|
347
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
348
|
-
<div class="cmd"><span class="cmd-name">/qualia-
|
|
409
|
+
<div class="cmd"><span class="cmd-name">/qualia</span><span class="cmd-desc">Smart router — 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>
|
|
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-
|
|
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 — Nicosia, Cyprus
|
|
539
|
+
<span class="footer-version">qualia-framework v3.6.0 · 26 skills</span>
|
|
473
540
|
</div>
|
|
474
541
|
|
|
475
542
|
</body>
|
package/templates/tracking.json
CHANGED
|
@@ -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
|
}
|