Clean machine
Skill hungv47/meta-skills/forsvn-dev/skills/product/clean-machine
Audit + clean a developer's machine — dotfolders, caches, language toolchains, package globals — with per-target classification, risk surfacing (auth, processes, side effects), and explicit confirmation. Produces `docs/forsvn/artifacts/meta/records/machine-cleanup-*.md`. Not for cleaning code (use clean-code) or for triaging user files (those need human review).From its SKILL.md
npx -y skills add hungv47/meta-skills --skill clean-machineAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `du -sh ~/.*` and 1 more.
SKILL.md
8.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Machine Cleanup — Orchestrator
Audits a developer's machine state and removes abandoned tools, orphaned caches, and unused toolchains — without breaking active workflows. Capability metadata (route triggers, prerequisites, load map, artifact contract) lives in routing.yaml. Agent table + execution layers + routing rules: references/agent-manifest.md. Methodology: references/playbook.md.
Core question: Is this folder still owned by an installed tool I actively use, or is it leftover state from something I no longer have?
When To Use
- New laptop setup; need to start clean.
- After trying many AI tools you've now abandoned.
- Disk is full or near-full.
- Before passing the machine to someone else.
- Standalone — no upstream gate required.
When NOT To Use
- Cleaning source code →
/clean-code. - Triaging files in
Desktop/,Documents/,Downloads/,Pictures/,Movies/,Music/,Public/, or cloud-mount symlinks — those need human review. - Tool ownership unclear AND you can't identify the owning tool — surface as
NEEDS_CONTEXTfirst.
Critical Gates (The 6 Golden Rules) — load first
All 6 fire under --fast, Single-Agent Fallback, and dry-run modes:
- Never delete user data without explicit confirmation. Files in
Desktop/,Documents/,Downloads/,Pictures/,Movies/,Music/,Public/, and any contents under cloud-mount symlinks (Google Drive,OneDrive,iCloud) are off-limits to bulk action. Surface findings; defer execution to the user. - No auth surprise. Any folder containing tokens, OAuth state, refresh tokens, JWTs, session cookies, or PKCE artifacts must be flagged BEFORE deletion with the exact re-auth command the user will need (
gh auth login,gcloud auth login,vercel login). Filename patterns:references/auth-credential-patterns.md. - Process-check before nuking active state. If a folder is being written to right now (mtime within 5 minutes, or a
.pid/.sock/-walfile exists), checkpgrepfor the owning app. Quit cleanly via AppleScript or warn the user before deletion. Never delete files an open SQLite WAL points to. - Side-effect awareness in shell startup. Before deleting a directory referenced in
.zshenv,.zshrc,.bashrc,.profile,.tcshrc(e.g.,. "$HOME/.cargo/env"), comment out or update the offending line. Otherwise every new terminal throws errors. - Distinguish regenerable cache from unique state. Anything inside XDG-compliant
~/.cache/is throwaway by definition — surface for fast nuke. Anything outside~/.cache/requires per-target classification: identify the owning tool, then decide. - One target at a time with explicit confirmation. No bulk multi-target deletion. The user must confirm each target by name (or pick from a coded list). Track cumulative reclaim across targets.
Session limits: target ~25 deletions per cleanup session. After 10, generate an interim summary. If the user has rejected 5+ recommendations in a row, stop and ask if the scope is wrong.
Critic FAIL: identifies the specific deletion that violated a rule; safe-nuke-agent restores from backup (or instructs reinstall steps); reports. Full critic-FAIL handling + bulk-action pause triggers: references/anti-patterns.md.
Before Starting
Apply references/_shared/before-starting-check.md. Then:
- Mode resolution (
references/_shared/mode-resolver.md).budget: deep. Auto-downgrades tofastfor single-folder targets → Single-Agent Fallback.--fastforces single-agent regardless of scope. All 6 Critical Gates fire in every mode. references/_shared/execution-policy.md— session execution profile (single-vs-multi)- Read
.forsvn/index/manifest.jsonfor prior machine-cleanup runs; surface staleness if a recent run covered this scope. - Read
docs/forsvn/experience/technical.mdfor prior protected-paths list (machine-cleanup excluded paths).
Pre-Dispatch
Run Pre-Dispatch (references/_shared/pre-dispatch-protocol.md). Needed dimensions: scope (dotfolders / caches / packages / runtimes / all), aggressiveness (conservative / moderate / aggressive), excluded paths.
Read order:
- Machine scan:
du -sh ~/.*,df -h, package globals (npm/brew/bun/cargo/go/pipx) — seescripts/inventory.sh. - Experience:
docs/forsvn/experience/technical.mdfor prior protected-paths list.
Warm Start + Cold Start prompts: references/pre-dispatch-prompts.md.
Artifact Contract
- Path:
docs/forsvn/artifacts/meta-clean-machine-<YYYY-MM-DD>-<slug>.md(flat v2 grammar; stack ismeta— machine-cleanup records are meta-stack snapshots). - Lifecycle:
snapshot— dated, immutable record of one cleanup run. - Frontmatter:
skill,version,date,status(DONE / DONE_WITH_CONCERNS / BLOCKED / NEEDS_CONTEXT),stack(=meta),review_surface(=none — snapshot defaults todecision_state: not_required),total_reclaimed,lifecycle,produced_by,provenance. v2 schema inreferences/_shared/artifact-contract-template.md. - Required sections: Scope, Summary. Targets Nuked + Targets Kept + Side Effects Fixed + Re-Auth Commands + Manual Follow-ups when applicable. Critic Verdict optional.
- Consumed by:
clean-artifacts(staleness signal scanning),forsvn(state detection), operator (history audit).
Full template + filename conventions + version-increment rule: references/report-template.md.
Multi-Agent + Single-Agent
7 agents in 3 layers — full table + execution diagram + dispatch protocol + routing rules: references/agent-manifest.md.
Single-Agent Fallback (mode downgrades to fast):
- Skip multi-agent dispatch.
- Inspect the target — list contents, sizes, last-modified, identify owning tool per
references/tool-ownership-heuristics.md. - Classify per
references/classification-vocabulary.md(active / load-bearing / abandoned / orphan / cache / empty / user-data). - Surface auth/process/side-effect risks per the 6 Critical Gates.
- Recommend nuke or keep with reasoning.
- Wait for explicit user confirmation.
- Execute with side-effect fixes.
- Verify post-state.
- Save artifact per
references/report-template.md.
Anti-Patterns
Read references/anti-patterns.md before applying any deletion that smells off — bulk, auth-bearing, mid-process, shell-rc-referenced, package manager + data split. "When NOT to nuke" + bulk-action pause triggers also live there.
Durable Rules (protected)
<!-- SLOW_UPDATE_START --> <!-- No pinned rules yet. Populate via the slow-update workflow (see references/slow-update-fence.md). Each pinned rule must (a) be procedural not instance-specific, (b) be earned from a regression or critic-flagged failure, (c) cite the artifact / decision record that justified pinning. --> <!-- SLOW_UPDATE_END -->Completion Status
- DONE — all approved removals executed, totals reported (
total_reclaimed), no orphaned references in shell-rcs. - DONE_WITH_CONCERNS — cleanup applied but some folders deferred to manual user triage (user-data dirs, ambiguous ownership); report enumerates what was deferred.
- BLOCKED — destructive removal would touch user data without confirmation; halted pending explicit decision.
- NEEDS_CONTEXT — tool ownership unclear for some folders (no entry in tool-ownership-map.md and user can't identify the owning tool); ask before removing.
Chain Position
Previous: none | Next: none (standalone). Re-run triggers: new laptop setup, after abandoning many AI tools, disk-full, before passing the machine to someone else.
Next Step
- User asks "what package managers should I prune next" → dispatch
package-inventory-agentstandalone. - User wants to dotfile-track the resulting clean state → suggest
chezmoiordotbot.
What ships with it: 32 files
283.6 KB alongside SKILL.md, 7 of them executable
agents/
- cache-scanner-agent.md4.6 KB
- critic-agent.md5.6 KB
- dotfolder-scanner-agent.md7.3 KB
- orphan-detection-agent.md6.3 KB
- package-inventory-agent.md5.5 KB
- runtime-scanner-agent.md6.1 KB
- safe-nuke-agent.md7.5 KB
- _template.md2.4 KB
references/
- agent-manifest.md5.4 KB
- anti-patterns.md3.4 KB
- auth-credential-patterns.md3.8 KB
- classification-vocabulary.md3.8 KB
- examples/full-machine-walkthrough.md6.6 KB
- playbook.md7.8 KB
- pre-dispatch-prompts.md3.1 KB
- report-template.md3.7 KB
- _shared/artifact-contract-template.md28.8 KB
- _shared/before-starting-check.md9.8 KB
- _shared/execution-policy.md7.0 KB
- _shared/manifest-spec.md29.2 KB
- _shared/mode-resolver.md11.0 KB
- _shared/pre-dispatch-protocol.md20.2 KB
- tool-ownership-heuristics.md4.0 KB
- tool-ownership-map.md5.4 KB
scripts/
- append-loop-result.tsruns7.4 KB
- bootstrap-experience.tsruns3.6 KB
- inventory.shruns7.0 KB
- lib/path-parser.tsruns11.6 KB
- manifest-sync.tsruns33.1 KB
- scaffold-eval-loop.tsruns9.5 KB
- update-quality-dashboard.tsruns9.6 KB
- routing.yaml3.6 KB