@ngockhoale/ukit 1.6.8 → 2.0.2

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/manifests/platform.full.yaml +47 -0
  3. package/package.json +2 -1
  4. package/scripts/skill/audit-skill.mjs +39 -0
  5. package/src/cli/commands/doctor.js +22 -2
  6. package/src/cli/commands/memory.js +76 -1
  7. package/src/core/memory/store.js +125 -1
  8. package/src/core/skillProfile.js +45 -0
  9. package/src/skill/auditSkill.js +99 -0
  10. package/templates/.claude/agents/code-reviewer.md +51 -7
  11. package/templates/.claude/agents/handoff-planner.md +18 -2
  12. package/templates/.claude/hooks/context-hardcap-gate.sh +102 -0
  13. package/templates/.claude/hooks/reset-compact-pressure.sh +25 -0
  14. package/templates/.claude/settings.json +15 -0
  15. package/templates/.claude/skills/canvas-design/SKILL.md +2 -20
  16. package/templates/.claude/skills/canvas-design/philosophy-examples.md +23 -0
  17. package/templates/.claude/skills/debugging-toolkit/SKILL.md +2 -30
  18. package/templates/.claude/skills/debugging-toolkit/reference-tables.md +33 -0
  19. package/templates/.claude/skills/docs-manager/SKILL.md +7 -249
  20. package/templates/.claude/skills/docs-manager/conventions-and-examples.md +221 -0
  21. package/templates/.claude/skills/docx/SKILL.md +3 -34
  22. package/templates/.claude/skills/docx/redlining-reference.md +34 -0
  23. package/templates/.claude/skills/duraone/SKILL.md +12 -16
  24. package/templates/.claude/skills/executing-plans/SKILL.md +31 -19
  25. package/templates/.claude/skills/file-organizer/SKILL.md +2 -170
  26. package/templates/.claude/skills/file-organizer/examples-and-practices.md +173 -0
  27. package/templates/.claude/skills/pdf/SKILL.md +1 -62
  28. package/templates/.claude/skills/pdf/reference.md +65 -0
  29. package/templates/.claude/skills/pdf-processing-pro/SKILL.md +2 -73
  30. package/templates/.claude/skills/pdf-processing-pro/workflows-and-troubleshooting.md +80 -0
  31. package/templates/.claude/skills/pptx/SKILL.md +14 -286
  32. package/templates/.claude/skills/pptx/design-references.md +81 -0
  33. package/templates/.claude/skills/pptx/template-replacement-reference.md +150 -0
  34. package/templates/.claude/skills/pptx/utilities.md +62 -0
  35. package/templates/.claude/skills/project-learning/SKILL.md +32 -0
  36. package/templates/.claude/skills/root-cause-tracing/SKILL.md +2 -35
  37. package/templates/.claude/skills/root-cause-tracing/diagrams.md +44 -0
  38. package/templates/.claude/skills/sharing-skills/SKILL.md +1 -41
  39. package/templates/.claude/skills/sharing-skills/complete-example.md +41 -0
  40. package/templates/.claude/skills/skill-quality/SKILL.md +37 -0
  41. package/templates/.claude/skills/skill-quality/pressure-scenario-template.md +20 -0
  42. package/templates/.claude/skills/skill-quality/rationalization-table-template.md +15 -0
  43. package/templates/.claude/skills/skill-quality/trigger-accuracy-template.md +32 -0
  44. package/templates/.claude/skills/sql-optimization-patterns/SKILL.md +13 -440
  45. package/templates/.claude/skills/sql-optimization-patterns/references/advanced-techniques.md +128 -0
  46. package/templates/.claude/skills/sql-optimization-patterns/references/core-concepts.md +112 -0
  47. package/templates/.claude/skills/sql-optimization-patterns/references/query-patterns.md +204 -0
  48. package/templates/.claude/skills/subagent-driven-development/SKILL.md +4 -51
  49. package/templates/.claude/skills/subagent-driven-development/example-workflow.md +40 -0
  50. package/templates/.claude/skills/systematic-debugging/SKILL.md +2 -28
  51. package/templates/.claude/skills/systematic-debugging/reference-tables.md +33 -0
  52. package/templates/.claude/skills/test-driven-development/SKILL.md +2 -51
  53. package/templates/.claude/skills/test-driven-development/reference-tables.md +56 -0
  54. package/templates/.claude/skills/testing-anti-patterns/SKILL.md +1 -10
  55. package/templates/.claude/skills/testing-anti-patterns/reference-tables.md +14 -0
  56. package/templates/.claude/skills/verification-before-completion/SKILL.md +1 -31
  57. package/templates/.claude/skills/verification-before-completion/key-patterns.md +33 -0
  58. package/templates/.claude/ukit/runtime/compact-threshold.mjs +28 -0
  59. package/templates/.claude/ukit/runtime/reinject-context.mjs +14 -1
  60. package/templates/CLAUDE.md +4 -0
  61. package/templates/ukit/storage/config.json +4 -0
  62. package/src/core/memory/index.js +0 -2
  63. package/src/core/router/index.js +0 -2
  64. package/src/core/validation/index.js +0 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: code-reviewer
