emitting-output
Writing or converting formatted output in ripwire's C++ source — std::print/std::format via…
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.
$ npx -y skills add redhat-et/ripwire --skill ripwire-router --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ripwire-routerContext 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.
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
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
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.
Repo: redhat-et/ripwire
Writing or converting formatted output in ripwire's C++ source — std::print/std::format via…
Starting a FEATURE (multi-symbol work): the plan, the API boundary, the scope — how big does…
Merge-SAFETY of an existing diff — yours before you push, or a PR you review: blast radius,…
You have a SYMPTOM — crash, exception, wrong output, failing test, error string — and don't…
Maintenance risk in code you did NOT write — inheriting a module, planning a refactor, a…