agentleFS
sorafujitanisorafujitani/skills/milestone-triage/SKILL.md

milestone-triage

Skill8 starsChanged 2 months agoMITView on GitHub

Manage a personal triage-grouped wishlist ("やりたいこと") persisted at ~/.claude/data/milestone-triage/state.json. Use only when the user names this skill ("milestone-triage", "トリアージ") or asks to view/add/move/edit/remove items in this specific backlog; generic todo or planning talk does not qualify. Covers listing by triage, adding/moving/editing/removing items, and reshaping the triage groups.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 1 is distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Default triages on first run: now, next, later, someday, done

    line 15
  2. Very specific:

    All operations go through scripts/milestone.py.

    line 20
  3. Distinctive:

    When the user explicitly invokes this skill:

    line 52
  4. Very specific:

    If the user references an item by title rather than id, run list --json (or scan the previous output), match the title, then call the …

    line 64
  5. Very specific:

    If the user asks to add an item without naming a triage, default to the first triage (state["triages"][0]).

    line 65
  6. Very specific:

    Never edit state.json directly.

    line 67

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Milestone Triage

A triage-grouped wishlist for the user's "やりたいこと". State lives in a single JSON file so it persists across sessions.

Storage

  • Path: ~/.claude/data/milestone-triage/state.json (auto-created on first write)
  • Override for testing: set MILESTONE_TRIAGE_STATE env var to a different path
  • Format: {"version": 1, "triages": [...names in display order...], "items": [{id, title, note, triage, created_at, updated_at}, ...]}
  • Default triages on first run: now, next, later, someday, done
  • IDs are 4-char hex generated on add; reference items by id everywhere

CLI

All operations go through scripts/milestone.py. Run via the user's python3:

python3 ~/.agents/skills/milestone-triage/scripts/milestone.py <subcommand> [...]

Item commands

CommandPurpose
list [--triage NAME] [--json]Show items grouped by triage (default: all triages, in declared order)
add "TITLE" [--triage NAME] [--note "TEXT"]Add item. Default triage is the first one
move ID NEW_TRIAGEMove item between triages (the core "入れ替え" operation)
edit ID [--title "..."] [--note "..."]Update an item's title and/or note
remove IDPermanently delete an item
show IDPrint one item as JSON

Triage-group commands

CommandPurpose
triages [--json]List triage groups with item counts
triage-add NAME [--after EXISTING]Add a new triage group (default: append at end)
triage-remove NAME [--move-to OTHER]Delete a group. --move-to required if it has items
triage-rename OLD NEWRename a triage group (items follow)
triage-reorder NAME1 NAME2 ...Reorder; must list every existing triage exactly once
pathPrint the state file path

Errors exit nonzero with a single-line message (e.g. unknown triage 'foo'. known: ..., item not found: abcd).

Typical workflow

When the user explicitly invokes this skill:

  1. Show first — start with list (or list --triage X if they named one) so the user sees current state with ids.
  2. Apply the change — translate the user's natural-language request into one or more subcommand calls. Examples:
    • "ブログ書くを now に上げて" → move <id> now (look up the id from the prior list output)
    • "Redis 移行を追加、優先度は next" → add "Redis 移行" --triage next
    • "someday を消して、中身は later に" → triage-remove someday --move-to later
    • "triage の順番を urgent, now, later にして" → triage-reorder urgent now later (every existing group must appear)
  3. Confirm with a fresh list — re-run list (or the affected list --triage X) so the user sees the updated state.

Selection rules

  • If the user references an item by title rather than id, run list --json (or scan the previous output), match the title, then call the command with the resolved id. If there are multiple matches, show them and ask which.
  • If the user asks to add an item without naming a triage, default to the first triage (state["triages"][0]); mention which one you chose.
  • Destructive ops (remove, triage-remove without --move-to) — confirm with the user before running if they didn't specify the id/name explicitly.
  • Never edit state.json directly; always go through the CLI so timestamps and validation stay consistent.

Output rendering

The default list output is already grouped and easy to read. When showing it back to the user, prefer pasting the raw CLI output in a code block rather than reformatting — the alignment and group headers carry meaning. If the user asks for a different shape (markdown table, sorted by date, etc.), use list --json and reformat from there.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.