tidy
ODIN's compress-operations dispatcher under the Compressor/Extender/Purger role. Invoke on "tidy", "clean up", "tidy this file/memory/workspace/git/docs", or when active context (current file, diff, stack, memory directory) has structural rot to resolve before touching behavior. Detects target domain from context and routes to the sibling skill. Requires explicit target or clear active-context signal — do not invoke speculatively.
What this skill does
# Tidy — ODIN's compress-operations dispatcher
Compress first. Before adding complexity, reduce coupling. Before changing behavior,
improve structure. This skill detects *what* needs tidying from context and routes
to the right sibling skill. Domain procedures live in the siblings — this skill
owns only scope detection, dispatch, and the output contract. Tidy's deletions are
compress-class (behavior-preserving: dead/redundant/structural); a request to remove
a live capability is purge — route it out to `refactor-break-bw-compat`, never tidy inline.
**Invariants:**
- Every tidy action is atomic and scoped to what is already in view.
- Tidy commits are always separate from behavior commits.
- No opportunistic sweeps beyond the declared or clearly active scope.
---
## Scope detection
Inspect context in priority order and dispatch to the first matching domain:
| Signal | Domain | Dispatch to |
|---|---|---|
| File path(s), active diff, or `cargo`/`dune` target named | **Code** | `cleanup-codebase` skill |
| `memory/` directory, `MEMORY.md`, or memory file(s) named | **Memory** | `memory-clean` then `memory-update` skills |
| `.outline/`, `/tmp` scratch, `*.tmp`, `*.bak`, repomix packs | **Workspace** | Inline (see below) |
| `git sl`, commit stack, commit message(s) named | **Git** | `git-branchless` skill + `atomic-commit` skill |
| Docs, comments, ADRs, READMEs, plan files named | **Docs** | Inline (see below) |
| User explicitly says "tidy ICM" or names an ICM topic | **ICM state** | Inline (see below) |
| "remove/drop/kill a live capability", compat-shim or feature-flag teardown named | **Purge** | `refactor-break-bw-compat` skill |
| No clear signal | — | Ask: "What are we tidying — code, memory, workspace, git, docs, or ICM?" |
Purge is a behavior change, not a tidy — detect purge-intent and dispatch out; never perform capability removal inline (violates the behavior-commit-separation invariant).
---
## Inline procedures (workspace, docs, and ICM state)
These three domains are handled inline without a dedicated sibling skill.
### Workspace
1. Discover scratch artifacts in scope:
```sh
fd -t f -E '.git' -E 'target' -E '_build' \
'(\.(tmp|bak|outline)|repomix-output)' .
fd -t f /tmp -g '<session-prefix>-*' 2>/dev/null
```
2. Confirm each is truly scratch (not referenced by any open plan, task, or active diff).
3. Remove with `rip` (not `rm`). Report count and paths.
### Docs
1. Scan in-scope file(s) for: stale `TODO`/`FIXME` (git-blame date > 6 months), comments contradicting current code, commented-out code blocks, multi-paragraph docstrings on non-API-surface functions, overclaims about external contracts.
2. Show the current text + proposed change for each candidate. Edit only on confirmation or for purely cosmetic fixes (whitespace, spelling).
3. Overclaims: annotate with `<!-- VERIFY -->` and surface to the user rather than deleting.
### ICM state
Run `icm list --sort recent | head -30`; for each stale entry show the current content plus the proposed replacement before calling `icm update`. For decisions made in this session not yet captured, show the proposed `icm store` call before executing. Write only on explicit user confirmation per entry.
---
## Output contract
After completing each domain, emit exactly:
```
Tidy — <domain>
Removed: N (up to 5 paths/names; "…and M more" if larger)
Fixed: N
Proposed: N (awaiting confirmation)
Skipped: N (<one-phrase reason>)
Next: <one sentence, e.g. "Run build to verify" or "Nothing else in scope">
```
If nothing needed tidying: `Tidy — <domain>: nothing to do.`
---
## Constitutional rules
1. **Atomic commits** — tidy commits are always separate from behavior commits. No exceptions. Use `git move --fixup` when embedding alongside active work.
2. **Scope discipline** — never tidy beyond the explicit target or the currently active file/system. No opportunistic sweeps.
3. **Confirm before delete** — show evidence; never silently remove memories, commits, or files.
4. **Compress-class only** — tidying is behavior-preserving net-deletion (dead/redundant) or net-simplification; introducing a new pattern, or removing a live capability (that is purge — dispatch out), is a separate task.
5. **Verify after** — after code or git tidy, run repo-native verification (build + tests + linter).
6. **ODIN baseline wins** — if any rule here conflicts with `~/.claude/claude/system-prompt-baseline.md`, the baseline wins.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.