gh-milestones-projectslisted
Install: claude install-skill noctua84/nescio-ai
# GitHub Milestones & Projects (gh)
## Overview
Two GitHub planning operations whose `gh` invocation is easy to get wrong:
- **Milestones** — `gh` has **no** `milestone` subcommand; you must go through the REST API.
- **Projects (v2)** — `gh project …` exists, but it needs the `project` token scope, which the default login does not grant.
For plain issue/PR creation and PR-template detection, use the `handle-pr-comments` skill and standard `gh issue create` / `gh pr create`; this skill is only the milestone + project pieces.
## Context
Before starting, read the repo's `CLAUDE.md` / `CLAUDE.local.md` for repo/owner conventions. Derive the repo identity — never hardcode it:
```bash
REPO=$(gh repo view --json owner,name -q '.owner.login+"/"+.name') # e.g. Cognigy/ui
OWNER=${REPO%%/*}
```
## Milestones
`gh milestone create` **does not exist**. Use the API.
```bash
# Create
gh api --method POST "/repos/$REPO/milestones" \
--field title="v1.0" \
--field description="First stable release" \
--field due_on="2026-09-30T00:00:00Z" # ISO 8601; always T00:00:00Z. Omit the field for no due date.
# List existing (titles)
gh api "/repos/$REPO/milestones" --jq '.[].title'
```
Attaching a milestone to an issue/PR:
- `gh issue create --milestone "v1.0"` / `gh pr create --milestone "v1.0"` — these take the milestone **title**.
- `gh api` payloads take the numeric milestone **id**, not the title.
## Projects (v2 boards)
**Prerequisite — the `project` scope.** The defaul