@rune-kit/rune 2.8.0 → 2.10.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.
Files changed (118) hide show
  1. package/README.md +66 -34
  2. package/agents/adversary.md +27 -0
  3. package/agents/architect.md +19 -29
  4. package/agents/asset-creator.md +18 -4
  5. package/agents/audit.md +25 -4
  6. package/agents/autopsy.md +19 -4
  7. package/agents/ba.md +35 -0
  8. package/agents/brainstorm.md +31 -4
  9. package/agents/browser-pilot.md +21 -4
  10. package/agents/coder.md +21 -29
  11. package/agents/completion-gate.md +20 -4
  12. package/agents/constraint-check.md +18 -4
  13. package/agents/context-engine.md +22 -4
  14. package/agents/context-pack.md +32 -0
  15. package/agents/cook.md +41 -4
  16. package/agents/db.md +19 -4
  17. package/agents/debug.md +33 -4
  18. package/agents/dependency-doctor.md +20 -4
  19. package/agents/deploy.md +27 -4
  20. package/agents/design.md +22 -4
  21. package/agents/doc-processor.md +27 -0
  22. package/agents/docs-seeker.md +19 -4
  23. package/agents/docs.md +31 -0
  24. package/agents/fix.md +37 -4
  25. package/agents/git.md +29 -0
  26. package/agents/hallucination-guard.md +20 -4
  27. package/agents/incident.md +21 -4
  28. package/agents/integrity-check.md +18 -4
  29. package/agents/journal.md +19 -4
  30. package/agents/launch.md +32 -4
  31. package/agents/logic-guardian.md +26 -11
  32. package/agents/marketing.md +23 -4
  33. package/agents/mcp-builder.md +26 -0
  34. package/agents/neural-memory.md +30 -0
  35. package/agents/onboard.md +22 -4
  36. package/agents/perf.md +21 -4
  37. package/agents/plan.md +29 -4
  38. package/agents/preflight.md +22 -4
  39. package/agents/problem-solver.md +20 -4
  40. package/agents/rescue.md +23 -4
  41. package/agents/research.md +19 -4
  42. package/agents/researcher.md +19 -29
  43. package/agents/retro.md +32 -0
  44. package/agents/review-intake.md +20 -4
  45. package/agents/review.md +32 -4
  46. package/agents/reviewer.md +20 -28
  47. package/agents/safeguard.md +19 -4
  48. package/agents/sast.md +18 -4
  49. package/agents/scaffold.md +41 -0
  50. package/agents/scanner.md +19 -28
  51. package/agents/scope-guard.md +18 -4
  52. package/agents/scout.md +23 -4
  53. package/agents/sentinel-env.md +26 -0
  54. package/agents/sentinel.md +33 -4
  55. package/agents/sequential-thinking.md +20 -4
  56. package/agents/session-bridge.md +24 -4
  57. package/agents/skill-forge.md +22 -4
  58. package/agents/skill-router.md +26 -4
  59. package/agents/slides.md +24 -0
  60. package/agents/surgeon.md +19 -4
  61. package/agents/team.md +30 -4
  62. package/agents/test.md +36 -4
  63. package/agents/trend-scout.md +17 -4
  64. package/agents/verification.md +20 -4
  65. package/agents/video-creator.md +20 -4
  66. package/agents/watchdog.md +19 -4
  67. package/agents/worktree.md +17 -4
  68. package/compiler/__tests__/analytics.test.js +370 -0
  69. package/compiler/adapters/openclaw.js +2 -2
  70. package/compiler/analytics.js +385 -0
  71. package/compiler/bin/rune.js +68 -2
  72. package/compiler/dashboard.js +883 -0
  73. package/compiler/transforms/branding.js +1 -1
  74. package/extensions/ui/skills/animation-patterns.md +21 -0
  75. package/extensions/ui/skills/component-patterns.md +25 -0
  76. package/extensions/ui/skills/landing-patterns.md +1 -1
  77. package/hooks/context-watch/index.cjs +95 -68
  78. package/hooks/metrics-collector/index.cjs +86 -42
  79. package/hooks/post-session-reflect/index.cjs +41 -5
  80. package/hooks/session-start/index.cjs +8 -2
  81. package/package.json +2 -2
  82. package/skills/audit/SKILL.md +1 -0
  83. package/skills/autopsy/SKILL.md +78 -2
  84. package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
  85. package/skills/ba/SKILL.md +72 -2
  86. package/skills/brainstorm/SKILL.md +1 -0
  87. package/skills/cook/SKILL.md +32 -3
  88. package/skills/cook/references/output-format.md +33 -0
  89. package/skills/db/SKILL.md +1 -0
  90. package/skills/debug/SKILL.md +23 -1
  91. package/skills/deploy/SKILL.md +1 -1
  92. package/skills/design/SKILL.md +110 -3
  93. package/skills/docs/SKILL.md +2 -1
  94. package/skills/fix/SKILL.md +23 -1
  95. package/skills/graft/SKILL.md +352 -0
  96. package/skills/graft/references/challenge-framework.md +98 -0
  97. package/skills/graft/references/mode-decision.md +44 -0
  98. package/skills/incident/SKILL.md +2 -0
  99. package/skills/journal/SKILL.md +2 -0
  100. package/skills/launch/SKILL.md +2 -0
  101. package/skills/marketing/SKILL.md +46 -2
  102. package/skills/mcp-builder/SKILL.md +3 -1
  103. package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
  104. package/skills/plan/SKILL.md +60 -2
  105. package/skills/plan/references/feature-map.md +84 -0
  106. package/skills/preflight/SKILL.md +20 -1
  107. package/skills/rescue/SKILL.md +25 -1
  108. package/skills/retro/SKILL.md +2 -0
  109. package/skills/review/SKILL.md +55 -2
  110. package/skills/scaffold/SKILL.md +1 -0
  111. package/skills/scope-guard/SKILL.md +35 -17
  112. package/skills/sentinel/SKILL.md +29 -1
  113. package/skills/session-bridge/SKILL.md +155 -9
  114. package/skills/skill-forge/SKILL.md +43 -1
  115. package/skills/skill-router/{skill.md → SKILL.md} +27 -2
  116. package/skills/team/SKILL.md +24 -1
  117. package/skills/test/SKILL.md +29 -2
  118. package/skills/verification/SKILL.md +1 -0
