Audit
The engineering memory for Claude Code — a CLAUDE.md brain Claude reads before it writes, plus living docs kept in sync with your code: a tiered design doc-base (tokens, components, DDRs), pricing & unit-economics, and region-aware legal.
npx -y skills add erenisci/acta --skill auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Read-only check that the docs still match the code — drift, dead links, stale TBDs, brain/registry; reports findings (--fix: safe mechanical fixes only). Trigger on /acta:audit, "audit the docs", "check doc drift".
SKILL.md
6.9 KB, as published. Nobody here has run it
acta:audit
The trust check. Acta's whole value is a trustworthy engineering memory — this verifies the docs haven't drifted
from reality. Read-only by default: it reports; it fixes only mechanical things when asked (--fix), and it
never fabricates content or guesses.
Shared resources at ${CLAUDE_PLUGIN_ROOT}/acta/: doc-catalog.md (the contract), disciplines.md, project-types.md,
principles.md.
Language
Write findings and any persisted items in the project's documentation language (registry language:, default English); talk to the user in the language they use. See ${CLAUDE_PLUGIN_ROOT}/acta/principles.md.
Pre-condition
Read .claude/acta.md (registry) and ${CLAUDE_PLUGIN_ROOT}/acta/doc-catalog.md. If there is no registry, this project isn't
set up with Acta yet → suggest /acta:build (greenfield) or /acta:adopt (existing code). Don't guess a doc set without them.
Checks
Run these read-only checks and collect findings. Rank each 🔴 broken · 🟡 drift/stale · 🔵 hygiene.
- Brain & index integrity —
CLAUDE.mdhas the<!-- acta:index:start/end -->block and its links resolve;docs/README.mdlists exactly the docs on disk (no missing, no orphan); registry rows match the filesystem. - Broken links — every relative link inside
docs/**(and the brain) points to an existing file. - Doc ↔ code drift — compare docs against the code and flag mismatches:
- stack in
arch-overview/ registry vspackage.json/pyproject.toml/go.mod/ etc. - endpoints in
api.mdvs routes; env-var names inenv-vars.mdvs.env.example(the committed template only — never open a real.env/.env.local; compare names, never values);project-structuretree vs the actual top-level folders; tables indatabase-designvs schema/migrations. - "doc says X, code says Y" → report both sides.
- stack in
- Stale / empty — docs still mostly
TBD;updated:far behind recent code changes; scaffolds never filled. - Contradictions — best-effort scan for conflicting statements across docs (e.g. PRD "no backend" vs architecture "REST API"). Flag them; never resolve by guessing.
- Conventions — filename casing (root meta UPPERCASE,
docs/**lowercase kebab-case); docs living outside the catalog's paths; disciplines/packs in the registry vs what's actually on disk. Do not flag the skill-owned areasdocs/design/,docs/business/,docs/legal/as orphans — they are valid (see the catalog's "Skill-owned areas" note). - Anti-bloat —
in-placedocs that have grown append-only (e.g.PROGRESS.mdaccumulating dated log lines instead of a snapshot); oversized docs that should be consolidated per their growth policy. - Design consistency (only if
docs/design/exists) — the code's real styling vs the design doc-base:- rogue colors / spacing / fonts / type used in code but not in
tokens.md(and its granular docs —color.md,typography.md,spacing-layout.md,motion.md— where present); a drifted styling approach vsdesign-system.md. - components or variants/states in code missing from
components.md. - DDR integrity (full tier):
docs/design/decisions/README.mdindex matches the files on disk; no DDR points to a superseding DDR that doesn't exist. - a broken or missing
{{DESIGN_LINKS}}block in the brain (design docs exist but the "Design & brand" bullet is absent or its links don't resolve). Flag them → the fixer is/acta:track(design sync).
- rogue colors / spacing / fonts / type used in code but not in
- Business consistency (only if
docs/business/exists) — a price / plan / tier in the code or config (e.g. a Stripe price, a plans table) that disagrees withpricing.md; a monetization model in code not reflected inbusiness-model.md. Flag the drift → the fixer is/acta:business. (Read-only; never rewrite pricing.) - Legal consistency (only if
docs/legal/exists) — legal-relevant reality in the code not reflected in the briefs: cookies / analytics / trackers with noconsent.mdentry; a data field or vendor / sub-processor absent fromdata-processing.md; a market/region served that the briefs' regimes don't cover; open "⚠️ needs lawyer re-review" items. Flag them → the fixer is/acta:track(legal sync). (Never write binding legal text or give legal advice.)
Output
Print a concise report — do not create a bloated audit file:
Acta audit — <project>
🔴 Broken (N) : <one line each>
🟡 Drift/stale (N) : <one line each>
🔵 Hygiene (N) : <one line each>
Clean : <areas with no findings>
→ Fix: run /acta:track to re-sync current-state docs; <specific doc> needs <the manual bit only a human can supply>.
If everything passes, say so plainly. By default the audit writes nothing — the report is printed; no file is created and no file grows.
Not losing findings (opt-in, never bloats)
Because the report is ephemeral, offer two ways to keep the findings — the user chooses; nothing is written without consent:
-
Just re-run
/acta:auditnext session — it's cheap and reflects the current reality, so a real issue is never missed (nothing to forget). This is the default. -
Record open items into the living memory (only if the user wants persistence): one concise line per unresolved finding into an existing doc — never a separate audit file:
- blocking / do-next →
docs/progress.mdBlocked / Next Up - deferred quality or debt →
docs/project/tech-debt.md(TD-N) - a doc's own unknown → that doc's Open Questions
These are bounded, self-cleaning docs (a snapshot / an open-debt list) linked from the
CLAUDE.mdbrain:acta:trackremoves each item once it's fixed, so they track the current open set and shrink as you resolve them — never grow without bound. Anti-bloat: one line per item, dedupe, no audit files. - blocking / do-next →
Fixing — only with --fix, only the safe mechanical set
- Regenerate the
CLAUDE.mdbrain block,docs/README.mdindex, and.claude/acta.mdregistry from the current filesystem (idempotent, marker-scoped). - Remove or correct broken internal links.
- Refresh
updated:dates only on docs you actually changed. - NEVER fabricate content, resolve a contradiction, or fill a
TBD— those are always reported for the human or for/acta:track, never invented.
Rules
- Read-only by default;
--fixperforms only the mechanical set above. - Never fabricate; unknown / contradiction / gap → report, don't invent.
- Idempotent. Content in the project's documentation language. Operate by
${CLAUDE_PLUGIN_ROOT}/acta/principles.md.