---
name: IJFW Cross Audit
slug: ijfw-cross-audit
category: Quality
description: IJFW Cross Audit generates a multi-model audit of a diff, file, brief, or artifact. Use it to get a second opinion, compare independent findings, or reconcile consensus across several model lineages.
github: "https://github.com/FerroxLabs/ijfw/tree/main/claude/skills/ijfw-cross-audit"
language: JavaScript
stars: 210
forks: 40
install: "npx degit https://github.com/FerroxLabs/ijfw/tree/main/claude/skills/ijfw-cross-audit ~/.claude/skills/ijfw-cross-audit"
installs_to: ~/.claude/skills/ijfw-cross-audit
source_path: claude/skills/ijfw-cross-audit/SKILL.md
collection_size: 25
category_size: 1557
collection_url: "https://dirskills.com/collections/FerroxLabs/ijfw"
added: 2026-09-04T05:26:35.280Z
last_synced: 2026-09-04T05:26:35.280Z
canonical_url: "https://dirskills.com/skills/ijfw-cross-audit"
---

# IJFW Cross Audit

IJFW Cross Audit generates a multi-model audit of a diff, file, brief, or artifact. Use it to get a second opinion, compare independent findings, or reconcile consensus across several model lineages.

**Install:**

```bash
npx degit https://github.com/FerroxLabs/ijfw/tree/main/claude/skills/ijfw-cross-audit ~/.claude/skills/ijfw-cross-audit
```

## README

## Execution

1. **Detect artifact.** Accept: diff, file path, brief text, or `HEAD~1..HEAD`.
   If none provided, ask once: `What should I audit? (diff, file, or paste text)`

2. **Detect auditors.** Roster covers six independent training lineages:
   - `codex`     (openai family)   -- OpenAI CLI
   - `gemini`    (google family)   -- Gemini CLI
   - `claude`    (anthropic family) -- Claude Code (fresh session)
   - `deepseek`  (oss / cn lineage) -- DeepSeek API
   - `qwen`      (oss / cn lineage) -- Qwen Code CLI
   - `kimi`      (oss / cn lineage) -- Moonshot Kimi
   - `opencode`, `aider`, `copilot` (additional oss / openai-family auditors)

   Default selection: diversity strategy picks one openai-family + one
   google-family + caller, excluding the caller's own family. Reachability =
   CLI on PATH OR API key in env. The Donahoe Trident principle says: at least
   three lenses, three lineages.

3. **Override roster with `--with`.** Pass `--with <id>[,<id>]` to pin the
   exact auditors fired. Self-audit is rejected (same-lineage = single source).
   Example: `cross-audit --with codex,gemini,deepseek <target>`.

4. **Dispatch in parallel.** Every lens runs concurrently; the orchestrator
   short-circuits stragglers once `minResponses` productive results land. Per-
   provider timeouts (codex 120s, gemini 90s, default 90s) plus
   `IJFW_AUDIT_TIMEOUT_SEC` override.

5. **Reconcile.** Lexical-signature clustering (issue + location):
   - **CONSENSUS** -- flagged by ≥2 lenses (`consensus: true`, `consensusCount`, `consensusLenses`)
   - **CONTESTED / single-lens** -- flagged by exactly 1 lens
   - **PASS** -- no findings
   Output ranks CONSENSUS findings first, then single-lens findings, each
   ordered by canonical severity (critical → low).

6. **Emit report** using the report format rule below.

## Budget controls

- `IJFW_AUDIT_BUDGET_USD` (default `$2.00`) -- per-session aggregate cap.
  Post-flight accumulation; first call is always allowed, subsequent calls are
  rejected when `accumulated + estimate > budget`. Raise to continue.
- `IJFW_AUDIT_BUDGET_USD_PER_LENS` -- granular cap on a single lens's spend
  across one convergence cycle. Useful for "spend at most $0.50 per gemini
  call" guardrails on long-running converge loops.
- `IJFW_AUDIT_TIMEOUT_SEC` -- per-auditor budget (clamped to [1, 3600]).
- `IJFW_AUDIT_CONCURRENCY` -- parallel-fire cap (default 3).

## Report format rule (all cross-audit outputs)

Any reconciliation report presenting multiple paths MUST use this structure:

```
VERDICT
  <one-line converged recommendation>

OPTIONS
  A -- <short-name>: <one-line what it is>
  B -- <short-name>: <one-line what it is>

REVIEWER CONVERGENCE
  <reviewer>:  <letter>  <score>  "<their call>"  => Option <letter> -- <name>

RECOMMENDATION
  Option <X> -- <name> because <one-sentence why>.

NEXT ACTION
  <exact command or step>
```

Never write "Option A" or "Option B" without "-- name" immediately after it on the same line.

## Severity / disposition vocabulary

Two axes, never mixed:

- **Finding severity** (sortable, per-item): `critical | high | medium | low`.
- **Audit disposition** (status of the whole audit): `PASS | CONDITIONAL | WARN | FLAG | FAIL`.

The merger coerces stray disposition values (`warn`, `flag`, etc.) on a per-
finding `severity` field into the canonical severity scale (`warn→medium`,
`flag→high`, `fail→critical`) so nothing sinks to the unranked bottom.

## Output contract

Emit a `gate-result` block as the **LAST** content of your output. Nothing
after it. Use `gate="cross-audit"`. Statuses: `PASS | CONDITIONAL | WARN | FLAG | FAIL`.

Format:

```gate-result
{
  "schema_version": "1.0",
  "gate": "cross-audit",
  "status": "<STATUS>",
  "project_type": "<from project-type-detector>",
  "lenses": [],
  "affected_artifacts": [],
  "accounting": {"duration_ms": 0, "lenses_invoked": 0, "cost_usd": null},
  "remediation": [],
  "receipts_ref": null,
  "supersedes": null,
  "gate_id": "<gate-with-colons-replaced-by-dashes>-<ts>-<rand4>",
  "emitted_at": "<ISO-8601>"
}
```
