Skip to content
Development
Skill

/ijfw-verify

Use when about to claim completion: 'done', 'fix complete', 'tests pass', 'build succeeded', 'shipped', 'no regressions', 'ready to merge', 'ready to ship'. Iron Law gate requiring fresh verification evidence in the same message as the claim; wires into runtime

From plugin
ijfw
21436 skills37 agents22 commands1 MCP

Claude Code

$ npx -y skills add FerroxLabs/ijfw --skill ijfw-verify --agent claude-code

SKILL.md

ijfw-verify.SKILL.md
name: ijfw-verify
description: "Use when about to claim completion: 'done', 'fix complete', 'tests pass', 'build succeeded', 'shipped', 'no regressions', 'ready to merge', 'ready to ship'. Iron Law gate requiring fresh verification evidence in the same message as the claim; wires into runtime (verification-gate.js + the ijfw_state MCP tool subagent.post-done verb)."

IJFW Verify -- The Iron Law

The Iron Law

> **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**

If you haven't run the verification command in *this* message, you cannot claim it passes. "Earlier" doesn't count. "Should pass" doesn't count. "The code looks right" doesn't count.

**Violating the letter of this rule is violating the spirit of this rule.**

Why this exists

IJFW v1.4.x shipped at least four times with "done" claims that later turned out to be false: a v1.4.0 milestone declared "shipped" without verifying the GitHub mirror push had landed; v1.4.3 declared Windows CI "promoted to required" before the workflow file change had been merged; v1.4.4 had three of six parallel subagents return DONE without their checkpoints being written; and the Trident cross-audit at r13 reported PASS while one auditor (codex) was UNREACHABLE. Every one of those was an Iron-Law violation -- a claim without same-message evidence -- and every one cost a recovery wave.

This skill is the gate that catches it.

The 5-Step Gate Function

Before emitting any completion claim (verbal or structured):

1. **IDENTIFY** -- What command, in this repo, proves the claim true? 2. **RUN** -- Execute the FULL command via Bash tool, *in the same message as the claim*. Not summarised. Not paraphrased. The actual command, fresh. 3. **READ** -- Read the full output. Check the exit code. Count failures. Do not skim. 4. **VERIFY** -- Does the output literally confirm the claim?

  • If NO: state the actual status with the evidence. Do not claim completion.
  • If YES: state the claim *with the output excerpted inline*.

5. **ONLY THEN** -- emit the claim.

Skip any step = lying, not verifying.

Common Failures -- claim vs required evidence

