Skip to content
cccskills
FreePublished on GitHub

bugs

Review safety-sensitive Mole changes using documented bug patterns. Check how cleanup targets are selected, whether commands have time limits, whether cancellation stops later work, and whether dry runs match actual deletion plans.

OriginalShow the original description

Mole incident catalog for cleanup safety, bounded probes, cancellation, dry-run parity, and actionable gates. Use for a Mole safety-sensitive diff; not for docs, release notes, or generic review.

See how to install

Good for

  • Reviewing cleanup and uninstall safety
  • Checking cancellation and command time limits
  • Comparing dry-run plans with actual deletion
  • Checking whether regression tests catch the original bug

Files included (6)

  • SKILL.md8.0 KB
  • evals/evals.json11.3 KB
  • references/deletion-evidence-and-final-sink.md12.7 KB
  • references/shell-and-test-pitfalls.md18.9 KB
  • references/state-accounting-and-progress.md7.1 KB
  • references/test-validity-and-refusal-diagnostics.md10.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Mole bug patterns

Generic review belongs to Waza check; root-cause investigation of a live failure belongs to hunt.

Route before loading details

Choose only the reference families touched by the evidence. A whole-project audit should classify surfaces first instead of loading every incident narrative.

#Recurring shapeFirst probeRead
1Deletion candidate built from a weak name signalInspect name, bundle-id, fallback globs, and failed-owner shortcutsDeletion evidence and final sink
2Existence or idleness decided by one probeEnumerate every legitimate location and unknown outcomeDeletion evidence and final sink
3Guard present on only one branchDiff dry-run, real, direct, fallback, and final-sink pathsDeletion evidence and final sink
4Unbounded external commandCount producer, consumer, inner-loop, and action boundsBounds, Shell, TTY, and parsing
5Bash 3.2, errexit, or pipefail trapCheck empty arrays, `fn
6TTY, stdin, or process-group theftInspect background workers and commands that may promptBounds, Shell, TTY, and parsing
7System output parsed as a stable APIForce locale, validate shape, and join on identifiers not headingsBounds, Shell, TTY, and parsing
8Persisted derived data outlives its algorithmTrace schema, TTL, evidence fingerprint, and mutationsState, accounting, and progress
9Two paths compute one number differentlyFind every producer and choose one definitionState, accounting, and progress
10Slow work looks frozenFind operations over roughly one second outside feedbackState, accounting, and progress
11Regression test cannot failProve positive control and pre-fix red stateTest validity and refusal diagnostics
12Gate cannot explain why it refusedMap each reason to one cause and a next action that fails on the broken stateTest validity and refusal diagnostics
13Mutation target is also accepted as a discovery containerCompare the recursive scan-root namespace with every purge target basenameDeletion evidence and final sink
14Owner metadata is treated as a complete, atomic inventoryIdentify who writes it, whether absence is authoritative, and what locks mutationDeletion evidence and final sink
15Cancellation stops one helper but later work continuesClassify each 124 as skip, section budget, or sticky cancel before tracing callersBounds, Shell, TTY, and parsing
16Async or cached data has no generation or freshness contractBind results to a request epoch and keep each sample's time, stale, and completeness fields togetherState, accounting, and progress
17Publication gate trusts ambiguous or pre-existing stateRequire exact source/tag equality, one generated target, and an expected-absence ref leaseTest validity and refusal diagnostics
18A sandbox well-known path is treated as app-private leftoversResolve Data/Downloads, Desktop, Pictures, Music, and Movies physically against $HOMEDeletion evidence and final sink

AGENTS.md and the path-scoped .claude/rules/ files keep each rule stated fully enough to obey plus its test anchor; the incident story lives in these references or in release-flow, and the rule bullet points to the section that holds it. Moving a story here is a merge, never the deletion of a rule that still constrains behavior.

Trace the complete mutation lifecycle

For cleanup, purge, optimize, analyze deletion, or uninstall work, review the complete chain rather than the reported branch:

discover or plan
  -> cheap irreversible filters
  -> owner and open-handle probes
  -> size or metadata work
  -> final owner re-probe
  -> parent and target identity rebind
  -> deletion or Trash sink
  -> accounting, cancellation, and user output

At every transition, answer:

  • Does live or unknown state fail closed?
  • Are timeouts classified by probe, sizing, removal, or section scope, with unknown evidence refusing deletion and cancellation stopping later mutation?
  • Are probe and sink bound to the same physical parent and target?
  • Do dry-run and real mode start from the same eligible plan without reusing stale authorization?
  • Are cheap missing, protected, whitelisted, and compiled-model filters ahead of recursive probes?
  • Does one cumulative deadline cover the dynamic scan scope, with checkpoints in nested loops?
  • Do refused, filtered, timed-out, or failed items stay out of cleaned counts and reclaimed bytes?
  • Can large candidates avoid per-item size work without making the reported total false?

Do not trade final-sink rebinding or fail-closed owner checks for speed. Optimize absent targets, duplicated discovery probes, report-only work, and wrong-scope scans first.

Working contract

  • Before proposing a remedy, apply the Product Decision Filter in AGENTS.md: a new flag, environment variable, or visible retry message is a product change, even when the underlying fix is a safety improvement. Use the existing state/accounting reference when deciding what belongs in the normal summary.
  • A sandbox well-known directory is user data until physical resolution proves otherwise. Data/Downloads is usually ~/Downloads under another name.
  • A refusal next step that succeeds on the broken state is not a next step. Do not relax the gate to make the message nicer.
  • Sweep siblings by call-site shape, not filename or helper name. Report checked N / defective M / not applicable K.
  • A recurring fix ships with a regression or source invariant that fails against the pre-fix code.
  • Treat tests as production consumers only after proving the production helper ran. Negative assertions require a positive trace.
  • A cancellation regression makes the next candidate otherwise eligible, then proves its probe and sink never run. Making every candidate fail for the same reason is a false sticky-cancellation test.
  • Absence-sensitive tests use an isolated HOME or fixture root; a shared setup_file home is not isolation.
  • Reproduce CI through MOLE_TEST_NO_AUTH=1 ./scripts/test.sh when possible. If invoking Bats directly with jobs, preserve --no-parallelize-within-files; files share state and raw bats --jobs 6 file.bats changes semantics.
  • Treat specialist or AI reports as leads. Read the implementation, callers, fallback branches, and final sink yourself.

Verification bar

Use the hotspot commands in the matching .claude/rules/ file (routed from AGENTS.md); do not guess a narrower verifier. A typical Shell safety change finishes with:

./scripts/check.sh --format
MOLE_TEST_NO_AUTH=1 bats tests/<area>.bats
MOLE_TEST_NO_AUTH=1 ./scripts/test.sh
go test ./...
MOLE_TEST_NO_AUTH=1 MOLE_DRY_RUN=1 ./mole clean --dry-run

Never infer a production defect from a function name, comment, string, fixture, or _test.go match. Confirm the live call path and verify red-green before reporting the class fixed.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

mole

FreeSummary

Inspect disk usage on macOS or Windows with Mole CLI, preview cleanup candidates, and remove approved items. It also helps check system health, review cleanup history, and guide app removal through the user's terminal.

  • Finding what is taking up disk space
  • Previewing cache cleanup before removal
  • Checking system health when a computer feels slow
tw93/Mole72KUpdated Oct 21, 2026

release-flow

FreeSummary

Prepare and execute Mole CLI releases, from choosing distribution channels and checking tests to publishing version tags. Verify downloadable files, checksums, and the script-based upgrade path, then hand off to the release-notes process.

  • Checking whether a Mole CLI release is ready
  • Publishing a release with a capital-V tag
  • Verifying public downloads and the upgrade path
tw93/Mole72KUpdated Oct 21, 2026

release-notes

FreeSummary

Draft and publish English and Chinese notes for an existing Mole release. Organize changes by their impact on users, identify contributors from the release history, and update the release with approved notes, acknowledgments, and reactions.

  • Drafting English and Chinese release notes
  • Ordering changes by their impact on users
  • Identifying contributors to thank for this release
tw93/Mole72KUpdated Oct 21, 2026

weekly-audit

FreeSummary

Audit the macOS and Windows branches of Mole CLI for safety risks, excess complexity, outdated information, performance issues, and lessons missing from tests or rules. Challenge each finding before reporting it, then implement and record approved fixes.

  • Running regular audits of both Mole CLI branches
  • Finding unsafe deletion paths and performance bottlenecks
  • Checking outdated documentation and unnecessary complexity
tw93/Mole72KUpdated Oct 21, 2026

See all skills by tw93

Report a problem with this skill