spring-cleaning

An internal workflow step for finding small, evidence-backed cleanup opportunities such as dead code, unused dependencies, stale TODOs, or orphaned files.

In plain words
What is it for?
It is used inside the crew workflow to inspect a codebase, propose bounded cleanups, and prepare changes for review. It is not meant to be selected directly by users.
Why use it?
It helps a larger crew workflow remove clutter without broad rewrites, while checking the result against the project's tests.

Skill for Claude CodeCodex

Part of the crew plugin — 11 skills, 5 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/tessaryai/plugins/spring-cleaning
Any agent
npx skills add tessaryai/plugins --skill spring-cleaning
Clone the repo
git clone --depth 1 https://github.com/tessaryai/plugins

Made for: Claude Code, Codex.

Or install crew, the plugin that ships this one along with the rest of its 11 skills, 5 agents.

Per session 69 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 998 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00069 $0.00998
Opus 5 $0.00034 $0.00499
Sonnet 5 $0.00014 $0.00200
Haiku 4.5 $0.00007 $0.00100

Measured 2d ago against content hash 6c7d47acb39c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

spring-cleaning scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/crew/skills/spring-cleaning/SKILL.md · 86 lines

How it starts

The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.

spring-cleaning

Internal crew primitive — dispatched by /crew:run. You are running because the orchestrator selected this as one step of a larger workflow; carry out the work below. This skill is not meant to be invoked on its own — user requests go to /crew:run.

You perform bounded, evidence-backed cleanup. You never make sweeping rewrites — each cleanup is small, justified, and validated. Your ceiling is a review-ready PR — never merge.

Optional argument is the scope: dead-code, unused-deps, stale-todos, orphaned, or all (default: ask the user, or dead-code if unattended).

0. Load config

python3 "${CLAUDE_PLUGIN_ROOT}/lib/load_config.py"

Obey guardrails.protected_paths (never touch these), commands.* (to validate), and labels.{agent_pr,cleanup}.

Then read ${CLAUDE_PLUGIN_ROOT}/reference/work-model.md and resolve the mode before any gh call. Detection and validation are identical in both modes; only the output differs (step 4).

1. Detect (read-only first)

Pick detectors by language — use what the repo already has before installing anything:

  • dead code / unused exports: knip or ts-prune (JS/TS), ruff check --select F401
    • vulture (Python), go vet / deadcode (Go), cargo +nightly udeps (Rust).
  • unused dependencies: depcheck (JS/TS), comparing manifest vs imports otherwise.
  • stale TODOs: grep -rn "TODO\|FIXME\|XXX" and cross-reference with git blame age.
  • orphaned files: files with no inbound references / not in any build graph.

Gather evidence for each candidate (e.g. "no inbound references", "import removed in PR #X"). Do not act on anything you can't justify.

2. Propose a bounded set

For the chosen scope, select the high-confidence, evidence-backed changes. Exclude anything matching protected_paths. When unsure, leave it and note it in the PR description as a candidate for human judgment.

If the cleanup is huge. If detection turns up far more justified cleanup than fits a single bounded PR — it naturally breaks down module by module or across many categories — don't silently truncate to the cap and don't sprawl. Add a decomposition plan to your report back to the orchestrator: a numbered list of independent units (e.g. one per module or category), each with description, target (the files/module it owns), primitive: spring-cleaning, and any depends_on. Flag the report scale-out-recommended. The orchestrator decides whether to fan it out, always confirming with the user first (see ${CLAUDE_PLUGIN_ROOT}/reference/scale-out.md for the unit shape). You only recommend — you never spawn anything.

Read the full file on GitHub · 86 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 86 lines · 69 tokens per session scan A 6c7d47acb39c

Subscribe to this mod's changes

spring-cleaning is a skill published in the GitHub repository tessaryai/plugins (3 stars, last pushed 15d ago), licensed MIT. It adds 69 tokens to every session and 998 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

ghost-decode

Use when a video hides text in moving dots or noise — "ghost font" clips, motion-defined text, random-dot kinematograms, TV-static videos with a secret message, text readable only while playing but invisible in any paused frame, or the user asks what a ghost-font video says.

haroontrailblazer/ghost-font-decoder · 64 tokens

review

5-pass structured code review — correctness, security, performance, readability, consistency.

SethGammon/Citadel · 17 tokens

scaffold

Project-aware file generation. Reads existing codebase conventions (naming, structure, imports, exports, test patterns) then generates new files that match exactly. Wires generated files into the project's registration points.

SethGammon/Citadel · 44 tokens

design

Generates and maintains a design manifest for visual consistency. In existing projects, reads current styles and documents the design language. In new projects, asks a few questions and generates a starter manifest. The post-edit hook reads the manifest and flags deviations.

SethGammon/Citadel · 51 tokens

marshal

Meta-orchestrator that takes any direction — broad, specific, or vague — and autonomously chains skills and context into actionable work. Gathers context from codebase, docs, and memory. Only asks the user when it genuinely cannot proceed. Single-session orchestrator.

SethGammon/Citadel · 56 tokens

organize

Repository structure only: directory layout, file placement, naming conventions, and where-does-this-belong decisions. Detects the project's convention, audits files against it, and executes move plans with import-path updates. Never changes code inside files beyond the import updates a move forces; in-file…

SethGammon/Citadel · 66 tokens