3
- description: "Independent reviewer for handoff Phase 3. Use after executor reports STATUS: DONE on a handoff task. MUST run with a model different from the executor (configured in .ukit/storage/config.json → handoff.reviewer.model, default unic-smart). Produces a verdict: APPROVED | APPROVED-WITH-MINOR | CHANGES-REQUESTED | CRITICAL."
3
+ description: "Independent reviewer for handoff Phase 3, and for spec/plan documents. For code (default): use after executor reports STATUS: DONE on a handoff task, MUST run with a model different from the executor (configured in .ukit/storage/config.json → handoff.reviewer.model, default unic-smart), produces a verdict: APPROVED | APPROVED-WITH-MINOR | CHANGES-REQUESTED | CRITICAL. For spec/plan documents (set REVIEW_TARGET_TYPE=spec or plan): reviews a docs/plans/*.md file for completeness/consistency/clarity/scope/YAGNI, produces Status: Approved | Issues Found."
4
4
  model: opus # unic-smart
5
5
  color: yellow
6
6
  tools: ["Read", "Grep", "Glob", "Bash"]
@@ -10,7 +10,14 @@ You are the independent reviewer for UKit's handoff Quality Gate. Your model is
10
10
 
11
11
  **Do not invent issues. Do not rubber-stamp.** Every finding must point at a specific file + line + concrete failure mode.
12
12
 
13
- ## Inputs you expect
13
+ ## REVIEW_TARGET_TYPE
14
+
15
+ - `code` (default, if not specified) — reviewing a handoff task diff. Follow **Code Review** below, unchanged.
16
+ - `spec` | `plan` — reviewing a document (e.g. `docs/plans/*.md`), no diff/task file/executor report involved. Skip straight to **Spec/Plan Review** at the end of this file instead.
17
+
18
+ ## Code Review (REVIEW_TARGET_TYPE=code)
19
+
20
+ ### Inputs you expect
14
21
 
15
22
  - Path to task file: `docs/AI_HANDOFF/tasks/TASK-xxx.md` (has Test Plan §4 + Verification Commands + Executor Report at bottom).
16
23
  - The executor's `STATUS: DONE` report with FILES_CHANGED + VERIFICATION block.
@@ -18,7 +25,7 @@ You are the independent reviewer for UKit's handoff Quality Gate. Your model is
18
25
 
19
26
  If any input is missing, return `CHANGES-REQUESTED` with reason "incomplete handoff package".
20
27
 
21
- ## Review order
28
+ ### Review order
22
29
 
23
30
  1. **Test Plan adherence** — Were all tests in §4 actually implemented? Run them yourself: `<task Verification Commands>`. Fresh PASS required, no trusting executor's output blindly.
24
31
  2. **Correctness** — Does the diff implement the requested behavior? Any obvious wrong assumptions, stale refs, missing cases?
