Full project health audit — scans hooks, skills, scripts, rules, CI config, docs, and GitHub workflow for inconsistencies, broken references, and common mistakes. Creates a GitHub issue with findings and optionally starts fixing them.
How this skill is triggered — by the user, by Claude, or both
Slash command
/project-init-workflow:audit [--fix]When to use
Use when the user says "audit the project", "health check", "scan for issues", "hardening pass", or "review everything".
[--fix]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run a comprehensive project health audit. Create a GitHub issue with all findings. If `$ARGUMENTS` contains `--fix`, also fix the issues and open a PR.
Run a comprehensive project health audit. Create a GitHub issue with all findings. If $ARGUMENTS contains --fix, also fix the issues and open a PR.
Read .claude/config.yaml for project metadata (language, memory stack, MCPs). This determines which checks apply.
Scan these directories and build a file inventory:
| Directory | What to check |
|---|---|
.claude/hooks/ | All hook scripts |
.claude/skills/ | All SKILL.md files |
.claude/scripts/ | All lifecycle scripts |
.claude/rules/ | All rule .md files |
.claude/docs/ | ADRs, conventions |
.claude/memory/ | MEMORY.md index |
.github/workflows/ | CI/CD configs |
.github/hooks/ | Git hooks |
Run each check category. Track findings as [PASS], [WARN], or [FAIL].
For every file in .claude/hooks/:
stat -c '%a' <file> must show execute permissionexit 0 (never exit 1 to block). Search for:
exit 1 that isn't inside a trap or error path before JSON parsing → [FAIL]>&2 used for block output instead of stdout → [FAIL]exit 0 at end of file → [WARN]grep -l 'jq ' *.sh → [FAIL]$CLAUDE_TOOL_USE_STDIN or stdin JSON. Check the INPUT= line exists..claude/settings.json. Orphaned hooks → [WARN]For every file in .claude/scripts/:
#!/usr/bin/env bash or #!/usr/bin/env python3.claude/scripts/README.md and .claude/project-init.md mention the script. Undocumented scripts → [WARN]For every file in .github/hooks/:
For every SKILL.md in .claude/skills/*/:
name and description must exist.claude/skills/INDEX.md should reference every skill. Missing → [WARN].claude/project-init.md Tools table should list it. Missing → [WARN].claude/hooks/. Dead references → [FAIL]type(KEY-N):, ADR-006)uv run ruff, uv run pytestbun run lint, bun testgolangci-lint run, go testvalidate-pr.yml exists, check its title regex matches the format in project-init.md[text](file.md) in MEMORY.md where file.md doesn't exist → [FAIL]Compile findings into a structured report:
## Project Audit Report
**Project:** <name from config.yaml>
**Date:** <today>
**Language:** <language>
### Summary
- X checks passed
- Y warnings
- Z failures
### Failures
1. <file>: <what's wrong> — <how to fix>
### Warnings
1. <file>: <what's wrong>
### All Checks
<full checklist with [PASS]/[WARN]/[FAIL] markers>
Create a GitHub issue using the project's lifecycle script:
.claude/scripts/create_issue.sh chore "Project audit findings" \
--priority medium \
--area "tooling" \
--size M \
--acceptance "All [FAIL] items resolved, all [WARN] items reviewed"
Paste the full report as a comment on the issue.
If $ARGUMENTS contains --fix:
.claude/scripts/start_issue.sh <n> fix[FAIL] items. Review [WARN] items and fix where appropriate..claude/scripts/finish_pr.sh <n>If --fix is not specified, stop after Phase 4 and report the issue number.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub vytcepas/project-init --plugin project-init-workflow