name: health description: Run vault health check — broken links, orphans, missing sections, statistics. Generates report at 01-index/_graph-health.md. Use for "/health". allowed-tools: Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet user-invocable: true
/health — Vault Health Check
Generate comprehensive health report for the vault.
Context
Config: @_core/config.yaml
Session Task Progress
TaskCreate: "Scan vault files"
activeForm: "Scanning vault files..."
TaskCreate: "Check links and orphans"
activeForm: "Validating links..."
TaskCreate: "Generate health report"
activeForm: "Generating health report..."
Processing Steps
Scan Vault
- Glob all
.mdfiles - Exclude:
_core/,_templates/,_archive/
- Glob all
Check Broken Links
- Extract all
[[wikilinks]]from each file - Verify each target exists
- Report: source → broken target
- Extract all
Find Orphan Notes
- Notes with no inbound links
- Exclude: index files, standalone: true
Check Missing Sections
- Typed notes (doc, decision, blocker, meeting) should have
## Links - Report missing required sections
- Typed notes (doc, decision, blocker, meeting) should have
Calculate Statistics
- Notes by type
- Notes by project
- Link density (links per note)
Check Synthesis Freshness
- For each
01-index/{project}.md, check if## Synthesissection exists - If synthesis is missing or says "No synthesis yet", flag as stale
- Check vault log (
01-index/_vault-log.md) for lastindex-regenentry per project - If no regen in 7+ days, flag as stale
- For each
Check Update Status
- Read
VERSIONfile for local version - Query GitHub API for latest release:
curl -sS "https://api.github.com/repos/{repo}/releases/latest"(non-fatal on failure) - Compare: "Up to date" | "Update available: vX → vY" | "Could not check"
- Read
Append to Vault Log
- Append
healthentry to01-index/_vault-log.md(see.claude/rules/vault-log.md)
- Append
Generate Report
- Write to
01-index/_graph-health.md
- Write to
Output Format
# Graph Health Report
> Generated: {datetime}
## Broken Links
| Source | Broken Target |
|--------|---------------|
| {path} | [[{target}]] |
## Orphan Notes
- {path} — no inbound links
## Missing ## Links Sections
- {path} — type: {type}
## Statistics
### By Type
| Type | Count |
|------|-------|
| daily | {n} |
| doc | {n} |
### By Project
| Project | Count |
|---------|-------|
| {proj} | {n} |
### Link Density
- Total links: {n}
- Average per note: {avg}
## Synthesis Health
| Project | Has Synthesis | Last Index Regen | Status |
|---------|---------------|------------------|--------|
| {proj} | Yes/No | {date or "Never"} | Fresh/Stale |
## Framework Status
- **Version**: v{local}
- **Update**: {status — "Up to date" | "Update available: vX → vY" | "Could not check"}
## Actions
1. [ ] Fix broken link: {source} → {target}
2. [ ] Add links to: {orphan}