@rune-kit/rune 2.3.3 → 2.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/README.md +86 -17
- package/compiler/__tests__/pack-split.test.js +141 -1
- package/compiler/__tests__/parser.test.js +147 -55
- package/compiler/__tests__/scripts-bundling.test.js +283 -0
- package/compiler/__tests__/skill-index.test.js +218 -0
- package/compiler/__tests__/tier-override.test.js +41 -0
- package/compiler/adapters/antigravity.js +71 -53
- package/compiler/adapters/codex.js +4 -0
- package/compiler/adapters/cursor.js +4 -0
- package/compiler/adapters/generic.js +4 -0
- package/compiler/adapters/openclaw.js +4 -0
- package/compiler/adapters/opencode.js +4 -0
- package/compiler/adapters/windsurf.js +4 -0
- package/compiler/bin/rune.js +355 -355
- package/compiler/doctor.js +11 -1
- package/compiler/emitter.js +678 -386
- package/compiler/parser.js +267 -247
- package/compiler/transforms/scripts-path.js +18 -0
- package/extensions/zalo/PACK.md +20 -1
- package/extensions/zalo/references/conversation-management.md +214 -0
- package/extensions/zalo/references/eval-scenarios.md +157 -0
- package/extensions/zalo/references/listen-mode.md +237 -0
- package/extensions/zalo/references/mcp-production.md +274 -0
- package/extensions/zalo/references/multi-account-proxy.md +224 -0
- package/extensions/zalo/references/vietqr-banking.md +160 -0
- package/hooks/hooks.json +12 -0
- package/hooks/intent-router/index.cjs +108 -0
- package/hooks/pre-tool-guard/index.cjs +177 -68
- package/package.json +63 -64
- package/skills/brainstorm/SKILL.md +2 -0
- package/skills/cook/SKILL.md +661 -648
- package/skills/debug/SKILL.md +394 -392
- package/skills/deploy/SKILL.md +2 -0
- package/skills/fix/SKILL.md +283 -281
- package/skills/marketing/SKILL.md +3 -0
- package/skills/onboard/SKILL.md +7 -0
- package/skills/plan/SKILL.md +344 -342
- package/skills/preflight/SKILL.md +362 -360
- package/skills/review/SKILL.md +491 -489
- package/skills/scout/SKILL.md +1 -0
- package/skills/sentinel/SKILL.md +319 -296
- package/skills/sentinel/references/auth-crypto-reference.md +192 -0
- package/skills/sentinel/references/desktop-security.md +201 -0
- package/skills/sentinel/references/supply-chain.md +160 -0
- package/skills/session-bridge/SKILL.md +1 -0
- package/skills/slides/SKILL.md +142 -0
- package/skills/slides/scripts/build-deck.js +158 -0
- package/skills/team/SKILL.md +1 -0
- package/skills/test/SKILL.md +587 -585
- package/skills/verification/SKILL.md +1 -0
- package/skills/watchdog/SKILL.md +2 -0
- package/docs/ANTIGRAVITY-GAP-ANALYSIS.md +0 -369
- package/docs/ARCHITECTURE.md +0 -332
- package/docs/COMMUNITY-PACKS.md +0 -109
- package/docs/CONTRIBUTING-L4.md +0 -215
- package/docs/CROSS-IDE-ANALYSIS.md +0 -164
- package/docs/EXTENSION-TEMPLATE.md +0 -126
- package/docs/MESH-RULES.md +0 -34
- package/docs/MULTI-PLATFORM.md +0 -804
- package/docs/SKILL-DEPTH-AUDIT.md +0 -191
- package/docs/SKILL-TEMPLATE.md +0 -118
- package/docs/TRADE-MATRIX.md +0 -327
- package/docs/VERSIONING.md +0 -91
- package/docs/VISION.md +0 -263
- package/docs/assets/demo-subtitles.srt +0 -215
- package/docs/assets/end-card.html +0 -276
- package/docs/assets/mesh-diagram.html +0 -654
- package/docs/assets/thumbnail.html +0 -295
- package/docs/guides/cli.md +0 -403
- package/docs/guides/index.html +0 -1450
- package/docs/index.html +0 -1005
- package/docs/references/claudekit-analysis.md +0 -414
- package/docs/references/voltagent-analysis.md +0 -189
- package/docs/script.js +0 -495
- package/docs/skills/index.html +0 -832
- package/docs/style.css +0 -958
- package/docs/video-demo-plan.md +0 -172
package/docs/VERSIONING.md
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Versioning Policy
|
|
2
|
-
|
|
3
|
-
> **H2 Document** — Semver policy for Rune core and L4 extension packs.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Core Plugin Versioning
|
|
8
|
-
|
|
9
|
-
The Rune plugin uses semantic versioning (`MAJOR.MINOR.PATCH`):
|
|
10
|
-
|
|
11
|
-
| Version | When to bump | Example |
|
|
12
|
-
|---------|-------------|---------|
|
|
13
|
-
| **PATCH** (`1.0.N`) | Bug fixes, content corrections in SKILL.md | Fixing a wrong command in `verification`, correcting a Sharp Edge |
|
|
14
|
-
| **MINOR** (`1.N.0`) | New features, new connections, new sections added | Adding a new `## Done When` condition, new mesh connection |
|
|
15
|
-
| **MAJOR** (`N.0.0`) | Breaking change to skill interface or output contract | Renaming a skill, changing output format structure, removing a section |
|
|
16
|
-
|
|
17
|
-
**Current version:** `1.0.0` (H1 complete — 40 skills, full mesh, all constraints)
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## What Counts as a Breaking Change?
|
|
22
|
-
|
|
23
|
-
A breaking change is any modification that would cause a **calling skill to fail or produce incorrect output** without code changes on its end.
|
|
24
|
-
|
|
25
|
-
### Breaking (MAJOR bump required)
|
|
26
|
-
- Renaming a skill (e.g., `sentinel` → `security-guard`)
|
|
27
|
-
- Changing the structure of `## Output Format` in a way callers depend on
|
|
28
|
-
- Removing a section that callers parse (e.g., removing `## Calls`)
|
|
29
|
-
- Changing skill layer assignment (L2 → L3 changes invocation context)
|
|
30
|
-
- Removing an existing connection from `## Calls` or `## Called By`
|
|
31
|
-
|
|
32
|
-
### Non-breaking (MINOR or PATCH)
|
|
33
|
-
- Adding new skills (MINOR)
|
|
34
|
-
- Adding new connections (MINOR)
|
|
35
|
-
- Adding `## Sharp Edges`, `## Done When`, or documentation content (PATCH)
|
|
36
|
-
- Fixing incorrect commands or examples (PATCH)
|
|
37
|
-
- Clarifying constraint wording without changing behavior (PATCH)
|
|
38
|
-
- Updating `## Cost Profile` estimates (PATCH)
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Skill API Stability Contract
|
|
43
|
-
|
|
44
|
-
Each skill's **stable API** consists of:
|
|
45
|
-
1. Skill name (used in `## Calls` references across the mesh)
|
|
46
|
-
2. `## Output Format` structure (the contract for calling skills)
|
|
47
|
-
3. Layer assignment (L1/L2/L3)
|
|
48
|
-
4. Required input parameters (documented in `## Executable Steps`)
|
|
49
|
-
|
|
50
|
-
Everything else (Sharp Edges, Done When, Cost Profile, wording improvements) is non-API and can change freely.
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## L4 Extension Pack Versioning
|
|
55
|
-
|
|
56
|
-
L4 packs version independently of the core. Each `PACK.md` has its own `metadata.version`.
|
|
57
|
-
|
|
58
|
-
L4 packs start at `0.1.0` (experimental). When stable:
|
|
59
|
-
- `1.0.0` = skill interface is locked, callers can rely on output format
|
|
60
|
-
- Minor bumps = new skills added to pack (additive, non-breaking)
|
|
61
|
-
- Major bumps = skill renamed, removed, or output format changed
|
|
62
|
-
|
|
63
|
-
**L4 packs MUST NOT change their mesh connection interface (how they connect to L1-L3 core) in a patch release.** Connection changes are at minimum a minor version bump.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Version in SKILL.md Frontmatter
|
|
68
|
-
|
|
69
|
-
Every `SKILL.md` has a `metadata.version` field:
|
|
70
|
-
|
|
71
|
-
```yaml
|
|
72
|
-
metadata:
|
|
73
|
-
version: "0.2.0"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
This tracks the individual skill's version, independent of the plugin version. Use it to:
|
|
77
|
-
- Track which skills have been updated in a release
|
|
78
|
-
- Help users identify if their cached version is outdated
|
|
79
|
-
- Signal to CI that a skill's contract changed
|
|
80
|
-
|
|
81
|
-
**Convention:** When the plugin bumps MAJOR, all skill versions bump to match (e.g., all skills go to `1.0.0`). For MINOR/PATCH, only the modified skills bump.
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Changelog
|
|
86
|
-
|
|
87
|
-
| Version | Date | Summary |
|
|
88
|
-
|---------|------|---------|
|
|
89
|
-
| `0.1.0` | 2026-01-15 | Initial release — 36 core skills (Waves 0-4) |
|
|
90
|
-
| `0.2.0` | 2026-02-10 | Add perf, db, incident, design skills. Behavioral constraints. HARD-GATE pattern. |
|
|
91
|
-
| `1.0.0` | 2026-02-25 | H1 complete — 40 skills, Sharp Edges + Done When on all skills, 0 broken mesh connections |
|
package/docs/VISION.md
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
# Rune Vision
|
|
2
|
-
|
|
3
|
-
> **"Less skills. Deeper connections."**
|
|
4
|
-
>
|
|
5
|
-
> This document is the primary decision-making compass for Rune.
|
|
6
|
-
> When in doubt about a design direction, a new feature, or a skill addition — consult this file first.
|
|
7
|
-
> Last updated: 2026-03-14
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 1. Why Rune Exists
|
|
12
|
-
|
|
13
|
-
The problem is not that developers lack AI tools. The problem is that AI tools behave like interns with amnesia — capable, but stateless, siloed, and unable to hand work off cleanly.
|
|
14
|
-
|
|
15
|
-
Three specific failures motivated Rune:
|
|
16
|
-
|
|
17
|
-
**Failure 1: Isolation.** Most skill ecosystems are collections, not systems. 500+ skills exist that don't know each other. When `debug` finds a root cause, nothing hands that diagnosis to `fix`. The developer becomes the integration layer — which defeats the purpose of AI tooling.
|
|
18
|
-
|
|
19
|
-
**Failure 2: Fragility.** Pipeline-based tools (A→B→C) break at every seam. If B fails, everything stops. There's no mesh, no alternative path, no resilience. One broken step means starting over.
|
|
20
|
-
|
|
21
|
-
**Failure 3: Amnesia.** Each session starts from zero. The AI re-discovers conventions, re-reads the codebase, re-asks questions that were answered two sessions ago. Context dies at the end of every conversation.
|
|
22
|
-
|
|
23
|
-
**Rune's insight:** the value is in the connections, not the nodes. A mesh of 40 well-connected skills outperforms 500 isolated ones. Resilience comes from redundant paths. Memory comes from structured persistence. The goal is not to give developers more AI tools — it's to give them an AI that behaves like a senior engineer who was actually there last week.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 2. What Rune Is
|
|
28
|
-
|
|
29
|
-
Rune is a **skill mesh** — not a skill collection, not a pipeline, not an AI agent framework.
|
|
30
|
-
|
|
31
|
-
**Technical definition:**
|
|
32
|
-
|
|
33
|
-
> **Rune = 59 skills × 200+ bidirectional connections × cross-session memory × multi-platform compiler**
|
|
34
|
-
|
|
35
|
-
All three components are equally essential:
|
|
36
|
-
- Remove connections → becomes a collection (The Bloat wins)
|
|
37
|
-
- Remove memory → becomes a stateless chatbot
|
|
38
|
-
- Remove skills → nothing remains
|
|
39
|
-
|
|
40
|
-
**Rune operates on mesh principles:**
|
|
41
|
-
- Every skill knows who to call when it hits the edge of its scope
|
|
42
|
-
- When a skill fails, the mesh finds an alternate path — it does not stop
|
|
43
|
-
- Skills pass structured output to each other; the developer is not the integration layer
|
|
44
|
-
- Context flows in one direction: L1 holds the full picture, L2 gets a relevant slice, L3 gets a minimal query
|
|
45
|
-
|
|
46
|
-
**Rune serves the complete development lifecycle:** idea → design → code → quality → deploy → rescue. Not a tool for one phase. A system for all of them.
|
|
47
|
-
|
|
48
|
-
**The mesh is the product.** A new skill that doesn't increase connection density is not a Rune skill — it's a feature that happens to live in the same repo.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 3. What Rune Is NOT
|
|
53
|
-
|
|
54
|
-
*This is where The Bloat gets defeated.*
|
|
55
|
-
|
|
56
|
-
**The Bloat** is the persistent temptation to add features that seem useful in isolation but erode Rune's identity as a mesh. The Bloat speaks in reasonable-sounding arguments: *"users would love this"*, *"it only takes 50 lines"*, *"it's just one more skill."* The Bloat is not wrong about usefulness. It is wrong about what Rune is for.
|
|
57
|
-
|
|
58
|
-
### Anti-Goals
|
|
59
|
-
|
|
60
|
-
**Rune is NOT a general-purpose AI assistant.**
|
|
61
|
-
`email-writer`, `meeting-summarizer`, `travel-planner` — these are not development lifecycle skills. They don't connect to the mesh. A user asking Rune to write an email has the wrong mental model of what Rune is. We do not want to correct that mental model by adding email skills; we want to reinforce the correct one.
|
|
62
|
-
|
|
63
|
-
**Rune is NOT a skill marketplace.**
|
|
64
|
-
More skills ≠ more value. The benchmark is not "how many skills does Rune have?" It is "what is the average connection depth of each skill?" A skill with 0 inbound and 0 outbound connections is a dead node. Dead nodes dilute the mesh.
|
|
65
|
-
|
|
66
|
-
**Rune is NOT an IDE or code editor.**
|
|
67
|
-
Rune does not manage files directly, run terminal sessions, or provide a UI. It operates through Claude Code's existing tooling. Rune extends Claude's reasoning — it does not replace the environment.
|
|
68
|
-
|
|
69
|
-
**Rune is NOT a replacement for the developer.**
|
|
70
|
-
Rune amplifies developer judgment, not replaces it. `cook` presents a plan and waits for approval before writing code. `brainstorm` proposes options, not decisions. The developer remains in the loop at every consequential step. Rune without a developer at the helm is half a system.
|
|
71
|
-
|
|
72
|
-
**Rune is NOT a pipeline.**
|
|
73
|
-
`cook` is not a rigid A→B→C→D sequence that fails if one step breaks. It's a mesh-orchestrated workflow where each phase can invoke any skill needed, retry via alternatives, and skip phases that don't apply. If someone tries to build a Rune skill as a strict sequential pipeline with no branching — they've misunderstood the architecture.
|
|
74
|
-
|
|
75
|
-
**Rune is NOT trying to cover every programming language or domain at the core layer.**
|
|
76
|
-
That's what L4 extension packs are for. The core (L1-L3) is language-agnostic. Domain specifics (React patterns, Rust idioms, trading algorithms) belong in L4. Adding language-specific logic to L1-L3 is scope creep disguised as helpfulness.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 4. Design Principles
|
|
81
|
-
|
|
82
|
-
These are the rules that govern every decision in Rune — skill design, connection design, naming, layer assignment, model selection. When two options conflict, these principles break the tie.
|
|
83
|
-
|
|
84
|
-
### P1 — Connection Density Over Feature Count
|
|
85
|
-
|
|
86
|
-
Every new skill must increase the total mesh connection density, not just add a node. Before adding a skill, count its inbound + outbound connections. A skill with fewer than 2 connections is a dead node.
|
|
87
|
-
|
|
88
|
-
**Test:** *"If I remove this skill, how many workflows break?"* If the answer is zero, the skill should not exist.
|
|
89
|
-
|
|
90
|
-
### P2 — Structured Output Is a Contract
|
|
91
|
-
|
|
92
|
-
Skills communicate through structured, predictable output formats — not natural language summaries. A skill's `## Output Format` section is a contract with callers. Changing it is a breaking change. Natural language output that cannot be parsed by a calling skill is a design failure.
|
|
93
|
-
|
|
94
|
-
**Test:** *"Can `cook` consume this skill's output without re-reading the context?"* If no, fix the output format.
|
|
95
|
-
|
|
96
|
-
### P3 — Fail Loud, Route Around
|
|
97
|
-
|
|
98
|
-
When a skill fails, it must fail loudly (specific error, not silent empty output) so the mesh can route around it. Silent failures are the most dangerous failure mode — the calling skill proceeds with incomplete data.
|
|
99
|
-
|
|
100
|
-
**Test:** *"If this skill returns nothing, does the caller know something went wrong?"* If no, add explicit error output.
|
|
101
|
-
|
|
102
|
-
### P4 — Layer Discipline Is Non-Negotiable
|
|
103
|
-
|
|
104
|
-
L3 utilities do not call L1 or L2. L1 orchestrators do not implement business logic directly — they delegate to L2. This is not a suggestion; it's what makes the mesh predictable. Violating layer discipline for "just this one case" introduces coupling that spreads.
|
|
105
|
-
|
|
106
|
-
**Test:** *"Is this skill calling something above its layer?"* If yes, restructure. No exceptions.
|
|
107
|
-
|
|
108
|
-
### P5 — The Mesh Is More Valuable Than Any Single Skill
|
|
109
|
-
|
|
110
|
-
No skill is indispensable. If a skill consistently causes issues (wrong model, bad output format, poor connections), replace or remove it. Protecting a skill because it was hard to build is The Bloat thinking. The mesh's health matters more than any individual node.
|
|
111
|
-
|
|
112
|
-
**Test:** *"Would removing this skill and re-routing its callers make the mesh stronger?"* If yes, remove it.
|
|
113
|
-
|
|
114
|
-
### P6 — Constraints Block Rationalization
|
|
115
|
-
|
|
116
|
-
Behavioral constraints (MUST/MUST NOT rules) exist to prevent the most common AI failure mode: rationalization. The AI will always find a reason to skip a step, abbreviate a check, or declare success without verification. Constraints don't suggest — they block. If a constraint can be argued away, it is not a constraint; it's a guideline.
|
|
117
|
-
|
|
118
|
-
**Test:** *"Can the AI talk itself out of following this constraint?"* If yes, rewrite it to be more specific.
|
|
119
|
-
|
|
120
|
-
### P7 — Cost Is a Feature
|
|
121
|
-
|
|
122
|
-
Model selection is a design decision, not an afterthought. Haiku for scans. Sonnet for code. Opus for architecture and security. Using opus for a file glob is waste. Using haiku for a security audit is negligence. Every skill's `## Cost Profile` is a design constraint, not documentation.
|
|
123
|
-
|
|
124
|
-
**Test:** *"Is this skill using the cheapest model that can do the job correctly?"* If not, downgrade.
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 5. The Skill Addition Filter
|
|
129
|
-
|
|
130
|
-
*Use this checklist every time a new skill is proposed — by the team, by users, or by an AI session that thinks "we should add X."*
|
|
131
|
-
|
|
132
|
-
A proposed skill must pass **all 5 gates** to be added to the core mesh (L1-L3). L4 extension packs have a lighter filter (gates 1 and 5 only).
|
|
133
|
-
|
|
134
|
-
### Gate 1 — Lifecycle Fit
|
|
135
|
-
> Does this skill serve the software development lifecycle?
|
|
136
|
-
|
|
137
|
-
The skill must fit one of these phases: planning, coding, testing, reviewing, deploying, monitoring, rescuing. If it primarily serves a non-development task (communication, content, business ops), it belongs outside Rune's core — possibly as a user's private skill.
|
|
138
|
-
|
|
139
|
-
❌ **Fail example:** `slack-notifier` — communication, not development
|
|
140
|
-
✅ **Pass example:** `audit` — project health assessment, fits the quality phase
|
|
141
|
-
|
|
142
|
-
### Gate 2 — Connection Requirement
|
|
143
|
-
> Does this skill have ≥2 meaningful mesh connections (inbound + outbound combined)?
|
|
144
|
-
|
|
145
|
-
A skill must either call at least one existing skill OR be called by at least two existing skills — and ideally both. Connections must be meaningful (actual data flow), not ceremonial.
|
|
146
|
-
|
|
147
|
-
❌ **Fail example:** `code-formatter` — no inbound, no outbound, pure L3 with 0 connections
|
|
148
|
-
✅ **Pass example:** `audit` — calls `sentinel`, `dependency-doctor`, `autopsy`, `scout`, `journal`; called by `cook`, `launch`
|
|
149
|
-
|
|
150
|
-
### Gate 3 — Non-Redundancy
|
|
151
|
-
> Can this skill's function be achieved by composing 2 existing skills?
|
|
152
|
-
|
|
153
|
-
If yes, add a new workflow to an existing skill instead of creating a new one. Rune's philosophy is deepening connections in existing skills before adding new nodes.
|
|
154
|
-
|
|
155
|
-
❌ **Fail example:** `quick-security-check` — just `sentinel` with fewer checks; redundant
|
|
156
|
-
✅ **Pass example:** `audit` — orchestrates multiple skills into a unified 7-phase report; not achievable by a single existing skill
|
|
157
|
-
|
|
158
|
-
### Gate 4 — Layer Assignment
|
|
159
|
-
> Is the correct layer assignment clear and unambiguous?
|
|
160
|
-
|
|
161
|
-
If it's unclear whether the skill should be L1, L2, or L3 — that's a signal the skill's scope is not well-defined yet. Clarify the scope first.
|
|
162
|
-
|
|
163
|
-
L3 if: stateless, single-purpose, no orchestration
|
|
164
|
-
L2 if: workflow with multiple steps, may call other skills
|
|
165
|
-
L1 if: full lifecycle orchestration, user-facing entry point
|
|
166
|
-
|
|
167
|
-
### Gate 5 — The Removal Test
|
|
168
|
-
> If this skill is removed in 6 months, does the mesh lose something irreplaceable?
|
|
169
|
-
|
|
170
|
-
This test separates essential skills from convenience features. If the skill's absence could be worked around trivially, it's not core.
|
|
171
|
-
|
|
172
|
-
❌ **Fail example:** `git-log-formatter` — convenience wrapper; absence has no workflow impact
|
|
173
|
-
✅ **Pass example:** `sentinel` — no other skill provides security scanning; its absence leaves a critical gap
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## 6. Roadmap Horizons
|
|
178
|
-
|
|
179
|
-
Rune operates on three time horizons. The roadmap is intentionally non-prescriptive about dates — Rune is a solo/small-team project and date-driven roadmaps create pressure to ship The Bloat.
|
|
180
|
-
|
|
181
|
-
### H1 — Consolidation ✅ COMPLETE
|
|
182
|
-
|
|
183
|
-
**Goal:** Make the existing skills excellent before adding more.
|
|
184
|
-
|
|
185
|
-
- Deepen mesh connections: audit every skill's `## Calls` and `## Called By` for accuracy
|
|
186
|
-
- Harden behavioral constraints: identify constraints that can be rationalized away and rewrite them
|
|
187
|
-
- Validate L4 extension packs: ensure all 12 packs have complete, executable `PACK.md` files
|
|
188
|
-
- Publish to Claude Code plugin marketplace
|
|
189
|
-
|
|
190
|
-
**Constraint:** No new L1-L3 core skills until Consolidation is complete. L4 packs are allowed.
|
|
191
|
-
|
|
192
|
-
### H2 — Ecosystem ✅ COMPLETE
|
|
193
|
-
|
|
194
|
-
**Goal:** Make Rune extensible by others without compromising the core mesh.
|
|
195
|
-
|
|
196
|
-
- Community L4 extension packs: documented contribution process, review criteria
|
|
197
|
-
- Plugin versioning: semver for skill APIs so callers don't break on updates
|
|
198
|
-
- Skill testing framework: automated validation of mesh connections and output format contracts
|
|
199
|
-
- `rune:onboard` generates project-specific L4 suggestions based on detected stack
|
|
200
|
-
|
|
201
|
-
**Constraint:** Core mesh (L1-L3) is frozen at ≤49 skills. Growth happens in L4.
|
|
202
|
-
|
|
203
|
-
### H3 — Intelligence ✅ COMPLETE
|
|
204
|
-
|
|
205
|
-
**Goal:** Make the mesh self-aware and self-improving.
|
|
206
|
-
|
|
207
|
-
- ✅ Mesh analytics: `metrics-collector` hook captures skill invocations, `post-session-reflect` flushes to `.rune/metrics/`, `audit` Phase 8 surfaces insights via `/rune metrics`
|
|
208
|
-
- ✅ Adaptive routing: `skill-router` Step 0 reads `.rune/metrics/routing-overrides.json`, `cook` Phase 8 auto-generates overrides from failure patterns
|
|
209
|
-
- ✅ Skill performance metrics: `skills.json` tracks invocations, phase outcomes, quality gate results, debug loops per skill
|
|
210
|
-
- ✅ Community skill sharing: `/rune pack install/list/remove/create` commands, `validate-pack.js` script, `COMMUNITY-PACKS.md` guide, `onboard` discovers installed packs
|
|
211
|
-
|
|
212
|
-
**Implementation**: Zero new L1-L3 skills added. 1 new hook (`metrics-collector`), 3 modified hooks, 4 extended skills (`audit`, `cook`, `skill-router`, `onboard`), 2 new commands (`/rune metrics`, `/rune pack`).
|
|
213
|
-
|
|
214
|
-
**Constraint:** Core mesh expanded to 59 skills (v2.1.0+). Further growth happens in L4 and community packs.
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## 7. Success Metrics
|
|
219
|
-
|
|
220
|
-
*Rune is successful when these are true. Not when the feature list is long.*
|
|
221
|
-
|
|
222
|
-
### Mesh Health
|
|
223
|
-
- **Connection density** ≥ 3.0 connections/skill (currently: 3.4 at 200+ connections / 59 skills) — do not let this drop below 2.5
|
|
224
|
-
- **Dead nodes** = 0 — every skill has ≥1 inbound and ≥1 outbound connection
|
|
225
|
-
- **Max chain depth used** < 6 in practice (ceiling is 8) — if chains regularly hit 8, the mesh needs restructuring
|
|
226
|
-
- **Bloat Index** = 0.00 — dead nodes / total skills
|
|
227
|
-
|
|
228
|
-
### Behavioral Quality
|
|
229
|
-
- **Constraint coverage** = 100% — every skill has a `## Constraints` section
|
|
230
|
-
- **HARD-GATE consistency** — all hard gates use `<HARD-GATE>` XML format, none can be silently bypassed
|
|
231
|
-
- **Output format coverage** = 100% — every skill has a structured `## Output Format`
|
|
232
|
-
|
|
233
|
-
### Developer Experience
|
|
234
|
-
- A developer can go from `/rune onboard` to first working feature with `/rune cook` in one session
|
|
235
|
-
- A developer can pick up work across sessions with zero manual context re-loading (`.rune/` handles it)
|
|
236
|
-
- The most common workflows (`cook`, `debug`, `rescue`) work without reading any documentation
|
|
237
|
-
|
|
238
|
-
### The Bloat Index
|
|
239
|
-
*This is the most important metric.*
|
|
240
|
-
|
|
241
|
-
> **Bloat Index = dead nodes / total skills**
|
|
242
|
-
|
|
243
|
-
Target: **0.00**. If any skill has 0 inbound AND 0 outbound connections, it is dead weight. Review quarterly and remove or reconnect.
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## Appendix: The Bloat's Greatest Hits
|
|
248
|
-
|
|
249
|
-
*A record of feature requests and ideas that The Bloat has whispered — and why they were rejected.*
|
|
250
|
-
|
|
251
|
-
| Proposal | The Bloat's argument | Why rejected |
|
|
252
|
-
|----------|---------------------|--------------|
|
|
253
|
-
| `code-formatter` | "Devs always need formatting" | 0 mesh connections. Use the project's existing linter instead. |
|
|
254
|
-
| `email-writer` | "Devs write emails about their code all the time" | Not a development lifecycle task. Wrong product category. |
|
|
255
|
-
| `quick-fix` | "Sometimes `fix` is overkill" | Redundant. Use `fix` with a narrow scope. Don't duplicate skills. |
|
|
256
|
-
| `explain-code` | "Junior devs need code explained" | Claude's base capability handles this. No mesh value added by wrapping it in a skill. |
|
|
257
|
-
| `changelog-generator` | "Every project needs changelogs" | `journal` + `session-bridge` + a git log command covers this. Non-core. |
|
|
258
|
-
|
|
259
|
-
*When The Bloat returns with a new proposal — and it will — add it here with the rejection reason. This log is part of the VISION.*
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
*This document is a living compass, not a frozen spec. Update it when Rune's direction genuinely shifts — not to justify a decision already made.*
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
1
|
|
2
|
-
00:00:00,000 --> 00:00:04,000
|
|
3
|
-
You're debugging for the 4th time.
|
|
4
|
-
Claude keeps suggesting the same fix.
|
|
5
|
-
|
|
6
|
-
2
|
|
7
|
-
00:00:04,000 --> 00:00:06,500
|
|
8
|
-
Same loop. Same frustration.
|
|
9
|
-
|
|
10
|
-
3
|
|
11
|
-
00:00:06,500 --> 00:00:08,000
|
|
12
|
-
What if your AI assistant had a
|
|
13
|
-
structured workflow that actually worked?
|
|
14
|
-
|
|
15
|
-
4
|
|
16
|
-
00:00:08,000 --> 00:00:12,000
|
|
17
|
-
This is Rune — a 57-skill mesh
|
|
18
|
-
that turns your AI coding assistant
|
|
19
|
-
|
|
20
|
-
5
|
|
21
|
-
00:00:12,000 --> 00:00:15,000
|
|
22
|
-
from a chatbot into
|
|
23
|
-
an engineering team.
|
|
24
|
-
|
|
25
|
-
6
|
|
26
|
-
00:00:15,000 --> 00:00:18,000
|
|
27
|
-
It works on Claude Code, Cursor,
|
|
28
|
-
Windsurf, and Antigravity.
|
|
29
|
-
|
|
30
|
-
7
|
|
31
|
-
00:00:18,000 --> 00:00:20,000
|
|
32
|
-
Let me show you.
|
|
33
|
-
|
|
34
|
-
8
|
|
35
|
-
00:00:20,000 --> 00:00:22,000
|
|
36
|
-
Install takes 10 seconds.
|
|
37
|
-
|
|
38
|
-
9
|
|
39
|
-
00:00:22,000 --> 00:00:27,000
|
|
40
|
-
claude plugin install rune-kit/rune
|
|
41
|
-
|
|
42
|
-
10
|
|
43
|
-
00:00:27,000 --> 00:00:30,000
|
|
44
|
-
57 skills loaded.
|
|
45
|
-
|
|
46
|
-
11
|
|
47
|
-
00:00:30,000 --> 00:00:34,000
|
|
48
|
-
For Cursor or Windsurf, one command
|
|
49
|
-
compiles all skills into your IDE's format.
|
|
50
|
-
|
|
51
|
-
12
|
|
52
|
-
00:00:34,000 --> 00:00:40,000
|
|
53
|
-
npx --yes @rune-kit/rune init
|
|
54
|
-
--platform cursor
|
|
55
|
-
|
|
56
|
-
13
|
|
57
|
-
00:00:40,000 --> 00:00:44,000
|
|
58
|
-
First thing — let Rune
|
|
59
|
-
understand your project.
|
|
60
|
-
|
|
61
|
-
14
|
|
62
|
-
00:00:44,000 --> 00:00:47,000
|
|
63
|
-
/rune onboard
|
|
64
|
-
|
|
65
|
-
15
|
|
66
|
-
00:00:47,000 --> 00:00:52,000
|
|
67
|
-
Rune scans your codebase, detects
|
|
68
|
-
your stack, and creates context files
|
|
69
|
-
|
|
70
|
-
16
|
|
71
|
-
00:00:52,000 --> 00:00:57,000
|
|
72
|
-
that persist across sessions.
|
|
73
|
-
No more re-explaining your project.
|
|
74
|
-
|
|
75
|
-
17
|
|
76
|
-
00:00:57,000 --> 00:01:00,000
|
|
77
|
-
Now let's debug.
|
|
78
|
-
|
|
79
|
-
18
|
|
80
|
-
00:01:00,000 --> 00:01:04,000
|
|
81
|
-
Users report login returns 401
|
|
82
|
-
for valid credentials.
|
|
83
|
-
|
|
84
|
-
19
|
|
85
|
-
00:01:04,000 --> 00:01:08,000
|
|
86
|
-
/rune debug "login returns 401
|
|
87
|
-
for valid credentials"
|
|
88
|
-
|
|
89
|
-
20
|
|
90
|
-
00:01:08,000 --> 00:01:14,000
|
|
91
|
-
Rune's debug skill traces the code path,
|
|
92
|
-
finds the root cause —
|
|
93
|
-
|
|
94
|
-
21
|
|
95
|
-
00:01:14,000 --> 00:01:18,000
|
|
96
|
-
an expired JWT secret rotation —
|
|
97
|
-
and hands it to fix.
|
|
98
|
-
|
|
99
|
-
22
|
|
100
|
-
00:01:18,000 --> 00:01:22,000
|
|
101
|
-
Fix writes the code change.
|
|
102
|
-
Verification runs automatically.
|
|
103
|
-
|
|
104
|
-
23
|
|
105
|
-
00:01:22,000 --> 00:01:26,000
|
|
106
|
-
Lint pass. Typecheck pass.
|
|
107
|
-
Tests pass.
|
|
108
|
-
|
|
109
|
-
24
|
|
110
|
-
00:01:26,000 --> 00:01:30,000
|
|
111
|
-
Fixed. Verified. One command.
|
|
112
|
-
|
|
113
|
-
25
|
|
114
|
-
00:01:30,000 --> 00:01:34,000
|
|
115
|
-
Now let's build something.
|
|
116
|
-
Add Stripe billing to our SaaS app.
|
|
117
|
-
|
|
118
|
-
26
|
|
119
|
-
00:01:34,000 --> 00:01:40,000
|
|
120
|
-
/rune cook "add Stripe subscription
|
|
121
|
-
billing with plan management"
|
|
122
|
-
|
|
123
|
-
27
|
|
124
|
-
00:01:40,000 --> 00:01:46,000
|
|
125
|
-
Cook activates: scout scans the codebase,
|
|
126
|
-
detects the @rune/saas extension pack.
|
|
127
|
-
|
|
128
|
-
28
|
|
129
|
-
00:01:46,000 --> 00:01:50,000
|
|
130
|
-
Plan creates implementation steps.
|
|
131
|
-
|
|
132
|
-
29
|
|
133
|
-
00:01:50,000 --> 00:01:56,000
|
|
134
|
-
See that? Before writing a single line
|
|
135
|
-
of code, Rune's adversary skill
|
|
136
|
-
|
|
137
|
-
30
|
|
138
|
-
00:01:56,000 --> 00:02:00,000
|
|
139
|
-
red-teams the plan. Found a missing
|
|
140
|
-
webhook security check.
|
|
141
|
-
|
|
142
|
-
31
|
|
143
|
-
00:02:00,000 --> 00:02:04,000
|
|
144
|
-
Plan updated. User approves.
|
|
145
|
-
|
|
146
|
-
32
|
|
147
|
-
00:02:04,000 --> 00:02:08,000
|
|
148
|
-
Test writes failing tests first.
|
|
149
|
-
TDD from the start.
|
|
150
|
-
|
|
151
|
-
33
|
|
152
|
-
00:02:08,000 --> 00:02:12,000
|
|
153
|
-
Fix implements the code.
|
|
154
|
-
Preflight, sentinel, and review
|
|
155
|
-
|
|
156
|
-
34
|
|
157
|
-
00:02:12,000 --> 00:02:15,000
|
|
158
|
-
run quality checks in parallel.
|
|
159
|
-
|
|
160
|
-
35
|
|
161
|
-
00:02:15,000 --> 00:02:19,000
|
|
162
|
-
8 phases. TDD. Security scan.
|
|
163
|
-
Code review.
|
|
164
|
-
|
|
165
|
-
36
|
|
166
|
-
00:02:19,000 --> 00:02:22,000
|
|
167
|
-
All orchestrated automatically.
|
|
168
|
-
|
|
169
|
-
37
|
|
170
|
-
00:02:22,000 --> 00:02:26,000
|
|
171
|
-
This isn't a list of
|
|
172
|
-
independent tools. It's a mesh.
|
|
173
|
-
|
|
174
|
-
38
|
|
175
|
-
00:02:26,000 --> 00:02:30,000
|
|
176
|
-
When debug can't find the cause,
|
|
177
|
-
it escalates to problem-solver.
|
|
178
|
-
|
|
179
|
-
39
|
|
180
|
-
00:02:30,000 --> 00:02:34,000
|
|
181
|
-
When cook hits a wall 3 times,
|
|
182
|
-
it pivots to brainstorm.
|
|
183
|
-
|
|
184
|
-
40
|
|
185
|
-
00:02:34,000 --> 00:02:38,000
|
|
186
|
-
When sentinel finds a vulnerability,
|
|
187
|
-
it blocks the commit.
|
|
188
|
-
|
|
189
|
-
41
|
|
190
|
-
00:02:38,000 --> 00:02:42,000
|
|
191
|
-
57 skills. 200+ connections.
|
|
192
|
-
They talk to each other
|
|
193
|
-
|
|
194
|
-
42
|
|
195
|
-
00:02:42,000 --> 00:02:45,000
|
|
196
|
-
so you don't have to.
|
|
197
|
-
|
|
198
|
-
43
|
|
199
|
-
00:02:45,000 --> 00:02:48,000
|
|
200
|
-
Rune is free and open source.
|
|
201
|
-
MIT license.
|
|
202
|
-
|
|
203
|
-
44
|
|
204
|
-
00:02:48,000 --> 00:02:52,000
|
|
205
|
-
claude plugin install rune-kit/rune
|
|
206
|
-
|
|
207
|
-
45
|
|
208
|
-
00:02:52,000 --> 00:02:55,000
|
|
209
|
-
Or for any IDE:
|
|
210
|
-
npx --yes @rune-kit/rune init
|
|
211
|
-
|
|
212
|
-
46
|
|
213
|
-
00:02:55,000 --> 00:03:00,000
|
|
214
|
-
Less skills. Deeper connections.
|
|
215
|
-
Link in description.
|