Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Curate Minions

ASecurity

"Walk the current project's latest minions-curator report

42 stars
0 votes
0 copies
0 views
Added 9/22/2026
ai-agentsgobashgit

Works with

cli

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add valpere/session-indexer --skill curate-minions --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Curate Minions?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Curate Minions
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/valpere-curate-minions/badge)](https://www.skillsdirectory.com/skills/valpere-curate-minions)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: curate-minions
description: "Walk the current project's latest minions-curator report
  and triage each tmp/ script candidate: review evidence, preview a
  refactor diff, apply (backup, refactor, move, update minions/TOOLS.md,
  commit) or skip. Never bulk-applies. Usage: /curate-minions [week]"
---

# /curate-minions

Project-local skill (deployed per-project, same convention as
`fix-review` — canonical source here, a copy in each opted-in project's
`.claude/skills/curate-minions/`, synced manually on update, not
symlinked). Reads the report `minions-curator scan`/`scan-all` already
produced for the **current project** (the one this session is running
in) and triages it interactively. This skill does not scan or score
anything itself — that's `minions-curator`'s job, fully deterministic,
no LLM call. This skill is the part that needs real judgment: is this
refactor safe, is this really a duplicate, does the proposed name make
sense.

Full design rationale: `~/wrk/projects/minions-curator/context/design.md`
(§7 in particular). Read it if anything below is unclear — this skill
is a direct implementation of that section.

## When to invoke

- Any time after `minions-curator scan-all` (weekly cron) or
  `minions-curator scan --project .` (manual) has produced a report for
  the current project.
- User explicitly runs `/curate-minions` (optionally with a week tag,
  e.g. `/curate-minions 2026-W35`; default: latest).

## Inputs

- Report: `~/wrk/common/reports/minions/<project-slug>/<week>.md`
  — `<project-slug>` is `discover.Slug()`'s output for the current
  project (its directory basename; check `internal/discover/discover.go`
  in the `minions-curator` repo if the slug is ambiguous).
- The actual candidate files under `./tmp/` in the current project.
- The current project's `./minions/TOOLS.md` (create if it doesn't exist
  yet — first promotion in a project that hasn't had one before).

## Steps

### 1. Locate the report

```bash
SLUG=$(basename "$(git rev-parse --show-toplevel)")
WEEK="${1:-latest}"
REPORTS_DIR="$HOME/wrk/common/reports/minions/$SLUG"
if [[ "$WEEK" == "latest" ]]; then
  # Robust selector: handles spaces/specials in path and filename, and
  # doesn't hardcode a calendar year (an ISO-week filename like
  # 2026-W01.md rolls into 2027-W## eventually — a literal "2026-"
  # prefix would silently stop matching future reports).
  REPORT=$(find "$REPORTS_DIR" -maxdepth 1 -type f -name '[0-9][0-9][0-9][0-9]-W*.md' \
           -printf '%T@ %p\n' 2>/dev/null \
           | sort -rn | head -1 | cut -d' ' -f2-)
else
  REPORT="$REPORTS_DIR/$WEEK.md"
fi
```

No report found → tell the user to run `minions-curator scan --project .`
first (or wait for the weekly cron), don't fabricate candidates.

### 2. Parse candidates

Each report section (`## N. \`tmp/...\``) has: Confidence, Evidence,
optionally a Genericity warning, optionally a "Possible duplicate"
warning, and a Suggested name. Read the whole report — it's small,
generated by a deterministic tool, not worth chunking.

### 3. Show a summary, then walk each candidate

```
Found N candidate(s) in <week>: X high, Y medium, Z low confidence.
Process all? [y/select/skip-low/abort]
```

For each candidate, in confidence order (high → medium → low, same as
`apply-dreaming`'s triage order):

```
[1/N] tmp/dump_users.py → minions/dump-users.py
  Confidence: medium (genericity+substance passed)
  Evidence: 3 run(s) across 2 session(s), 28 non-blank line(s)
  Genericity: looks tied to a one-off value — needs a parameter

  [a]pply / [s]kip / [e]dit-name / [v]iew-full-script / [q]uit
```

- **`view-full-script`** — Read the actual `tmp/` file before deciding;
  the report's evidence is a summary, not a substitute for reading the
  code being promoted.
- **`edit-name`** — override the suggested `minions/<name>` before
  applying.
- **A "Possible duplicate" warning never auto-skips** — show it, let the
  human decide; `minions-curator`'s duplicate check is a cheap name-
  overlap heuristic, not a reliable one.
- **Before recommending `apply` on any candidate — even one with no
  "Possible duplicate" warning** — read the current `minions/TOOLS.md`
  and skim what each existing entry actually does, not just its name.
  The heuristic only catches name overlap (`dump_users.py` vs
  `dump-users.py`); it has no way to notice that `tmp/cdp-eval.py` (a
  stdlib-only fallback for a missing `websockets` module) already
  duplicates `minions/cdp`'s `eval` mode under a completely different
  name. A semantic duplicate the heuristic missed is exactly the kind
  of judgment call this skill exists for — don't let the absence of a
  flag stand in for having actually checked.

### 4. On `apply`

1. **Backup the original `tmp/` file first.** Non-negotiable — copy to
   the harness's scratchpad directory or a `tmp/.curator-backup/`
   subdirectory before touching anything. No exceptions, regardless of
   confidence level.
2. **Decide refactor aggressiveness.** If the report flagged a
   genericity failure (an embedded UUID/timestamp/absolute one-off
   path), read the actual file and judge whether replacing that literal
   with a CLI flag/argument is safe and unambiguous:
   - **Confident** → generate the diff (hardcode → flag, plus a short
     usage header if the script doesn't already have one) and **show it
     before writing it**. Never apply a refactor the human hasn't seen.
   - **Not confident** (the hardcoded value is load-bearing in a way
     that isn't a simple substitution, or the script's structure makes a
     flag non-obvious) → don't guess. Move the file as-is and add a note
     in its `TOOLS.md` entry that it needs manual cleanup.
3. **Move** `tmp/<file>` → `minions/<name>` (`git mv` if the project's
   git is otherwise clean about it, plain `mv` + `git add` is fine too).
4. **Update `minions/TOOLS.md`** — one line, same format as existing
   entries (see any current entry for the pattern: backtick-quoted
   invocation with real flags, then a one-sentence description grounded
   in what the script actually does — read it, don't infer from the
   filename alone).
5. **Delete the `tmp/` original** only after the move is confirmed to
   have succeeded (file exists at the new path, is executable if it was
   before).
6. **Commit** in the current project, using that project's own
   commit/push convention (check its `CLAUDE.md` — most personal
   projects under `~/wrk/` commit and push freely; don't assume, verify).

### 5. On `skip`

Leave the file in `tmp/` untouched. Record the skip in
`tmp/.curator-skip.json` (git-ignored, same convention as
`tmp/.exec_log`) so next week's triage doesn't re-litigate a decision
already made for the same reason:

```jsonc
// tmp/.curator-skip.json — one entry per skipped candidate, keyed by path
{
  "cdp-eval.py": {
    "skipped_at": "2026-09-01",
    "reason": "duplicate of minions/cdp's eval mode"
  }
}
```

Before showing a candidate in Step 3's walk, check this file: if an
entry exists **and** the file's `mtime` hasn't changed since
`skipped_at` (i.e. it wasn't edited to become genuinely different),
list it in the summary as already-triaged rather than re-asking —
`"tmp/cdp-eval.py — skipped 2026-09-01 (duplicate of minions/cdp);
re-flag with 'e' to reconsider"`. Give the human an escape hatch (an
`e` option in that line) to force it back into the normal walk — this
is a memory aid against re-litigating, not a hard suppression. If the
file's `mtime` is newer than `skipped_at`, treat it as a fresh
candidate again (something changed) and drop the stale entry.

This is a lightweight file-marker, not `minions-curator` report
annotation — the scan tool itself stays free of any per-skip state (it
would need to read this file on every run just to skip re-flagging,
adding a second reason its scoring output can vary run to run). If
this marker file itself turns out to be worth surfacing in the report
(e.g. so `scan --project .` can silently exclude an already-skipped,
unchanged candidate instead of the skill filtering it post-hoc), that's
a `minions-curator` binary change to consider later — not a reason to
block this skill-level fix now.

## Hard constraints

- **No bulk-apply, ever.** Every candidate gets its own individual
  accept/skip, regardless of confidence level or how many candidates
  there are.
- **No silent refactor.** A diff is always shown before it's written.
- **No deletion without a prior backup.** Applies even to a "confident"
  high-confidence candidate.
- **Never touch a `tmp/` file the scan already excluded as git-tracked**
  — if you find one anyway (race condition, manual report edit), treat
  it as a bug in the report, not something to act on.
- **This skill only edits the current project.** It never reaches into
  another project's `tmp/`/`minions/` even if its report is sitting
  right there in the shared `~/wrk/common/reports/minions/`
  directory — that directory is shared storage for reports, not license
  to cross project boundaries from a single invocation.

Attribution

valperevalpere
View sourceMore from valpere →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

693621 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →