@rune-kit/rune 2.3.3 → 2.4.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 (53) hide show
  1. package/README.md +51 -1
  2. package/compiler/__tests__/scripts-bundling.test.js +284 -0
  3. package/compiler/__tests__/tier-override.test.js +41 -0
  4. package/compiler/adapters/antigravity.js +4 -0
  5. package/compiler/adapters/codex.js +4 -0
  6. package/compiler/adapters/cursor.js +4 -0
  7. package/compiler/adapters/generic.js +4 -0
  8. package/compiler/adapters/openclaw.js +4 -0
  9. package/compiler/adapters/opencode.js +4 -0
  10. package/compiler/adapters/windsurf.js +4 -0
  11. package/compiler/emitter.js +85 -5
  12. package/compiler/transforms/scripts-path.js +18 -0
  13. package/extensions/zalo/PACK.md +20 -1
  14. package/extensions/zalo/references/conversation-management.md +214 -0
  15. package/extensions/zalo/references/eval-scenarios.md +157 -0
  16. package/extensions/zalo/references/listen-mode.md +237 -0
  17. package/extensions/zalo/references/mcp-production.md +274 -0
  18. package/extensions/zalo/references/multi-account-proxy.md +224 -0
  19. package/extensions/zalo/references/vietqr-banking.md +160 -0
  20. package/package.json +2 -3
  21. package/skills/marketing/SKILL.md +3 -0
  22. package/skills/sentinel/SKILL.md +4 -1
  23. package/skills/sentinel/references/auth-crypto-reference.md +192 -0
  24. package/skills/sentinel/references/desktop-security.md +201 -0
  25. package/skills/sentinel/references/supply-chain.md +160 -0
  26. package/skills/slides/SKILL.md +142 -0
  27. package/skills/slides/scripts/build-deck.js +158 -0
  28. package/docs/ANTIGRAVITY-GAP-ANALYSIS.md +0 -369
  29. package/docs/ARCHITECTURE.md +0 -332
  30. package/docs/COMMUNITY-PACKS.md +0 -109
  31. package/docs/CONTRIBUTING-L4.md +0 -215
  32. package/docs/CROSS-IDE-ANALYSIS.md +0 -164
  33. package/docs/EXTENSION-TEMPLATE.md +0 -126
  34. package/docs/MESH-RULES.md +0 -34
  35. package/docs/MULTI-PLATFORM.md +0 -804
  36. package/docs/SKILL-DEPTH-AUDIT.md +0 -191
  37. package/docs/SKILL-TEMPLATE.md +0 -118
  38. package/docs/TRADE-MATRIX.md +0 -327
  39. package/docs/VERSIONING.md +0 -91
  40. package/docs/VISION.md +0 -263
  41. package/docs/assets/demo-subtitles.srt +0 -215
  42. package/docs/assets/end-card.html +0 -276
  43. package/docs/assets/mesh-diagram.html +0 -654
  44. package/docs/assets/thumbnail.html +0 -295
  45. package/docs/guides/cli.md +0 -403
  46. package/docs/guides/index.html +0 -1450
  47. package/docs/index.html +0 -1005
  48. package/docs/references/claudekit-analysis.md +0 -414
  49. package/docs/references/voltagent-analysis.md +0 -189
  50. package/docs/script.js +0 -495
  51. package/docs/skills/index.html +0 -832
  52. package/docs/style.css +0 -958
  53. package/docs/video-demo-plan.md +0 -172
