complete-milestone
<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.
More from jamie-bitflight/claude_skills
perl-lint
This skill should be used when the user asks to lint Perl code, run perlcritic, check Perl style, format Perl code, run perltidy, or mentions Perl Critic policies, code formatting, or style checking.
24brainstorming-skill
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or when users request help with ideation, marketing, and strategic planning. Explores user intent, requirements, and design before implementation using 30+ research-validated prompt patterns.
11design-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.
7python3-review
Comprehensive Python code review checking patterns, types, security, and performance. Use when reviewing Python code for quality issues, when auditing code before merge, or when assessing technical debt in a Python codebase.
7hooks-guide
Cross-platform hooks reference for AI coding assistants — Claude Code, GitHub Copilot, Cursor, Windsurf, Amp. Covers hook authoring in Node.js CJS and Python, per-platform event schemas, inline-agent hooks and MCP in agent frontmatter, common JSON I/O, exit codes, best practices, and a fetch script to refresh docs from official sources. Use when writing, reviewing, or debugging hooks for any AI assistant.
7agent-creator
Create high-quality Claude Code agents from scratch or by adapting existing agents as templates. Use when the user wants to create a new agent, modify agent configurations, build specialized subagents, or design agent architectures. Guides through requirements gathering, template selection, and agent file generation following Anthropic best practices (v2.1.63+).
6