| Claim | Required evidence (same message) | |---|---| | "all tests pass" | Output of `npm test` (or the project's test command), exit 0, failure count = 0 | | "build succeeded" | Output of the build command, exit 0 | | "fixed the bug" | Reproduction output *before* + *after* the fix | | "deployment complete" | Deployed URL + health-check (`curl -fsS <url>`) output | | "implementation done" | Output proving the new behaviour (run the new code) | | "no regressions" | Baseline test output + post-change test output | | "all subagents DONE" | `cat .ijfw/wave-*/subagent-*.checkpoint.json` showing each checkpoint written | | "wave complete" | `node scripts/wave-status.js` showing all subs DONE *and* commits resolved | | "Trident r<N> PASS" | All three auditor reports written *and* readable; no UNREACHABLE | | "shipped to npm" | `npm view <pkg> version` returning the new version | | "pushed to GitLab/GitHub" | `git ls-remote <remote> <tag>` returning the tag SHA | | "ledger clean" | `cat .ijfw/state/execute-issues.json` showing zero unresolved entries |

If your claim is not in this table, the table is **not exhaustive** -- derive the required evidence from the *spirit* of the rule (see "Spirit over letter" below).

Rationalization Prevention -- the lies you tell yourself

| Rationalization | Counter | |---|---| | "I'm in a hurry" | The hurry is exactly when evidence matters most. Hurry shipped v1.4.0 with a missing mirror. | | "The code looks right" | Code reading proves nothing. Running it does. | | "Tests should pass" | Run them. "Should" is not evidence. | | "I already verified earlier" | Verify in the SAME message as the claim. State drifts; context windows lie. | | "The subagent reported DONE" | Subagent reports are unverified by definition. Check the checkpoint file *and* the commit SHA. | | "Trust the workflow state" | `.ijfw/state/workflow.json` records what was *claimed*, not what *happened*. Verify the artefact. | | "I'm confident" | Confidence is not evidence. Three v1.4.x ships had confident authors. | | "It worked last time" | Last time is not this time. Run it. | | "The diff looks plausible" | "Plausibility is not correctness." (Verify-command preamble exists *because* people were shipping plausible diffs.) | | "I'm tired" | Exhaustion is not an excuse. Stop and rest, or run the command. | | "Just this once" | There is no "just this once". Every Iron-Law violation in IJFW history was a "just this once". | | "Different words so the rule doesn't apply" | Spirit over letter. Paraphrased success is still a success claim. |

Red flags -- STOP and run the gate

  • About to type "should", "probably", "looks like", "seems to"
  • About to type "Great!", "Perfect!", "Done!", "Shipped!"
  • About to commit, push, tag, or open a PR
  • About to mark a workflow phase complete
  • About to emit `Status: DONE` in a subagent handoff
  • About to trust a subagent / auditor / hook success report without re-checking the artefact

Integration with the runtime gate

This skill is the **author-time** half of IJFW's verification contract. The **runtime** half lives in `mcp-server/src/orchestrator/verification-gate.js::checkVerificationGate` (originally shipped in v1.4.4 as N5 as an advisory check) and is now invoked automatically by `mcp-server/src/orchestrator/post-done-runner.js` whenever the `ijfw_state` MCP tool's `subagent.post-done` verb fires after a subagent emits `Status: DONE` (v1.5.0-major / v1.5.0 T13 — single state-SDK MCP face).

What that means in practice:

  • If you skip the Iron Law and emit `Status: DONE` anyway, the post-done runner will run `checkVerificationGate` against your checkpoint + commit + test output and downgrade the status to `DONE_WITH_CONCERNS` (or `BLOCKED`) when it detects an unsupported claim.
  • The runtime gate is the safety net. **It is not the gate.** This skill i
Read more
@ferroxlabs
Ships withijfw

IJFW — It Just F*cking Works. Ferrox Labs' local-first infrastructure for AI coding agents: shared memory, smart routing, multi-AI cross-audits, disciplined workflow.

21436 skills37 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
214
Star history of FerroxLabs/ijfw on GitHub, a chart by star-history.com

Other skills on ijfw.

ijfw-agents-md

ijfw-agents-md

Maintain canonical AGENTS.md (open spec). Trigger: 'agents.md', 'update AGENTS.md', or auto-fired by ijfw-team after agent…

@ferroxlabs@ferroxlabsInstall Skill
ijfw-auto-memorize

ijfw-auto-memorize

Session-end auto-extraction of lessons, errors, fixes, and user feedback into structured memory. Fires at session end. Requires…

@ferroxlabs@ferroxlabsInstall Skill
ijfw-complete-milestone

ijfw-complete-mileston…

Use when a milestone is shipping and you need to archive its artifacts, generate a summary, and seed the next milestone. Trigger:…

@ferroxlabs@ferroxlabsInstall Skill
ijfw-compute

ijfw-compute

Use when the user says: 'compute', 'crunch this', 'analyze logs', 'aggregate the data', 'run a script', 'dedupe', 'count by',…

@ferroxlabs@ferroxlabsInstall Skill

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.

skills10d309k
@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,…

ecc12d293k
@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…

react1d252k
@facebook@facebookInstall Skill

Questions about ijfw-verify.

Which coding agents can use ijfw-verify?
ijfw-verify 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.