Skip to content
Code Generation
Skill

/ripwire-router

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.

BOOST
From plugin
ripwire
2.4k19 skills5 hooks1 MCP
Install
$ npx -y skills add redhat-et/ripwire --skill ripwire-router --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ripwire-router

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

ripwire-router.SKILL.md
name: ripwire-router
description: >
  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.
allowed-tools: Bash, Read

ripwire router — the moment → skill map

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.

Not sure which verb fits? Ask the tool itself

`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

Read more
Ships withripwire

The ripgrep of AI context. A map before your agent reads the repo — and a check on what it writes. Ranked, deterministic call graph: what to touch, what it breaks, which tests to run.

Get the whole plugin

Other skills on ripwire.