@@ -0,0 +1,113 @@
1
+ # Repo Analysis Patterns
2
+
3
+ Reference for autopsy Step 0 (repo intelligence) and cross-cutting analysis.
4
+
5
+ ## GitHub API Metrics Interpretation
6
+
7
+ | Metric | Healthy | Warning | Critical |
8
+ |--------|---------|---------|----------|
9
+ | Commits/week (avg last 12w) | > 5 | 1-5 | < 1 |
10
+ | Contributors (all-time) | > 5 | 2-4 | 1 (bus factor) |
11
+ | Open issues / total issues | < 30% | 30-60% | > 60% |
12
+ | Days since last push | < 14 | 14-90 | > 90 |
13
+ | Stars/fork ratio | > 5:1 | 2-5:1 | < 2:1 (fork-heavy = fragmentation) |
14
+
15
+ ## Bus Factor Assessment
16
+
17
+ Bus factor = number of contributors who authored > 10% of recent commits (last 6 months).
18
+
19
+ ```bash
20
+ # Bus factor calculation
21
+ git shortlog -sn --since="6 months ago" | awk '{total+=$1; print}' | \
22
+ awk -v t=$(git shortlog -sn --since="6 months ago" | awk '{s+=$1}END{print s}') \
23
+ '{pct=$1/t*100; if(pct>10) count++} END{print "Bus factor:", count}'
24
+ ```
25
+
26
+ | Bus Factor | Risk | Action |
27
+ |-----------|------|--------|
28
+ | 1 | Critical | Flag in report — single point of failure |
29
+ | 2-3 | Moderate | Note in report — knowledge concentration |
30
+ | 4+ | Low | Healthy distribution |
31
+
32
+ ## Hotspot-Complexity Correlation
33
+
34
+ Files that are BOTH hotspots (high change frequency) AND high complexity are the highest-priority rescue targets. Plot on a 2x2 matrix:
35
+
36
+ ```
37
+ High Complexity
38
+ |
39
+ Refactor NOW | Monitor
40
+ (hot + complex) | (cold + complex)
41
+ -------------------+-------------------
42
+ Leave alone | Review
43
+ (hot + simple) | (cold + simple)
44
+ |
45
+ Low Complexity
46
+ High Churn ←————→ Low Churn
47
+ ```
48
+
49
+ Priority order: hot+complex > cold+complex > hot+simple > cold+simple.
50
+
51
+ ## Dependency Health Signals
52
+
53
+ ### Outdated packages
54
+ ```bash
55
+ # Node.js
56
+ npx npm-check-updates --format group 2>/dev/null | head -40
57
+
58
+ # Python
59
+ pip list --outdated --format columns 2>/dev/null | head -20
60
+ ```
61
+
62
+ ### Known vulnerabilities
63
+ ```bash
64
+ # Node.js
65
+ npm audit --json 2>/dev/null | jq '.metadata.vulnerabilities'
66
+
67
+ # Python
68
+ pip-audit --format json 2>/dev/null | jq '.dependencies | length'
69
+ ```
70
+
71
+ ### Circular dependency detection
72
+ ```bash
73
+ # Node.js (madge)
74
+ npx madge --circular --extensions ts,js src/ 2>/dev/null
75
+
76
+ # Python (pydeps)
77
+ pydeps --no-output --show-cycles . 2>/dev/null
78
+ ```
79
+
80
+ ## Dead Code Heuristics
81
+
82
+ A file is likely dead code if ALL of these are true:
83
+ 1. No other file imports it (check with grep/madge)
84
+ 2. Not referenced in any config (webpack entry, tsconfig paths, package.json bin/main)
85
+ 3. Last modified > 6 months ago
86
+ 4. Not a test file, fixture, or migration
87
+
88
+ False positive checklist (do NOT flag these as dead):
89
+ - Dynamic imports (`import()`, `require(variable)`)
90
+ - Plugin/middleware loaded by config (e.g., babel plugins, ESLint rules)
91
+ - CLI entry points referenced in package.json `bin`
92
+ - Database migrations (executed by ORM, not imported)
93
+ - Template files loaded by path string
94
+
95
+ ## Velocity Trend Analysis
96
+
97
+ Compare commit counts across 3-month windows to detect trajectory:
98
+
99
+ | Pattern | Signal | Interpretation |
100
+ |---------|--------|---------------|
101
+ | M1 > M2 > M3 | Decelerating | Project may be winding down or blocked |
102
+ | M1 < M2 < M3 | Accelerating | Active development, check for quality regression |
103
+ | M1 ~ M2 ~ M3 | Stable | Healthy maintenance pace |
104
+ | Spiky (high variance) | Irregular | Deadline-driven development — check quality around spikes |
105
+
106
+ ```bash
107
+ # Monthly commit counts for last 6 months
108
+ for i in 0 1 2 3 4 5; do
109
+ month=$(date -d "$i months ago" +%Y-%m 2>/dev/null || date -v-${i}m +%Y-%m)
110
+ count=$(git log --after="$month-01" --before="$month-31" --oneline 2>/dev/null | wc -l)
111
+ echo "$month: $count commits"
112
+ done
113
+ ```
@@ -3,7 +3,7 @@ name: ba
3
3
  description: Business Analyst agent. Deeply understands user requirements before any planning or coding begins. Asks probing questions, identifies hidden requirements, maps stakeholders, defines scope boundaries, and produces a structured Requirements Document that plan and cook consume.
