audit-project
Skill8 starsChanged 7 months agoMITView on GitHub
Audits the Claude Code configuration of a project against the dotforge template. Generates a report with score and gaps.
- Reads credentials
8 other projects use a version of this.
Adopted by
Most recently taken up by
- woojubb/robotatheir own version, first seen Nov 7, 2026
- elfrost/ai-patchlabtheir own version, first seen Oct 13, 2026
- MusserLab/lab-claude-skillstheir own version, first seen Oct 13, 2026
- daniilganiev/telegram-devtheir own version, first seen Oct 8, 2026
- josuecasanave/audit-projecttheir own version, first seen Sep 7, 2026
- eldermoraes/quarkus-agentic-scaffoldingtheir own version, first seen Jul 21, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- eldermoraes/quarkus-agentic-scaffolding★ 27same name
- woojubb/robota★ 19same name
- cogotemartinez/ai-second-brain-template★ 9same name
- MusserLab/lab-claude-skills★ 4same name
- elfrost/ai-patchlab★ 1same name
- stoffl6781/claude-skill★ 1same name
- daniilganiev/telegram-dev★ 0same name
- josuecasanave/audit-project★ 0same name
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 repository20 other files it gives its agents.
- .claude/rules/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- bootstrap-projectSkill
- capture-practiceSkill
- diff-projectSkill
- domain-extractSkill
- export-configSkill
- forge-behaviorSkill
- init-projectSkill
- learn-projectSkill
- mcp-addSkill
- plugin-generatorSkill
- reset-projectSkill
- rule-effectivenessSkill
- scout-reposSkill
- session-insightsSkill
- sync-all-reposSkill
- sync-templateSkill
- update-practicesSkill
- watch-upstreamSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
20 rules. 0 are common, 5 are distinctive, and 15 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Run a full audit of the Claude Code configuration for the current project.
- Very specific: line 13
Use detection rules from $DOTFORGE_DIR/stacks/detect.md.
- Very specific: line 32
Before scoring, validate internal coherence.
- Very specific: line 39
No contradictory allow+deny patterns in settings.json
- Distinctive: line 40
No prompt injection patterns in rules or CLAUDE.md
- Very specific: line 42
If coherence check finds critical failures (missing hooks, invalid JSON), report them in a ── COHERENCE ── section BEFORE the score.
- Very specific: line 46
Read $DOTFORGE_DIR/audit/checklist.md for evaluation criteria.
- Very specific: line 47
Read $DOTFORGE_DIR/audit/scoring.md for weights and caps.
- Distinctive: line 58
Do NOT count only lines — a 50-line boilerplate file is score 1
- Very specific: line 93
Use weights from $DOTFORGE_DIR/audit/scoring.md:
- Very specific: line 102
Security cap: If item 2 (settings.json) or item 4 (block-destructive) is 0, native_health max = 6.0.
- Very specific: line 166
If the project has CLAUDE_ERRORS.md, scan it for recurring patterns:
- Very specific: line 167
Read CLAUDE_ERRORS.md and group errors by Area column
- Distinctive: line 168
If any Area has 3+ entries with similar root causes, it's a candidate for promotion
- Very specific: line 169
Check $DOTFORGE_DIR/practices/inbox/ and active/ for existing practices covering that pattern
- Very specific: line 170
If no existing practice covers it, create a new practice in practices/inbox/ using the capture format:
- Very specific: line 181
Check if a practice already exists in practices/inbox/ or active/ for that gap
- Very specific: line 182
If not, create a practice in practices/inbox/:
- Distinctive: line 186
Only create practices for gaps that reflect a template/stack issue (not project-specific misconfigurations)
- Very specific: line 193
Update the project entry in $DOTFORGE_DIR/registry/projects.local.yml (create it from the projects.yml header with projects: [] if missing …
“Common” is measured: kept by at least 6 in 10 of the 6 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
Run a full audit of the Claude Code configuration for the current project.
Step 1: Detect stack
Use detection rules from $DOTFORGE_DIR/stacks/detect.md.
Step 1b: Detect project tier
Auto-detect project tier based on signals:
- simple (<5K LOC, 1 stack, no CI config): recommended items are relaxed (items 8-10 don't penalize)
- standard (5K-50K LOC, 1-2 stacks): default behavior
- complex (>50K LOC, 3+ stacks, monorepo indicators like
packages/orapps/): recommended items 8-10 become semi-obligatory (each worth 0-2 instead of 0-1)
Detection signals:
- LOC: count non-empty lines in source files (
find . -name '*.py' -o -name '*.ts' -o -name '*.js' -o -name '*.go' -o -name '*.java' -o -name '*.swift' | xargs wc -l) - Stack count: number of stacks detected in step 1
- CI: presence of
.github/workflows/,.gitlab-ci.yml,Jenkinsfile,.circleci/ - Monorepo: presence of
packages/,apps/,lerna.json,pnpm-workspace.yaml,turbo.json
Save tier in registry entry.
Step 1c: Config coherence check
Before scoring, validate internal coherence. Run $DOTFORGE_DIR/tests/test-config.sh <project-dir> or perform equivalent checks inline:
- Hooks referenced in settings.json exist and are executable
- Rules have valid
globs:orpaths:frontmatter (withalwaysApply: falsefor lazy loading) - Rule globs match at least 1 real file in the project
- settings.json is valid JSON with deny list covering .env, *.key, *.pem
- CLAUDE.md has minimum required sections (stack, build/test, architecture)
- No contradictory allow+deny patterns in settings.json
- No prompt injection patterns in rules or CLAUDE.md
If coherence check finds critical failures (missing hooks, invalid JSON), report them in a ── COHERENCE ── section BEFORE the score. These are configuration bugs, not gaps.
Step 2: Load checklist
Read $DOTFORGE_DIR/audit/checklist.md for evaluation criteria.
Read $DOTFORGE_DIR/audit/scoring.md for weights and caps.
Step 3: Evaluate
For each checklist item, verify existence and quality:
Obligatory (0-10 points)
- CLAUDE.md / AGENTS.md — Does the instruction file Claude actually loads exist?
CLAUDE.mdif present (plusAGENTS.mdwhenCLAUDE.mdhas an@AGENTS.mdline); otherwiseAGENTS.mdalone (native since v2.1.277). Warn, without penalizing, when both exist with no import —AGENTS.mdis then ignored and the copies drift. Verify it has key sections:- Stack/technologies mentioned explicitly
- At least 1 exact build/test command
- Project structure or architecture
- Do NOT count only lines — a 50-line boilerplate file is score 1
- settings.json — Does it exist in
.claude/? Does it have explicit permissions? Does it have a deny list? Warn (do not fail) on: boolean"attribution": falsein the shared file (older CLIs skip the whole file, v2.1.281), project-scope-inert keys (defaultMode: auto|bypassPermissions,sandbox.credentials, telemetry env — seedomain/permission-managed-settings.md), allow rules with a wildcard before the subcommand (Bash(git * main)) - Rules — Is there at least 1 rule in
.claude/rules/? Does it have frontmatter withglobs:orpaths:? - Hook block-destructive — Verify:
- Does
.claude/hooks/block-destructive.shexist? - Is it executable? (
test -xor check permissions) - Is it referenced in
.claude/settings.jsonunder hooks?
- Does
- Build/test commands — Are they in CLAUDE.md? Do they match the detected stack?
Dimension A — Native Health, Recommended (0-10 bonus points)
- .gitignore — Does it protect .env, *.key, *.pem, credentials?
- Prompt injection scan — Are rules/CLAUDE.md free of suspicious patterns?
- Auto mode safety — Auto mode is active when
permissions.defaultModeis"auto"OR absent (session default since Claude Code v2.1.284). In both cases, is the deny list complete? Pass only if deny covers secrets ordefaultModeis explicitly non-auto. Missing settings.json → 0 - OS-level sandboxing —
sandbox.enabled: truewith at least one restriction OR project demonstrably handles no secrets (auto-pass) - Hook lint — Does it exist? Is it executable? (verify
chmod +x) - Auto-memory well used (NEW) — Is
MEMORY.mda concise index (<200 lines AND <25KB), not a content dump? If errors are tracked,CLAUDE_ERRORS.mdexists with table format (Type column). Penalize dumping content into the index — only first 200 lines / 25KB are injected per session. - Permission cascade (NEW) — Are machine-local overrides kept in
settings.local.jsonrather than polluting versionedsettings.json? Auto-pass if no local overrides needed. - Attribution configured (NEW) —
attribution.commit/attribution.prset (not the deprecatedincludeCoAuthoredBy)? Auto-pass if the default co-author is acceptable. For self-hosted forges, checkprUrlTemplate. - Custom commands — Are there files in
.claude/commands/? - Agents — Is there
.claude/agents/+agents.mdrule in rules?
Tier adjustments (dimension A):
simple: items 14-15 score 0 don't penalize (treated as N/A)complex: items 14-15 become semi-obligatory (each 0-2 instead of 0-1)
Dimension B — dotforge Adoption (informational, 0-4, does NOT affect native_health)
- B1. v3 behaviors compiled —
.claude/hooks/generated/*.shexist AND referenced in settings.json? - B2. Workflow availability (v4) —
workflows/with at least one.jscontainingexport const meta? - B3. Domain rules — at least one rule in
.claude/rules/domain/withlast_verified<90 days? Report stale count. - B4. Sync recency — project
dotforge_version==$DOTFORGE_DIR/VERSION?
A project scoring B=0 (native-first) is a valid, non-penalized outcome. Never recommend adopting dotforge machinery just to raise B.
Step 4: Calculate scores (two dimensions)
Use weights from $DOTFORGE_DIR/audit/scoring.md:
Dimension A — Native Health (the primary score):
native_health_obligatory = sum(items 1-5)— maximum 10native_health_recommended = sum(items 6-15)— maximum 10native_health = native_health_obligatory * 0.7 + native_health_recommended * 0.3— max 10.0- Apply tier adjustments before calculating (see Step 1b)
native_health = min(native_health, 10)
Security cap: If item 2 (settings.json) or item 4 (block-destructive) is 0, native_health max = 6.0.
Dimension B — dotforge Adoption (informational):
6. forge_adoption = sum(items B1-B4) — 0 to 4. Does NOT enter native_health.
7. Label: 0=None, 1-2=Partial, 3=Most, 4=Full.
Step 5: Generate report
Format:
═══ AUDIT dotforge: {{project}} ═══
Date: {{YYYY-MM-DD}}
Detected stack: {{stacks}}
Tier: {{simple|standard|complex}}
dotforge version: {{version from last bootstrap/sync if detectable}}
Native Health: {{X.X}}/10 {{level}}
dotforge Adoption: {{N}}/4 {{None|Partial|Most|Full}} (informational — does not affect Native Health)
═ DIMENSION A — NATIVE HEALTH ═
── OBLIGATORY ──
{{✅|⚠️|❌}} CLAUDE.md ({{0-2}}) — {{detail: which sections exist/missing}}
{{✅|⚠️|❌}} settings.json ({{0-2}}) — {{detail: deny list yes/no, permissions}}
{{✅|⚠️|❌}} Rules ({{0-2}}) — {{detail: N rules, globs yes/no}}
{{✅|⚠️|❌}} Hook block-destructive ({{0-2}}) — {{detail: executable yes/no, wired yes/no}}
{{✅|⚠️|❌}} Build/test commands ({{0-2}}) — {{detail: which ones and whether they match the stack}}
── RECOMMENDED ──
{{✅|⚠️}} .gitignore — {{detail}}
{{✅|⚠️}} Prompt injection scan — {{detail}}
{{✅|⚠️}} Auto mode safety — {{detail: auto mode active/inactive, deny list complete/incomplete}}
{{✅|⚠️}} OS sandboxing — {{detail: enabled/disabled, secret indicators yes/no}}
{{✅|⚠️}} Hook lint — {{detail: executable yes/no}}
{{✅|⚠️}} Auto-memory well used — {{detail: MEMORY.md lines/KB, index vs dump, CLAUDE_ERRORS yes/no}}
{{✅|⚠️}} Permission cascade — {{detail: settings.local.json used / no local overrides}}
{{✅|⚠️}} Attribution configured — {{detail: attribution.* set / deprecated includeCoAuthoredBy / default ok}}
{{✅|⚠️}} Custom commands — {{detail: N commands}}
{{✅|⚠️}} Agents — {{detail}}
═ DIMENSION B — DOTFORGE ADOPTION ═ (informational)
{{✅|—}} B1 v3 behaviors compiled — {{detail: N generated hooks, settings reference yes/no}}
{{✅|—}} B2 v4 workflow availability — {{detail: N .js workflows OR "none"}}
{{✅|—}} B3 domain rules — {{detail: N rules, M stale >90d}}
{{✅|—}} B4 sync recency — {{detail: project version vs current VERSION}}
── DOMAIN KNOWLEDGE ──
Role defined: {{✓ if ## Role exists in CLAUDE.md with content | ✗ otherwise}}
Domain rules: {{N files in .claude/rules/domain/ | "none"}}
Stale (>90 days): {{N files with last_verified older than 90 days | "none"}}
Coverage: {{list glob patterns from domain rules → cross-reference with git log --name-only -30 to estimate % of recent edits covered}}
Note: Domain knowledge is informational only — does not affect the audit score.
If no domain rules exist and the project has business logic, suggest: /forge domain extract
── CRITICAL GAPS ──
1. {{what is missing}} → {{recommended action}}
2. ...
── NEXT STEP ──
Run `/forge sync` to apply the dotforge template and close the gaps.Step 6: Cross-project error promotion
If the project has CLAUDE_ERRORS.md, scan it for recurring patterns:
- Read
CLAUDE_ERRORS.mdand group errors by Area column - If any Area has 3+ entries with similar root causes, it's a candidate for promotion
- Check
$DOTFORGE_DIR/practices/inbox/andactive/for existing practices covering that pattern - If no existing practice covers it, create a new practice in
practices/inbox/using the capture format:source_type: cross-projecttags: [error-promotion, <area>]- Description: the recurring pattern and derived rule
- Report promotions in the audit output under
── ERROR PATTERNS ──
This closes the Memory → Learning synergy: recurring project errors feed the practices pipeline.
Step 7: Audit gaps as practices
For each obligatory item scored 0 or 1, and each recommended item scored 0:
- Check if a practice already exists in
practices/inbox/oractive/for that gap - If not, create a practice in
practices/inbox/:source_type: audit-gaptags: [audit-gap, <item-name>]- Description: what's missing and recommended fix
- Only create practices for gaps that reflect a template/stack issue (not project-specific misconfigurations)
- Report in audit output under
── CAPTURED GAPS ──
This closes the Audit → Learning synergy: detected gaps feed back into the practices pipeline.
Step 8: Update registry
Update the project entry in $DOTFORGE_DIR/registry/projects.local.yml (create it from the projects.yml header with projects: [] if missing — never write to projects.yml, the shipped template):
score:withnative_health(the primary score — preserves trend continuity with prior audits)forge_adoption:with the dimension-B value (0-4)last_audit:with the current datedotforge_version:with the VERSION version if the project was bootstrappedlast_sync:preserve the existing value (do not modify here)notes:brief summary of the audithistory:append a new entry{date: YYYY-MM-DD, score: X.X, adoption: N, version: <dotforge_version>}. Never overwrite previous entries — this enables trending over time.
Transition note: the two-dimension model (v4.x) changes how scores compose vs the single-score model. Native-first projects (no behaviors/workflows) will show HIGHER native_health than their old single score because dimension-B items no longer penalize them. Expect a one-time step in the history trend at the first two-dimension audit; this is by design, not a regression.
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.

