description: "Run a preset suite of audits in parallel" argument-hint: "--preset <name>"
Audit Suite Orchestrator
Runs a named preset — a curated list of other /audit-* skills — by fanning
them out as background agents in parallel, then merges their reports into one
summary. This skill owns no audit logic of its own; it only sequences and
aggregates the individual audits. Shared protocol (project layout, severity,
dedup, report format) lives in .claude/commands/_audit-common.md and
.claude/commands/_audit-severity.md — not repeated here.
Every audit referenced below is a live skill under
.claude/commands/audit-<name>/SKILL.md, invoked as /audit-<name>.
The full current set (27): audio, character, concurrency, ecs, esm, fnv, fo3,
fo4, incremental, legacy-compat, nif, nifal, oblivion, performance, physics,
publish, regression, renderer, runtime, safety, save, scripting, skyrim,
speedtree, starfield, tech-debt, ui.
(/audit-publish is a post-processing step, not an analysis pass — it never
appears in a preset. /audit-scripting owns crates/scripting + crates/pex +
crates/papyrus; /audit-save owns crates/save — both added 2026-06-23.
Four owner audits added 2026-08-13, closing the largest coverage gaps:
/audit-esm owns crates/plugin, /audit-ui owns crates/ui, /audit-physics
owns crates/physics + byroredux/src/ragdoll.rs, /audit-character owns
crates/core/src/character. Presets that used to substitute generic audits for
those areas now call the owner directly.)
--focus numbers below track the dimension numbering inside each target skill.
If a target audit is renumbered, update the focus lists here in lockstep — the
suite is the one place those numbers are duplicated, so it drifts first.
Preset Index
| Preset | When | Audits |
|--------|------|--------|
| quick | after any change, < 10 min | incremental |
| pre-release | before tagging | safety · renderer · ecs · regression |
| comprehensive | monthly / pre-milestone | all subsystem + per-game + runtime |
| tech-debt-deep | after a milestone closes | tech-debt · incremental |
| per-game-all | per-game compat sweep | the 6 game audits |
| nif-all-games | NIF parser vs every game | nif ×6 game corpora |
| runtime-regression | telemetry diff vs baselines | runtime |
| esm-deep | after ESM/plugin-parser changes | esm · incremental · (per-game when one title is the target) |
| physics-deep | after physics / ragdoll / character-controller changes | physics · concurrency · safety |
| character-deep | after CHARAL ruleset / progression changes | character · esm · ecs |
| nif-deep | after NIF parser changes | nif · nifal · safety · incremental |
| nifal-deep | after NIFAL translation changes | nifal · nif · renderer · ecs |
| renderer-deep | after renderer changes | renderer · performance · concurrency · safety |
| rt-deep | after RT / denoiser / G-buffer changes | renderer · performance · concurrency |
| material-deep | after material-table / PBR changes | renderer · safety |
| texture-roles-deep | after MaterialTextureSet / ImportedMaterial changes | nifal · fo4 · starfield · renderer |
| upscaler-deep | after FSR3 / presentation / exposure changes | renderer · safety · performance |
| ui-deep | after Scaleform/SWF (R4 + M48) changes | ui · safety · concurrency · tech-debt |
| water-deep | after water changes (render or physics half) | renderer · physics · esm · concurrency · safety |
| volumetrics-deep | after volumetric-lighting changes | renderer · performance · safety |
| bloom-deep | after bloom-pyramid changes | renderer · performance · safety |
| skin-deep | after GPU-skinning / BLAS-refit changes | renderer · performance · concurrency · safety |
| audio-deep | after audio (kira) changes | audio · concurrency · safety |
| scripting-deep | after scripting / .pex / Papyrus / recognizer changes | scripting · ecs · incremental |
| save-deep | after save/load changes | save · ecs · incremental |
| speedtree-deep | after SpeedTree (.spt) changes | speedtree · incremental |
| streaming-deep | after world-streaming / NPC-spawn changes | performance · concurrency · character · physics · safety |
| legacy-deep | after compatibility-mapping work | legacy-compat · incremental |
Broad Presets
--preset quick
Fast sanity check after a change (< 10 min):
/audit-incremental --commits 5
--preset pre-release
Run before tagging a release:
/audit-safety/audit-renderer/audit-ecs/audit-regression --limit 20
--preset comprehensive
Full coverage (longest — run monthly or before a major milestone). Every subsystem audit, every per-game audit, plus the runtime telemetry diff that catches what static audits structurally can't see:
/audit-renderer/audit-ecs/audit-safety/audit-concurrency/audit-performance/audit-nif/audit-nifal/audit-esm/audit-physics/audit-character/audit-ui/audit-audio/audit-speedtree/audit-scripting/audit-save/audit-legacy-compat/audit-tech-debt/audit-fnv/audit-fo3/audit-skyrim/audit-oblivion/audit-fo4/audit-starfield/audit-regression/audit-runtime --game all
With the four 2026-08-13 additions this preset now covers every crate in the
_audit-common.md crate→owner map. The residual gaps it does not cover are
crates/mod-runtime (folded into /audit-safety Dim 11), crates/hkx (folded
into /audit-scripting Dim 8), and crates/debug-server / crates/debug-protocol
(no owner). Name them in the summary rather than claiming full coverage.
--preset tech-debt-deep
Surface accumulated debt (run after a milestone closes, before opening the next):
/audit-tech-debt/audit-incremental --commits 30
Per-Game Presets
--preset per-game-all
Run every per-game compatibility audit (reference title first, then in compat-tier order):
/audit-fnv/audit-fo3/audit-skyrim/audit-oblivion/audit-fo4/audit-starfield
--preset nif-all-games
Exercise the NIF parser against every available game corpus (the --game arm
selects the on-disk data dir from _audit-common.md):
/audit-nif --game fnv/audit-nif --game fo3/audit-nif --game skyrim/audit-nif --game oblivion/audit-nif --game fo4/audit-nif --game starfield# Cydonia walkable — BSGeometry path exercised
--preset runtime-regression
Drive the engine headless on every supported game's representative cell and diff
the captured telemetry against the checked-in baseline TSVs. Catches regressions
in tex.missing / mesh.cache failed / fps / draw-call count under a real cell
load — see #1283:
/audit-runtime --game all
NIF / NIFAL Presets
--preset nif-deep
After NIF parser changes (stream position, version gating, block dispatch):
/audit-nif/audit-nifal# the parse → ECS material/collision boundary regresses with parser changes/audit-safety/audit-incremental --commits 10
--preset nifal-deep
After NIFAL canonical-translation changes — the single ImportedMesh → Material
boundary (byroredux/src/material_translate.rs), Material::resolve_pbr
(crates/core/src/ecs/components/material.rs, metalness/roughness are plain f32),
typed particle emitter blocks, and collision-shape translation
(crates/nif/src/import/collision/mod.rs). Spec: docs/engine/nifal.md. /audit-nifal
owns the full canonical-translation tier (9 dimensions); this preset is the
cross-cutting regression sweep around it:
/audit-nifal/audit-nif --focus 4,5# parse-side geometry/import handoff (dim 4) + collision/shader blocks (dim 5)/audit-renderer --focus 6,7,17# NIFAL material (dim 6) + material table (dim 7) + Disney BSDF/PBR gating (dim 17)/audit-ecs# particle emitter components + apply_emitter_params system
Renderer Presets
Renderer dimension map (from /audit-renderer, 23 dimensions): 1 AS · 2 SSBO+rays ·
3 GPU-struct layout · 4 sync/barriers · 5 memory/lifecycle · 6 NIFAL material ·
7 material table · 8 denoiser/composite · 9 skinning · 10 camera-relative precision ·
11 pipeline/render-pass · 12 cmd buffer · 13 TAA · 14 caustic splat · 15 water ·
16 volumetrics+bloom · 17 Disney BSDF/soft shadows · 18 sky/weather · 19 tangent
space · 20 debug/telemetry · 21 Cornell harness · 22 light animation ·
23 FSR3 upscaler + presentation chain (added 2026-07-27).
--preset renderer-deep
After significant renderer changes — all 23 dimensions plus the cross-cutting perf/concurrency/safety passes:
/audit-renderer/audit-performance --focus 1,2,3,5/audit-concurrency --focus 1,2,3/audit-safety
--preset rt-deep
After ray tracing / denoiser / G-buffer changes:
/audit-renderer --focus 1,2,8# AS + SSBO/ray queries + denoiser/composite/audit-performance --focus 1,3/audit-concurrency --focus 1,2
--preset material-deep
After material-table / PBR changes (GpuMaterial layout, dedup, SSBO,
Disney BSDF gating):
/audit-renderer --focus 6,7,17# NIFAL material + material table + Disney BSDF/audit-safety
--preset texture-roles-deep
After changes to MaterialTextureSet, ImportedMaterial, merge_external_material,
or translate_material — the 2026-07-27 cross-game texture-role unification
(1d94eb24 + 05d68926 + c8c8a834). Roles are the new per-game seam, so a
mistake here is invisible in one game and wrong in another:
/audit-nifal --focus 1,8# material boundary (narrowed signature) + texture-role vocabulary/audit-fo4# BGSM is the densest role producer/audit-starfield# CDB.matis the second densest, and the newest/audit-renderer --focus 6,7# NIFAL material + material table consumption
--preset upscaler-deep
After FSR 3.1 / presentation / exposure changes. FSR Quality is the engine default, so this is the default render path — a layout or barrier error here is not a feature bug, it is every frame:
/audit-renderer --focus 23,4,13# FSR dim + sync/barriers + TAA (shared jitter/motion vectors)/audit-safety#crates/fsr3-sysFFI# Safetycontracts/audit-performance --focus 1,3RunBYRO_VALIDATION=1alongside — layout errors here are structurally invisible tocargo test.
--preset ui-deep
After Scaleform/SWF UI changes (R4 + M48 host layer). /audit-ui (added
2026-08-13) now owns crates/ui/ — the host contract, profile split, ABC
adapter, navigator and render/device lifecycle. The three generic passes stay
because the crate straddles an FFI boundary and two drift-prone generated
surfaces:
/audit-ui# the owner: profile, bridge, AVM2 adapter, navigator, device, input/audit-safety --focus 1# Ruffle/wgpu FFI + offscreen readback lifetimes/audit-concurrency --focus 7# Ruffle local-executor pump vs. main loop/audit-tech-debt# generated AVM2 adapter + the pinned method catalogs are drift-prone
--preset water-deep
After water changes. WATAL is double-ended and its physics half shipped at
the 2026-08-10 checkpoint, so a water change is rarely render-only — buoyancy,
submerged damping and current drag read the same canonical WaterFlow the
shader does:
/audit-renderer --focus 1,2,8,14,15# AS + rays + composite + caustic splat + water dim/audit-physics --focus 6# the WATAL physics sink (buoyancy / damping / current)/audit-esm --focus 5# the tri-state XCLW / WRLD water decode at the CELL boundary/audit-concurrency --focus 1,2/audit-safety
--preset volumetrics-deep
After volumetric-lighting changes:
/audit-renderer --focus 1,2,5,16# AS + rays + memory + volumetrics/bloom dim/audit-performance --focus 1,3/audit-safety
--preset bloom-deep
After bloom-pyramid changes:
/audit-renderer --focus 4,8,16# sync + composite + volumetrics/bloom dim/audit-performance --focus 1,3/audit-safety
--preset skin-deep
After GPU-skinning / BLAS-refit changes (M29.x):
/audit-renderer --focus 1,9# AS (skinned BLAS) + GPU skinning compute/audit-performance --focus 1,6/audit-concurrency --focus 1,2,3/audit-safety
Subsystem Presets
--preset audio-deep
After audio (kira backend) changes — emitter/listener pose sync, spatial sub-track lifecycle, reverb send, streaming music:
/audit-audio/audit-concurrency --focus 6,7# GPU/teardown ordering + worker threads/audit-safety
--preset scripting-deep
After scripting changes — the .pex decompiler (crates/pex), the .psc
Papyrus parser (crates/papyrus), the AST→ECS recognizer chain + runtime
systems (crates/scripting), or the cell-loader script-attach path (M30/M47):
/audit-scripting/audit-ecs# recognizer-emitted components + scripting-runtime systems lock/stage ordering/audit-incremental --commits 10
--preset save-deep
After save/load changes — full-ECS-snapshot capture, type-erased registry,
atomic disk write + ring, validation gates, or the M45.1 live load-apply
(crates/save + the engine-side driver):
/audit-save/audit-ecs# snapshot completeness vs component registry + frame-boundary capture safety/audit-incremental --commits 10
--preset speedtree-deep
After SpeedTree (.spt) walker / billboard-fallback changes:
/audit-speedtree/audit-incremental --commits 10
--preset esm-deep
After ESM/ESP parser changes — the GRUP walk, SubReader byte accounting, a
per-record schema, the FormID remap, or the CELL/WRLD walkers
(crates/plugin/). Add the per-game audit when one title is the target, since
/audit-esm audits the parser as a parser and the per-game skills audit its
output for their own data:
/audit-esm/audit-incremental --commits 10/audit-<game>— only when the change is game-specific
--preset physics-deep
After physics changes — collider translation, the fixed-step accumulator, the
4-phase sync, ragdoll articulation, the character controller, or the WATAL
buoyancy sink (crates/physics/, byroredux/src/ragdoll.rs):
/audit-physics/audit-concurrency --focus 5,7# the resource↔storage lock dance in physics_sync_system/audit-safety
--preset character-deep
After CHARAL changes — a ruleset, a derived formula, a leveling model, or the
population boundary. /audit-esm joins because CHARAL's inputs (AVIF, CLAS,
NPC_) are decoded there, and a wrong FormID resolution is indistinguishable
from a wrong coefficient at the actor:
/audit-character/audit-esm --focus 4# AVIF / CLAS / NPC_ decode + dispatch coverage/audit-ecs# ActorValues / Perks / CharacterLevel component layer
--preset streaming-deep
After world-streaming / NPC-spawn changes (M40 / M41). NPC spawn is also CHARAL's only population site and the physics registration path, so both owners join:
/audit-performance --focus 7# world streaming & cell transitions/audit-concurrency --focus 7# worker threads (streaming, debug server)/audit-character --focus 5# the population boundary in npc_spawn.rs/audit-physics --focus 3# newcomer registration / release across cell churn/audit-safety
--preset legacy-deep
After compatibility-mapping work (Gamebryo 2.3 → Redux):
/audit-legacy-compat/audit-incremental --commits 10
Execution
- Parse the
--presetargument from$ARGUMENTS. If unknown, list the preset index above and stop. mkdir -p /tmp/audit.- Launch each audit in the preset as a background agent, max 3 concurrent. The audits are independent — they read the tree and write distinct reports — so they fan out in parallel; no ordering dependency between them.
- Each audit writes its own report to
docs/audits/AUDIT_<TYPE>_<TODAY>.md(per_audit-common.mdfinalization). - When all complete, produce a combined summary:
# Audit Suite Summary — <preset> — <date>
| Audit | Findings | CRITICAL | HIGH | MEDIUM | LOW | Report |
|-------|----------|----------|------|--------|-----|--------|
| Safety | 3 | 0 | 1 | 2 | 0 | AUDIT_SAFETY_... |
| ... | ... | ... | ... | ... | ... | ... |
Total: X findings (C critical, H high, M medium, L low)
- If any CRITICAL findings exist, warn prominently at the top of the summary.
- For each report that has findings, suggest:
/audit-publish docs/audits/AUDIT_<TYPE>_<TODAY>.md
Expert Next.js App Router
Developpement
Un skill qui transforme Claude en expert Next.js App Router.
Générateur de README
Developpement
Crée des README.md professionnels et complets pour vos projets.
Rédacteur de Documentation API
Developpement
Génère de la documentation API complète au format OpenAPI/Swagger.