@@ -1,295 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Rune Demo — YouTube Thumbnail</title>
6
- <style>
7
- @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@700&family=JetBrains+Mono:wght@700&family=Inter:wght@500;600&display=swap');
8
-
9
- * { margin: 0; padding: 0; box-sizing: border-box; }
10
-
11
- body {
12
- width: 1280px;
13
- height: 720px;
14
- overflow: hidden;
15
- font-family: 'Inter', sans-serif;
16
- }
17
-
18
- .thumbnail {
19
- width: 1280px;
20
- height: 720px;
21
- background: #0a0e17;
22
- position: relative;
23
- display: flex;
24
- }
25
-
26
- /* Left side: terminal mockup */
27
- .terminal-side {
28
- flex: 1;
29
- padding: 40px 20px 40px 50px;
30
- display: flex;
31
- flex-direction: column;
32
- justify-content: center;
33
- position: relative;
34
- z-index: 2;
35
- }
36
-
37
- .terminal {
38
- background: #0d1117;
39
- border: 1px solid #30363d;
40
- border-radius: 12px;
41
- overflow: hidden;
42
- box-shadow: 0 20px 60px rgba(0,0,0,0.5), 0 0 80px rgba(99,102,241,0.1);
43
- max-width: 580px;
44
- }
45
-
46
- .terminal-bar {
47
- background: #161b22;
48
- padding: 10px 16px;
49
- display: flex;
50
- align-items: center;
51
- gap: 8px;
52
- }
53
-
54
- .terminal-dot {
55
- width: 12px;
56
- height: 12px;
57
- border-radius: 50%;
58
- }
59
-
60
- .terminal-dot.red { background: #ff5f57; }
61
- .terminal-dot.yellow { background: #febc2e; }
62
- .terminal-dot.green { background: #28c840; }
63
-
64
- .terminal-title {
65
- color: #7d8590;
66
- font-size: 12px;
67
- margin-left: 8px;
68
- font-family: 'Inter', sans-serif;
69
- }
70
-
71
- .terminal-body {
72
- padding: 20px 24px;
73
- font-family: 'JetBrains Mono', monospace;
74
- font-size: 14px;
75
- line-height: 1.7;
76
- }
77
-
78
- .prompt {
79
- color: #7d8590;
80
- }
81
-
82
- .prompt .path {
83
- color: #58a6ff;
84
- }
85
-
86
- .prompt .arrow {
87
- color: #3fb950;
88
- }
89
-
90
- .cmd {
91
- color: #e6edf3;
92
- font-weight: 700;
93
- }
94
-
95
- .cmd .skill {
96
- color: #d2a8ff;
97
- }
98
-
99
- .output {
100
- color: #7d8590;
101
- margin-left: 0;
102
- font-size: 12.5px;
103
- }
104
-
105
- .output .success {
106
- color: #3fb950;
107
- }
108
-
109
- .output .highlight {
110
- color: #ffa657;
111
- }
112
-
113
- .output .skill-name {
114
- color: #79c0ff;
115
- }
116
-
117
- .output .phase {
118
- color: #d2a8ff;
119
- }
120
-
121
- .line-gap {
122
- height: 8px;
123
- }
124
-
125
- /* Right side: text overlay */
126
- .text-side {
127
- width: 420px;
128
- display: flex;
129
- flex-direction: column;
130
- justify-content: center;
131
- align-items: flex-start;
132
- padding: 50px 50px 50px 30px;
133
- position: relative;
134
- z-index: 2;
135
- }
136
-
137
- .badge {
138
- background: rgba(239, 68, 68, 0.15);
139
- border: 1px solid rgba(239, 68, 68, 0.3);
140
- color: #fca5a5;
141
- font-size: 13px;
142
- font-weight: 600;
143
- padding: 6px 14px;
144
- border-radius: 6px;
145
- margin-bottom: 20px;
146
- letter-spacing: 0.5px;
147
- }
148
-
149
- .hero-number {
150
- font-family: 'Space Grotesk', sans-serif;
151
- font-size: 120px;
152
- font-weight: 700;
153
- color: #f8fafc;
154
- line-height: 0.9;
155
- letter-spacing: -4px;
156
- }
157
-
158
- .hero-label {
159
- font-family: 'Space Grotesk', sans-serif;
160
- font-size: 48px;
161
- font-weight: 700;
162
- color: #f8fafc;
163
- line-height: 1;
164
- margin-top: -4px;
165
- }
166
-
167
- .hero-sub {
168
- font-size: 18px;
169
- color: #94a3b8;
170
- margin-top: 16px;
171
- line-height: 1.5;
172
- font-weight: 500;
173
- }
174
-
175
- .hero-sub .accent {
176
- color: #a5b4fc;
177
- font-weight: 600;
178
- }
179
-
180
- .tagline {
181
- margin-top: 24px;
182
- font-size: 14px;
183
- color: #64748b;
184
- font-style: italic;
185
- letter-spacing: 0.5px;
186
- }
187
-
188
- /* Gradient glow behind */
189
- .bg-glow {
190
- position: absolute;
191
- top: 50%;
192
- left: 50%;
193
- transform: translate(-50%, -50%);
194
- width: 800px;
195
- height: 600px;
196
- background: radial-gradient(ellipse, rgba(99,102,241,0.08) 0%, transparent 60%);
197
- z-index: 1;
198
- pointer-events: none;
199
- }
200
-
201
- .bg-glow-2 {
202
- position: absolute;
203
- top: 20%;
204
- right: 0;
205
- width: 500px;
206
- height: 400px;
207
- background: radial-gradient(ellipse, rgba(239,68,68,0.06) 0%, transparent 60%);
208
- z-index: 1;
209
- pointer-events: none;
210
- }
211
-
212
- /* Logo corner */
213
- .logo {
214
- position: absolute;
215
- bottom: 30px;
216
- right: 40px;
217
- display: flex;
218
- align-items: center;
219
- gap: 10px;
220
- z-index: 3;
221
- }
222
-
223
- .logo-icon {
224
- width: 32px;
225
- height: 32px;
226
- background: linear-gradient(135deg, #ef4444, #6366f1);
227
- border-radius: 8px;
228
- display: flex;
229
- align-items: center;
230
- justify-content: center;
231
- color: white;
232
- font-family: 'Space Grotesk', sans-serif;
233
- font-weight: 700;
234
- font-size: 16px;
235
- }
236
-
237
- .logo-text {
238
- font-family: 'Space Grotesk', sans-serif;
239
- font-size: 20px;
240
- font-weight: 700;
241
- color: #e2e8f0;
242
- letter-spacing: -0.5px;
243
- }
244
- </style>
245
- </head>
246
- <body>
247
-
248
- <div class="thumbnail">
249
- <div class="bg-glow"></div>
250
- <div class="bg-glow-2"></div>
251
-
252
- <!-- Left: Terminal -->
253
- <div class="terminal-side">
254
- <div class="terminal">
255
- <div class="terminal-bar">
256
- <div class="terminal-dot red"></div>
257
- <div class="terminal-dot yellow"></div>
258
- <div class="terminal-dot green"></div>
259
- <span class="terminal-title">~/my-saas-app</span>
260
- </div>
261
- <div class="terminal-body">
262
- <div><span class="prompt"><span class="path">~/app</span> <span class="arrow">$</span></span> <span class="cmd">/rune <span class="skill">cook</span> "add Stripe billing"</span></div>
263
- <div class="line-gap"></div>
264
- <div class="output"><span class="phase">[Phase 1]</span> <span class="skill-name">scout</span> scanning codebase...</div>
265
- <div class="output"><span class="phase">[Phase 2]</span> <span class="skill-name">plan</span> creating implementation steps</div>
266
- <div class="output"><span class="phase">[Phase 3]</span> <span class="highlight">adversary</span> red-teaming plan...</div>
267
- <div class="output"> <span style="color:#ff7b72">! Missing webhook signature check</span></div>
268
- <div class="output"><span class="phase">[Phase 4]</span> <span class="skill-name">test</span> writing failing tests (TDD)</div>
269
- <div class="output"><span class="phase">[Phase 5]</span> <span class="skill-name">fix</span> implementing code...</div>
270
- <div class="output"><span class="phase">[Phase 6]</span> <span class="skill-name">sentinel</span> + <span class="skill-name">review</span> + <span class="skill-name">preflight</span></div>
271
- <div class="output"><span class="success">&#10004; All 8 phases complete. Ready to ship.</span></div>
272
- </div>
273
- </div>
274
- </div>
275
-
276
- <!-- Right: Text -->
277
- <div class="text-side">
278
- <div class="badge">OPEN SOURCE &bull; MIT</div>
279
- <div class="hero-number">57</div>
280
- <div class="hero-label">Skills</div>
281
- <div class="hero-sub">
282
- Turn your AI assistant from a <span class="accent">chatbot</span> into an <span class="accent">engineering team</span>
283
- </div>
284
- <div class="tagline">"Less skills. Deeper connections."</div>
285
- </div>
286
-
287
- <!-- Logo -->
288
- <div class="logo">
289
- <div class="logo-icon">R</div>
290
- <span class="logo-text">Rune</span>
291
- </div>
292
- </div>
293
-
294
- </body>
295
- </html>
@@ -1,403 +0,0 @@
1
- # Rune CLI
2
-
3
- The Rune CLI compiles 55 AI coding skills into any IDE platform. One skill mesh, every editor.
4
-
5
- ---
6
-
7
- ## Quick Start
8
-
9
- **Step 1** -- Install and initialize in your project:
10
-
11
- ```bash
12
- cd your-project
13
- npx @rune-kit/rune init
14
- ```
15
-
16
- Rune auto-detects your platform (Cursor, Windsurf, Antigravity) and compiles skills into the correct format.
17
-
18
- **Step 2** -- Start your AI assistant:
19
-
20
- ```bash
21
- # Cursor / Windsurf / Antigravity / Generic
22
- # Open your editor -- skills are loaded automatically from the rules directory.
23
-
24
- # Claude Code -- no compilation needed, Rune runs as a native plugin:
25
- claude
26
- ```
27
-
28
- **Step 3** -- Verify the setup:
29
-
30
- ```bash
31
- npx @rune-kit/rune doctor
32
- ```
33
-
34
- That's it. 55 skills are now active in your AI assistant.
35
-
36
- > **Pro Tip**: For Claude Code, skip the CLI entirely. Install Rune as a plugin:
37
- > `claude plugin add rune-kit/rune` -- skills load natively with zero compilation.
38
-
39
- ---
40
-
41
- ## Commands
42
-
43
- ### `rune init`
44
-
45
- Interactive setup. Detects your platform, creates `rune.config.json`, and compiles all skills in one step.
46
-
47
- ```bash
48
- npx @rune-kit/rune init
49
- ```
50
-
51
- ```
52
- +----------------------------------------------+
53
- | Rune -- Less skills. Deeper connections. |
54
- +----------------------------------------------+
55
-
56
- -> Detected: cursor
57
- -> Created rune.config.json
58
- -> Built 55 skills + 12 extensions to .cursor/rules/
59
- ```
60
-
61
- **Flags**:
62
-
63
- | Flag | Description | Example |
64
- |------|-------------|---------|
65
- | `--platform <name>` | Override auto-detection | `rune init --platform windsurf` |
66
- | `--extensions <list>` | Enable specific extension packs | `rune init --extensions @rune/ui,@rune/backend` |
67
- | `--disable <skills>` | Disable specific skills | `rune init --disable video-creator,asset-creator` |
68
-
69
- If Claude Code is detected (`.claude-plugin/` exists), init exits early with a message -- no compilation needed.
70
-
71
- ---
72
-
73
- ### `rune build`
74
-
75
- Recompile skills using existing config. Run after updating Rune or changing `rune.config.json`.
76
-
77
- ```bash
78
- npx @rune-kit/rune build
79
- ```
80
-
81
- ```
82
- [parse] Discovering skills...
83
- [transform] Platform: cursor
84
- [transform] Resolved 142 cross-references
85
- [transform] Resolved 87 tool-name references
86
- [emit] 55 skills + 12 extensions
87
-
88
- -> Built 67 files to .cursor/rules/
89
- ```
90
-
91
- **Flags**:
92
-
93
- | Flag | Description | Example |
94
- |------|-------------|---------|
95
- | `--platform <name>` | Override config platform | `rune build --platform windsurf` |
96
- | `--output <dir>` | Override output directory | `rune build --output ../other-project` |
97
- | `--disable <skills>` | Disable specific skills | `rune build --disable trend-scout` |
98
-
99
- > **Pro Tip**: Use `--output` to compile Rune into multiple projects from a single source.
100
-
101
- ---
102
-
103
- ### `rune doctor`
104
-
105
- Validate compiled output. Checks that all skill files exist, cross-references resolve, and config is valid.
106
-
107
- ```bash
108
- npx @rune-kit/rune doctor
109
- ```
110
-
111
- Exits with code 0 if healthy, code 1 if issues found. Useful in CI pipelines.
112
-
113
- **Flags**:
114
-
115
- | Flag | Description |
116
- |------|-------------|
117
- | `--platform <name>` | Override config platform |
118
-
119
- ---
120
-
121
- ### `rune help`
122
-
123
- Show available commands and flags.
124
-
125
- ```bash
126
- npx @rune-kit/rune help
127
- ```
128
-
129
- ---
130
-
131
- ## Platforms
132
-
133
- Rune compiles to 5 platforms. Each gets skills in its native format.
134
-
135
- | Platform | Output Directory | File Format | Detection Marker |
136
- |----------|-----------------|-------------|------------------|
137
- | Claude Code | _(native plugin)_ | `.md` (SKILL.md) | `.claude-plugin/` |
138
- | Cursor | `.cursor/rules/` | `.mdc` | `.cursor/` |
139
- | Windsurf | `.windsurf/rules/` | `.md` | `.windsurf/` |
140
- | Antigravity | `.agent/rules/` | `.md` | `.agent/` |
141
- | Generic | `.ai/rules/` | `.md` | _(fallback)_ |
142
- | OpenClaw | `.openclaw/rune/` | `.md` + manifest | `.openclaw/` |
143
-
144
- ### Claude Code
145
-
146
- Rune is a native Claude Code plugin. No compilation needed.
147
-
148
- ```bash
149
- # Install as plugin (recommended)
150
- claude plugin add rune-kit/rune
151
-
152
- # Or use Rune as a local plugin during development
153
- claude --plugin-dir /path/to/rune
154
- ```
155
-
156
- Skills load directly from `skills/*/SKILL.md`. The CLI detects `.claude-plugin/` and skips compilation:
157
-
158
- ```
159
- -> Claude Code detected -- Rune works as a native plugin. No compilation needed.
160
- ```
161
-
162
- ### Cursor
163
-
164
- Skills compile to `.cursor/rules/*.mdc` (Cursor's rule format).
165
-
166
- ```bash
167
- npx @rune-kit/rune init --platform cursor
168
- ```
169
-
170
- Output: `.cursor/rules/rune-cook.mdc`, `.cursor/rules/rune-plan.mdc`, etc.
171
-
172
- Each skill file gets a Cursor-compatible header with `alwaysApply: false` frontmatter. Cross-references between skills are rewritten to `rune-<skill-name>` format.
173
-
174
- ### Windsurf
175
-
176
- Skills compile to `.windsurf/rules/*.md`.
177
-
178
- ```bash
179
- npx @rune-kit/rune init --platform windsurf
180
- ```
181
-
182
- Output: `.windsurf/rules/rune-cook.md`, `.windsurf/rules/rune-plan.md`, etc.
183
-
184
- ### Antigravity
185
-
186
- Skills compile to `.agent/rules/*.md` (Google Antigravity format).
187
-
188
- ```bash
189
- npx @rune-kit/rune init --platform antigravity
190
- ```
191
-
192
- Output: `.agent/rules/rune-cook.md`, `.agent/rules/rune-plan.md`, etc.
193
-
194
- ### Generic
195
-
196
- Fallback for any AI IDE that reads markdown rules from a directory.
197
-
198
- ```bash
199
- npx @rune-kit/rune init --platform generic
200
- ```
201
-
202
- Output: `.ai/rules/rune-cook.md`, `.ai/rules/rune-plan.md`, etc.
203
-
204
- ### OpenClaw
205
-
206
- Skills compile to an OpenClaw plugin structure with manifest, TypeScript entry point, and skill files.
207
-
208
- ```bash
209
- npx @rune-kit/rune init --platform openclaw
210
- ```
211
-
212
- Output structure:
213
-
214
- ```
215
- .openclaw/rune/
216
- openclaw.plugin.json # Plugin manifest
217
- src/index.ts # register(api) entry point
218
- skills/ # Compiled skill files
219
- rune-cook.md
220
- rune-plan.md
221
- rune-skill-router.md
222
- ...
223
- ```
224
-
225
- After building, add Rune to your OpenClaw config (`openclaw.json`):
226
-
227
- ```json
228
- {
229
- "plugins": {
230
- "load": {
231
- "paths": ["./.openclaw/rune"]
232
- },
233
- "entries": {
234
- "rune": {
235
- "enabled": true
236
- }
237
- }
238
- }
239
- }
240
- ```
241
-
242
- The generated `src/index.ts` registers a `before_agent_start` hook that injects the skill-router instructions, so OpenClaw routes tasks through Rune skills automatically.
243
-
244
- > **Pro Tip**: If you also use the NeuralMemory plugin, Rune coexists with it --
245
- > NeuralMemory occupies the `memory` slot while Rune occupies `skills`.
246
-
247
- ---
248
-
249
- ## Auto-Detection
250
-
251
- When you run `rune init` without `--platform`, Rune checks for these markers in order:
252
-
253
- | Priority | Marker | Platform |
254
- |----------|--------|----------|
255
- | 1 | `.claude-plugin/` | Claude Code (exits early) |
256
- | 2 | `.cursor/` | Cursor |
257
- | 3 | `.windsurf/` | Windsurf |
258
- | 4 | `.agent/` | Antigravity |
259
- | 5 | _(none found)_ | Prompts for selection |
260
-
261
- If no marker is found, Rune shows the available platforms and asks you to choose. Unknown input defaults to `generic`.
262
-
263
- ---
264
-
265
- ## Configuration
266
-
267
- `rune init` creates a `rune.config.json` in your project root:
268
-
269
- ```json
270
- {
271
- "$schema": "https://rune-kit.github.io/rune/config-schema.json",
272
- "version": 1,
273
- "platform": "cursor",
274
- "source": "/path/to/rune",
275
- "skills": {
276
- "disabled": []
277
- },
278
- "extensions": {
279
- "enabled": null
280
- },
281
- "output": {
282
- "index": true
283
- }
284
- }
285
- ```
286
-
287
- | Field | Type | Description |
288
- |-------|------|-------------|
289
- | `platform` | string | Target platform (cursor, windsurf, antigravity, generic) |
290
- | `source` | string | Path to Rune installation (auto-set by init) |
291
- | `skills.disabled` | string[] | Skills to exclude from compilation |
292
- | `extensions.enabled` | string[] or null | Extension packs to include (`null` = all) |
293
- | `output.index` | boolean | Generate index file listing all compiled skills |
294
-
295
- Edit this file directly, then run `rune build` to recompile.
296
-
297
- > **Pro Tip**: Commit `rune.config.json` to your repo so teammates get the same skill configuration.
298
-
299
- ---
300
-
301
- ## Extension Packs
302
-
303
- Rune ships 12 free extension packs (L4 layer). Each adds domain-specific skills.
304
-
305
- | Pack | Skills | Domain |
306
- |------|--------|--------|
307
- | `@rune/ui` | 5 | UI component patterns, design systems |
308
- | `@rune/backend` | 5 | API design, database patterns, auth |
309
- | `@rune/devops` | 7 | CI/CD, Docker, Kubernetes, chaos testing |
310
- | `@rune/mobile` | 5 | React Native, Flutter, mobile UX |
311
- | `@rune/security` | 5 | OWASP, pen testing, threat modeling |
312
- | `@rune/trading` | 7 | Backtesting, quant analysis, market data |
313
- | `@rune/saas` | 5 | Multi-tenancy, billing, onboarding |
314
- | `@rune/ecommerce` | 5 | Cart, checkout, inventory, payments |
315
- | `@rune/ai-ml` | 6 | LLM architecture, prompt patterns, ML ops |
316
- | `@rune/gamedev` | 5 | Game loops, ECS, physics, assets |
317
- | `@rune/content` | 5 | CMS, SEO, content pipelines |
318
- | `@rune/analytics` | 5 | SQL patterns, data validation, dashboards |
319
-
320
- **Enable specific packs**:
321
-
322
- ```bash
323
- npx @rune-kit/rune init --extensions @rune/ui,@rune/backend,@rune/trading
324
- ```
325
-
326
- **Enable all packs** (default):
327
-
328
- ```bash
329
- npx @rune-kit/rune init
330
- # extensions.enabled = null means all packs are included
331
- ```
332
-
333
- **Disable via config**:
334
-
335
- ```json
336
- {
337
- "extensions": {
338
- "enabled": ["@rune/ui", "@rune/backend"]
339
- }
340
- }
341
- ```
342
-
343
- ---
344
-
345
- ## Pro Tips
346
-
347
- **CI Integration** -- Add Rune build to your CI pipeline to keep skills in sync:
348
-
349
- ```yaml
350
- # .github/workflows/rune.yml
351
- - name: Compile Rune skills
352
- run: npx @rune-kit/rune build
353
- - name: Validate output
354
- run: npx @rune-kit/rune doctor
355
- ```
356
-
357
- **Monorepo Setup** -- Compile to multiple packages from one Rune source:
358
-
359
- ```bash
360
- npx @rune-kit/rune build --output packages/frontend --platform cursor
361
- npx @rune-kit/rune build --output packages/backend --platform generic
362
- ```
363
-
364
- **Selective Skills** -- Disable skills you don't need to reduce noise:
365
-
366
- ```bash
367
- npx @rune-kit/rune init --disable video-creator,asset-creator,trend-scout
368
- ```
369
-
370
- **Keep Updated** -- Pull latest skills and recompile:
371
-
372
- ```bash
373
- cd /path/to/rune && git pull
374
- cd /your/project && npx @rune-kit/rune build
375
- ```
376
-
377
- ---
378
-
379
- ## Troubleshooting
380
-
381
- **"No platform configured"** when running `rune build`:
382
- - Run `rune init` first to create `rune.config.json`.
383
-
384
- **"Unknown platform"** during init:
385
- - Check available platforms: `cursor`, `windsurf`, `antigravity`, `generic`.
386
- - Claude Code users don't need the CLI -- install as a plugin instead.
387
-
388
- **Skills not loading in Cursor**:
389
- - Verify files exist in `.cursor/rules/`.
390
- - Check that files have `.mdc` extension.
391
- - Restart Cursor to pick up new rule files.
392
-
393
- **Skills not loading in Windsurf / Antigravity**:
394
- - Verify files exist in the correct rules directory.
395
- - Check that your editor version supports the rules feature.
396
-
397
- **"No rune.config.json found"** when running `rune doctor`:
398
- - Run `rune init` to generate the config file.
399
-
400
- **Build errors on specific skills**:
401
- - Check the error output for the skill name and issue.
402
- - Use `--disable <skill>` to skip problematic skills temporarily.
403
- - Report issues at https://github.com/rune-kit/rune/issues.