agentleFS
Jamie-BitFlightJamie-BitFlight/claude_skills/.claude/skills/complete-milestone/SKILL.md

complete-milestone

Skill67 starsChanged 52 days agoMITView on GitHub

Close a completed GitHub milestone and generate a completion summary. Use when a sprint or release is finished and needs to be officially closed. Audits open and closed issues, offers to carry forward open items to a new or existing milestone, closes the milestone, updates Project V2 Status to Done for closed issues, and produces a completion report.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Verify completion state, handle stragglers, close the milestone, and generate a summary.

    line 12
  2. Very specific:

    Call backlog_list_milestones(state="open") and filter the returned list for the entry where number == <milestone_number/>.

    line 26
  3. Distinctive:

    If milestone already closed, report closed date and stop.

    line 28
  4. Very specific:

    If open_count == 0: skip to Step 4.

    line 55
  5. Distinctive:

    Ask: "What should happen to the {open_count} open issues?"

    line 59
  6. Very specific:

    Call backlog_list_milestones(state="open") to list open milestones.

    line 84
  7. Distinctive:

    Use the Python automation script (preferred — handles label transitions and milestone close atomically):

    line 104
  8. Distinctive:

    No open milestones for Option B: fall back to Option A automatically.

    line 150

≈ “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_number>$ARGUMENTS</milestone_number>

Complete Milestone

Verify completion state, handle stragglers, close the milestone, and generate a summary.

Arguments

<milestone_number/> — milestone number (required).

/complete-milestone 3

Workflow

Step 1: Resolve and Audit

Call backlog_list_milestones(state="open") and filter the returned list for the entry where number == <milestone_number/>. If not found in open milestones, call backlog_list_milestones(state="all") and filter again. Extract: title, state, open_issues, closed_issues, due_on.

If milestone already closed, report closed date and stop.

Fetch all issues:

backlog_list_issues(milestone="{title}", state="open")
backlog_list_issues(milestone="{title}", state="closed")

Step 2: Show State

Milestone #{N}: {title}
Due: {due_on or "not set"}

  Closed: {closed_count} issues ✓
  Open:   {open_count} issues ✗

Closed:
  #12  SAM: Error Recovery      (closed 2026-02-20)
  #8   gitlab-skill: Remove URL (closed 2026-02-19)

Open (incomplete):
  #14  create-backlog-item skill  [status:in-progress]
  #17  start-milestone skill      [status:needs-grooming]

If open_count == 0: skip to Step 4.

Step 3: Handle Open Issues

Ask: "What should happen to the {open_count} open issues?"

A) Carry forward to a new milestone (create it now)
B) Carry forward to an existing open milestone
C) Remove from milestone (leave open, unassigned)
D) Close them as incomplete

Option A — new milestone:

Prompt for new milestone title and optional due date. Create via:

backlog_create_milestone(title="{new title}", due_on="{YYYY-MM-DD or empty}", description="")

Reassign open issues one at a time:

uv run .claude/skills/gh/scripts/github_project_setup.py issue set-milestone --issue N --milestone {new_number}

Option B — existing milestone:

Call backlog_list_milestones(state="open") to list open milestones. User picks one; reassign open issues:

uv run .claude/skills/gh/scripts/github_project_setup.py issue set-milestone --issue N --milestone {chosen_number}

Option C — unassign:

uv run .claude/skills/gh/scripts/github_project_setup.py issue remove-milestone --issue N

Option D — close:

uv run .claude/skills/gh/scripts/github_project_setup.py issue close --number N --comment "Closed incomplete as part of milestone #{M} completion."

Step 4: Close Milestone

Use the Python automation script (preferred — handles label transitions and milestone close atomically):

uv run .claude/skills/gh/scripts/github_project_setup.py milestone close \
  --number {number}

Or, to preview changes without applying them:

uv run .claude/skills/gh/scripts/github_project_setup.py milestone close \
  --number {number} --dry-run

The script transitions all remaining open issues to status:done, closes the milestone, and prints a completion summary. It exits non-zero if any issue label update fails.

Step 5: Update Project V2

For all closed issues, update Project V2 Status to Done:

uv run .claude/skills/gh/scripts/github_project_setup.py project update-status \
  --issue N --status Done

Step 6: Completion Report

Milestone #{N} "{title}" — CLOSED

  Completed:       {closed_count}/{total_count} ({pct}%)
  Carried forward: {count} → milestone #{new_N} "{new_title}"
  Removed:         {count}
  Closed incomplete: {count}

{if carry_forward_count > 0}
Next steps:
  /group-items-to-milestone {new_N}  (add more items)
  /start-milestone {new_N}           (begin the new sprint)

Error Handling

  • Milestone not found: call backlog_list_milestones(state="open") to list open milestones and stop.
  • Milestone already closed: report and stop.
  • Issue reassignment fails: log per-item error, continue with remaining.
  • No open milestones for Option B: fall back to Option A automatically.

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.