AgentStack
SKILL verified MIT Self-run

Group Items To Milestone

skill-jamie-bitflight-claude-skills-group-items-to-milestone · by Jamie-BitFlight

Assign backlog items to a GitHub milestone by bridging per-item files to GitHub Issues. Use when populating a sprint or release milestone, after create-milestone, or when a milestone number is specified with optional P0/P1/P2 or title filter. Creates missing GitHub Issues for selected P0/P1 items, assigns all selected items to the milestone, and updates Project V2 Status to Backlog.

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-jamie-bitflight-claude-skills-group-items-to-milestone

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Group Items To Milestone? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Group Items to Milestone

Assign backlog items to a GitHub milestone. Bridges .claude/backlog/ per-item files → GitHub Issues → milestone assignment.

API references: [milestones.md](../gh/references/milestones.md) | [issue-stories.md](../gh/references/issue-stories.md) | [projects-v2.md](../gh/references/projects-v2.md)

Arguments

  • {milestone-number} — required
  • Optional filter: P0, P1, P2, or title substring to pre-filter the list
/group-items-to-milestone 3
/group-items-to-milestone 3 P1
/group-items-to-milestone 3 github

Workflow

Step 1: Resolve Milestone

Call backlog_list_milestones(state="open") and filter the returned list for the entry where number == {number}. If not found, call backlog_list_milestones(state="all") and filter again. Extract title, state, open_issues, closed_issues from the matching entry.

If milestone not found or closed, report and stop.

Step 2: Load Backlog Items

Call the mcp__plugin_dh_backlog__backlog_list tool. Parse the returned dict — each entry in items has title, priority, issue, plan, status, milestone, file_path, groomed. Filter items by section (P0, P1, P2, Ideas). Apply any title filter.

For each item determine status:

  • Has issue**Issue**: #N field present → verify state via backlog_list_issues(state="open") — check if issue number appears in the returned list
  • No issue — P0/P1 item without issue → flagged for creation offer
  • Already in milestone — issue already assigned to this milestone → shown pre-checked

Step 3: Present Selection

Milestone #{N}: {title}

P0
  1. [✓] SAM: Error Recovery — Issue #12 (open)
  2. [ ] bash-development: Fix inaccuracies — no issue yet

P1
  3. [✓] gitlab-skill: Remove URL — Issue #8 (open)
  4. [ ] create-backlog-item skill — no issue yet
  5. [~] commitlint verify flag — Issue #5 (already in this milestone)

Legend: [✓] has issue  [ ] needs issue created  [~] already assigned

Use AskUserQuestion: "Which items to add? (comma-separated numbers, or 'all', or 'P0', 'P1')"

Step 4: Create Missing Issues

For each selected item with no **Issue**: #N:

Build story-format body (Story / Description / Acceptance Criteria / Context). Create issue using the Python script (preferred — handles label creation automatically):

uv run .claude/skills/gh/scripts/github_project_setup.py issue create \
  --title "{type}: {title}" \
  --body "{story body}" \
  --priority-label "priority:{p0|p1|p2|idea}" \
  --type-label "type:{feature|bug|refactor|docs|chore}" \
  --milestone {number}

The backlog script automatically writes issue: '#N' back to the item's metadata.

Skip issue creation for P2/Ideas items — assign by milestone number only if they already have an issue.

Step 5: Assign Existing Issues

For selected items that already have issues but are not yet in this milestone:

uv run .claude/skills/gh/scripts/github_project_setup.py issue set-milestone \
  --issue {issue_number} \
  --milestone {milestone_number}

Step 6: Update Project V2 Status

Set Status = Backlog for each newly assigned item:

uv run .claude/skills/gh/scripts/github_project_setup.py project update-status \
  --issue {issue_number} \
  --status Backlog

Step 7: Report

Milestone #{N}: {title}

Assigned {count} items:
  Issue #12: SAM: Error Recovery (existing issue)
  Issue #14: create-backlog-item skill (new issue created)
  Issue #5:  commitlint verify flag (already assigned — skipped)

Per-item files updated with {created_count} new issue numbers.

Next step: /dh:groom-milestone {number}

Error Handling

  • Milestone not found: call backlog_list_milestones(state="open") and list available milestones, then stop.
  • Issue creation fails: log error per item, continue with remaining.
  • No items match filter: report and show available sections.
  • Label not found: github_project_setup.py issue create handles label creation automatically via _ensure_label().

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.