MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Start HERE when unsure which ripwire skill fits, or asked 'how do I use ripwire / where do I start'.
$ npx skills add redhat-et/ripwire --skill ripwire-router -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install redhat-et/ripwire ripwire-router --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ripwire-router .claude/skills/ripwire-router && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .claude/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-routerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add redhat-et/ripwire --skill ripwire-router -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install redhat-et/ripwire ripwire-router --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ripwire-router .agents/skills/ripwire-router && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .agents/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add redhat-et/ripwire --skill ripwire-router -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install redhat-et/ripwire ripwire-router --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ripwire-router .cursor/skills/ripwire-router && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .cursor/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/redhat-et/ripwire.git --path skills/ripwire-router--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add redhat-et/ripwire --skill ripwire-router -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install redhat-et/ripwire ripwire-router --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ripwire-router .gemini/skills/ripwire-router && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .gemini/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install redhat-et/ripwire ripwire-routerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add redhat-et/ripwire --skill ripwire-router -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ripwire-router .github/skills/ripwire-router && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .github/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add redhat-et/ripwire --skill ripwire-router -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install redhat-et/ripwire ripwire-router --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ripwire-router .opencode/skills/ripwire-router && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ripwire-router" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-router into .opencode/skills/ripwire-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-router", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ripwire-routerStart HERE when unsure which ripwire skill fits, or asked 'how do I use ripwire / where do I start'.
Ripwire Router is an agent skill from redhat-et/ripwire. Start HERE when unsure which ripwire skill fits, or asked 'how do I use ripwire / where do I start'. A moment→skill map, cold start to handoff, plus the two reflexes that leak most: --exemplar before you write, --quality-delta before you call it done. One hop to the right skill.
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows. The repository describes itself as: The ripgrep of AI context: a zero-dependency C++23 CLI + MCP server for coding agents. Find what you want without reading the repo, then check you built what you meant — blast… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 60dd3b3. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ripwire Router loads about 4.9k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 2,514 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, ReadAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from redhat-et/ripwire at commit 60dd3b3, republished under its Apache-2.0 licence (© redhat-et). 2,514 words, ~4,866 tokens.
.claude/skills/ripwire-router/SKILL.md (or your agent's skills folder).Agents route by moment, not by feature. Find the row that matches what you're about to do; it names the ONE skill to enter. If you routed wrong, each skill's own routing header sends you one hop to the right one.
ripwire <dir> --help-task="<the task in words>" --legend=compact returns ONE recommended command with the evidence
behind the pick (intent, score/margin, repository facts) — or honestly abstains when the evidence is
too thin to name a winner. One hop cheaper than reading this whole map: paste the task, run what it
recommends. Advice only — it never executes the recommendation.
A short bare word abstains even when it names a real symbol — a lone letter, a SCREAMING name, or an
ordinary word that happens to match an indexed name (F in --help-task="understand F", django's ORM
class, is a real example) does not resolve on its own; only genuine identifier SHAPE does
(camelCase/snake_case/::/.). Mark it as code in the task text instead — backtick it (`F`) or
write it in call form (F()) — to route on it by name.
| The moment you're in | The ONE skill | Its opening move |
|---|---|---|
| Cold-start — landed in an unfamiliar repo, "what is this / what matters here" | ripwire-orient | --recall then --report |
| Resuming after a context compaction / a new session on work already in flight — you have a task but no longer the reasoning that got you here | ripwire-orient | rebuild state instead of re-reading files: --recall="<the task>" (what past sessions WROTE down) → --situ (what the working tree currently has changed + tests to run) → --notes (gotchas already paid for). Cheaper and more accurate than re-deriving from source. |
A pile of DUMPED output, not code — a git log, fetched docs, <tool> --help, one oversized reference file, and you need ONE answer out of it | ripwire-orient | point --recall at the dump directory itself: ripwire <dumpdir> --recall="<the question>" — a zero-setup knowledge base, nothing to install and no daemon (one cold parse, warm after). Two rules decide whether it works at all: dump to .md — .txt/.log/.json are not documents to --recall and it answers 0 relevant of 0 document files — and keep ## headings in the dump, because a headed document is served as whole ranked SECTIONS (the served [sections: …; lines="…"; dropped_by_budget=D] note discloses the cut) while a headless one is still cut front-first. |
| Understand X — "how does X work / where is Y / architecture overview" | ripwire-orient | --for="X" |
| Trace one symbol — who calls it, what it calls, is it safe to change, locate a literal | ripwire-navigate | --callers/--callees/--impact/--grep |
| Find an exact literal — error text, config key, or emitted string | ripwire-navigate | --grep='literal' --grep-context=2; add --and/--not, --grep-scope=file, or --grep-in=any only when the first answer requires it |
| Verify one closed code claim — does A call B, is X unused, does a file define/contain Y? | ripwire-navigate | --verify='calls(A,B)' (also uses/unused/contains/defines/reaches) |
My task touches A, B and C — how do they relate? — N (>2) task symbols, or a pair --path can't reach | ripwire-navigate | --connect=A,B,C (the shared-caller join a directed --path can't see) |
| Planning a FEATURE — multi-symbol work needing a plan / interface / size estimate | ripwire-before-you-build | --recall + --for + --seams |
Implementing against an interface — writing a class/type that must satisfy interface I | ripwire-before-you-build | --lego=I (I's method contract + every existing implementor to copy) |
| About to write ONE symbol — a fn/class/helper, even a "quick" one | ripwire-reuse-first | --exemplar + --for + --clones |
| Mid-implementation — about to open several files just to learn something | ripwire-orient (map-before-you-read.md) | cheapest verb, then read 2-3 files |
| Reviewing MY diff — "am I ready to push / is this safe to merge" | ripwire-change-check | --quality-delta (that's the quality-bar reflex) → --pr-context |
| Which tests should I run for this change? Did I run the right ones? | ripwire-change-check | --affected=F1,F2 / --situ → --test-gate |
| A test failed and I have its name and nothing else — what does this harness actually cover? | ripwire-change-check | --exercises=TESTFILE — the INVERSE of --affected: the non-test symbols this test transitively calls into |
| My symbol is missing from the map — expected a def to show up and it didn't | ripwire-orient | --skipped first (was its FILE dropped — a size ceiling, one row per oversize file); if the file isn't oversize-skipped, --doctor next (stale binary, grammar/parse failure, cache-dir health — a setup check, not a bug report) |
| Writing tests for existing (untested) code | ripwire-write-tests | --seams + tested=1 coverage lens + --callers=SYM |
| Reviewing code I did NOT write — unfamiliar subsystem, "what's gnarly here" | ripwire-fresh-eyes | --quality-panel (THE SINGLE COMMAND — six evidence families in one ranked report; a lens, not a gate) — or --hotspots + --clones + --owners one lens at a time (scope to the subsystem) |
| Debugging — a symptom, a suspect subsystem, or "I changed X and it broke" | ripwire-find-bug | --for=symptom / --situ |
| I HAVE a stack trace / sanitizer report / compiler error — paste it, don't hand-translate it | ripwire-find-bug | --from-trace=FILE (or - from stdin) — frames → ranked in-corpus suspects, innermost first |
| Just edited a symbol — "did I change a contract someone depends on?" (pre-commit, per-symbol) | ripwire-change-check | --edit-check=SYM — unchanged / new-symbol / contract-change + flagged incompatible callers, ~26 ms warm |
| Apply a whole-symbol edit — replace a definition or insert beside one without a whole-file Read | ripwire-orient (map-before-you-read.md) | CLI first: `--replace-symbol-body=SYM --edit-payload=FILE |
| Landing several branches / parallel agent worktrees — who conflicts, what order? | ripwire-change-check | --merge-scout=REF1,REF2,… — pairwise conflict sites + a suggested landing order |
| Branch/content archaeology — "I have 30 branches and don't know what's stranded on them" (not a diff review) | ripwire-change-check | --stray-content[=SUBSTR] (unmerged/superseded/merged verdict per ref) + --whereis=SYM (which ref defines/mentions it) |
| Worth remembering for the next session — a gotcha tied to a symbol/file (trap, flake, invariant) | ripwire-orient | --note-add="SYM: text" — surfaces automatically whenever --for/--expand later emit that symbol |
| One-call orientation under a budget — the whole --for → bodies → callers → tests dance at once | ripwire-orient | --pack-task="task" (+ --token-budget=N) — ranking, top bodies, caller sigs, notes, tests_to_run in ONE bundle |
| About to FAN OUT — spawning N subagents / worktrees / lanes, about to hand-write N per-agent briefs | ripwire-orient (map-before-you-read.md) | --pack-task="task" --partition=N (N=2..16) — ONE shared core plus N minimally-overlapping slices carved along the call graph's own communities, so N agents stop re-deriving the same orientation. --token-budget here means ONE agent's budget; each inner <ctx> is byte-identical to that agent's standalone call, so hand it over verbatim. Check overlap_max before trusting the split, and split="K" (>0 = a module was cut at its rank median because there were fewer modules than agents). Then --plan-lanes=N --task="…" (or --plan-lanes --brief=FILE) for the conflict-aware version: which lanes would COLLIDE, in what order they should land, and what each must test — JSON, pre-hoc, before a line is written. |
| Refactoring — planning a restructure, or a suspected god object | ripwire-fresh-eyes | --communities/--metrics (lcom4) + --impact + --cochange; read the nesting PROFILE (humps=/deep=), never nest= alone |
| I have the measurement — now WHICH refactor, and is it safe? — a shape (many shallow humps / one deep tangle / small-and-dense / untested hub / a clone) needs a named fix and its precondition | ripwire-quality-bar | the shape → refactor playbook, then the closed fix loop: --quality-delta → --edit-check=SYM → --affected |
| Perf — a benchmark/profile (including a flame graph) identifies a slow operation or symbol | ripwire-perf-target | measure → navigate measured surface → re-measure; if the counters say MEMORY not compute, --field-affinity[=STRUCT] (a hypothesis generator, never a measurement) |
A clang optimization remark while editing ripwire's OWN C++ — -Rpass/-Rpass-missed says "loop not vectorized" / "will not inline" / etc, and you need to decide if it's worth a diff | ripwire-opt-remarks | scripts/optremarks.sh then scripts/optremarks.py --hot — contributor-facing, not a general perf-investigation entry: a generic "this is slow" / "where's the bottleneck" prompt with no remark in hand is ripwire-perf-target, not this |
| Security — untrusted input, reviewing security-sensitive code, or auditing a skill/MCP config | ripwire-security-scan | --lint unsafe fns + --scan-skills |
| Handoff — writing a summary of a repo/change for the next agent or teammate | ripwire-handoff | the handoff bundle |
| What's built but DARK here — "why don't I see feature X" (code compiled/flagged OFF, not a bug) | ripwire-fresh-eyes | --flags[=SUBSTR] (dark-gate dashboard) + --flip=NAME (blast radius of turning one ON) — ripwire-find-bug points here too when a symptom turns out to be a dark flag |
| Task spans multiple checkouts — service+client, a split monorepo — one question over BOTH | any moment skill above | pass every root: ripwire dir1 dir2 --for=… (one merged graph; --impact across roots needs the workspace call). Refusal boundary: --quality-delta/--test-gate/--eval*/--arch --baseline stay single-root (HEAD-keyed baselines and corpora are per-repo) — run those per root. |
| Is my ripwire setup healthy / am I running a stale binary? | (no skill — run directly) | ripwire <dir> --doctor --legend=compact — binary-vs-PATH staleness, grammar compile, cache-dir health, git reachability (single-root, diagnostic not deterministic) |
The table above assumes you recognized a moment. The most expensive case is the one where you did not:
you simply went for Read, Grep, or Glob because they are always there. That reflex needs no
recognition and no skill load, which is exactly why it wins by default and why it costs the most.
Match the default you were about to use, not a moment:
| About to… | Reach for instead |
|---|---|
Read a whole file to understand one function | --expand=SYM — that symbol's body + its callees' signatures. The file is not the unit of an answer. |
Read several files to learn how something works | --pack-task="<task>" — ranking + bodies + callers + tests in ONE budgeted call |
Grep/rg a symbol name across the tree | --for="theExactName" (name-exact routing, recall@1 ~99%) · --uses=SYM for every read/write/import site |
Grep a concept ("where do we retry") | --for="<the concept in words>" — matches doc-comments and bodies, not just identifiers |
Glob for candidate files by name | --for= ranks by what the code DOES; a glob only knows paths |
| paste a stack trace and hand-pick frames | --from-trace=FILE (- = stdin) — verbatim, ranked innermost-first |
git diff / git log to judge a change | --situ (blast radius + tests) · --rank-by=churn |
The discipline behind this row set is ripwire-orient's companion map-before-you-read.md; it is worth entering even mid-task, because
less context is measurably MORE accurate, not merely cheaper (29% → 3% code-repair accuracy as context
grew 32K → 256K, LongCodeBench). If a ripwire wrap primer or the opt-in skills/install.sh --hook
nudge is installed, these same substitutions arrive without anyone loading this file — that is the point:
a rule an agent must remember to look up is a rule that loses to a habit.
Every command these skills spell asks for the compact legend (--legend=compact: terse definitions of only the attributes the answer carries). Compact is also the CLI's DEFAULT now, so on a current binary the flag is redundant — it stays so a command reads the same on an older one. Add --legend=full when a definition's reasoning is needed — a term you do not recognise, a floor or cap you need explained, or a map a human will read. --for spells no flag: its compact legend is its own dialect, and the default.
The other exceptions are not a choice — the binary refuses --legend=compact on any command that does not answer with an XML legend, and a command it refuses runs not at all. Two families: the state-changing commands, which write something rather than answer (--quality-ack, --quality-baseline, --arch --baseline, --note-add, --replace-symbol-body / --insert-before-symbol / --insert-after-symbol, --edit-plan, --index-out=), which refuse either posture, and the non-XML renderings (--mermaid, --html, --report, --sarif, --situ, --recall=, --export), where --legend=full is accepted as a no-op because the full form is the only one they have. Those carry no --legend=compact. --pin-census= is not among them: it writes its census beside a map, and the map takes a posture like any other. This matters when you compose rather than copy: a flag that turns an XML verb into one of these — --zoom --mermaid, --quality-delta --quality-ack — takes the whole command with it, so the verb is not what decides, the command is. Nothing here is a rule you have to apply by hand: ripwire --help-task spells no posture at all (the binary's default decides), and test/skilltruthcheck.sh runs every --legend=compact command these skills spell against the binary and fails on a refusal.
map-before-you-read.md — the map-before-you-read token+accuracy discipline for any read, at any moment (a companion file since 2026-09-07; it was the standalone efficient skill).These aren't a "moment" you land in; they're reflexes you carry into every moment.
ripwire parses C++, C, ObjC/ObjC++, Metal (MSL), C#, Python, TypeScript, JavaScript, Java, Ruby, Bash, Go,
Rust, Swift; JSON (config keys) — nothing else. A repo in another language (PHP, Kotlin, ...) gets a silently thin or
empty map, not an error — don't mistake that for
"nothing here." Reach for plain rg + reads instead. And ripwire maps structure, not build/link state — a
build failure or a linker error is the compiler's/linker's question, not ripwire's; it can still tell you
where the broken symbol lives (--grep/--callers), just not why the toolchain rejected it.
ripwire-layers (architecture-health / --arch CI gate), ripwire-graph-query (custom graph queries),
ripwire-mcp (run ripwire as an MCP server). --doctor (setup-health row above) is diagnostic, not a
moment skill. --eval / --eval-retrieval / --eval-mined are
maintainer self-eval harnesses (not an agent moment) — --eval-mined=FILE scores ranker recall against
real session-mined (query, gold-files) pairs from bench/mine_traces.py. The
detail-ladder / token-squeeze (--compress) material
lives inside ripwire-orient's companion file (skills/ripwire-orient/compress-ladder.md) now — it's not a standalone
moment. You don't recognize "the graph-query moment" — reach for these when a moment skill points you at
them.
The always-loaded ripwire primer trains the READ verbs (--for/--recall/--callers/--expand/
--hotspots) but not the two WRITE-time reflexes, which is exactly where the most value leaks:
ripwire <dir> --exemplar="<the sub-task in words>" --legend=compact
→ the repo's best-in-class instance of that shape to imitate (by ROLE, not text similarity), plus
--for="<task>" to reuse before reinventing. Duplicates are born on tasks that felt too small to tool up
for. (→ ripwire-reuse-first.)ripwire <dir> --quality-delta --legend=compact → ONLY what your change made worse across 10
kinds (complexity, verbosity, nesting, params, duplication, dead-code, api-surface, error-masking,
short-horizon-churn, new-clone-of-reused-helper); exit 2 = new debt.
In a git repo it auto-compares vs git HEAD (no start-of-task ritual — just run it before you push).
A finding is only half the job — the fix is not done until it is proven: --quality-delta (targeted
kind gone, nothing else regressed) → --edit-check=SYM (contract intact) → --affected (the tests that
prove it). That chain, and the shape → refactor playbook that picks the fix in the first place, are in
ripwire-quality-bar.
For a mid-task convergence loop, run ripwire <dir> --quality-baseline at the start to pin an explicit
floor (it takes precedence over HEAD), then re-run --quality-delta after each edit. (→ ripwire-quality-bar.)
Want the wider "does this still look rotten" picture alongside the delta, not just what you changed? —
ripwire <dir> --quality-panel[=strict|default|lenient] --legend=compact, the six-family panel (→ ripwire-fresh-eyes).
It is a lens, not a gate — always exits 0; --quality-delta above is the only pass here that gates.ripwire --help lists every flag on one line; --help=--FLAG prints one flag in full and --help=all the whole catalog. Every skill re-verifies its commands against the shipped binary.
Installing these skills: bash skills/install.sh symlinks every ripwire-* skill into the Claude
skill home (its codex mode targets ${AGENTS_HOME:-~/.agents}/skills; --codex-legacy retains
${CODEX_HOME:-~/.codex}/skills) and prunes dangling links from removed skills. Add --hook explicitly
for the advisory nudge (--codex --hook for Codex).
© redhat-et, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/ripwire-router of redhat-et/ripwire.
Open the folder on GitHubat commit 60dd3b3
Ripwire Router next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ripwire Router this skillredhat-et/ripwire | 2.4k | — | ~4.9k | Automated safety check: Notes | Apache-2.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Using Superpowersfarm-fe/farm | 5.6k | 35 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Executing Plans Inlineobra/superpowers | 296k | 2 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Claude Code Agent Developmentanthropics/claude-plugins-official | 38k | 8 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
farm-fe/farm
A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
obra/superpowers
Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
Azure/azqr
Create new skills, modify and improve existing skills, and measure skill performance.
redhat-et/ripwire
Rules for writing and converting formatted output in ripwire's C++ source with its emit helpers, keeping every printed byte identical to the old printf output.
redhat-et/ripwire
Checks whether a working-tree diff or a pull request is safe to merge: blast radius, tests to run, contract breaks, branch conflicts and stranded work.
redhat-et/ripwire
Answers call-graph questions that combine several conditions, such as complex functions that reach a target or untested symbols near main, using ripwire's graph-query mode.
redhat-et/ripwire
Produces a short brief for handing a code subsystem to a teammate or fresh session, using ripwire to rank symbols, expand bodies and surface design docs.
redhat-et/ripwire
Answers questions about a named symbol, such as its callers, what it calls, the path between two symbols or the downstream impact of changing it, using the ripwire CLI.
redhat-et/ripwire
Contributor guide for reading clang optimization remarks while editing ripwire's own C++, deciding between a source change and a build change such as LTO or PGO.
Categories
Start HERE when unsure which ripwire skill fits, or asked 'how do I use ripwire / where do I start'. Ripwire Router is an agent skill from redhat-et/ripwire. Start HERE when unsure which ripwire skill fits, or asked 'how do I use ripwire / where do I start'.
Ripwire Router fits situations like: agent Workflows work in your project.
Run `npx skills add redhat-et/ripwire --skill ripwire-router -a claude-code`. Or copy the skill folder (skills/ripwire-router in redhat-et/ripwire) into .claude/skills/ripwire-router in your project. Claude Code loads it when a task matches its description.
Run `npx skills add redhat-et/ripwire --skill ripwire-router -a codex`. Or copy the skill folder (skills/ripwire-router in redhat-et/ripwire) into .agents/skills/ripwire-router in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add redhat-et/ripwire --skill ripwire-router -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ripwire-router, .gemini/skills/ripwire-router, .github/skills/ripwire-router and .opencode/skills/ripwire-router in your project.
Going by SKILL.md and its folder, Ripwire Router needs the command-line tools its instructions call (git and bash). Its frontmatter pre-approves these tools: Bash, Read.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Ripwire Router is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ripwire Router: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 296k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
redhat-et (a GitHub organization) maintains it in redhat-et/ripwire, which has 2,419 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.
Source: redhat-et/ripwire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.