By darkrymit
Injects dynamic project context into prompts via custom $key(args) tokens using a UserPromptSubmit hook.
Use when orienting yourself in a crunes project — which skill to invoke for a task, how to inspect a rune's API before calling it, how to query utils.* function docs, how to verify the environment is working, or when you're stuck and need to know where to look.
Use when installing a plugin from the marketplace or a local path, enabling or disabling plugins per-project, updating plugins, or using runes that come from an installed plugin.
Use when fetching or consuming rune output — listing what runes exist, running them via CLI, or understanding $$token syntax for prompts. Do NOT invoke manually if the user's prompt already contains $$key or $$key(args) tokens — those are resolved automatically by the UserPromptSubmit hook before the message arrives.
Use when scaffolding or authoring a new crunes plugin — creating the plugin directory structure, manifests, and rune files so the plugin can be installed via crunes plugin install.
Use when creating a new rune or editing an existing one — scaffolding with crunes create or crunes template apply, implementing the rune function, using @utils helpers, or inspecting the output with crunes docs rune.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
ACI (Agentic Coder Interface) integrations for crunes. Connects the crunes-cli to AI coding tools, providing skills for manual rune access and — where native hook systems are available — automatic context injection.
Currently supported: Claude Code (full native integration via UserPromptSubmit hook + skills). Other AI tools with skill or prompt-injection support may use the included skills directly against the CLI.
All rune logic is delegated to the CLI. Install it first:
npm install -g @darkrymit/crunes-cli
crunes --version
/plugin marketplace add https://github.com/darkrymit/crunes-aci
/plugin install crunes-aci
Run /reload-plugins to activate in the current session.
Copy or reference the skills from the skills/ directory. As long as your tool supports invoking CLI commands, the skills work against crunes directly.
| Skill | Use when |
|---|---|
crunes-help | Orienting in a project, querying rune or utils API docs, troubleshooting |
crunes-use-rune | Discovering and fetching rune output, understanding $token syntax |
crunes-write-rune | Creating or editing a rune, using @utils helpers |
crunes-use-plugin | Installing plugins, enabling/disabling per-project |
crunes-write-plugin | Scaffolding and publishing a plugin |
crunes list # what runes exist in this project
crunes docs rune <key> # args schema + examples for a rune
crunes docs utils # list all @utils namespaces
crunes docs utils <ns> # function signatures for one namespace (e.g. ws, fs, cache)
crunes doctor # verify environment health
The UserPromptSubmit hook automatically resolves $$key(args) tokens and injects rune output as XML context before Claude sees your prompt:
<context title="Setup Guide" id="setup">
### Install
1. Clone the repo
2. npm install
</context>
Token syntax:
| Token | Meaning |
|---|---|
$$key | All sections |
$$key(arg1,arg2) | With positional args |
$$key[-s s1,s2] | Section filter |
$$key[-s s1,s2](arg1) | Args + section filter |
$$my-plugin:rune-key | Plugin rune |
$$my-plugin:rune-key[-s sec](arg) | Plugin rune, args + section |
Runes live in your project, not in this repo. In each project you want to use crunes:
crunes init
crunes create docs --format markdown
See crunes-cli for the full rune authoring guide.
UserPromptSubmit
→ hook-wrapper.js reads stdin JSON { prompt: "..." }
→ parses `$$key[-s sections](args)` tokens
→ runs `crunes run <keys...> --format json`
→ iterates Section[] JSON output
→ builds <name title="..." ...>content</name> XML per section
→ emits { hookSpecificOutput: { additionalContext: "..." } }
npx claudepluginhub darkrymit/crunes-aci --plugin crunes-aciMemory compression system for Claude Code - persist context across sessions
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Editorial "Web Designer" bundle for Claude Code from Antigravity Awesome Skills.
Unified status line for Claude Code with multi-CLI (Claude, Codex, Gemini, z.ai) usage monitoring, context, rate limits, and cost tracking