audit
Skill2 starsChanged 33 days agoMITView on GitHub
Use when the user wants to assess the state of a feature, flow, or module — a UX, security, performance, or accessibility audit; cataloging bugs, gaps, and opportunities; retesting open findings; escalating a finding to the backlog; or updating audit methodology. Fires on "I want to do a UX / security / performance / accessibility audit", "before we ship I want to audit X", "audit the X flow or module", "catalog the state of X", "list bugs and gaps in X", "retest open findings", "register a finding under audit X", "escalate finding <id> to backlog", and /aidex:audit commands. Not for: auditing the Claude Code setup itself like skills or MEMORY.md (/aidex:aidex); creating plans (/aidex:plan) or decisions (/aidex:decision); generic backlog items not from a finding (/aidex:backlog).
194 other projects use a version of this.
Adopted by
Most recently taken up by
- Laucked-Security/claude-oswetheir own version, first seen Nov 8, 2026
- sanmidable/skillstheir own version, first seen Nov 8, 2026
- alegauss/claude-traytheir own version, first seen Nov 8, 2026
- ansvisor/ansvisortheir own version, first seen Nov 8, 2026
- ai-search-guru/getcito-worlds-first-open-source-aio-aeo-or-geo-tooltheir own version, first seen Nov 8, 2026
- MammadovEshgin/clean-code-skilltheir own version, first seen Nov 8, 2026
Used with
Projects with it also use delight, teach-impeccable and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
HK-hubSkilldelight
Add moments of joy, personality, and unexpected touches that make interfaces memorable and enjoyable to use. Elevates functional to delightful. Use when the user asks to add polish, personality, animations, micro-interactions, delight, or make an interface feel fun or memorable.
Also in 32 projects that use this
HK-hubSkillteach-impeccable
One-time setup that gathers design context for your project and saves it to your AI config file. Run once to establish persistent design guidelines.
Also in 19 projects that use this
zwy123zwySkillnormalize
将用户随意输入的提示词规范化为结构清晰、便于大模型执行的标准化提示词。适用于需要整理、统一提示词格式时调用。
Also in 19 projects that use this
SkillPilotCHSkilllevel-up
Eine Automatisierung pro Woche finden, scopen, shippen. Output landet als proposed-Eintrag in cadence.md mit konkreten Implementations-Schritten.
Also in 12 projects that use this
ww-w-aiSkillpm-discovery
PM Agent Team - Automated product discovery, strategy, and PRD generation. Runs PM analysis workflow to produce comprehensive PRD before PDCA Plan phase.
Also in 3 projects that use this
- +7 more from HK-hub
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 194
- openai/plugins★ 7.8ksame name
- ccch1mneyyy/dsh-TUI★ 7.2ksame name
- macro-inc/macro★ 6ksame name
- yournextstore/yournextstore★ 5.5ksame name
- gadievron/raptor★ 4ksame name
- alchemy-run/alchemy★ 1.9ksame name
- alchemy-run/alchemy-effect★ 1.9ksame name
- mattmireles/gemma-tuner-multimodal★ 1.5ksame name
- jsmastery-pro/skills★ 1.4ksame name
- nateherkai/AIS-OS★ 1.4ksame name
184 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository21 other files it gives its agents.
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 175 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 72
When invoked with arguments, run the script the sub-actions table above names for that command, passing the remaining arguments through.
- Distinctive: line 86
If no arguments are given, show the help table above and run a status check:
- Very specific: line 171
Add rows to 00-inventory.md for each finding.
- Very specific: line 221
If audits have accumulated inside .context/plans/:
- Distinctive: line 238
after a feature push on a tracked module,
- Distinctive: line 239
after closing a plan that touched tracked paths,
- Distinctive: line 240
after any incident (something broke → coverage was probably thin there).
- Distinctive: line 279
All templates in assets/templates/:
“Common” is measured: kept by at least 6 in 10 of the 175 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Audit — Project State Catalog
Operate the .context/audits/ convention: scaffold new audit runs, validate coherence, escalate findings to backlog, migrate legacy folders out of plans/.
See audit-conventions for the full convention.
Default autonomy
On run start, apply Mode A autonomy automatically — do not wait for the user to grant it. Questions live in the initial alignment moment only; after that the run proceeds start-to-finish per the shared canon (deny/pre-authorized/mandated/autonomous). See "Sweep doctrine" below for how this applies once a sweep is running.
Sub-actions
Dispatch by first argument:
| Command | Script | Purpose |
/aidex:audit | — | Show help + current state of .context/audits/ |
/aidex:audit new <type> <slug> | scripts/new-audit.sh | Scaffold a new audit run |
/aidex:audit validate [path] | scripts/validate-audit.sh | Check coherence INVENTORY ↔ findings ↔ backlog. Every finding prints its rule id; accept one by adding a line to .context/.aidex-waivers (same store and format as validate.py, canon 00-global.md §10.1) |
/aidex:audit escalate <id>... [--page <page.html>] | scripts/escalate-finding.sh | Move finding to backlog. An id in more than one methodology is refused: qualify it as <methodology>/<id> (e.g. ux/F-001) |
/aidex:audit escalate <[methodology/]finding-id> --loop | scripts/escalate-finding-to-loop.sh | Escalate a bulk, machine-checkable finding to an loop loop-spec instead of the backlog (see guard below) |
/aidex:audit remediate <run> [--check] [--dry-run] | scripts/remediation-loop-spec.sh | Emit ONE remediation loop-spec from a run's unresolved findings, priority-grouped, that loop runs without hand-editing. Rows move to doing + the loop/<file> marker — never done, which would satisfy the gate before any work. --check IS the gate: it reads the inventory, so an item only counts once its row moves |
/aidex:audit migrate [project-dir] | scripts/migrate-audit.sh | Move legacy audit-like folders from plans/ |
/aidex:audit close <run> [--force] | scripts/close-audit.sh | Archive a run folder on cycle close (D-10) once in-scope findings are resolved; rolling inventory stays. --force for upstream/out-of-scope findings |
/aidex:audit reindex | scripts/reindex-audits.sh | Regenerate the run-level roll-up 00-index.md (all runs + per-run finding counts). Auto-run by new and close. --check reports drift read-only (used by validate + shared reconcile.sh) |
/aidex:audit coverage-matrix | scripts/coverage-matrix.sh | Regenerate the breadth matrix (modules × tests) plus the route board (page × action × endpoint, naming every route no E2E spec reaches) from module-map.json — generated artifact, never hand-edited |
/aidex:audit coverage-sweep [--since ISO] | scripts/coverage-sweep.sh | Drift report: which modules changed without their tests moving since the last matrix — suggests re-runs, advisory only |
/aidex:audit usage-retro --facet <name> [--since X] [--until Y] | scripts/usage-retro/facet-run.sh | One usage-retro run scoped to a facet of the suite (backlog, artifacts, session, planning — spec files under references/facets/). Explicit window or the facet's own catch-up from .usage-retro/coverage.json; never touches the weekly cursor. Needs --projects-root / AIDEX_PROJECTS_ROOT when the facet declares a residue reader. Pipeline: references/08-usage-retro-pipeline.md § Facets |
/aidex:audit affected-tests [--since <ref>] [--command] | scripts/affected-tests.sh | Map current diff → affected modules → which tests to run (advisory; a changed file with a colocated test narrows to it, all-or-nothing per module — else module-level). --command prints ONE runnable unit command per repo, paths merged — so a caller runs the selection instead of composing it. Exit 3 = no selection available: fall back to the full suite and say so. E2E is never emitted as a command (it stays behind test-e2e.sh) |
/aidex:audit config-check [project ...] [--root <dir>] [--verbose] [--json] | scripts/coverage-config-check.sh | Read-only portfolio sweep for the test-coverage playbook's five configuration keys (hasher_pytest, hasher_e2e, vitest_include, coverage_provider, no_n_auto). Silent when clean, exit 1 on drift — same contract as the aidex skill's fleet-wide sweep sub-action. Never CI, never a hook |
--loopguard (anti-cargo-cult). Use--loopONLY when the finding is bulk + machine-checkable — a gate the machine can run to say pass/fail across many sites (lint clean / contrast ratios / type-clean / remove-all-X). Single fixes and ideas go to the backlog (plainescalate, no flag). Never auto-loop: the operator still writes the exact Stop condition and picks an engine before the loop runs. If there is no machine gate, it is not a loop — escalate to backlog.
Supported audit types (for new)
ux · ai-opportunities · security · perf · a11y · hitl · retest ·
test-coverage · docs-coverage · rule-ablation · custom — short English names per
decision/2026-07-02-audit-rebuild-canon-decisions; the legacy -audit-suffixed and
ia-opportunities forms are accepted as input aliases and normalized, as is the
coverage short form for test-coverage and docs/documentation for docs-coverage. For a one-shot analysis with no recurring
methodology, use new --standalone <slug>: it scaffolds a dated run folder
directly under audits/ with no boards (canon §Standalone one-shot runs).
Read ${CLAUDE_PLUGIN_ROOT}/skills/audit/references/04-playbooks.md before choosing a type. It holds what each
methodology actually checks, when it is the wrong fit, and which one a vague request
("audit my app") maps to. Choosing wrong scaffolds boards you then have to migrate.
Dispatch logic
When invoked with arguments, run the script the sub-actions table above names for that command, passing the remaining arguments through. The table is the only command→script mapping; it is deliberately not restated here, because a second copy drifts and ends up naming scripts that do not exist.
One command is not 1:1 — escalate has two scripts, chosen by the flag:
# escalate --loop takes the loop variant; every other command takes its table row.
if [ "${1:-}" = "escalate" ] && printf '%s\n' "$@" | grep -q -- '--loop'; then
bash "${CLAUDE_SKILL_DIR}/scripts/escalate-finding-to-loop.sh" "$@"
fiIf no arguments are given, show the help table above and run a status check:
# Quick status (when invoked with no args):
if [ -d .context/audits ]; then
bash "${CLAUDE_SKILL_DIR}/scripts/reindex-audits.sh" >/dev/null 2>&1 # refresh roll-up
cat .context/audits/00-index.md # run-level state
# Changelogs live per methodology (D-02). The root path is legacy-only —
# migrate-audit.sh leaves it in place without --methodology — so it is a
# fallback, not the primary read.
for cl in .context/audits/*/00-changelog.md .context/audits/00-changelog.md; do
[ -f "$cl" ] && { echo "== $cl"; head -15 "$cl"; }
done
fiWorkflows
Starting fresh
/aidex:audit new ux login-redesignScaffolds the canon per-methodology layout (D-02):
.context/audits/ux/2026-07-02-login-redesign/index.md.context/audits/ux/2026-07-02-login-redesign/findings.md.context/audits/ux/00-inventory.md(if missing).context/audits/ux/00-methodology.md(if missing — seeded from the type's playbook).context/audits/ux/00-changelog.md(if missing)
For a one-shot analysis (no recurring methodology):
/aidex:audit new --standalone usage-retro-q3Scaffolds only .context/audits/2026-07-02-usage-retro-q3/index.md — no boards
(canon §Standalone one-shot runs; escalation uses origin_ref: audit/<run>/<id>).
Running an audit
Front-load the area order (work-list). At kickoff, after scope/borders, emit the
audit's areas/findings in execution order as a durable .context/worklists/ work-list
(via the AskUserQuestion survey → worklist-new.sh). Read
${CLAUDE_PLUGIN_ROOT}/skills/conventions/references/worklist-conventions.md first — it holds
the work-list format, the three classes of mid-run question, and which ones the queue is
supposed to absorb. The sweep then walks
areas with worklist-advance.sh instead of pausing to ask "next area?" between them —
the one ordering decision is fixed once, up front. (For a fan-out Workflow run below,
the same ordered areas become the shards.) No interactive channel (claude -p,
cron): skip the survey, emit the areas in the order scope/borders produced them, and note
the defaulting in the audit brief —
autonomy-conventions.md § When there is no interactive channel.
Durable Workflow promotion (mandatory evaluation at kickoff). At
/aidex:audit new— the single sanctioned question point, before the sweep begins — classify whether the audit has enough independent dimensions or shards to amortize the ~22k/agent Workflow floor. If yes, propose the durable fan-out Workflow form in one line, batched with the kickoff scope questions — e.g. "12 independent dimensions -> run as a durable Workflow (fan-out of analysts, schema-gated, arbiter at the escalate gate)? else in-process sweep." A one-word "yes" is the opt-in: invoking this skill plus this proposal is the sanctioned authorization to call theWorkflowtool — noultracodeneeded. If the audit does not qualify (few dimensions, small scope, not unattended), run the normal in-process sweep and do not ask. This is a kickoff question, never a mid-sweep interruption.
model-policy: per-stage. Every agent this skill spawns carries its own model and effort — the plugin-levelagents/*.mddefinitions declare theirs (the arbiter consult included), and the fan-out script assigns per stage. Nothing here inherits the spawning session's by omission.The fan-out form ships as
assets/workflows/audit-fanout.workflow.js, which embeds the single-sourced durability CORE (../conventions/references/workflow-core.md) and is covered by the drift-lock test.
- Open the
methodology/<type>.mdplaybook. - Walk through checks in scope.
- Read
${CLAUDE_PLUGIN_ROOT}/skills/audit/references/02-id-conventions.mdbefore writing the first finding id — it decides structured vs global ids for this run, and an id scheme changed after the fact invalidates every inboundorigin_ref. - Add rows to
00-inventory.mdfor each finding. - Reference IDs from this run's
findings.md(filtered view). - Read
${CLAUDE_PLUGIN_ROOT}/skills/audit/references/03-lifecycle.mdbefore setting any finding's status — it is the state machine (which transitions are legal, what closes a finding vs. escalates it) thatvalidate-audit.shandclose-audit.shenforce. - Close out
index.mdsummary.
Sweep doctrine (autonomy). Scope and borders are set at kickoff (
/aidex:audit new) — that is the initial phase where any question is asked. After that the run is an uninterrupted sweep: catalog each finding with your best-judgment severity and log the assumption — do not stop to ask whether something is worth noting. Escalation to backlog/loop is the explicit border (the separateescalatesub-action); for security audits, active exploitation or destructive verification isdeny. Full rule: autonomy-conventions.md.Don't pause at the escalate gate for one finding. A single confirmed finding goes to backlog without a question. When more than one is confirmed, build the consultation page with
/aidex:artifactfirst (a consultation page citing every finding id; the owner decides the batch there), then runescalate <ids...> --page <page.html>; the script refuses a batch without it. If a specific finding is genuinely ambiguous, decide CONTINUE / ASK / STOP yourself per finding against the policy in the ARBITER block of workflow-core.md and put anyASKon that page.Isolation. An audit is read-mostly — usually no worktree. The exception is a security audit that needs destructive verification: run it in an isolated worktree with its own DB (
worktree.sh new) so it never mutates real state. In that case read${CLAUDE_PLUGIN_ROOT}/skills/conventions/references/worktree-conventions.mdfor the isolation contract before touching anything.
After the audit
/aidex:audit validate # verify coherence
/aidex:audit escalate BUG-01-1 # one finding at a time → backlog
/aidex:audit escalate BUG-01-1 BUG-01-2 --page <page.html> # a batch (or a 2nd escalation within 10 min) needs a consultation page built with /aidex:artifact (a kit-stamped .html with consult-groups, citing the ids; it may live under .context/audits/)
/aidex:audit escalate A11Y-02-1 --loop # bulk, machine-checkable finding → loop-spec
/aidex:audit remediate 2026-06-21-retro # the whole run's open findings → one remediation loop-specRe-testing
/aidex:audit new retest post-sprint-5Open the retest playbook; for each previously-open finding, classify (fixed / still open / regression / new adjacent) and update INVENTORY in place.
Legacy migration
If audits have accumulated inside .context/plans/:
/aidex:audit migratemigrate-audit.sh scores each .context/plans/ folder on file-presence heuristics and prints the candidate list plus the manual move steps. Once folders are moved, inventory-seeder generates the initial INVENTORY rows from their findings.
Read ${CLAUDE_PLUGIN_ROOT}/skills/audit/references/05-migration-guide.md before accepting any move.
It holds what the legacy plans/-era layouts look like, which folders are audits and
which only resemble one, and the order the boards must be seeded in.
When to run the sweep
/aidex:audit coverage-sweep is a drift check, not a calendar chore: run it at the
natural moments when src is likely to have outpaced tests —
- after a feature push on a tracked module,
- after closing a plan that touched tracked paths,
- after any incident (something broke → coverage was probably thin there).
It is advisory (exit 0 whenever it runs; 2 when it cannot — no/invalid map, bad flag): a ranked table of modules whose src commits moved
without their tests since the last matrix. Act on the flagged rows with
/aidex:audit new test-coverage <slug> scoped to them, then regenerate the matrix.
plan-exec (at plan close) and bugfix (at GREEN) surface a one-line
suggestion to run it (Phase 6).
Subagents
| Agent | Model | Purpose |
inventory-seeder (aidex:inventory-seeder) | sonnet | Reads scattered findings from legacy folders and generates INVENTORY rows in canonical format. |
Scripts delegate to this agent when needed. Direct use is also fine during manual migration work. Candidate detection is not an agent — migrate-audit.sh scores folders deterministically.
Principles
Quick summary. Read ${CLAUDE_PLUGIN_ROOT}/skills/audit/references/01-principles.md before
your first audit — it holds the why and the practical under each of these, which is
what tells you why a finding is never deleted and why the methodology's inventory, not the
run folder, is the source of truth. The principles themselves are stated by
conventions/references/audit-conventions.md § Core principles.
- Finding ≠ Issue ≠ Task — distinct objects with links, not copies
- Per-methodology inventory as single source of truth — per-run findings are views of
00-inventory.md. The auto-generated00-index.mdis the run-level roll-up (which runs exist, open/closed, finding counts) — complementary to the finding-level board. Do not hand-edit00-index.md. - Living methodology —
00-changelog.mdrecords every methodology change - Findings never deleted — use status transitions
- Escalation flow — audit → backlog → plan → commit → re-test → done
- Shared concerns flagged
[SHARED]in Module column
Templates
All templates in assets/templates/:
- Core: 00-inventory.md, 00-methodology.md, 00-changelog.md, index.md, findings.md
- Playbooks:
methodology/<type>.md.templatefor each of nine stock types
Related
- conventions — defines the audit convention itself
- backlog — handles the other side of escalation (
/aidex:backlog --origin audit --finding <id>) - artifact — renders inventory boards and the coverage matrix as interactive HTML on demand (
render.sh audit <methodology>/render.sh coverage); publishing stays user-gated - aidex — audits the audits directory for coherence as part of overall ecosystem health
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

