From ngmeyer-skills
Audit recent work in a folder and produce a forward-looking self-improvement report. Reviews files modified in the past week, git activity, file-type distribution, and recurring task patterns; writes a 5-section weekly-setup-improvements.md with concrete updates for context files, ideas for new skills, workflow gaps to close, files to clean up, and what's working well enough to leave alone. Cross-platform; safe to schedule weekly via /schedule. Use when: 'weekly review', 'weekly self audit', 'improve my setup', 'what should I clean up', 'suggest new skills', 'self improvement loop', 'weekly setup improvements', or before a planning week.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ngmeyer-skills:weekly-setup-improvements [optional: path to working folder, defaults to cwd][optional: path to working folder, defaults to cwd]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
Audit the past 7 days of work in a folder and write a structured improvement report. This is **state reflection**, not journaling -- the output should be specific, actionable, and short enough that a busy practitioner will actually read it.
Audit the past 7 days of work in a folder and write a structured improvement report. This is state reflection, not journaling -- the output should be specific, actionable, and short enough that a busy practitioner will actually read it.
Every week generates patterns. Most patterns reveal an obvious next step -- a context file that needs updating, a slash command that should exist, a directory that needs cleaning. The cost of running this skill is a few minutes; the cost of not running it is invisible drift in the setup over months.
| This skill | Not this skill | |
|---|---|---|
| Scope | One folder | Whole machine |
| Window | Trailing 7 days | All time |
| Output | Forward-looking actions | Backward-looking diary |
| Sibling | /vault-audit (snapshot, no time window), /claude-md-audit (CLAUDE.md drift only) |
pwd.pwd.TODAY=$(date +%Y-%m-%d)
# 7-day boundary as ISO date (portable):
START=$(python3 -c "from datetime import date,timedelta; print(date.today()-timedelta(days=7))")
Do not use date -v-7d (macOS-only) or date -d (GNU-only).Auditing <folder> for the period <START> to <TODAY>.Collect raw signals. Run these in parallel where possible:
WORKING_FOLDER="$1"
# Files modified in the last 7 days (skip dotdirs and dependency dirs)
find "$WORKING_FOLDER" -type f -mtime -7 \
-not -path '*/.*' -not -path '*/node_modules/*' \
-not -path '*/.venv/*' -not -path '*/dist/*' -not -path '*/target/*' \
| head -150
# Git activity if folder is a repo (use --since= flag, portable across platforms)
git -C "$WORKING_FOLDER" log --since="7 days ago" --oneline 2>/dev/null
git -C "$WORKING_FOLDER" log --since="7 days ago" --stat --no-merges 2>/dev/null | head -300
git -C "$WORKING_FOLDER" status --porcelain 2>/dev/null
# Recently touched directories (signals new work areas)
find "$WORKING_FOLDER" -type d -mtime -7 -not -path '*/.*' | head -30
# File-type distribution (signals task type: code, prose, config, data)
find "$WORKING_FOLDER" -type f -mtime -7 -not -path '*/.*' \
| sed 's/.*\.//' | sort | uniq -c | sort -rn | head -10
If the folder is not a git repo, skip the git commands silently and rely on find -mtime alone.
Look for and read whichever of these exist (gracefully skip missing files):
CLAUDE.md (Claude Code project context)MEMORY.md (memory index)AGENTS.md (agent context)about-me.md, voice-and-style.md, working-rules.md (Karpathy-style context anchors)*.md in a memory/, context/, or docs/ subdirectory near the rootweekly-setup-improvements-*.md (the archived last report). Read its action items — they feed the new Section 0 closure check._drafts/ directory if it exists. Each subdir there is a skill-draft from a prior week. The state of those drafts (touched? deleted? graduated to the main skills dir?) is itself a signal — see lens 6 below.These are the targets for Section 1 (Context File Updates).
Walk the signals from Phase 2 with these specific lenses, in this order. For each lens, write down what you find before moving on:
linkedin-*-draft.md, repeated commits with the same verb, sibling fixtures). Each repetition is a candidate skill.*-draft-N.md siblings; archive candidates._drafts/<name>/ directory that was touched, deleted, or graduated. Compute a one-line closure rate ("3 of 5 done"). An action dropped twice running gets explicitly killed in Section 0 with a one-line rationale; it does not re-appear in this week's recommendations. (Source: TeamRetro retro anti-patterns 2026 — "zombie actions" are the #1 reason retros stop driving change.)If compound-engineering:ce-sessions is installed, optionally use it to surface conversational themes (e.g., "user paused three times this week to ask 'how do I X'"). Skip if not available -- the skill must work without it.
Output file: <WORKING_FOLDER>/weekly-setup-improvements.md
If a prior report exists: Before writing, archive it:
PRIOR="$WORKING_FOLDER/weekly-setup-improvements.md"
if [ -f "$PRIOR" ]; then
PRIOR_DATE=$(grep -m1 '^# Weekly Setup Improvements' "$PRIOR" | sed -E 's/.*— ([A-Za-z]+ [0-9]+, [0-9]+).*/\1/' | tr ' ,' '--')
[ -z "$PRIOR_DATE" ] && PRIOR_DATE=$(date -r "$PRIOR" +%Y-%m-%d 2>/dev/null || echo "$START")
mv "$PRIOR" "$WORKING_FOLDER/weekly-setup-improvements-$PRIOR_DATE.md"
fi
Structure (use exactly):
# Weekly Setup Improvements — <Month Day, Year>
Based on review of <one-line scope>: files modified, git activity, and patterns from <START> to <TODAY>.
---
## 0. Last Week's Actions *(V2 — skip if no prior report)*
Closure rate: <N of M done>. One line per prior action: ✅ done (evidence) / ◐ partial / ✗ dropped (why) / 💀 **killed** (dropped 2× — rationale). A killed action does not reappear in this week's Section 2/3 — explain why we cut it and stop re-surfacing it. *(V3: zombie-action kill rule.)*
## 1. Context File Updates
For each context file, give one of:
- **Create:** path + suggested content (in a code block)
- **Update:** path + the specific lines to add or change
- **No change:** path + one-line reason it's still accurate
## 2. New Skill Ideas
Cap at 3. Quality over quantity. For each:
- `/skill-name` — one-line description
- **What it does:** 2-3 bullets
- **Trigger phrases:** when the user would invoke it (cite the surfaced repetition)
- **Draft:** *(V3)* `_drafts/<skill-name>/SKILL.md` created (or "draft exists, last touched <date>" if it already did from a prior week)
## 3. Workflow Gaps
**Dominant root cause this week:** *(V3 — one sentence naming the Pareto cause across the gaps below; if two tie, name both.)*
Each gap is one bullet group:
- **Did manually:** what
- **Root cause:** *(V2)* the Five-Whys result — why this keeps happening, not just that it did
- **Should be:** what (a tool, a script, a skill, a hook) — addressing the cause
- **Owner / next action:** *(V2)* the single concrete next step that closes it (a solo practitioner's "owner" is a named next action carried into next week's Section 0)
- **Cost of waiting:** why this matters
## 4. Files to Clean Up
For each: path + action (DELETE / MOVE TO / ARCHIVE / MERGE INTO).
Skip the section if nothing to clean up.
## 5. What's Working
3-5 bullets. Concrete -- name specific files, skills, or workflows that produced clear value this week.
---
*Generated by /weekly-setup-improvements on <TODAY>.*
After the report is written, for each Section 2 skill idea, drop a stub at <WORKING_FOLDER>/_drafts/<skill-name>/SKILL.md using the template at references/skill-draft-template.md. The trigger phrases in the draft's description must come from the surfaced repetition pattern, not be invented.
DRAFTS="$WORKING_FOLDER/_drafts"
mkdir -p "$DRAFTS"
# For each Section 2 idea, write _drafts/<name>/SKILL.md from the template.
# If a draft of the same name already exists, skip it (the user is iterating; don't clobber).
If a draft directory of the same <skill-name> already exists from a prior week, do not overwrite. The user is iterating on it; leave it alone. Note the existing draft in Section 2 instead ("draft exists, last touched ").
Why this step exists: V2 ended Section 2 at "you should build /foo." A week later that recommendation is still a sentence. V3 ends it at "/foo's stub is at _drafts/foo/SKILL.md — open and iterate." The activation energy difference is the V3 thesis.
After writing, print:
A report passes if every check is true. Otherwise rewrite the offending section.
_drafts/<name>/SKILL.md on disk (or notes a pre-existing one).$WORKING_FOLDER, $HOME, $1. Never /Users/<name>/....references/skill-draft-template.md now requires a concrete verb lifted from the surfaced repetition. <Step> placeholders are filler — the activation-energy gap only closes if step 1 is runnable. TODO remains allowed on Gotchas and Testing (those legitimately need first-run data), but is now banned on Procedure. Closes the honest residual from V3's A/B (judge capped Draft-fidelity at 4/5 because materialized stubs had placeholder procedures).Optimized via skillforge optimize. Outcome target: more of the report's recommendations actually ship in the following week, not just get re-listed.
_drafts/<skill-name>/SKILL.md per Section 2 idea, using references/skill-draft-template.md. Closes the activation-energy gap V2 left open: a draft is iterate-able; a description is not. (Source: Ole Lehmann thread + Atomic Habits chapter on environment design.)references/ dir (closes the dry-run gap of "no progressive disclosure").Optimized via skillforge optimize (outcome research: retrospective/continuous-improvement practice 2026).
To run weekly, invoke the /schedule skill and ask it to schedule this skill against the desired folder and cron expression. Example:
/schedule weekly-setup-improvements every Sunday at 9am, working folder ~/path-to-folder
The schedule skill handles the cron syntax and persistence -- this skill itself only knows how to produce a report when run.
This is a prompt-only skill -- no automated runtime tests. The shipped tests/eval.sh runs a structural eval that asserts the design contract is intact in SKILL.md (phases present, no banned hardcoded paths, output filename correct, etc.).
To verify behavior end-to-end:
cd into a folder with at least 7 days of recent activity./weekly-setup-improvements./weekly-setup-improvements ~/some-other-folder.
Verify the report writes to that folder, not cwd.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 colorprint/my-thinking-skills --plugin ngmeyer-skills