Sandbox
@Rune-kit/rune

Skill mesh plugin for Claude Code and Codex

Rune packages a connected skill ecosystem for AI coding assistants. Instead of isolated prompts, it uses many small agents, hooks, and rules that can call each other and share signals, so work can move through a structured workflow.

86 stars26 forksJavaScriptUpdated 1mo ago
Who it's for

Builders who want their agent to use reusable skills, route work through subagents, and follow a consistent workflow.

What it delivers

You can run larger agent-led tasks with more structure, better handoffs, and fewer re-explanations.

What it does

Connected skill mesh

67 skills are linked through explicit outbound calls and acknowledgements, so the system can route work across related skills instead of treating each one as isolated.

Many role-based agents

The `agents/` directory contains task-specific agents such as `coder`, `review`, `research`, `design`, `test`, `deploy`, and `verification`.

Plugin packaging for multiple runtimes

The repo includes native plugin manifests for Claude Code and Codex in `.claude-plugin/` and `.codex-plugin/`.

Workflow and guardrail docs

Docs such as `docs/SKILLS.md`, `docs/MESH-RULES.md`, `docs/HOOKS.md`, and `CLAUDE.md` define how the mesh behaves and how tasks should flow.

Compiler and validation layer

The `compiler/` directory contains parser, transformer, emitter, status, doctor, and visualizer code used to build and check the mesh.

Evals and extensions

`evals/` contains benchmark and validation sets, and `extensions/` groups domain packs for different kinds of work.

How to get it

  1. 1After installing Rune, run the wizard once to wire native hooks and platform-compiled…
    npx @rune-kit/rune setup
  2. 2Non-interactive mode (CI / scripted)
    npx @rune-kit/rune setup --here --platform codex --preset gentle --tier pro
    npx @rune-kit/rune setup --here --platform all --preset strict --tier pro,business
    npx @rune-kit/rune setup --here --no-tier --dry      # preview without writing
  3. 3Run
    # Install via Claude Code CLI
    claude plugin add rune-kit/rune
  4. 4Run
    # From the project that should receive Rune
    npx @rune-kit/rune setup --here --platform codex
    
    # Paid tiers are compiled through the Codex adapter too
    npx @rune-kit/rune setup --here --platform codex --tier pro,business
  5. 5Run
    # Compile Rune skills for your platform
    npx @rune-kit/rune init
    
    # Or specify platform explicitly
    npx @rune-kit/rune init --platform cursor
    npx @rune-kit/rune init --platform windsurf
    npx @rune-kit/rune init --platform antigravity

README

Rune — Skill Mesh for AI Coding Assistants

Less skills. Deeper connections.
A lean, interconnected skill ecosystem for AI coding assistants.
67 skills · 248 connections · 46 signals · 13 platforms · MIT

Landing Page Rune Pro $49 Rune Business $149 Telegram Updates

Claude Code (native plugin) · Cursor · Windsurf · Google Antigravity · OpenAI Codex · OpenCode · Aider · GitHub Copilot CLI · Gemini CLI · Qoder · Qwen Coder · any AI IDE

Why Rune?

