Skip to content
Code Generation
Skill

/ripwire-quality-bar

Code QUALITY of what YOU just wrote, before commit or 'done', or a cleanup: --quality-delta lists what got WORSE in 12 kinds, exit 2 if old code got worse (new-symbol rows never gate, except defect-shape format-arity); the fix a measured shape (humps/deep, tangle) calls for.

BOOST
From plugin
ripwire
2.4k19 skills5 hooks1 MCP
Install
$ npx -y skills add redhat-et/ripwire --skill ripwire-quality-bar --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-quality-bar

Context preview

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

Code QUALITY of what YOU just wrote, before commit or 'done', or a cleanup: --quality-delta lists what got WORSE in 12 kinds, exit 2 if old code got worse (new-symbol rows never gate, except defect-shape format-arity); the fix a measured shape (humps/deep, tangle) calls for.

SKILL.md

ripwire-quality-bar.SKILL.md
name: ripwire-quality-bar
description: >
  Code QUALITY of what YOU just wrote, before commit or 'done', or a cleanup: --quality-delta
  lists what got WORSE in 12 kinds, exit 2 if old code got worse (new-symbol rows never gate,
  except defect-shape format-arity); the fix a measured shape (humps/deep, tangle) calls for.
  Merge safety → change-check. Even a single-line leaf fix runs it.
allowed-tools: Bash, Read

The quality-bar convergence loop

> Routing: > • PR-submission readiness — tests to run, blast radius, "safe to merge?" → **ripwire-change-check** — run > `--quality-delta` FIRST, then its `--test-gate`: clean code that runs the wrong tests still regresses. > • Reusing before you write the code in the first place → **ripwire-reuse-first**. > • Wide-angle "where does this still look rotten" read across a whole file/subsystem (not a before/after > delta) → the panel below, or **ripwire-fresh-eyes** for the full six-family breakdown. > • **You have the measurement and need the FIX** — for your own diff or for a subsystem **ripwire-fresh-eyes** > just measured → the shape → refactor playbook, the closed fix loop and the debt fix loop are all on this page, below. > • **The regression is a MEMORY-layout hypothesis, not one of the 12 quality kinds** — `--lint`'s built-in > cache-\* pack (8 static data-layout checks) is a normal part of a lint pass; `--field-affinity[=STRUCT]` > is the deeper struct-level lens once a profile implicates a specific aggregate → **ripwire-perf-target**. > • Not sure which skill? → **ripwire-router**.

Don't eyeball quality — **measure the delta your change introduced**, with a deterministic oracle, in a bounded loop. A file that was already complex is not your regression.

Apply the "non-trivial work" trigger to the LOOP, not the check. `--quality-delta` warm-runs in well under a second — cheaper than deciding by eye whether a fix "counts" as trivial, and that eyeball judgment is precisely where a leaf-looking edit that quietly changed a signature or added a branch slips through unmeasured. Run it. What a single-line leaf fix that preserves the signature and adds no branch, symbol, dependency, or abstraction gets to skip is everything AFTER a clean run: the drill-down table, `--dmm`, acking, a second round. This skill (and this file) earns its cost when the one-shot delta actually reports something — a clean `gating="0"` run on a leaf fix is confirmation, not ceremony you were right to skip.

Before you converge: the wide-angle read — `--quality-panel`

`ripwire <dir> --quality-panel[=strict|default|lenient] --legend=compact` is THE SINGLE COMMAND for "does what I just touched still look rotten" — one ranked report over **six** evidence families (the four `--ensemble` joins — `structural`, `lexical`, `confusion`, `historical` — plus `colocation` and `state`; the full per-family breakdown lives in **ripwire-fresh-eyes**). Point it at the file or symbol you just edited for a multi-angle second opinion the single `--quality-delta` number can't give you on its own.

**Read it correctly: it is a lens, never a gate.** `--help` says so in the flag's own text and the contract is enforced in code — `--quality-panel` exits 0 unconditionally, on every preset, on every repo. It does not compare against a baseline and it cannot fail a commit. The gate for "did MY change make this WORSE" is Step 3 below (`--quality-delta`) — that is the only pass in this skill (or in ripwire) with an exit code that means something. Run `--quality-panel` for the wide-angle read, converge with `--quality-delta`, never the other way round.

Pick the preset by what "rotten" needs to mean right now: `lenient` (all six families, 1 must agree) is a reading order, roughly a third of any tree; `default` (all six, 2 must agree) is a review list; `strict` (only the four families measured stable enough to stand behind repeatedly — `historical` and `colocation` are fixed-size worst-40 cuts over a ranking whose population moves, so both re-shuffle release to release on code that never changed) is the rung closest to something CI-shaped, but it is still a lens — nothing here plugs into an exit code the way `--quality-delta` does.

Read the structural row as a PROFILE — `nest=` alone is a max, and misleads solo

`nest=` reports the single deepest line in a function. One line at depth 9 and a thousand lines at depth 9 report the same number, so `nest=9` cannot tell a **tangled** body from a long **blocked-sequential** one whose max was set by one inner loop nobody has to hold in their head. Acting on `nest=` alone is how an agent guard-clauses a dispatch table. `--metrics` (and the structural family's `why=` string in `--quality-panel` / `--ensemble`) now carry the profile beside the max:

<e f="structural" counted="1" why="ccx=724 loc=1244 nest=9 humps=30 deep=308 rrank=1"/>

**Every concrete number on this page is ILLUSTRATIVE OF A SHAPE, never a value to expect.** The counters themselves are under active calibration — an else-clause over-count fix in flight moves `humps=` down by a large fraction, and `ccx=`/`nest=` with it, on else-heavy functions. What is durable is what you *do* with the row: `humps=1` vs many, the two ratios below, and the semantics (regions vs lines, absence below the bar, `deep < humps` legal). Read the row in front of you; never carry a remembered number to it.

  • **`humps=`** — how many *maximal control-nesting regions* reach the nesting bar (`bar_nest=` on the panel

root; CodeScene's "bumpy road": a rise above the threshold then a fall). One deep tangle is `1`; repeated missing abstractions are many. EXACT, not a floor.

  • **`deep=`** — how many **LINES** lie inside those regions, read against the `loc=` already on the row. A

disclosed FLOOR (`deep_floor="1"`).

  • Both are **absent exactly when `nest <` the bar** — not-deep, never a hidden `0`.
  • **`deep` below `humps` is legal output, not a defect.** `deep` counts lines and `humps` cou
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.