Agent skill
complete-milestone
Close a completed GitHub milestone. Args: {milestone-number}. Audits open and closed issues, offers to carry forward open items to a new or existing milestone, closes the GitHub milestone, updates Project V2 Status to Done for closed issues, and generates a completion summary. Use when a sprint or release is finished and needs to be officially closed.
Install this agent skill to your Project
npx add-skill https://github.com/Jamie-BitFlight/claude_skills/tree/main/.claude/skills/complete-milestone
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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
ccc
This skill should be used when code search is needed (whether explicitly requested or as part of completing a task), when indexing the codebase after changes, or when the user asks about ccc, cocoindex-code, or the codebase index. Trigger phrases include 'search the codebase', 'find code related to', 'update the index', 'ccc', 'cocoindex-code'.
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
delegate
Quick delegation template for sub-agent prompts. Use when assigning work to a sub-agent, before invoking the Agent tool, or when preparing prompts for specialized agents. Provides the WHERE-WHAT-WHY framework. For comprehensive delegation guidance, activate the agent-orchestration how-to-delegate skill.
swarm-spawning
Spawn agents and teammates in Claude Code swarms. Use when choosing between subagents vs teammates, selecting agent types (Explore, Plan, general-purpose, plugin agents), configuring spawn backends (in-process, tmux, iterm2), or setting environment variables for spawned agents.
knowledge-explorer
Manage the research/ knowledge base (KB) of tool and library research entries. Use when browsing KB topics, adding new research entries, updating existing entries with dated revisions, fetching GitHub repo metadata into a draft KB entry, or migrating old-format entries to skill-spec frontmatter. Triggers on tasks like "what do we have on X", "add this to the KB", "update the KB entry for Y", "fetch github info for owner/repo", or "migrate old entries".
design-anti-patterns
Enforce anti-AI UI design rules based on the Uncodixfy methodology. Use when generating HTML, CSS, React, Vue, Svelte, or any frontend UI code. Prevents "Codex UI" — the generic AI aesthetic of soft gradients, floating panels, oversized rounded corners, glassmorphism, hero sections in dashboards, and decorative copy. Applies constraints from Linear/Raycast/Stripe/GitHub design philosophy: functional, honest, human-designed interfaces. Triggers on: UI generation, dashboard building, frontend component creation, CSS styling, landing page design, or any task producing visual interface code.
Didn't find tool you were looking for?