4
4
  metadata:
5
5
  author: runedev
6
- version: "0.4.0"
6
+ version: "0.5.0"
7
7
  layer: L2
8
8
  model: opus
9
9
  group: creation
@@ -34,6 +34,7 @@ Output is a Requirements Document → hand off to rune:plan for implementation p
34
34
  - `research` (L3): look up similar products, APIs, integrations
35
35
  - `plan` (L2): hand off Requirements Document for implementation planning
36
36
  - `brainstorm` (L2): when multiple approaches exist for a requirement
37
+ - `design` (L2): when requirements include UI/UX components — hand off visual requirements
37
38
 
38
39
  ## Called By (inbound)
39
40
 
@@ -64,7 +65,7 @@ Read the user's request. Classify the requirement type:
64
65
  | Greenfield | "new project", "build from scratch" | Full BA + market context |
65
66
 
66
67
  If Bug Fix → skip BA, route to cook/debug directly.
67
- If Refactor → light version (Step 1 + Step 4 only).
68
+ If Refactor → light version (Step 1 + Step 4 only). Skip Steps 2, 2.5, 3, 5, 6.
68
69
 
69
70
  If existing codebase → invoke `rune:scout` for context before proceeding.
70
71
 
@@ -110,6 +111,72 @@ O: 30% faster incident detection (measurable KPI)
110
111
  - Product/UX feature → Jobs-to-be-Done (keeps focus on user motivation)
111
112
  - Integration → 5 Questions only (frameworks add noise for plumbing tasks)
112
113
 
114
+ ### Step 2.5 — Ambiguity Scoring (Execution Gate)
115
+
116
+ After each question round, compute an **Ambiguity Score** to determine if requirements are clear enough to proceed. This prevents premature handoff to `plan` with vague inputs.
117
+
118
+ #### Scoring Formula
119
+
120
+ ```
121
+ Ambiguity = 1 - weighted_average(dimensions)
122
+
123
+ Dimensions (weights vary by requirement type):
124
+ Greenfield: Goal (40%) + Constraints (30%) + Success Criteria (30%)
125
+ Feature: Goal (30%) + Constraints (30%) + Success Criteria (20%) + Integration (20%)
126
+ Integration: Goal (20%) + Constraints (25%) + Success Criteria (20%) + API Contract (35%)
127
+ ```
128
+
129
+ #### Dimension Scoring (0.0 – 1.0)
130
+
131
+ | Dimension | 0.0 (Unknown) | 0.5 (Partial) | 1.0 (Clear) |
132
+ |-----------|---------------|----------------|--------------|
133
+ | **Goal** | "Make it better" | "Improve dashboard performance" | "Dashboard loads in <2s with 10k rows" |
134
+ | **Constraints** | No constraints mentioned | "Use existing DB" | "PostgreSQL 15, no new deps, GDPR compliant" |
135
+ | **Success Criteria** | "It should work" | "Users can see their data" | "AC-1.1: GIVEN 10k rows WHEN page loads THEN render <2s" |
136
+ | **Integration** | "Connect to the API" | "Use REST, need auth" | "POST /api/v2/orders, OAuth2, rate limit 100/min" |
137
+ | **API Contract** | "It sends data somewhere" | "JSON payload to endpoint" | "OpenAPI spec provided, request/response schemas defined" |
138
+
139
+ #### Threshold Gate
140
+
141
+ | Ambiguity | Level | Action |
142
+ |-----------|-------|--------|
143
+ | **< 15%** | Crystal Clear | Proceed to Step 3 immediately |
144
+ | **15-25%** | Acceptable | Proceed with noted assumptions — flag gaps in Requirements Doc |
145
+ | **25-40%** | Unclear | Ask 1-2 targeted follow-up questions on weakest dimension |
146
+ | **> 40%** | Blocked | Do NOT proceed. Re-ask the weakest dimension question with examples |
147
+
148
+ <HARD-GATE>
149
+ NEVER hand off to plan with Ambiguity > 40%.
150
+ If user insists "just build it" at > 40%, respond:
151
+ "Ambiguity is [X]% — the weakest area is [dimension]. One more answer cuts this in half: [targeted question]"
152
+ </HARD-GATE>
153
+
154
+ #### Scoring After Each Question
155
+
156
+ After each of the 5 Questions (Step 2), update the score:
157
+
158
+ ```
159
+ Round 1 (WHO): Goal ≈ 0.3, others = 0.0 → Ambiguity ≈ 91%
160
+ Round 2 (WHAT): Goal ≈ 0.7, Success ≈ 0.3 → Ambiguity ≈ 72%
161
+ Round 3 (WHY): Goal ≈ 0.9, Success ≈ 0.5 → Ambiguity ≈ 47%
162
+ Round 4 (BOUNDS): Constraints ≈ 0.6 → Ambiguity ≈ 30%
163
+ Round 5 (CONSTR): Constraints ≈ 0.9 → Ambiguity ≈ 12% ✅
164
+ ```
165
+
166
+ If Ambiguity drops below 15% before all 5 questions are asked (e.g., user provides a detailed PRD), skip remaining questions and proceed. The gate is about clarity, not ceremony.
167
+
168
+ #### Display Format
169
+
170
+ After completing Step 2, show the user:
171
+
172
+ ```
173
+ Clarity Score: [100 - ambiguity]%
174
+ Goal: [██████████] 0.9
175
+ Constraints: [████████░░] 0.8
176
+ Success Criteria: [██████░░░░] 0.6 ← weakest
177
+ Status: ACCEPTABLE (ambiguity 23%) — proceeding with noted gaps
178
+ ```
179
+
113
180
  ### Step 3 — Hidden Requirement Discovery
