auditlisted
Install: claude install-skill VytCepas/project-init
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.
## Phase 1 — Inventory
Read `.agents/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 |
|---|---|
| `.agents/hooks/` | All hook scripts |
| `.agents/skills/` | All SKILL.md files |
| `.agents/scripts/` | All lifecycle scripts |
| `.agents/rules/` | All rule .md files |
| `.agents/docs/` | ADRs, conventions |
| `.agents/memory/` | MEMORY.md index |
| `.github/workflows/` | CI/CD configs |
| `.github/hooks/` | Git hooks |
## Phase 2 — Checks
Run each check category. Track findings as `[PASS]`, `[WARN]`, or `[FAIL]`.
### 2.1 Hook integrity
For every file in `.agents/hooks/`:
1. **Executable bit** — `stat -c '%a' <file> 2>/dev/null || stat -f '%Lp' <file> 2>/dev/null` (GNU then BSD/macOS) must show execute permission
2. **Hook protocol** — must output JSON to stdout and `exit 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]`
- Missing `exit 0` at end of file → `[WARN]`
3. **JSON parsing** — must use Python via the `_py.sh` resolver (not jq) for portability. `grep -l 'jq ' *.sh` → `[FAIL]`
4. **Stdin reading** — must read `$CLAUDE_TOOL_USE_STDIN` or std