Skip to content
Back to skills

Audit Baseline

ASecurity

Drift check between the baseline implementation on disk and the claims in `docs/init/seed.md` + cross-references in CLAUDE.md, README.md, and the rendered docs site. Verifies hook/agent/skill/command names + counts, settings.json wiring, project.json key presence, .mcp.json servers, vendored license files, and helper script presence. Exit 0 PASS / 1 FAIL — suitable for CI. Read-only; safe to invoke any time.

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 4, 2026
ai-agentsgogitdocumentation

Works with

  • mcp

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add friedbotstudio/baseline --skill audit-baseline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Audit Baseline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Audit Baseline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/friedbotstudio-audit-baseline/badge)](https://www.skillsdirectory.com/skills/friedbotstudio-audit-baseline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: audit-baseline
owner: baseline
description: Drift check between the baseline implementation on disk and the claims in `docs/init/seed.md` + cross-references in CLAUDE.md, README.md, and the rendered docs site. Verifies hook/agent/skill/command names + counts, settings.json wiring, project.json key presence, .mcp.json servers, vendored license files, and helper script presence. Exit 0 PASS / 1 FAIL — suitable for CI. Read-only; safe to invoke any time.
---

# audit-baseline — drift defender

Mechanical check that the baseline implementation matches its specification. Deterministic, not LLM judgment — pattern matches and file presence only. Run on demand, by `/init-project` Step 8, or in CI.

## What it checks

| Category | Check |
|---|---|
| **Counts** | Hooks, agents, skills, commands on disk match the count claimed in `seed.md` |
| **Names** | Each component's name matches the canonical list in `seed.md` §4 |
| **Helper scripts** | `validate.mjs`, `swarm_merge.mjs`, `render.mjs`, `lint.mjs`, `archive.sh` present + executable |
| **settings.json** | Every baseline hook is wired in the correct event/matcher block |
| **project.json** | Every key listed in `seed.md` §13 Step 8 exists (values may be null pre-init) |
| **.mcp.json** | the declared documentation provider and the `plantuml` server present |
| **Vendored licenses** | `claude-automation-recommender/{LICENSE,NOTICE}` present (Apache 2.0 attribution) |
| **Cross-doc counts** | Numeric claims in `CLAUDE.md`, `README.md`, and `docs/init/seed.md` match disk |

## Invocation

`/audit-baseline` — model-invocable and user-invocable.

Calls `audit.mjs`. Output is a compact pass/fail table with a final verdict. Exits `0` on a clean audit, `1` on any failure. WARN-level findings (advisory; e.g., a doc with no relevant claims) don't fail the audit.

## When to run

- **End of `/init-project`** — Step 8. A fresh baseline should pass.
- **Before `/approve-direction`** — confirm the baseline hasn't drifted.
- **In CI** — fail the build on drift.
- **On demand** — when something feels off, when adding a component, or after a long gap in baseline maintenance.

## When the audit reports drift

- **Counts mismatch** → add the missing component or update `seed.md` to match the new count. Don't update one without the other.
- **Name mismatch** → a component was renamed, added, or removed. Update the canonical lists in `seed.md` §4 and the expected sets in `audit.mjs`.
- **Helper missing or non-executable** → `chmod +x` or restore from history.
- **Hook unwired** → add the entry to `.claude/settings.json`.
- **project.json key missing** → re-run `/init-project`, or add the key manually.
- **License missing** (vendored skills) → restore from upstream; this is a license-compliance gap.
- **Cross-doc stale numbers** → update the docs. `seed.md` is the source of truth.

## Maintenance

Expected name sets live in `expected-baseline.mjs` (the `EXPECTED_*` constants). Adding a new hook, agent, skill, or command means updating both `expected-baseline.mjs` and `seed.md`. The audit catches the drift; fix the implementation, not the audit.

`audit.mjs` is a thin orchestrator: it builds the shared audit context in `checks/context.mjs`, then runs one check module per concern from `checks/*.mjs` (each returns `[name, status, detail]` rows) and prints the table. To add a check, write a new `checks/<concern>.mjs` exporting `run(ctx)` and list it in the orchestrator's `CHECKS` array; pure surface helpers shared across checks live in `checks/surface-helpers.mjs`.

## Output format

```
check                                      status  detail
------------------------------------------ ------  ---------------------------
hooks count (seed vs baseline)             PASS    17
agents count (seed vs baseline)            PASS    1
skills count (seed vs baseline)            PASS    36
commands count (seed vs disk)              PASS    4
hooks names match seed §4.1                PASS
agents names match seed §4.2               PASS
skills names match seed §4.3               PASS
commands names match seed §4.4             PASS
helper swarm-plan/validate.mjs             PASS
…
hook wired: setup_guard                    PASS
…
project.json: test.cmd                     PASS
…
mcp server: gitmcp                         PASS
mcp server: plantuml                       PASS
mcp server: playwright                     PASS
recommender LICENSE                        PASS
recommender NOTICE                         PASS
CLAUDE.md count claims                     PASS
README.md count claims                     PASS
docs/init/seed.md count claims             PASS
------------------------------------------ ------
overall                                    PASS    fails=0 warns=0
```

Files in this skill

  • SKILL.md4.7 KB
  • audit.mjs7.2 KB
  • character.json13.3 KB
  • character.mjs4.3 KB
  • checks/conformance.mjs2.1 KB
  • checks/constitution.mjs1.9 KB
  • checks/context.mjs4.8 KB
  • checks/counts.mjs3.4 KB
  • checks/cross-doc-counts.mjs3.1 KB
  • checks/cross-doc-patterns.mjs2.9 KB
  • checks/derived-count-surfaces.mjs1 KB
  • checks/design-ui-surface.mjs2.3 KB
  • checks/docsite-drift.mjs3.8 KB
  • checks/helper-scripts.mjs803 B
  • checks/hook-decision-paths.mjs3 KB
  • checks/licenses.mjs1.9 KB
  • checks/mcp-servers.mjs845 B
  • checks/memory.mjs3.6 KB
  • checks/project-json.mjs3.7 KB
  • checks/quickfix-invariants.mjs3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.