From 12e4232cbd9e96642b2cd6f91bde5047dcaa9359 Mon Sep 17 00:00:00 2001 From: Paul O'Reilly Date: Tue, 17 Mar 2026 11:08:21 +1300 Subject: [PATCH] Fix housekeeping skill aborting on non-zero exit from info scripts unreflected-logs, git-status-report, check-skills, and validate-skill all exit 1 as a status signal when issues are found. The skill's bang- command syntax treated this as a failure, aborting mid-run. Append `|| true` so informational output is always captured. Co-Authored-By: Claude Opus 4.6 (1M context) --- skills/housekeeping/SKILL.md | 114 +++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 skills/housekeeping/SKILL.md diff --git a/skills/housekeeping/SKILL.md b/skills/housekeeping/SKILL.md new file mode 100644 index 0000000..febee4b --- /dev/null +++ b/skills/housekeeping/SKILL.md @@ -0,0 +1,114 @@ +--- +name: housekeeping +description: > + Cross-project health check. Runs git-status-report, unreflected-logs, and validate-skill + across all projects and skills. Reports findings and suggests actions including whether to + run /reflect-logs or /distill-best-practices. Information only - takes no action. +user_invocable: true +allowed-tools: Read, Glob, Grep, Bash(git-status-report *), Bash(unreflected-logs *), Bash(validate-skill *), Bash(check-skills *), Bash(cat *), Bash(ls *), Bash(date *), Bash(git -C *), Bash(wc *) +--- + +# /housekeeping Skill + +housekeeping + +You are running a cross-project health check. This skill is **information only** — gather data, report findings, and suggest actions. Do NOT make any changes. + +## Step 1: Git Status Report + +Run the git-status-report script across all projects: + +!`git-status-report ~/dev/claude || true` + +## Step 2: Unreflected Logs + +Check for session logs that haven't been reflected on: + +!`unreflected-logs ~/dev/claude || true` + +## Step 3: Validate All Skills + +Run validate-skill against all skill directories: + +!`validate-skill ~/dev/claude/projects/custom-claude-skills/skills || true` + +## Step 4: Check Skill Installation + +Verify all skills from the source repo are linked in the active Claude profile: + +!`check-skills ~/dev/claude/projects/custom-claude-skills/skills || true` + +If any skills are MISSING or STALE, include them in the report with a recommendation to run `install.sh` from the custom-claude-skills repo. + +## Step 5: Check Knowledge Pipeline State + +### Reflection state per project +For each project that has unreflected logs (from Step 2), note the count. This determines whether `/reflect-logs` is worthwhile. + +### Distill state +!`cat ~/dev/claude/projects/claude-foundations/best-practices/.distill-state.json 2>/dev/null || echo "No distill state file found"` + +For each project listed in the distill config, compare the stored SHA in `.distill-state.json` against the current HEAD of that project's repo. If any project has new commits since the last distill, note it. + +Use these commands to check current HEADs (run only for projects that are git repos): +!`git -C ~/dev/claude/projects/claude-foundations rev-parse --short HEAD 2>/dev/null || echo "not a git repo"` + +For each tracked project, use the Read tool to check `git -C rev-parse --short HEAD` and compare against the stored SHA. + +## Step 6: Report + +Present a structured report with these sections: + +### Git Status Summary + +For each repo reported dirty in Step 1, summarise: +- Repo name +- Uncommitted changes (files modified/added/deleted with rough change size) +- Remote sync status (ahead/behind) + +For clean repos, just list them as clean in a single line. + +### Unreflected Logs + +For each project with unreflected logs: +- Project name +- Number of unreflected logs +- Date range of unreflected logs (oldest to newest) + +### Skill Validation + +For each skill checked: +- Skill name +- Status (pass/errors/warnings) +- Any specific errors or warnings found + +### Skill Installation + +Report the check-skills output. If all skills are linked, a single "All skills linked" line suffices. Otherwise list missing/stale/orphan entries. + +### Knowledge Pipeline Status + +- **`/reflect-logs` recommendation**: Recommend running if any project has 3+ unreflected logs, or if any unreflected logs are older than 7 days. State which project(s) to run it in. +- **`/distill-best-practices` recommendation**: Recommend running if any tracked project has new commits since the last distill. State which project(s) have changed. + +## Step 7: Suggested Actions + +Based on all findings, produce a prioritised list of suggested actions. Group by urgency: + +**Should address soon:** +- Missing or stale skill symlinks (run `install.sh` from custom-claude-skills) +- Uncommitted changes that look like completed work (not work-in-progress) +- Skill validation errors +- Very old unreflected logs (14+ days) + +**Worth doing when convenient:** +- Running `/reflect-logs` for projects with accumulated logs +- Running `/distill-best-practices` if memory files have changed +- Skill validation warnings +- Repos ahead of remote (unpushed commits) + +**Informational only:** +- Work-in-progress changes (dirty repos that look like active development) +- Clean repos with no issues + +Keep the report concise. Use tables where they help readability. The goal is a quick scan that tells the user what needs attention.