114
181
 
115
182
  After the 5 questions, analyze for requirements the user DIDN'T mention:
@@ -332,11 +399,14 @@ Known failure modes for this skill. Check these before declaring done.
332
399
  | Requirements doc too verbose (>500 lines) | MEDIUM | Max 200 lines — concise, actionable, testable |
333
400
  | Skipping BA for "simple" features that turn out complex | HIGH | Let cook's complexity detection trigger BA, not user judgment |
334
401
  | Recommending shortcuts without Completeness Score | MEDIUM | Step 3.5: every option needs X/10 score + dual effort estimate (human vs AI). "90% coverage" is a red flag when 100% costs 15 min more |
402
+ | Handing off to plan with ambiguity > 40% | CRITICAL | Step 2.5 HARD-GATE: compute ambiguity score after elicitation, block handoff if > 40%, ask targeted follow-up on weakest dimension |
403
+ | Skipping ambiguity scoring because "user seems clear" | HIGH | Always compute the score — perceived clarity ≠ measured clarity. The formula catches gaps humans miss |
335
404
 
336
405
  ## Done When
337
406
 
338
407
  - Requirement type classified (feature/refactor/integration/greenfield)
339
408
  - 5 probing questions asked and answered (or extracted from spec/PRD)
409
+ - Ambiguity Score computed and displayed — must be ≤ 40% before proceeding (≤ 25% preferred)
340
410
  - Hidden requirements discovered and confirmed with user
341
411
  - Scope defined (in/out/assumptions/dependencies)
342
412
  - User stories with testable acceptance criteria produced
@@ -87,6 +87,7 @@ Direct API call ≠ Wrapper/middleware layer ≠ Reverse engineering ≠ Browser
87
87
  ## Calls (outbound)
88
88
 
89
89
  - `plan` (L2): when idea is selected and needs structuring into actionable steps
90
+ - `design` (L2): when selected approach has UI/UX implications — hand off visual decisions
90
91
  - `research` (L3): gather data for informed brainstorming (existing solutions, benchmarks)
91
92
  - `trend-scout` (L3): market context and trends for product-oriented brainstorming
92
93
  - `problem-solver` (L3): structured reasoning frameworks (SCAMPER, First Principles, 6 Hats)
@@ -5,13 +5,13 @@ context: fork
5
5
  agent: general-purpose
6
6
  metadata:
7
7
  author: runedev
8
- version: "2.1.0"
8
+ version: "2.3.0"
9
9
  layer: L1
10
10
  model: sonnet
11
11
  group: orchestrator
12
12
  tools: "Read, Write, Edit, Bash, Glob, Grep"
13
- emit: phase.complete
14
- listen: plan.ready, review.complete
13
+ emit: phase.complete, checkpoint.request
14
+ listen: plan.ready, review.complete, ideas.ready, preflight.passed, verification.complete
15
15
  ---
16
16
 
17
17
  # cook
@@ -73,6 +73,7 @@ When `--template <name>` is provided, cook loads a pre-built workflow template i
73
73
  - Contains "security", "auth", "vulnerability", "CVE" → `security`
74
74
  - Contains "urgent", "hotfix", "production" → `hotfix`
75
75
  - Contains "quick", "just", "chỉ cần", "copy", "move", "rename", "bump" → `nano`
76
+ - Contains "graft", "port from", "copy from repo", "clone feature from" → **delegate to `rune:graft`** (not a cook chain — hand off entirely)
76
77
  - Contains `--template` → load template workflow (see above)
77
78
  - Default → `feature`
78
79
 
@@ -379,6 +380,11 @@ If the coder model needs info from other phases, it's in the Cross-Phase Context
379
380
 
380
381
  Quality checks run in **two stages** — spec compliance gates code review. Reviewing code quality before verifying it matches the spec wastes effort on code that may need rewriting.
381
382
 