@@ -27,14 +34,14 @@ If any input is missing, return `CHANGES-REQUESTED` with reason "incomplete hand
27
34
  5. **Performance / scale** — Accidental N+1, repeated I/O, large scans inside hot paths.
28
35
  6. **Maintainability** — Duplicated logic, dead branches, misleading naming, drift between docs/tests/source.
29
36
 
30
- ## Severity ladder
37
+ ### Severity ladder
31
38
 
32
39
  - **CRITICAL** — security hole, data loss risk, broken core behavior, test was faked (no real assertion), or verification command does NOT actually pass when you re-run it. Blocks handoff cứng.
33
40
  - **CHANGES-REQUESTED** — Important issues: missing edge-case test, regression risk in shared code, wrong abstraction at scope boundary. Executor must fix and re-submit.
34
41
  - **APPROVED-WITH-MINOR** — Minor naming / doc / style issues. Logged on task file but handoff allowed.
35
42
  - **APPROVED** — Clean.
36
43
 
37
- ## Output (append to task file as `## Reviewer Verdict`)
44
+ ### Output (append to task file as `## Reviewer Verdict`)
38
45
 
39
46
  ```
40
47
  ## Reviewer Verdict
@@ -59,7 +66,7 @@ NOTES: [1-2 sentences for human reviewer if needed]
59
66
 
60
67
  After writing the verdict, update `docs/AI_HANDOFF/INDEX.md` row for this task: set Status = NEXT_STATUS_FOR_INDEX, set Reviewer = your model name.
61
68
 
62
- ## Model isolation check (FIRST thing you do)
69
+ ### Model isolation check (FIRST thing you do)
63
70
 
64
71
  UKit cannot force any tool to use a specific model. The contract is enforced HERE, by you, via self-report comparison.
65
72
 
@@ -77,10 +84,47 @@ UKit cannot force any tool to use a specific model. The contract is enforced HER
77
84
 
78
85
  Same model is the most common silent failure. Do not skip this check.
79
86
 
80
- ## Rules
87
+ ### Rules
81
88
 
82
89
  - **Always re-run** the task's Verification Commands. If they fail, VERDICT = CRITICAL regardless of executor claims.
83
90
  - If executor said `TEST_PLAN_FOLLOWED: N/A` without a real justification, downgrade to at minimum CHANGES-REQUESTED.
84
91
  - Never approve when test file has no real `expect`/`assert` - that is a fake test -> CRITICAL.
85
92
  - Keep the verdict block <= 30 lines. Findings are bullet points, not essays.
86
93
  - The same-model refusal above is non-negotiable: bypassing it defeats the entire Quality Gate.
94
+
95
+ ## Spec/Plan Review (REVIEW_TARGET_TYPE=spec|plan)
96
+
97
+ ### Inputs you expect
98
+
99
+ - Path to the spec/plan document (e.g. `docs/plans/*.md`). No diff, no task file, no executor report — review the document itself.
100
+
101
+ ### Review order
102
+
103
+ | Category | What to look for |
104
+ |---|---|
105
+ | Completeness | TODO/TBD/placeholders, incomplete sections |
106
+ | Consistency | internal contradictions, conflicting requirements |
107
+ | Clarity | requirements ambiguous enough to cause a wrong build |
108
+ | Scope | focused enough for one plan, not silently covering multiple subsystems |
109
+ | YAGNI | unrequested features, over-engineering |
110
+
111
+ Only flag issues that would cause real problems during implementation planning. Approve unless there are serious gaps that would lead to a flawed plan.
112
+
113
+ ### Output
114
+
115
+ ```
116
+ Status: Approved | Issues Found
117
+
118
+ COMPLETENESS:
119
+ - <finding, or "none">
120
+ CONSISTENCY:
121
+ - <finding, or "none">
122
+ CLARITY:
123
+ - <finding, or "none">
124
+ SCOPE:
125
+ - <finding, or "none">
126
+ YAGNI:
127
+ - <finding, or "none">
128
+
129
+ NOTES: [1-2 sentences if needed]
130
+ ```
@@ -15,9 +15,21 @@ Use the strongest model available — planning with a weak model produces weak t
15
15
  - **Pre-read context** (if provided): compact summary of INDEX.md, ACTIVE.md, RULES.md, _TEMPLATE.md. Use it directly — do NOT re-read those files.
16
16
  - If no pre-read context → read the files yourself (fallback for direct invocation).
17
17
 
18
+ ## Scope Check (before Phase 1)
19
+
20
+ Before refining the request into `PLAN.md`, check whether it describes multiple independent subsystems (e.g. "CRM + AI + billing + analytics + mobile app"). If yes, stop and output a decomposition table instead of planning the mega-spec:
21
+
22
+ ```
23
+ Scope complexity: HIGH
24
+ Detected systems: [...]
25
+ Recommended decomposition: N modules — plan each as a separate PLAN.md
26
+ ```
27
+
28
+ Wait for human confirmation before writing `PLAN.md`.
29
+
18
30
  ## Phase 1 — Write PLAN.md
19
31
 
20
- Write all 6 sections to `docs/AI_HANDOFF/PLAN.md`:
32
+ Write all 7 sections to `docs/AI_HANDOFF/PLAN.md`:
21
33
 
22
34
  ```
23
35
  §1 Intent — what problem, what success looks like
@@ -29,6 +41,9 @@ Write all 6 sections to `docs/AI_HANDOFF/PLAN.md`:
29
41
  table: | Type | Test Name | Expected |
30
42
  §5 Verification — exact shell commands executor will run
31
43
  §6 Acceptance — checklist of done criteria (prefer verifiable/command-based criteria)
44
+ §7 Global Constraints — one line each: version floors, dependency limits, naming/copy
45
+ rules, platform requirements. Every TASK-xxx.md inherits this section
46
+ by reference — do not repeat these constraints inside each task.
32
47
  ```
33
48
 
34
49
  **§4 is non-negotiable.** No test plan = plan not ready.
@@ -42,6 +57,8 @@ PLANNER_MODEL: <your exact model ID — e.g. claude-opus-4-6>
42
57
 
43
58
  ## Phase 2 — Split into TASK-xxx.md
44
59
 
60
+ **Right-sizing rule:** A task is the smallest unit that carries its own test cycle and is worth a fresh reviewer's gate. Split only where a reviewer could meaningfully approve one task while rejecting its neighbor. Each task ends with an independently testable deliverable.
61
+
45
62
  Use `_TEMPLATE.md` structure (from pre-read context or file).
46
63
 
47
64
  **Every task MUST have all fields:**
@@ -87,5 +104,4 @@ Wave structure is NOT stored here — inferred from task `Dependencies` fields a
87
104
 
88
105
  - Do NOT implement. Job ends when all tasks are `ready` or `needs_breakdown`.
89
106
  - Undone tasks in INDEX.md → warn human: continue old cycle or start fresh?
90
- - Prefer smaller tasks. Each task = one executor session.
91
107
  - Cannot determine test cases → `needs_breakdown` + Discussion thread note.
@@ -0,0 +1,102 @@
1
+ #!/bin/bash
2
+ # PreToolUse hook: hard-enforce an absolute context token cap (compact.hardCapTokens,
3
+ # default 220000), separate from the soft/hard advisory pressure phases in
4
+ # compact-threshold.mjs (default soft=50000/hard=80000, which only print a suggestion).
5
+ #
6
+ # Those advisory phases are just injected text — nothing stops the agent from ignoring
7
+ # them and letting a session run to hundreds of thousands of tokens with no compaction.
8
+ # This gate is the backstop: once estimatedTotalTokens >= hardCapTokens, Edit/Write/Bash
9
+ # are refused (exit 2) until a real compaction happens. Real compaction is detected via
10
+ # the PreCompact hook (reinject-context.mjs), which resets the tracked counter — see
11
+ # resetCompactPressureState in compact-threshold.mjs. No advisory bypass, no exceptions.
12
+ #
13
+ # Matcher is Edit|Write|Bash only. Read/Grep/Glob stay open so the agent can still
14
+ # investigate, report status, and tell the user to run /compact — gating those too would
15
+ # just brick the session with no way out, since only the user (not the agent) can invoke
16
+ # real compaction.
17
+ #
18
+ # Config toggle: compact.hardCapBlock (default true). Set to false only to debug this
19
+ # gate itself; it must not become a normal escape hatch.
20
+
21
+ INPUT=$(cat)
22
+ PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
23
+ HOOK_DIR="$(cd "$(dirname "$0")" && pwd)"
24
+
25
+ INPUT="$INPUT" PROJECT_ROOT="$PROJECT_ROOT" HOOK_DIR="$HOOK_DIR" node <<'NODE'
26
+ const fs = require('fs');
27
+ const path = require('path');
28
+ const { pathToFileURL } = require('url');
29
+
30
+ const payload = (() => {
31
+ try {
32
+ const parsed = JSON.parse(process.env.INPUT || '');
33
+ return parsed && typeof parsed === 'object' ? parsed : {};
34
+ } catch {
35
+ return {};
36
+ }
37
+ })();
38
+
39
+ const projectRoot = process.env.PROJECT_ROOT;
40
+ const hookDir = process.env.HOOK_DIR;
41
+ const toolName = payload?.tool_name || '';
42
+
43
+ // Gate only mutating/costly tools. Everything else (Read, Grep, Glob, TodoWrite, ...)
44
+ // stays free so the agent can still respond and tell the user to compact.
45
+ // Listed explicitly because the settings.json matcher is a regex ("Edit|Write") that also
46
+ // matches NotebookEdit/MultiEdit -- an exact !== comparison would let those slip through
47
+ // the gate while still firing the hook.
48
+ const GATED_TOOLS = new Set(['Edit', 'Write', 'Bash', 'NotebookEdit', 'MultiEdit']);
49
+ if (!GATED_TOOLS.has(toolName)) {
50
+ process.exit(0);
51
+ }
52
+
53
+ function readJsonSafe(filePath, fallback = null) {
54
+ try {
55
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
56
+ } catch {
57
+ return fallback;
58
+ }
59
+ }
60
+
61
+ (async () => {
62
+ const config = readJsonSafe(path.join(projectRoot, '.ukit', 'storage', 'config.json'), {}) || {};
63
+ if (config?.compact?.hardCapBlock === false) {
64
+ process.exit(0);
65
+ return;
66
+ }
67
+
68
+ const thresholdModulePath = path.join(hookDir, '..', 'ukit', 'runtime', 'compact-threshold.mjs');
69
+ if (!fs.existsSync(thresholdModulePath)) {
70
+ process.exit(0);
71
+ return;
72
+ }
73
+
74
+ const mod = await import(pathToFileURL(thresholdModulePath).href);
75
+ const pressurePath = path.join(projectRoot, '.ukit', 'storage', 'cache', 'compact-pressure.json');
76
+ const rawState = readJsonSafe(pressurePath, null);
77
+ const state = mod.buildCompactPressureState(rawState, config);
78
+ const thresholds = mod.buildCompactThresholds(config);
79
+
80
+ if (state.estimatedTotalTokens < thresholds.hardCapTokens) {
81
+ process.exit(0);
82
+ return;
83
+ }
84
+
85
+ const lines = [
86
+ `BLOCKED (context hard cap): estimated context ~${state.estimatedTotalTokens} tokens >= hard cap ${thresholds.hardCapTokens}.`,
87
+ 'This is an absolute ceiling (compact.hardCapTokens), separate from the soft/hard advisory phases — those were apparently not followed.',
88
+ `Edit/Write/Bash refused (tool_name=${toolName}) until real compaction happens.`,
89
+ 'Remedy (any one): run /compact, or start a new session (SessionStart resets the counter), or delete .ukit/storage/cache/compact-pressure.json.',
90
+ 'Do not work around this by summarizing inline and continuing, and do not reach for a non-gated write tool.',
91
+ ];
92
+ process.stderr.write(`${lines.join('\n')}\n`);
93
+ process.exit(2);
94
+ })().catch((err) => {
95
+ // Unlike vision-gate.sh, a logic error here fails OPEN: this is a backstop on top of
96
+ // advisory nudges, not a correctness gate — a broken gate must not brick every session.
97
+ process.stderr.write(`context-hardcap-gate: internal error, failing open: ${err?.message ?? err}\n`);
98
+ process.exit(0);
99
+ });
100
+ NODE
101
+
102
+ exit $?
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+ # SessionStart hook: zero the compact pressure tracker at the start of every session.
3
+ #
4
+ # compact-pressure.json is a single per-project file whose sessionTokens counter only ever
5
+ # accumulates (see registerPromptPressure/registerOutputPressure in compact-threshold.mjs).
6
+ # Without this reset it sums every prompt and every command output across the entire
7
+ # lifetime of the project, so it eventually crosses compact.hardCapTokens and permanently
8
+ # blocks Edit/Write/Bash in every future session -- even when actual context is tiny.
9
+ # That is a deadlock: the gate blocks Bash, so the documented remedies (ukit install,
10
+ # ukit doctor) cannot run, and compaction never fires because real context is small.
11
+ #
12
+ # Resetting here makes the counter measure THIS session only, which is what the hard cap
13
+ # is actually trying to approximate. It also gives the gate a guaranteed escape hatch:
14
+ # restarting the session always clears a stuck gate, with no manual file surgery.
15
+ #
16
+ # Always exits 0 -- a failure here must never prevent a session from starting.
17
+
18
+ PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
19
+ PRESSURE_FILE="$PROJECT_ROOT/.ukit/storage/cache/compact-pressure.json"
20
+
21
+ if [ -f "$PRESSURE_FILE" ]; then
22
+ rm -f "$PRESSURE_FILE" 2>/dev/null || true
23
+ fi
24
+
25
+ exit 0
@@ -87,6 +87,11 @@
87
87
  "type": "command",
88
88
  "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/vision-gate.sh\"",
89
89
  "timeout": 8
90
+ },
91
+ {
92
+ "type": "command",
93
+ "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/context-hardcap-gate.sh\"",
94
+ "timeout": 8
90
95
  }
91
96
  ]
92
97
  },
@@ -117,6 +122,11 @@
117
122
  "type": "command",
118
123
  "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/handoff-model-guard.sh\"",
119
124
  "timeout": 8
125
+ },
126
+ {
127
+ "type": "command",
128
+ "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/context-hardcap-gate.sh\"",
129
+ "timeout": 8
120
130
  }
121
131
  ]
122
132
  }
@@ -177,6 +187,11 @@
177
187
  "type": "command",
178
188
  "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/auto-prune-bash.sh\"",
179
189
  "timeout": 8
190
+ },
191
+ {
192
+ "type": "command",
193
+ "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/reset-compact-pressure.sh\"",
194
+ "timeout": 8
180
195
  }
181
196
  ]
182
197
  }
@@ -52,27 +52,9 @@ The philosophy must guide the next version to express ideas VISUALLY, not throug
52
52
 
53
53
  ### PHILOSOPHY EXAMPLES
54
54
 
55
- **"Concrete Poetry"**
56
- Philosophy: Communication through monumental form and bold geometry.
57
- Visual expression: Massive color blocks, sculptural typography (huge single words, tiny labels), Brutalist spatial divisions, Polish poster energy meets Le Corbusier. Ideas expressed through visual weight and spatial tension, not explanation. Text as rare, powerful gesture - never paragraphs, only essential words integrated into the visual architecture. Every element placed with the precision of a master craftsman.
55
+ Five condensed reference examples ("Concrete Poetry", "Chromatic Language", "Analog Meditation", "Organic Systems", "Geometric Silence") showing the philosophy → visual-expression pattern are in [`philosophy-examples.md`](philosophy-examples.md).
58
56
 
59
- **"Chromatic Language"**
60
- Philosophy: Color as the primary information system.
61
- Visual expression: Geometric precision where color zones create meaning. Typography minimal - small sans-serif labels letting chromatic fields communicate. Think Josef Albers' interaction meets data visualization. Information encoded spatially and chromatically. Words only to anchor what color already shows. The result of painstaking chromatic calibration.
62
-
63
- **"Analog Meditation"**
64
- Philosophy: Quiet visual contemplation through texture and breathing room.
65
- Visual expression: Paper grain, ink bleeds, vast negative space. Photography and illustration dominate. Typography whispered (small, restrained, serving the visual). Japanese photobook aesthetic. Images breathe across pages. Text appears sparingly - short phrases, never explanatory blocks. Each composition balanced with the care of a meditation practice.
66
-
67
- **"Organic Systems"**
68
- Philosophy: Natural clustering and modular growth patterns.
69
- Visual expression: Rounded forms, organic arrangements, color from nature through architecture. Information shown through visual diagrams, spatial relationships, iconography. Text only for key labels floating in space. The composition tells the story through expert spatial orchestration.
70
-
71
- **"Geometric Silence"**
72
- Philosophy: Pure order and restraint.
73
- Visual expression: Grid-based precision, bold photography or stark graphics, dramatic negative space. Typography precise but minimal - small essential text, large quiet zones. Swiss formalism meets Brutalist material honesty. Structure communicates, not words. Every alignment the work of countless refinements.
74
-
75
- *These are condensed examples. The actual design philosophy should be 4-6 substantial paragraphs.*
57
+ *The actual design philosophy should be 4-6 substantial paragraphs.*
76
58
 
77
59
  ### ESSENTIAL PRINCIPLES
78
60
  - **VISUAL PHILOSOPHY**: Create an aesthetic worldview to be expressed through design
@@ -0,0 +1,23 @@
1
+ # Canvas Design Philosophy Examples
2
+
3
+ Condensed reference examples showing the philosophy → visual-expression pattern described in `SKILL.md`. Use these to spark creativity, not as a fixed catalog — the actual design philosophy for a piece should be 4-6 substantial paragraphs.
4
+
5
+ **"Concrete Poetry"**
6
+ Philosophy: Communication through monumental form and bold geometry.
7
+ Visual expression: Massive color blocks, sculptural typography (huge single words, tiny labels), Brutalist spatial divisions, Polish poster energy meets Le Corbusier. Ideas expressed through visual weight and spatial tension, not explanation. Text as rare, powerful gesture - never paragraphs, only essential words integrated into the visual architecture. Every element placed with the precision of a master craftsman.
8
+
9
+ **"Chromatic Language"**
10
+ Philosophy: Color as the primary information system.
11
+ Visual expression: Geometric precision where color zones create meaning. Typography minimal - small sans-serif labels letting chromatic fields communicate. Think Josef Albers' interaction meets data visualization. Information encoded spatially and chromatically. Words only to anchor what color already shows. The result of painstaking chromatic calibration.
12
+
13
+ **"Analog Meditation"**
14
+ Philosophy: Quiet visual contemplation through texture and breathing room.
15
+ Visual expression: Paper grain, ink bleeds, vast negative space. Photography and illustration dominate. Typography whispered (small, restrained, serving the visual). Japanese photobook aesthetic. Images breathe across pages. Text appears sparingly - short phrases, never explanatory blocks. Each composition balanced with the care of a meditation practice.
16
+
17
+ **"Organic Systems"**
18
+ Philosophy: Natural clustering and modular growth patterns.
19
+ Visual expression: Rounded forms, organic arrangements, color from nature through architecture. Information shown through visual diagrams, spatial relationships, iconography. Text only for key labels floating in space. The composition tells the story through expert spatial orchestration.
20
+
21
+ **"Geometric Silence"**
22
+ Philosophy: Pure order and restraint.
23
+ Visual expression: Grid-based precision, bold photography or stark graphics, dramatic negative space. Typography precise but minimal - small essential text, large quiet zones. Swiss formalism meets Brutalist material honesty. Structure communicates, not words. Every alignment the work of countless refinements.
@@ -53,28 +53,7 @@ You MUST complete each phase before proceeding to the next.
53
53
  - Git diff, recent commits
54
54
  - New dependencies, config changes
55
55
 
56
- 4. **Root Cause Tracing (Deep Dive)**
57
-
58
- **Use when error is deep in call stack:**
59
-
60
- **The Tracing Process:**
61
- 1. **Observe Symptom:** `Error: git init failed in /packages/core`
62
- 2. **Find Immediate Cause:** `execFile('git', ['init'], { cwd: '' })`
63
- 3. **Trace Upwards:**
64
- - Who called this? `WorktreeManager`
65
- - With what arguments? `projectDir = ''`
66
- 4. **Find Original Trigger:**
67
- - Where did empty string come from? `setupCoreTest()` returned empty `tempDir`
68
- 5. **Fix at Source:** Fix `setupCoreTest`, NOT the immediate caller.
69
-
70
- **Instrumentation:**
71
- If manual tracing fails, add logging *before* the failure:
72
- ```js
73
- console.error('DEBUG context:', {
74
- arg: someArg,
75
- stack: new Error().stack // crucial!
76
- });
77
- ```
56
+ 4. **Root Cause Tracing (Deep Dive)** — use when error is deep in call stack: trace upwards from symptom to original trigger, fix at source. Worked example + instrumentation snippet: [`reference-tables.md`](reference-tables.md#root-cause-tracing-deep-dive).
78
57
 
79
58
  5. **Gather Evidence in Multi-Component Systems**
80
59
  - Log what enters/exits each component boundary
@@ -146,11 +125,4 @@ If you catch yourself thinking:
146
125
 
147
126
  **ALL of these mean: STOP. Return to Phase 1.**
148
127
 
149
- ## Quick Reference
150
-
151
- | Phase | Key Activities | Success Criteria |
152
- |-------|---------------|------------------|
153
- | **1. Root Cause** | Read errors, reproduce, trace stack backwards | Understand WHAT and WHY |
154
- | **2. Pattern** | Find working examples, compare | Identify differences |
155
- | **3. Hypothesis** | Form theory, test minimally | Confirmed or new hypothesis |
156
- | **4. Implementation** | Create test, fix, verify | Bug resolved, tests pass |
128
+ Compact per-phase quick-reference table: [`reference-tables.md`](reference-tables.md).
@@ -0,0 +1,33 @@
1
+ # Debugging Toolkit — Quick Reference
2
+
3
+ Compact restatement of the four phases in `SKILL.md`. Read the phases first; this table is for quick lookup during a session.
4
+
5
+ ## Quick Reference
6
+
7
+ | Phase | Key Activities | Success Criteria |
8
+ |-------|---------------|------------------|
9
+ | **1. Root Cause** | Read errors, reproduce, trace stack backwards | Understand WHAT and WHY |
10
+ | **2. Pattern** | Find working examples, compare | Identify differences |
11
+ | **3. Hypothesis** | Form theory, test minimally | Confirmed or new hypothesis |
12
+ | **4. Implementation** | Create test, fix, verify | Bug resolved, tests pass |
13
+
14
+ ## Root Cause Tracing (Deep Dive)
15
+
16
+ **The Tracing Process:**
17
+ 1. **Observe Symptom:** `Error: git init failed in /packages/core`
18
+ 2. **Find Immediate Cause:** `execFile('git', ['init'], { cwd: '' })`
19
+ 3. **Trace Upwards:**
20
+ - Who called this? `WorktreeManager`
21
+ - With what arguments? `projectDir = ''`
22
+ 4. **Find Original Trigger:**
23
+ - Where did empty string come from? `setupCoreTest()` returned empty `tempDir`
24
+ 5. **Fix at Source:** Fix `setupCoreTest`, NOT the immediate caller.
25
+
26
+ **Instrumentation:**
27
+ If manual tracing fails, add logging *before* the failure:
28
+ ```js
29
+ console.error('DEBUG context:', {
30
+ arg: someArg,
31
+ stack: new Error().stack // crucial!
32
+ });
33
+ ```