Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add juanmhidalgo/claude-plugins/plugin install feature-devWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/juanmhidalgo/claude-plugins/cleanup)<a href="https://agentmods.dev/commands/juanmhidalgo/claude-plugins/cleanup"><img src="https://agentmods.dev/badge/commands/juanmhidalgo/claude-plugins/cleanup/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/juanmhidalgo/claude-plugins/cleanup"><img src="https://agentmods.dev/badge/commands/juanmhidalgo/claude-plugins/cleanup.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00080 | $0.04439 |
| Opus 5.5 | $0.00032 | $0.01776 |
| Sonnet 5.5 | $0.00016 | $0.00888 |
| Haiku 4.5 | $0.00008 | $0.00444 |
Grade A, and why
cleanup scanned grade A with 1 finding 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- Bash(curl -s -o /dev/null --max-time 2 http://127.0.0.1:*) How it starts
The opening of the file, as written. The whole thing — 187 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Context
- Repository: !
git remote get-url origin - Current branch: !
git branch --show-current - Feature store: each feature lives in
.feature-dev/features/<slug>/, managed by${CLAUDE_PLUGIN_ROOT}/scripts/features.py(pass--root <repo root>). Layout: artifact-locations.md.
Phase 0: Discover Features
Run ${CLAUDE_PLUGIN_ROOT}/scripts/features.py list --json --root <repo root>. Each entry has slug, status (draft, approved, planned, running, halted, implemented, invalid), plan (steps, completed, halted_at, halt_reason, or null), issue (a ref or null), artifacts (kind, path, needs_review) and, for an invalid feature, a reason. A missing .feature-dev/features/ is an empty list.
The review history, review files and server pointer of a feature live inside its folder, so one feature is one unit: nothing is matched by slug prefix, and no review data outlives its feature.
If the list is empty, STOP and tell the user: "No features found. Nothing to clean up." Do not proceed.
Phase 1: Categorize
Build three lists from the status of each entry.
Safe to delete:
- Features with status
implemented— the work is done. Thefeatures.py deletecommand itself removes only these, so this list and the script agree.
Active work (never offer for deletion):
- Status
runningorhalted— a/feature-dev:tddrun is mid-flight or resumable. Deleting one discards itsplan.completedrecord and strands a dirty working tree with no way to tell which steps already landed. - Status
draft,approvedorplanned— work in progress.
Ambiguous (do not offer by default — the user can delete manually):
- Status
invalid— a broken feature folder; surface itsreason, never include it.
Phase 1a: Stale review-server pointers
While a review page is served, .feature-dev/features/<slug>/reviews/.url holds its address. For every feature that has one, other than a running or halted feature, Read it and probe <url>alive (the pointer ends in /): curl -s -o /dev/null --max-time 2 <url>alive. /alive answers without a token and without resetting the server's idle timer, so the probe never keeps a forgotten review open. Exit 7 (connection refused) means no server — the pointer is stale. Any other exit means something answers — a review in progress:
- move the feature from Safe to delete to Active work with reason
review in progress— the review's verdict is about to be applied to it; - say "review server running at — submit or close it, then rerun".
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.
- 2d ago Changed · -40 lines · -11 tokens per session 786484ad0889
- 14d ago Changed · +4 lines bbe71d92795c
- 18d ago Changed · +13 lines 04b81a2d1aad
- 19d ago Changed · +97 lines · +49 tokens per session f9b64bb85caa
- 23d ago Changed · -4 lines 177fe43d58a4
- 1mo ago Changed · +1 lines e6d468288721
- 1mo ago First seen · 116 lines · 42 tokens per session scan A 3e8308e24c57
cleanup is a command published in the GitHub repository juanmhidalgo/claude-plugins (8 stars, last pushed 2d ago), licensed MIT. It adds 80 tokens to every session and 4,439 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other commands, from other repositories
template
Manage issue templates for streamlined issue creation.
fest-show
Show festival progression (in-progress tasks, roadmap, and dependency view).
add-note
Add an internal or external note to a ConnectWise PSA ticket.
sync-linear
Sync current work with Linear ticket status.
dispatcher
Use when you want the orchestrator to pick the next repo to work on across your whole portfolio — it enumerates candidate repos below the confinement root, resolves free/busy from each repo's session.lock lease, ranks the FREE ones by backlog priority × staleness × readiness, recommends the single most worthwhile one…
workpm
A project-management workflow for coordinating multiple AI workers through five stages. It includes task assignment, shared activity logs, worker replacement, and final checks.