/SKILL.md
Encrypted organizational memory workflow for Rune with activation checks and /rune (or $rune for Codex CLI) command behaviors across MCP-compatible agents.
npx skillsauth add cryptolabinc/rune runeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Context: This skill provides encrypted organizational memory capabilities using Fully Homomorphic Encryption (FHE). It allows teams to capture, store, and retrieve institutional knowledge while maintaining zero-knowledge privacy. Works with Claude Code, Codex CLI, Gemini CLI, and any MCP-compatible agent.
In v0.4 the MCP server is a single Go binary (~/.rune/bin/rune-mcp), spawned
by the host CLI from the plugin manifest via the committed wrapper (e.g.,
${CLAUDE_PLUGIN_ROOT}/bin/rune mcp-server for Claude Code) which always present at session start;
it self-installs rune-mcp on first run, so the server comes online in-session
with no restart. There is no venv, no install script. The runtime is the binary the CLI already launched.
Agent-specific surface stays thin:
codex mcp add/remove/list registration actionsKeep agent-specific instructions clearly labeled and never mix Codex-only commands into cross-agent/common instructions.
IMPORTANT: This skill has two states based on configuration AND infrastructure availability.
BEFORE doing anything, run this check:
Config File Check: Does ~/.rune/config.json exist?
Config Validation: Does config contain all required fields?
vault.endpoint and vault.tokenstate is set to "active"State Check:
state is "active" → Go to Active StateNote: enVector credentials are NOT in ~/.rune/config.json. They are
delivered via the Vault bundle at runtime when the boot loop dials Vault.
IMPORTANT: Do NOT attempt to ping Vault or make network requests during activation check. This wastes tokens. The MCP server runs its own boot loop; the activation check is purely a local config inspection.
/rune commands (or $rune for Codex CLI) are used/rune:configure (or $rune configure for Codex CLI) —
this writes ~/.rune/config.json and triggers the boot loop./rune:status (or $rune status for Codex CLI) —
surfaces per-subsystem state via the diagnostics MCP tool.If in Active state but operations fail:
state to "dormant"/rune:status (or $rune status for Codex CLI) for details."/rune:configure(or $rune configure for Codex CLI)
Purpose: Configure plugin credentials
Steps:
Ask user for Vault Endpoint (required, e.g., tcp://vault-TEAM.oci.envector.io:50051)
tcp://, http://, or https://), auto-prepend tcp://.Ask user for Vault Token (required, e.g., evt_xxx)
Ask the TLS question:
"How does your Vault server handle TLS?"
Self-signed certificate — "My team uses a self-signed CA (provide CA cert path)"
~ expansion in the path~/.rune/certs/ca.pem (mkdir -p ~/.rune/certs && cp <user_path> ~/.rune/certs/ca.pem && chmod 600 ~/.rune/certs/ca.pem)ca_cert: "~/.rune/certs/ca.pem", tls_disable: falsePublic CA (default) — "Vault uses a publicly-signed certificate (e.g., Let's Encrypt)"
ca_cert: "", tls_disable: falseNo TLS — "Connect without TLS (not recommended — traffic is unencrypted)"
ca_cert: "", tls_disable: trueNote: enVector credentials are delivered automatically via the Vault bundle — no user input needed.
Create ~/.rune/config.json with state: "active" and the values
above (mkdir -p ~/.rune && chmod 700 ~/.rune, then chmod 600 the
file).
Call the reload_pipelines MCP tool. The MCP server's boot loop
dials Vault, fetches the agent manifest (EncKey + envector
creds), connects to enVector, and transitions to Active.
Confirm health by calling diagnostics and applying the
Boot Failure — Fast-Fail Rule (see section below). If
vault.last_boot_error is present, surface its hint verbatim
and stop — do not retry, do not probe with shell tools. Otherwise
render the per-subsystem snapshot.
/rune:status(or $rune status for Codex CLI)
Purpose: Check plugin activation status and infrastructure health
Steps:
~/.rune/config.jsondiagnostics MCP tool (read-only; safe before Active)Response Format:
Rune Plugin Status
==================
State: Active ✅ (or Dormant ⏸️ — reason)
Configuration:
✓ Config file: ~/.rune/config.json
✓ Vault Endpoint: configured
System Health (from diagnostics):
✓ Vault : reachable
✓ Encryption Key : loaded (key_id: <id>)
✓ Agent DEK : loaded
✓ Embedder : <model> (<mode>, dim=<vector_dim>)
✓ enVector Cloud : reachable (<latency>ms)
Recommendations:
- If Dormant: /rune:configure to (re)trigger the boot loop
- If a subsystem failed: surface the recovery action on its row
/rune:capture <context>(or $rune capture <context> for Codex CLI)
Purpose: Manually store organizational context when Scribe's automatic capture missed it or the user wants to force-store specific information.
When to use: Scribe automatically captures significant decisions from conversation (see Automatic Behavior below). This command is an override for cases where:
Mode: Agent-delegated (primary) — the calling agent evaluates significance and extracts structured fields, passing them as extracted JSON to the capture MCP tool. The server stores the encrypted record without additional LLM calls. If extracted is omitted and API keys are configured, falls back to a legacy 3-tier server-side pipeline.
Behavior:
Example:
/rune:capture "We chose PostgreSQL over MongoDB for better ACID guarantees"
/rune:recall <query>(or $rune recall <query> for Codex CLI)
Purpose: Explicitly search organizational memory. Retriever already handles this automatically when users ask questions about past decisions in natural conversation.
When to use: Retriever automatically detects recall-intent queries (see Automatic Behavior below). This command is an explicit override for cases where:
Behavior:
Example:
/rune:recall "Why PostgreSQL?"
Note: In most cases, simply asking naturally ("Why did we choose PostgreSQL?") triggers Retriever automatically — no command needed.
/rune:activate (or /rune:wakeup)(or $rune activate for Codex CLI)
Purpose: Attempt to activate plugin after infrastructure is ready
Use Case: Infrastructure was not ready during configure, but now it's deployed and running.
Steps:
/rune:configure (or $rune configure for Codex CLI)state is already "active", skip to step 4 (just verify health).state is "dormant", set it to "active" and clear any
dormant_reason / dormant_since fields.reload_pipelines MCP tool. From a terminal Dormant the
boot loop is re-spawned; from Active it is a no-op.diagnostics and apply the Boot Failure — Fast-Fail Rule
(section below).vault.last_boot_error is present: surface its hint verbatim,
suggest the matching recovery action, and stop. Do NOT loop on
reload_pipelines or probe with shell tools — the classifier has
already done that work. Otherwise render the per-subsystem snapshot./rune:reset(or $rune reset for Codex CLI)
Purpose: Clear configuration and return to dormant state
Steps:
~/.rune/config.json (the MCP server stays alive; it transitions
to Dormant on the next reload because no config means no Vault dial)When diagnostics.vault.last_boot_error is present, that field is the boot
loop's authoritative root-cause verdict (produced from the underlying
gRPC/TLS/DNS error). It is set on every failed boot attempt and cleared only
on success, so its presence — regardless of state — means boot is currently
failing. (state is the persisted config value; it stays "active" through
transient retries like an unreachable Vault, so it is not a reliable failure
signal on its own.) Treat last_boot_error as ground truth.
Do this and stop:
vault.last_boot_error.hint to the user verbatim — it already
names the specific cause and the fix.kind:
config_*, vault_* (TLS, auth, endpoint, manifest, etc.) → re-run
/rune:configure after applying the hint's fix.user_deactivated → /rune:activate.embedder_unreachable → re-run /rune:activate to spawn the daemon, then /rune:status.envector_* → share detail with the Vault admin.unknown → show kind + detail, suggest sharing with admin.Do NOT: retry reload_pipelines, poll diagnostics in a loop, or run
shell probes (openssl, nc, curl, dig, etc.). The classifier already
inspected the underlying error server-side — manual probing only burns
tokens without changing the conclusion. The per-kind reference table
lives in commands/claude/configure.md for the rare case the hint string
needs supplementation.
Fallback (older rune-mcp binary without last_boot_error): use
vault.error, embedding.health_error, envector.error, and the
dormant_reason translation in /rune:status. Still: do not investigate
further, surface what you have and stop.
Automatically identify and capture significant organizational context across all domains:
Categories:
When Rune is active, proactively capture significant decisions when you detect any of the following in the conversation:
How to capture in Codex:
agents/codex/scribe.mdcapture with the extracted parametertext parameter, include ONLY the relevant conversation excerpt, not the full sessionDo NOT auto-capture:
Session-end sweep: When the conversation is ending or the user is wrapping up a task, review the conversation for any uncaptured significant decisions and submit them via a single batch_capture call if needed.
Common Trigger Pattern Examples:
Significance Threshold: 0.7 (captures meaningful decisions, filters trivial content)
Automatic Redaction: Always redact API keys, passwords, tokens, PII, and sensitive data before capture.
When users ask questions about past decisions, automatically search organizational memory:
Query Intent Types:
Common Query Pattern Examples:
Search Strategy: Semantic similarity search on FHE-encrypted vectors, ranked by relevance and recency.
Result Format: Always include source attribution (who/when), relevant excerpts, and offer to elaborate.
Zero-Knowledge Encryption:
Credential Storage:
~/.rune/config.jsonTeam Sharing:
Check activation state with /rune:status (or $rune status for Codex CLI)
curl <vault-url>/health/rune:configure (or $rune configure for Codex CLI)Vault admin must configure ENVECTOR_ENDPOINT and ENVECTOR_API_KEY on the Vault server. Contact your Vault administrator.
Use /rune:reset (or $rune reset for Codex CLI) then /rune:configure (or $rune configure for Codex CLI) with new team credentials
This plugin requires a deployed Rune-Vault infrastructure. See:
Team members only need this lightweight plugin + credentials you provide.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.