Most skill ecosystems are either too many isolated skills (540+ that don't talk to each other) or rigid pipelines (A → B → C, if B fails everything stops).

Rune is a mesh — 67 skills with 248 connections + 46 signals across a 5-layer architecture. Every declared outbound call is acknowledged by its target, forming resilient workflows that adapt when things go wrong.

Pipeline:  A → B → C → D         (B fails = stuck)
Hub-Spoke: A → HUB → C           (HUB fails = stuck)
Mesh:      A ↔ B ↔ C             (B fails = A reaches C via D→E)
           ↕       ↕
           D ↔ E ↔ F

Benchmark: With Rune vs Without Rune

We ran 10 standardized coding tasks on Claude Code — once without Rune (vanilla), once with Rune — and measured tokens, cost, duration, and correctness.

Headline Results

                Without Rune    With Rune     Delta
Avg Tokens:     541,400         454,491       ↓ 16%
Avg Cost:       $0.69           $0.65         ↓ 6%
Avg Duration:   2.3 min         2.1 min       ↓ 9%
Avg Tool Calls: 14              13            ↓ 7%
Correctness:    9/10            9/10          =

Where Rune Shines: Complex Tasks

TaskDifficultyTokensCostDurationTools
Refactor 450-line componentMedium-62%-17%-32%-27%
Full feature (auth + API + tests)Complex-36%-29%-31%-27%
Add Zod validationEasy-9%-28%-32%0%
Dark mode across 6 componentsHard~0%+10%-7%-6%

Rune doesn't make Claude smarter — Claude already knows how to code. Rune makes Claude disciplined. The more complex the task, the more discipline matters.

"Without Rune, Claude writes code that works. With Rune, Claude writes code that lasts."

Full 10-task breakdown
#TaskDiffTokensCostTimeCorrect
1Zod ValidationEasy-9%-28%-32%✅ → ✅
2Fix N+1 QueryEasy+12%+25%+3%❌ → ❌
3Cursor PaginationMed+12%+19%-9%✅ → ✅
4Security ReviewMed+13%+32%+3%✅ → ✅
5Rate LimitingMed+12%+5%+5%✅ → ✅
6Refactor ComponentMed-62%-17%-32%✅ → ✅
7Dark Mode (6 files)Hard~0%+10%-7%✅ → ✅
8DB MigrationHard+52%+11%+49%✅ → ✅
9Memory Leak DebugHard+13%+28%-2%✅ → ✅
10Full Auth SystemComplex-36%-29%-31%✅ → ✅

Methodology: Claude Code CLI headless mode (claude -p --output-format json), 10 tasks with fixture code, pattern-based correctness evaluation. Source: Benchmark/


Level Up: Rune Pro

Rune Pro — Autopilot + Context Intelligence · $49 lifetime

Free gives the agent discipline. Pro adds two capabilities the free tier does not:

  • Autopilot — approve a plan once and walk away. It executes each phase autonomously (self-reviews with zero-HIGH gates, regression-checks against baselines, commits per phase) and resumes across sessions. cook gets the job done; autopilot gets it done while you sleep.
  • Context Intelligence — a live context cockpit with real %, active mesh layer, cost, and predictive compaction timing. Claude Code hosts the executable statusline natively; Codex uses its built-in footer plus the full Pro watcher/HUD. Hooks save decisions and progress to .rune/ before compaction.

Plus 9 domain packs (product, sales, data-science, support, growth, media, personal-brand, ecommerce, vietnam). $49 lifetime, one-time — no subscription.

Unlock Rune Pro Pricing


What's New (v2.32.0 — Drawing the Mesh)

v2.32.0 (2026-08-16): Rune can finally draw. A new diagram skill (media group) renders editorial architecture, flowchart, sequence, state, ER, and swimlane figures as self-contained HTML/SVG — inline CSS, inline SVG, no Mermaid renderer, no remote images. v0.1 shipped ten visual types, seven semantic patterns (fan-in queues, attempt stage frameworks, unbroken policy traces…), a 9-node complexity budget, mandatory orthogonal connectors, and a machine-checked geometry gate (self_check.py + verify_geometry.py). v0.2 added extract-then-redraw for Mermaid sources (.mmd/fenced blocks) behind a hard trust boundary — labels are inert data, never instructions — with exit codes that make parse/usage/integrity failures checkable. v0.3 added loop, layers, data-flow, process, and routing of seven semantic patterns onto layout types; status is always text (PASS/FAIL/BLOCKED), never color-only. ba, scout, docs, slides, and sentinel now offer diagram as suggested_next, and docs hands off with an explicit rune:diagram reference — the mesh is now 67 core skills / 248 connections with a clean orphan gate. Separately, the quarantine hook was silently mute: registered async: true, which Claude Code never lets inject additionalContext; it is now synchronous and block reasons actually reach the model. 1,659 tests.

Previous (v2.31.0 — Measured, Not Grepped)

v2.31.0 (2026-08-01): Three checks that passed without measuring anything, and two motion rules that were confidently wrong. review and preflight checked that prefers-reduced-motion appeared in a file — but a guard existing is not the finding. They now catch the failures that grep clean: a dead branch where if (reduced) return runs before the end-state helper, one-shot matchMedia with no change listener, duration: 0 on sequence-as-content, 0s while something awaits transitionend, and JS timelines (GSAP/Motion/Lenis) that a CSS media query cannot stop. MOTION-CRAFT §10 is now role-first — is the sequence the content, or is it decorating a result that exists either way? — with four reduce strategies instead of "fewer and gentler". Two motion rules were fixed outright: ease-in is wrong on arrival but right on departure and falling, and easing chosen by name says nothing about whether a large rotation strobes — peak = maxSlope × travel / duration against a ~30°/frame ceiling, so a 360° turn needs ~1050ms on ease-out-expo (slope 5.26) and ~365ms on a sine-ish curve (1.82). New §14 SVG motion mechanics covers user units vs screen pixels, pathLength, per-instance ids, and the six SVGO plugins that destroy an animated SVG at build time. Finally, completion-gate gains rule 6 — a tool that measured nothing promotes nothing: "no difference found" and "no measurement taken" are the same output, so a null result promotes a claim to OBSERVED only once the instrument is shown capable of returning something else, and verification now requires every clean result to carry the size of what it examined. 1,653 tests.

Earlier (v2.30.3 — Say What You Mean)

v2.30.3 (2026-07-29): Claude Code 2.1.218 changed context: fork to run in the background by default (opt out with background: false), and six Rune skills were relying on the old default without saying so — cook, team, launch, rescue (every L1 orchestrator), plus scout and docs-seeker. A background fork reports back as a task notification instead of returning in-line, which silently breaks any caller that needs the result: cook waiting on scout is exactly that shape, and it fails looking like the sub-step did nothing. All six now declare background: false, and validate-skills.js fails on any fork skill that leaves it unstated — writing that gate is what surfaced four of the six. Measured honestly: on 2.1.220 in headless mode a 12-second fork returned in-line either way, so this removes a dependency on an unstated default the vendor has announced changing, rather than fixing a reproduced break. 1,653 tests.

Earlier (v2.30.2 — Blocked, With a Reason)

v2.30.2 (2026-07-29): Finishes the hook I/O sweep, plus the fault that sweep uncovered. Claude Code shows the model only stderr for an exit-2 block, and pre-tool-guard explained itself on stdout — so a blocked read surfaced as hook error: […]: No stderr output. The block worked; the model just never learned why, and could only guess whether to stop or route around it. New emitBlock() writes the reason to stderr (Claude Code) and the envelope to stdout (Codex), then exits 2 — verified end-to-end by the model quoting the reason back. Three hooks v2.30.1 missed are also fixed: quarantine hand-built its envelope and shipped it with process.stdout.write right before process.exit(0), while auto-format and typecheck printed bare console.log with no envelope at all (unflushed on Claude Code, rejected outright by Codex). Two new repo-wide gate tests — no hook writes stdout directly, no hook reads stdin asynchronously — so a new hook cannot reintroduce either. 1,651 tests.

Earlier (v2.30.1 — Hooks That Land)

v2.30.1 (2026-07-29): Five hooks had been running, exiting 0, and reaching nobody — nothing logged an error, so the hook layer looked healthy while contributing nothing. Two independent faults, each fatal on its own: process.stdout.write from an exit handler is not guaranteed to reach a piped stdout (most hooks emit via captureConsole, which flushes on exit — the envelope was built, "written", and lost; now fs.writeSync(1, …)), and a hook that collects stdin with an async listener has its stdout discarded by Claude Code even when the write is synchronous (new hooks/lib/hook-stdin.cjs reads with readFileSync(0); intent-router, context-watch, metrics-collector, pre-tool-guard, quarantine converted). Both isolated by differential test — identical hooks, one variable at a time — and confirmed by the model quoting hook-injected context back. Separately, intent-router never had an index to read: skill-index.json is emitted at build time and Claude Code doesn't compile, so all five candidate paths were missing and it exited silently on every prompt since it shipped. New scripts/build-skill-index.js generates it at the plugin root with a --check staleness gate in CI. It was also registered "async": true, which drops additionalContext outright. 1,649 tests.

Earlier (v2.30.0 — Tier Restored)

v2.30.0 (2026-07-29): Rune's model tier table had quietly stopped applying on Claude Code, and had been wrong in 23 of 66 places for longer than that. agents/*.md is a hand-written parallel copy of each skill's tier; nothing generated it from skills/ and no check compared the two, so they drifted — cook said opus in one file and sonnet in the other, verification said sonnet and haiku. skills/*/SKILL.md is now the single source of truth, every pair agrees, and a new validateAgentSync gate fails CI on any future drift, alongside a model-split check and a warning for a top-level model that cannot take effect. Where the two disagreed the tier was decided by role, with one rule overriding both old values: a gate never runs below sonnetcompletion-gate, constraint-check, integrity-check, hallucination-guard, and verification exist to catch unverified claims, so running them cheaper than the agent they audit defeats the point. Separately: tiering only ever applied through spawned subagents, and on Opus 5 the harness tells the model not to spawn them unless asked — so every tier assignment had become a silent no-op. scout and docs-seeker now declare context: fork + model: haiku and route through the Skill tool instead; verified end-to-end on Opus 5 by per-model billing showing claude-haiku-4-5. cook deliberately declares no model — an orchestrator inherits the session model, because choosing Opus for a session is a deliberate act. 1,647 tests.

Earlier (v2.29.1 — One-Command Update)

v2.29.1 (2026-07-24): v2.29.0 documented the update flow; this release automates it. New rune update command — one-shot updater for an already-configured project: git pull --ff-only any detected Pro/Business tier repos (env var → sibling dir, same detection as setup; a failed pull aborts loudly, never a silent half-update), re-runs the managed setup rewrite in place non-interactively (your installed platforms, preset, and tiers are detected from the existing hook config — no prompts), then verifies with doctor + hook drift and reminds Codex users to re-trust /hooks only when .codex/hooks.json actually changed. Flags: --no-pull, --preset, --tier, --dry. Plus: "Updating" sections in all three tier READMEs. Docs-and-CLI patch — no skill or mesh changes. 1,641 tests.

Earlier (v2.29.0 — Codex Native)

v2.29.0 (2026-07-23): Codex stops being a compile target that happens to work and becomes a first-class native runtime. The Codex adapter now emits everything current Codex supports natively — .agents/skills/, project-scoped agent TOML (.codex/agents/rune-{heavy,standard,fast}.toml), a dedicated synchronous hook adapter targeting .codex/hooks.json (Codex silently skips async handlers), MCP config, and tier-aware compilation so Free/Pro/Business stacks resolve exactly as on Claude Code. The mesh validator was fixed at the root — Calls (outbound) is now the single authoritative edge inventory, acknowledged by the target's Called By — moving the canonical count from 209 to 248 connections (same mesh, honest count; doctor now fails CI on any stale claim). Doctor also grew a cross-tier audit: Business metadata (28 pack skills, 4 orchestrators), $149 pricing, 13-platform count, and JSON-schema validation of the new docs/config-schema.json + hooks manifest schema. All XLabs remote-MCP references now go through XLABS_MCP_TOKEN — plaintext bearer values are forbidden. 1,615 tests pass.

Earlier (v2.28.0 — Reasoner's Blind Spots)

v2.28.0 (2026-07-22): Completes the reasoning wave. Every addition targets one failure class: a check that feels done because the model re-read its own work and agreed with itself. problem-solver (v0.6.0) gains a model failure-mode table beside its human-bias table — pattern-match satisfaction, template hijack, fluent≠true, prior-as-fact, completion pressure, surface blindness — plus three tells that you are inside one right now (instant confident answer; a stated detail your draft never used; two failed attempts in the same framing). verification (v0.8.0) gains the Constraint Loop for deliverables carrying a mechanically checkable constraint on their own surface form (banned characters, exact counts, strict formats) — a class Rune had no coverage for: expand the constraint before drafting, verify with a tool, re-scan the whole artifact, ship byte-for-byte. design (v0.9.0) gains render blindness — a checklist item ticked from source is a prediction, and the imagined render is always flattering; visual items are marked 👁 and are ticked from a render or marked ASSUMED. Advisory throughout, no new skills.

Earlier (v2.27.0 — Calibrated Output)

v2.27.0 (2026-07-22): Rune had one opinion about response shape — caveman, optimising token count — and no rule for what a style may not compress. That gap had teeth: caveman's "hedging dies" list auto-activates at ORANGE/RED context and deleted phrases like "I'm assuming the migration ran", promoting an unverified claim into observed grammar at exactly the point in a session where the agent is most likely to be wrong. New output-mode layer (context-engine) holds every mode behind one activation contract and a five-rule precedence list — shape is negotiable, substance is not: calibration > evidence > a skill's ## Output Format > safety > actionability > economy. New actionable mode optimises distance-to-doing (next action first, steps numbered, position restated each turn) and stacks with caveman. New claim discipline in completion-gate types every load-bearing statement OBSERVED / DERIVED / PRIOR / ASSUMED — hallucination is an unverified claim wearing the grammar of an observation — and adds a DECLARED verdict so an honest hedge is recorded as an open item, never scored as a lie.

Earlier (v2.26.2 — Hook Output Contract)

v2.26.2 (2026-07-22): The other half of the Codex wiring fix — v2.26.1 made the hook matchers fire, this makes the hooks succeed. Codex parses hook stdout as JSON and reports anything else as hook: <Event> Failed, discarding the output; Rune's hooks printed bare [Rune: ...] lines, so every hook that loaded on Codex ran, exited 0, and had its output thrown away. Hooks now emit the envelope both runtimes accept — hookSpecificOutput.additionalContext for context events, systemMessage otherwise — which is Claude Code's documented contract too, not a Codex branch. Verified live against codex-cli 0.145: the same hook goes SessionStart FailedSessionStart Completed.

Earlier (v2.26.1 — Codex Wiring)

v2.26.1 (2026-07-22): Rune's runtime hooks were silently inert on Codex CLI. hooks/hooks.json is loaded by both Claude Code and Codex — Codex reads <plugin>/hooks/hooks.json, the same path, and maps the event names — but every tool matcher named only Claude's tools. Codex has no Read, Write, Edit or Bash tool; it issues shell_command, exec, apply_patch, view_image, spawn_agent. So the privacy gate and the secret scanner matched nothing and never fired. Matchers now name both platforms' tools (plain alternation — Claude behaviour is byte-for-byte unchanged), and pre-tool-guard reads the target path out of a Codex apply_patch payload (*** Update File: <path>), which is what makes it an actual gate there instead of a no-op. Codex skips async hooks; current releases therefore ship a separate synchronous hooks/codex-hooks.json through the native Codex plugin manifest.

Earlier (v2.26.0 — Motion Craft)

v2.26.0 (2026-07-18): Rune's UI mesh gains a deep motion authority. New reference skills/design/MOTION-CRAFT.md is the canonical source for animation decisions: the should-it-animate frequency gate (never animate keyboard/100+-per-day actions), easing decision tree with strong custom curves, per-element duration budgets (UI under 300ms, modals/drawers exempt to 500ms), physicality rules (never scale(0), origin-aware popovers, press feedback), spring physics (damping/response, velocity handoff, momentum projection, rubber-banding), interruptibility (transitions vs keyframes, @starting-style), motion performance, reduced-motion, and a reverse-lookup vocabulary glossary. design (v0.8.0) loads it whenever a domain involves motion and gains an advisory motion-audit mode. review (v1.5.0) adds Motion Craft Checks — an advisory lens that fires only on motion diffs, flagging ease-in on UI, scale(0) entrances, animation on high-frequency actions, layout-property animation, and more, citing MOTION-CRAFT for exact fixes. perf (v0.6.0) adds Step 5.5 Motion Performance — GPU-property, Framer-Motion-shorthand, and recalc-storm detection ranked in the Cost Impact Hierarchy. Advisory-first throughout (no new HARD-GATEs) — enrichment only, mesh unchanged at 66 skills.

Earlier (v2.25.0 — Council)

v2.25.0 (2026-07-11): New council L3 primitive — genuinely decorrelated multi-perspective gathering. Detects installed AI CLIs, fans a question across distinct model families (external CLIs when present, subagents when not), gates off-topic/malformed voices, normalizes claims (anchor-first + shared-evidence arbiter fallback — prose similarity never counts), and arbitrates inline with an honest NO_DECORRELATION stamp when fewer than 2 real model families answered. Wired into 4 consumers: adversary (CRITICAL-tier plans), review (high-blast-radius diffs), brainstorm (Design-It-Twice candidate judgment), problem-solver (high-stakes conclusions) — every integration explicitly refuses to launder a same-family run as independent confirmation. Live-dogfooded same day: a real 3-voice self-test (external grok dispatch + 2 subagent fallbacks) independently converged on a real gap — "confirmed" model_family was CLI-brand identity, not verified backend identity, letting two CLIs redirected to the same backend (BYOK/proxy override) defeat the gate — fixed before shipping. Pro: council-cockpit (separate repo) adds a read-only live panel + cost-aware allocation + history-informed family weighting, PRE-council advisory only — Free never depends on Pro. Mesh now 66 skills / 208 connections / 45 signals.

Previous (v2.24.0 — Market Refresh)

v2.24.0 (2026-07-11): Model lineup + platform adapters refreshed to the mid-2026 landscape. Claude tiers across the mesh → Opus 4.8 / Sonnet 5 / Haiku 4.5; the Codex adapter initially targeted GPT-5.6 sol / terra / luna. Current releases use sol plus terra at different reasoning efforts because luna is not a valid current Codex model. Fable 5 is positioned as an API-only frontier oracle target rather than a routing tier (opus stays the ceiling). Windsurf → Devin Desktop rebrand documented (emission kept on .windsurf/, which Devin still reads). New goal-first advisory in plan/ba to leverage native /goal + Managed Agents Outcomes. CI 1572/1572.

v2.23.0 (2026-07-04): Seven platform adapters move to the Agent Skills open standard (dir-per-skill SKILL.md, discovered and lazy-loaded by each platform's native loader). The headline fix: Codex dropped .codex/skills/ from its scan list, so compiled skills were only findable via the AGENTS.md pointer — agents kept "re-finding" the path mid-session. Codex now emits to .agents/skills/ (scanned CWD → repo root). Same treatment across the fleet: cursor .cursor/rules/*.mdc.cursor/skills/ (Cursor 2.4+ Skills, on-demand instead of always-on), windsurf.windsurf/skills/ (Cascade Skills)

Files in the repo

Repository payload27 top-level entries
  • .claude-plugin
  • .codex-plugin
  • .github
  • agents
  • assets
  • commands
  • compiler
  • contexts
  • docs
  • evals
  • extensions
  • hooks
  • references
  • scripts
  • skills
  • .gitignore
  • .npmignore
  • biome.json
  • CHANGELOG.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • LICENSE
  • package-lock.json
  • package.json
  • README.md
  • ROADMAP.md
  • skill-index.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More plugins

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

138k
1 add

Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

82k
code-yeongyu/
oh-my-openagent

OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.

69k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

94k

Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns

4.3k