Skip to content
Development
Skill

/paired-probe

Refuses a verdict a check did not earn: runs it with the fault present and absent and blocks when both agree; catches zero-sample sweeps and swallowed errors. Use before reporting any status, audit or nothing-found result.

From plugin
orchestkit
301122 skills36 agents

Claude Code

$ npx -y skills add yonatangross/orchestkit --skill paired-probe --agent claude-code

SKILL.md

paired-probe.SKILL.md
name: paired-probe
description: "Refuses a verdict a check did not earn: runs it with the fault present and absent and blocks when both agree; catches zero-sample sweeps and swallowed errors. Use before reporting any status, audit or nothing-found result."
user-invocable: false
disable-model-invocation: false
compatibility: "Claude Code 2.1.277+."
metadata:
  version: "1.0.0"
  author: "yonatangross"
  complexity: "low"
  tags: "verification, debugging, quality-gates"

paired-probe

**A check that prints the same thing whether or not the fault is present has measured nothing.** It still returns an answer, that answer looks like evidence, and it gets acted on. This skill makes the blindness fail loudly instead.

When to reach for it

Before reporting any of these, because all of them are verdicts:

  • "nothing found", "all clean", "no failures", "safe to delete"
  • a sweep, audit, or status roll-up over N items
  • a security or CI gate that just went green
  • any check that passed when you expected it to fail

And immediately whenever a result *surprises* you by passing. Surprise is the cheapest available signal that the instrument, not the world, is what changed.

The three gates

| Gate | Question | Failure it catches | |---|---|---| | **Differential** | What does this print when the fault is ABSENT? | A probe that answers identically either way | | **Non-empty** | How many items did it actually examine? | A sweep that measured zero and reported clean | | **Exit-aware** | Did the probe itself run? | A swallowed error printing success |

Could-not-observe is a **third outcome**, never folded into either verdict.

Usage

# Differential: stage the fault, then remove it. Both arms must differ.
scripts/paired-probe.sh --name "retired model pin fails the gate" \
  --present "printf 'model: claude-opus-4\n' > wf.yml && bash tests/ci/lint.sh" \
  --absent  "rm -f wf.yml && bash tests/ci/lint.sh"

# Single-shot, when the fault cannot be staged (a live sweep):
scripts/paired-probe.sh --name "worktrees examined" \
  --measure "git worktree list --porcelain | awk '/^worktree /{print \$2}'" \
  --min-count 1

Exit codes: `0` discriminates or met the count, `1` **BLIND**, `2` usage, `3` could-not-observe.

Why this exists

Four probes from a single session, 2026-08-21, each confidently wrong and none failing loudly. Three were caught by other people rather than by the check:

| The probe | What it asked | Why it lied | |---|---|---| | "is this branch pushed?" | the local ref cache | unfetched and never-pushed print identically | | "is the branch on origin?" | the remote branch list | a squash-merge DELETES the head branch, so landed work reads as lost | | "does this worktree hold unique work?" | `diff main HEAD` | symmetric, so a stale tree flags `main` against itself | | "any worktree at risk?" | a loop over a blocked temp file | the write failed, `\|\| true` swallowed it, the loop read zero items and printed "safe to prune" |

Every one dies at gate 1 or 2 in seconds.

The rule that generalises

Ask what the instrument **structurally cannot observe** before trusting its silence. A tool reports on the channel it queried, not on reality: the local cache instead of the remote, the whole file instead of the frontmatter, the proxy instead of the origin. When the answer is a zero or an empty set, that is exactly when to check the channel, because zero is what a broken instrument returns too.

Related Skills

  • `ork:verify` grades finished work; this grades the *check itself*.
  • `ork:quality-gates` for escalation once a real defect is confirmed.
Read more
@yonatangross
Ships withorchestkit

The Complete AI Development Toolkit for Claude Code. 115 skills, 36 agents, 163 hooks. Install `ork` for stable (v10.x).

301122 skills36 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
301
Star history of yonatangross/orchestkit on GitHub, a chart by star-history.com

Other skills on orchestkit.

ork-assess

ork-assess

Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…

ork-brainstorm

ork-brainstorm

Compare plausible implementation, architecture, product, or operational approaches before committing to one. Use when a request…

ork-explore

ork-explore

Map an unfamiliar codebase, feature, architecture, data flow, or operational path with file-backed evidence. Use when a request…

ork-glyph

ork-glyph

Render an answer inline as compact ASCII or box-drawing art with semantic status icons. Use for status, inventories, budgets,…

ork-implement

ork-implement

Make an approved, scoped change and prove the affected behavior. Use when a request asks to implement, build, add, or land a…

ork-review-pr

ork-review-pr

Review a pull request or branch for correctness, regressions, security, operational risk, and missing evidence. Use when a…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react3d252k
@facebook@facebookInstall Skill

Questions about paired-probe.

Which coding agents can use paired-probe?
paired-probe installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.