doc-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited doc-audit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A comprehensive pass over all repository documentation. This skill reads everything, verifies everything, and resolves what it finds — a full audit, not a lightweight session-scoped check.
This skill works standalone. If a session-state snapshot (such as a project-state.md) happens to exist in the environment, treat it as optional context — proceed without it; its absence is not an error.
Run when:
If no memory path is available in system context: write findings to docs/wip/ (e.g., docs/wip/doc-audit-findings.md; repo root only if the repo has no docs/ convention) and note in conversation that a persistent memory directory would be better. Do not fail silently.
captured_at field against recent git history. If stale (older than recent commits), note that the project may have diverged from what that snapshot last recorded. This is useful context for understanding whether docs have been maintained. (In a multi-agent repo the snapshot may be split per writer as project-state*.md — see Multi-agent scope for which to read.)| Category | Purpose |
|---|---|
| Agent orientation | How agents should work here |
| Navigation / index | Where to find things |
| Architecture | How the system is structured |
| Decision records | Why things are the way they are |
| Planning / next steps | What work is queued |
| Authoritative locations | Which doc owns which facts |
Read the full content of every doc that claims to be authoritative. Start from whatever index or hub exists; if none, enumerate the docs directory.
If docs are numerous: prioritize by change risk — read API contract docs, status docs, and architecture docs first, since they go stale fastest. Feature docs and infrastructure docs can follow. If findings accumulate past ~10 before you've finished reading, it's fine to stop reading and report what you've found; note explicitly which docs were not reached.
For each doc, note:
Build a complete picture before fixing anything.
For each authoritative doc, check its claims against the actual codebase. This is the core of the audit.
Structural accuracy
API / endpoint accuracy
Architecture accuracy
Schema accuracy
Status accuracy
Decision-record accuracy (if the repo keeps a DECISIONS.md or docs/decisions/ log)
accepted entries) must match a decision the code actually reflects.accepted record with no corresponding code is a phantom — a planned-but-unbuilt decision that reads as current state and misleads the next agent. Verify against code; if the work landed, this is just stale status to fix; if it never landed, flag for retirement (or demote to a docs/wip/ plan).proposed that the code now reflects should be promoted to accepted.proposed record without matching code is expected (an in-flight decision), not a phantom — leave it. Only accepted records are held to the code.status as accepted.Beyond individual facts, look for structural problems in the documentation as a whole.
DRY violations
Broken cross-references
Orphaned docs
Navigability
Coverage gaps
Re-entrancy concerns
Publication boundary (repos with a public/private docs split — gitignored docs/private/ or docs/wip/)
git check-ignore (or read the .gitignore) tells you which docs publish and which don't. Audit both tiers, but hold them to different rules.Broader license here than during a routine session check, since this skill was explicitly invoked:
| Situation | Action |
|---|---|
| Verified, unambiguous mismatch (stale status, broken link, renamed file) | Fix it |
| DRY violation with clear resolution (copy → pointer) | Fix it |
| Structural rewrite, doc splitting, or deletion | Ask the user with a specific recommendation |
| Many fixes accumulating across many docs | Pause, summarize findings, confirm before proceeding |
When asking, be specific: "ARCHITECTURE.md describes X. The code shows Y. Should I update the architecture section to reflect Y?"
External-state discrepancies: some mismatches can only be verified against external systems (a third-party dashboard, a live service, a Stripe config). Do not guess — flag these explicitly, state what needs to be verified manually, and move on. Fixing the wrong side of an externally-dependent discrepancy can introduce a real bug.
Summarize what was found and done:
A clean audit is useful information. Say so clearly if nothing needs fixing. A partial audit is also useful — be explicit about coverage so the next agent knows where to continue.
Comprehensive by design. This skill reads and verifies everything. Token cost is acceptable.
Verify before acting. Every fix must be confirmed against the actual code or filesystem.
Respect existing structure. Follow the repo's own conventions. Suggest improvements within its idiom, not by imposing a new framework.
Re-entrancy. Every action should leave the repo easier to audit next time. Avoid creating maintenance burden.
DRY. Each fact lives in one place. Other docs point to it. Redundancy is the primary source of doc rot.
Entry points matter. A well-documented repo has simple entry points that link to canonical locations. Each doc covers one concern. Cross-references replace duplication. When auditing, evaluate whether this pattern holds. When suggesting improvements, guide toward it.
Session context. If project-state.md exists in the memory path, read it for context on what work has been active and what the last agent found surprising. If it is stale or missing, note it — the repo is operating without cross-session continuity, which is itself a finding.
Multi-agent scope. If multiple agents maintain this repo concurrently, an audit can mistake another agent's in-flight work for inconsistency. When a scope key like thread_id is in use, scope the audit to the current thread rather than flagging cross-thread divergence as doc rot. Session snapshots may follow a per-writer convention (project-state.<scope>.md, one file per agent): read the one scoped to you, or read all project-state*.md only when you are deliberately auditing across threads. A single project-state.md (the common case) is just read directly.
These are the heuristics baked into this skill. Apply judgment — they are guides, not rules.
| Signal | What it means |
|---|---|
| Same fact in 2+ docs | DRY violation — pick one home, replace copies with pointers |
| Doc mentions file/endpoint that doesn't exist | Stale — verify and fix |
| "Planned" item that's clearly shipped | Status stale — update |
accepted decision record with no matching code | Phantom — fix status if it shipped, else flag for retirement/demote to wip |
proposed decision record the code now reflects | Promote to accepted |
| Navigational doc >~300 lines and hard to follow | Suggest splitting or linking out |
| Append-only log (decisions, pitfalls, changelog) | Length is fine — don't flag |
Ephemeral/working doc (e.g. in a docs/wip/ space) | Exempt from bloat rules, but flag if clearly expired (~a month old, or its stated graduation criteria already happened) |
| Public doc contains private-tier material (strategy, personal paths, unreleased names) | Leak — fix immediately, move content behind the boundary |
| Public doc markdown-links into a gitignored path | Breaks in a stranger's clone — convert to a plain-text mention |
| Doc with no clear update trigger | Re-entrancy concern — flag |
| Significant code with zero doc coverage | Missing info type — raise with specific suggestion |
| Doc references architecture that doesn't match code | Verify against code, then fix or escalate |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.