383
+ **Signal dispatch ordering**: When `fix` emits `code.changed`, 4 listeners react (preflight, sentinel, test, review). Cook coordinates dispatch order — do NOT let all 4 fire simultaneously:
384
+ - **Stage 1**: preflight + sentinel (parallel — independent checks)
385
+ - **Stage 2**: test (after Stage 1 passes — no point testing non-compliant code)
386
+ - **Stage 3**: review (after test passes — review verified code only)
387
+
382
388
  ```
383
389
  STAGE 1 (parallel):
384
390
  Launch 5a (preflight) + 5b (sentinel) simultaneously.
@@ -806,6 +812,29 @@ When invoked by `team` with a NEXUS Handoff, include the Deliverables table —
806
812
  | Cook Report | Markdown (inline) | Emitted at end of session |
807
813
  | Session state | Markdown | `.rune/decisions.md`, `.rune/progress.md`, `.rune/conventions.md` |
808
814
 
815
+ ## Document Ownership
816
+
817
+ | Scope | Access | Files |
818
+ |-------|--------|-------|
819
+ | **Owns** (read + write) | `.rune/plan-*.md`, `.rune/progress.md`, `.rune/decisions.md`, `.rune/conventions.md`, source files per approved plan |
820
+ | **Reads** (never writes) | `CLAUDE.md`, `SKILL.md` (any), `.rune/contract.md`, `.rune/checkpoint.md` |
821
+ | **Never modifies** | `compiler/**`, `extensions/**`, `PACK.md`, other skills' `SKILL.md`, `.rune/learnings.jsonl` |
822
+
823
+ When delegating to sub-skills (scout, plan, test, review), each sub-skill owns its own output. Cook coordinates but does not overwrite sub-skill artifacts.
824
+
825
+ ## Anti-Patterns
826
+
827
+ Common multi-agent failures to explicitly avoid. These are NOT edge cases — they are the most frequent cook failures in production.
828
+
829
+ | Anti-Pattern | Why It Fails | Correct Approach |
830
+ |---|---|---|
831
+ | **Bypass hierarchy** — skipping scout/plan and jumping to Phase 4 code | Builds wrong thing. Most "wasted work" traces back to missing Phase 1-2 | Follow phase gates. Even "obvious" tasks benefit from 30s of scout |
832
+ | **Shadow decisions** — making architectural choices without logging to decisions.md | Next session repeats the same debate. Team agents contradict each other | Log every non-trivial choice via `decisions.md` or `journal` |
833
+ | **Gold-plating** — adding "nice-to-have" features not in the approved plan | Scope creep, delayed delivery, untested code paths | Build ONLY what's in the plan. Log extras as follow-up tasks |
834
+ | **Test-after** — writing tests after implementation instead of before (TDD violation) | Tests validate implementation bugs, not requirements. Coverage looks good but misses edge cases | Phase 3 (RED) before Phase 4 (GREEN). Always |
835
+ | **Monolithic commit** — one giant commit with all changes | Impossible to revert partially. Review is overwhelming | Commit per phase or per logical unit. Small, reviewable diffs |
836
+ | **Assumption-based implementation** — guessing requirements instead of asking | Builds the wrong thing confidently. User discovers mismatch late | If ambiguous, ask. 30s of clarification saves 30min of rework |
837
+
809
838
  ## Sharp Edges
810
839
 
811
840
  <MUST-READ path="references/sharp-edges.md" trigger="before declaring done — review all 18 failure modes"/>
@@ -32,6 +32,39 @@ Also defines the NEXUS Deliverables table format used when cook is invoked by `t
32
32
  - Saved to .rune/progress.md
33
33
  ```
34
34
 
35
+ ## Chain Metadata (Cross-Skill Data Forwarding)
36
+
37
+ Every Cook Report MUST end with a `chain_metadata` YAML block. This enables downstream skills to consume cook's output data without parsing prose. See `docs/references/chain-metadata.md` for the full contract.
38
+
39
+ ```yaml
40
+ chain_metadata:
41
+ skill: "rune:cook"
42
+ version: "2.2.0"
43
+ status: "[same as Cook Report status]"
44
+ domain: "[area worked on — e.g., auth, payments, compiler]"
45
+ files_changed:
46
+ - "[list of files created/modified in this session]"
47
+ exports:
48
+ commit_hash: "[actual git hash]"
49
+ files_changed_count: [N]
50
+ test_results: { passed: [N], failed: [N], coverage: [N] }
51
+ quality_gates: { preflight: "[PASS/WARN/FAIL]", sentinel: "[PASS/WARN/FAIL]", review: "[PASS/WARN/FAIL]" }
52
+ phase_count: [N]
53
+ concerns: [] # populated if DONE_WITH_CONCERNS
54
+ suggested_next: # 1-3 data-driven recommendations based on THIS output
55
+ - skill: "rune:[skill]"
56
+ reason: "[grounded in actual data — not generic advice]"
57
+ consumes: ["[export keys the suggested skill would use]"]
58
+ ```
59
+
60
+ **Rules for suggested_next:**
61
+ - Base suggestions on ACTUAL output data (sentinel WARN → suggest deeper security review, low coverage → suggest more tests)
62
+ - Never suggest skills that already ran successfully in this session
63
+ - Status-aware: BLOCKED → suggest debug/fix, DONE → suggest review/deploy/test
64
+ - Max 3 suggestions, ordered by priority
65
+
66
+ **When NOT to emit:** When cook is invoked as a sub-step of `autopilot` or `team` — the orchestrator emits its own chain_metadata at the end.
67
+
35
68
  ## Usage Rules
36
69
 
37
70
  - When cook is invoked **standalone** (not by team): Deliverables table is optional
@@ -8,6 +8,7 @@ metadata:
8
8
  model: sonnet
9
9
  group: development
10
10
  tools: "Read, Write, Edit, Bash, Glob, Grep"
11
+ emit: db.migrated
11
12
  ---
12
13
 
13
14
  # db
@@ -3,7 +3,7 @@ name: debug
3
3
  description: Root cause analysis for bugs and unexpected behavior. Traces errors through code, uses structured reasoning, and hands off to fix when cause is found. Core of the debug↔fix mesh.
4
4
  metadata:
5
5
  author: runedev
6
- version: "1.0.0"
6
+ version: "1.1.0"
7
7
  layer: L2
8
8
  model: sonnet
9
9
  group: development
@@ -405,6 +405,28 @@ Debug returns one of four statuses to its caller (cook, fix, test, surgeon). The
405
405
  | Fix recommendation | Inline (Debug Report) | Direction only — no code changes |
406
406
  | Debug knowledge base entry | Markdown | `.rune/debug/knowledge-base.md` (appended on success) |
407
407
 
408
+ ## Chain Metadata
409
+
410
+ Append to Debug Report when invoked standalone. Suppress when called as sub-skill inside an L1 orchestrator (cook, team, etc.) — the orchestrator emits a consolidated block. See `docs/references/chain-metadata.md`.
411
+
412
+ ```yaml
413
+ chain_metadata:
414
+ skill: "rune:debug"
415
+ version: "1.1.0"
416
+ status: "[DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED]"
417
+ domain: "[area debugged]"
418
+ files_changed: [] # debug never changes files
419
+ exports:
420
+ root_cause: { file: "[path]", line: [N], explanation: "[cause]" }
421
+ severity: "[critical | high | medium | low]"
422
+ confidence: "[high | medium | low]"
423
+ fix_recommendation: "[direction for fix skill]"
424
+ suggested_next:
425
+ - skill: "rune:fix"
426
+ reason: "[grounded in root cause — e.g., 'Critical race condition found in auth.ts:42']"
427
+ consumes: ["root_cause", "fix_recommendation"]
428
+ ```
429
+
408
430
  ## Sharp Edges
409
431
 
410
432
  | Failure Mode | Severity | Mitigation |
@@ -10,7 +10,7 @@ metadata:
10
10
  group: delivery
11
11
  tools: "Read, Write, Edit, Bash, Glob, Grep"
12
12
  emit: deploy.complete
13
- listen: security.passed, tests.passed
13
+ listen: security.passed, tests.passed, docs.updated, audit.complete, db.migrated
14
14
  ---
15
15
 
16
16
  # deploy
@@ -3,7 +3,7 @@ name: design
3
3
  description: Design system reasoning. Maps product domain to style, palette, typography, and platform-specific patterns. Generates .rune/design-system.md as the shared design contract for all UI-generating skills.
4
4
  metadata:
5
5
  author: runedev
6
- version: "0.3.0"
6
+ version: "0.4.0"
7
7
  layer: L2
8
8
  model: sonnet
9
9
  group: creation
@@ -32,6 +32,8 @@ Design system reasoning layer. Converts a product description into a concrete de
32
32
  ## Called By (inbound)
33
33
 
34
34
  - `cook` (L1): before any frontend code generation
35
+ - `brainstorm` (L2): when selected approach has UI/UX implications
36
+ - `ba` (L2): when requirements include UI/UX components
35
37
  - `review` (L2): when AI anti-pattern detected in diff
36
38
  - `perf` (L2): when Lighthouse Accessibility score blocks
37
39
  - User: `/rune design` direct invocation
@@ -97,6 +99,31 @@ From the user's task description + codebase context, classify product type:
97
99
 
98
100
  If domain is unclear: ask one clarifying question — "Is this closer to X or Y?"
99
101
 
102
+ ### Step 2.5 — Mood-to-Constraint Mapping
103
+
104
+ After classifying domain, ask ONE question: **"What should users feel when they use this?"**
105
+
106
+ Accept a single mood keyword (or infer from context if obvious). Map mood to concrete design constraints:
107
+
108
+ | Mood | Color Temp | Typography Weight | Whitespace | Animation | Shadow |
109
+ |------|-----------|-------------------|------------|-----------|--------|
110
+ | **Impressed** | Cool (blue-slate) | Heavy display (700-800) | Generous (xl-3xl) | Dramatic reveals (0.8-1.2s ease-out) | Deep, layered |
111
+ | **Excited** | Warm (amber-orange) | Bold contrasts (400 vs 800) | Tight-medium (sm-lg) | Energetic springs (0.4-0.6s spring) | Elevation lifts |
112
+ | **Calm** | Neutral-warm (stone-sage) | Light-medium (300-500) | Very generous (2xl-3xl) | Slow fades (0.6-0.8s ease-out-quad) | Soft, minimal |
113
+ | **Confident** | Cool-neutral (zinc-slate) | Medium-heavy (500-700) | Structured (md-xl) | Precise slides (0.3-0.5s ease) | Crisp, defined |
114
+ | **Playful** | Saturated (multi-hue) | Round + bold (600-700) | Medium, irregular (md-lg) | Bouncy springs (0.4-0.6s spring, overshoot) | Hard/comic (3-5px offset) |
115
+ | **Techy** | Cold (gray-cyan) | Mono-heavy, crisp (400-600) | Dense, grid-aligned (sm-md) | Sharp snaps (0.15-0.3s ease-out) | Minimal or glow |
116
+ | **Professional** | Muted neutrals | System fonts, readable (400-500) | Balanced (md-lg) | Subtle (0.2-0.3s ease) | Standard elevation |
117
+ | **Inspired** | Rich-warm (gold-terracotta) | Editorial display (300-700 range) | Asymmetric, generous | Scroll-driven reveals (0.5-0.8s) | Dramatic, directional |
118
+
119
+ **Mapping rules:**
120
+ 1. Mood constraints OVERRIDE generic domain defaults where they conflict (mood is user intent, domain is convention)
121
+ 2. If mood contradicts domain safety (e.g., "Playful" + Healthcare), WARN user: "Playful tone may reduce trust in medical context — proceed?"
122
+ 3. Write selected mood + resolved constraints to `.rune/design-system.md` under `## Mood` section
123
+ 4. Downstream skills (`animation-patterns`, `palette-picker`, `type-system`) read mood constraints from design-system.md
124
+
125
+ **Skip if**: User says "no preference" or "just follow domain defaults" — proceed to Step 3 with domain-only reasoning.
126
+
100
127
  ### Step 3 — Apply Domain Reasoning Rules
101
128
 
102
129
  Map domain to design system parameters:
@@ -333,6 +360,44 @@ sm: 6px | md: 8px | lg: 12px | xl: 16px | full: 9999px
333
360
  - [ ] Responsive tested at 375px / 768px / 1024px / 1440px
334
361
  ```
335
362
 
363
+ ### Step 5.5 — UI Design Contract (UI-SPEC.md)
364
+
365
+ After generating the design system, lock key visual decisions in `.rune/ui-spec.md` — a binding contract that prevents design drift during implementation.
366
+
367
+ **Why**: design-system.md defines tokens (what's available). UI-SPEC locks decisions (what was chosen and WHY). Without a spec, each component re-decides layout, density, and hierarchy — causing visual inconsistency.
368
+
369
+ **Generate `.rune/ui-spec.md`:**
370
+
371
+ ```markdown
372
+ # UI Specification: [Project Name]
373
+ Locked: [YYYY-MM-DD] | Mood: [selected mood]
374
+
375
+ ## Layout Decisions
376
+ - Page max-width: [value]px
377
+ - Sidebar: [yes/no] — [width]px [fixed/collapsible]
378
+ - Content density: [compact/balanced/spacious]
379
+ - Card sizing: [uniform/varied] — if varied, specify hierarchy rules
380
+
381
+ ## Visual Hierarchy Rules
382
+ - Primary action: [color] [size] [weight] — ONE per viewport
383
+ - Secondary action: [ghost/outline] style — max 2 per section
384
+ - Data emphasis: [monospace + bold] for numbers, [color accent] for status
385
+ - Section separation: [border/spacing/background] — pick ONE, be consistent
386
+
387
+ ## Component Decisions
388
+ - Card style: [elevated/bordered/glass] — reasoning: [why]
389
+ - Table style: [striped/bordered/minimal] — reasoning: [why]
390
+ - Form layout: [stacked/inline/grid] — reasoning: [why]
391
+ - Navigation: [sidebar/topbar/tabs] — reasoning: [why]
392
+
393
+ ## Locked Anti-Decisions (things we explicitly chose NOT to do)
394
+ - ❌ [rejected option] — because [reason]
395
+ ```
396
+
397
+ <HARD-GATE>
398
+ UI-SPEC.md is a contract. Once written, changes require explicit user approval ("I want to change the card style"). Skills that generate UI (`cook`, `fix`, `scaffold`) MUST read UI-SPEC.md before producing components. Drift from spec = review finding.
399
+ </HARD-GATE>
400
+
336
401
  ### Step 6 — Accessibility Review
337
402
 
338
403
  Run a focused accessibility audit on the design system and any existing UI code. This step ensures the design contract doesn't produce inaccessible outputs.
@@ -349,6 +414,39 @@ Run a focused accessibility audit on the design system and any existing UI code.
349
414
 
350
415
  If violations found → add them to `.rune/design-system.md` Anti-Patterns section as concrete rules.
351
416
 
417
+ ### Step 6.5 — 6-Pillar Visual Audit
418
+
419
+ Score the generated design system across 6 pillars. Each pillar scored 1-4 (1=Poor, 2=Fair, 3=Good, 4=Excellent). Minimum passing score: **18/24** (average 3.0).
420
+
421
+ | Pillar | Score 1 (Poor) | Score 2 (Fair) | Score 3 (Good) | Score 4 (Excellent) |
422
+ |--------|---------------|----------------|----------------|---------------------|
423
+ | **Copy** | Placeholder text, generic CTAs ("Submit"), no voice | Real copy but inconsistent tone | Consistent voice, domain-appropriate, clear CTAs | Personality-rich, scannable, microcopy for every state |
424
+ | **Visuals** | Stock photos, generic icons, no visual identity | Consistent icon set, basic imagery | Custom illustrations or curated photography, clear hierarchy | Distinctive visual language, icons tell stories, zero stock |
425
+ | **Color** | Default framework palette, no semantic meaning | Brand colors defined but inconsistent usage | Full semantic palette, dark mode, accessible contrast | Mood-aligned, colorblind-safe, context-adaptive (profit/loss/status) |
426
+ | **Typography** | Single font, no scale | Font pairing exists but inconsistent sizing | Clear hierarchy (display/heading/body/mono), numbers monospace | Mood-aligned pairing, fluid scaling, platform-native where needed |
427
+ | **Spacing** | Inconsistent gaps, cramped or too loose | Base unit defined but not consistently applied | 8px grid, consistent section/component/element spacing | Density variants (compact/default/spacious), rhythm feels intentional |
428
+ | **UX** | Missing states (empty/error/loading), no feedback | Basic states exist, some interactive feedback | All states covered, toast/loading/skeleton, focus management | Delightful micro-interactions, smart defaults, zero dead-ends |
429
+
430
+ **Audit output:**
431
+
432
+ ```
433
+ ### Visual Audit Score: [total]/24
434
+
435
+ | Pillar | Score | Notes |
436
+ |--------|-------|-------|
437
+ | Copy | 3 | Consistent voice, missing loading microcopy |
438
+ | Visuals | 2 | Using Phosphor icons (good), no custom illustration |
439
+ | Color | 4 | Full semantic palette, colorblind alternates defined |
440
+ | Typography | 3 | JetBrains Mono for numbers, Inter for prose — solid |
441
+ | Spacing | 3 | 8px grid applied, density variants not needed yet |
442
+ | UX | 3 | All states covered, micro-interactions in progress |
443
+ | **Total** | **18/24** | PASS — ship-ready with Copy improvements recommended |
444
+ ```
445
+
446
+ **If score < 18**: Flag specific weak pillars in Design Report. Add improvement tasks to `.rune/design-system.md` under `## Improvement Backlog`.
447
+
448
+ **Registry safety check**: If an existing component library is in use (shadcn, MUI, etc.), verify the design system doesn't conflict with the library's token structure. Flag collisions.
449
+
352
450
  ### Step 7 — UX Writing Patterns
353
451
 
354
452
  Generate microcopy guidelines specific to this product domain. UX writing is part of design — not an afterthought.
@@ -448,8 +546,10 @@ Trading/Fintech — Data-Dense Dark — Web
448
546
  | Artifact | Format | Location |
449
547
  |----------|--------|----------|
450
548
  | Design system file | Markdown | `.rune/design-system.md` |
549
+ | UI specification contract | Markdown | `.rune/ui-spec.md` |
451
550
  | Design report | Markdown | inline (chat output) |
452
551
  | Accessibility audit findings | Markdown list | inline + appended to design-system.md |
552
+ | Visual audit score | Table (6 pillars × 1-4) | inline + appended to design report |
453
553
  | UX writing guidelines | Markdown section | `.rune/design-system.md` § UX Writing |
454
554
 
455
555
  ## Sharp Edges
@@ -462,6 +562,9 @@ Known failure modes for this skill. Check these before declaring done.
462
562
  | Purple/indigo accent on non-AI-native product | HIGH | Constraint 3 blocks this — re-generate with domain-appropriate accent |
463
563
  | Anti-pattern list copied from generic sources (not domain-specific) | HIGH | Each anti-pattern must cite why it fails in THIS specific domain |
464
564
  | design-system.md not written (only reported verbally) | HIGH | Constraint 4 — no file = no persistence = future sessions lose design context |
565
+ | Mood contradicts domain safety conventions | HIGH | Step 2.5 warns user before proceeding (e.g., Playful + Healthcare) |
566
+ | UI-SPEC.md drift — components diverge from locked decisions | HIGH | HARD-GATE: cook/fix must read ui-spec.md before generating UI |
567
+ | Visual audit score < 18 shipped without improvement plan | MEDIUM | Step 6.5 flags weak pillars and creates backlog items |
465
568
  | iOS target generating solid-background cards | MEDIUM | Platform Gate: iOS 26 Liquid Glass deprecates this pattern |
466
569
  | Android target using hardcoded hex colors | MEDIUM | Platform Gate: MaterialTheme.colorScheme is mandatory for dynamic color |
467
570
 
@@ -469,12 +572,16 @@ Known failure modes for this skill. Check these before declaring done.
469
572
 
470
573
  - Design reference loaded (user override or baseline)
471
574
  - Domain classified (one of the 10 categories or explicit custom reasoning)
575
+ - Mood mapped to constraints (or explicitly skipped with "domain defaults")
472
576
  - Design system generated with: colors (primitive + semantic), typography, spacing, effects, anti-patterns
473
577
  - Platform-specific overrides applied (if iOS/Android target)
578
+ - UI-SPEC.md written with locked layout, hierarchy, and component decisions
474
579
  - Accessibility review completed (6 checks: contrast, focus, touch targets, labels, semantic HTML, motion)
580
+ - 6-Pillar Visual Audit scored ≥ 18/24 (or weak pillars flagged with improvement tasks)
475
581
  - UX writing guidelines generated (error, empty state, confirmation, loading, button templates)
476
- - `.rune/design-system.md` written (includes UX Writing section)
477
- - Design Report emitted with accent/typography reasoning and anti-pattern count
582
+ - `.rune/design-system.md` written (includes Mood + UX Writing sections)
583
+ - `.rune/ui-spec.md` written (design contract for UI-generating skills)
584
+ - Design Report emitted with mood, accent/typography reasoning, visual audit score, and anti-pattern count
478
585
  - Pre-Delivery Checklist included in design-system.md
479
586
 
480
587
  ## Cost Profile
@@ -8,6 +8,7 @@ metadata:
8
8
  model: sonnet
9
9
  group: delivery
10
10
  tools: "Read, Write, Edit, Glob, Grep"
11
+ emit: docs.updated
11
12
  ---
12
13
 
13
14
  # docs
@@ -192,7 +193,7 @@ After updating any doc, verify consistency across all project documentation:
192
193
  Cross-Doc Consistency:
193
194
  - [x] README.md ↔ CLAUDE.md: versions match, commands match
194
195
  - [x] README.md ↔ docs/index.html: stats match, features match
195
- - [ ] README.md says "61 skills" but CLAUDE.md says "59" → FIX CLAUDE.md
196
+ - [ ] README.md says "62 skills" but CLAUDE.md says "59" → FIX CLAUDE.md
196
197
  ```
197
198
 
198
199
  **Fix inconsistencies immediately** — don't just report them. Update the stale doc to match the source of truth (usually the code or the most recently updated doc).
@@ -3,7 +3,7 @@ name: fix
3
3
  description: Apply code changes and fixes. Writes implementation code, applies bug fixes, and verifies changes with tests. Core action hub in the development mesh.
4
4
  metadata:
5
5
  author: runedev
6
- version: "0.8.0"
6
+ version: "0.9.0"
7
7
  layer: L2
8
8
  model: sonnet
9
9
  group: development
@@ -271,6 +271,28 @@ Fix returns one of four statuses to its caller (cook, debug, review, surgeon). T
271
271
  | Fix Report | Markdown (inline) | Emitted to calling skill (cook, debug, review, surgeon) |
272
272
  | Verification output | Inline (Fix Report) | Lint + types + test results |
273
273
 
274
+ ## Chain Metadata
275
+
276
+ Append to Fix Report when invoked standalone. Suppress when called as sub-skill inside an L1 orchestrator (cook, team, etc.) — the orchestrator emits a consolidated block. See `docs/references/chain-metadata.md`.
277
+
278
+ ```yaml
279
+ chain_metadata:
280
+ skill: "rune:fix"
281
+ version: "0.9.0"
282
+ status: "[DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED]"
283
+ domain: "[area fixed]"
284
+ files_changed:
285
+ - "[list of modified files]"
286
+ exports:
287
+ fix_applied: { files: ["[paths]"], description: "[what was fixed]" }
288
+ verification: { lint: "[PASS/FAIL]", types: "[PASS/FAIL]", tests: "[PASS/FAIL]" }
289
+ commit_hash: "[hash if committed]"
290
+ suggested_next:
291
+ - skill: "rune:test"
292
+ reason: "[grounded in changes — e.g., 'Modified 3 files in auth module, edge cases need coverage']"
293
+ consumes: ["fix_applied", "verification"]
294
+ ```
295
+
274
296
  ## Sharp Edges
275
297
 
276
298
  Known failure modes for this skill. Check these before declaring done.