Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Orchestrates any GitHub repository's backlog via milestones, issues, PRs, and a GitHub Projects (v2) Kanban board. Auto-detects the repo and project at runtime (no hardcoded IDs). Listens to board activity (comments, reviews, labels, assignment, PR merge/close, Status column changes) and reacts. Use when planning work, creating or triaging issues, moving cards across columns, watching issue/PR events, coordinating one or several agents on tasks, or linking branches and PRs to board items.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 88% | 0% |
Announce at start: "Using github-kanban-orchestrator skill."
Governs project management on GitHub for the current repository. It does not replace code skills (review-and-ship, babysit, new-branch-and-pr) — it wires them to a Kanban board.
This skill is repo-agnostic: it resolves the owner, repo, project number, and field/option IDs at runtime. Nothing is hardcoded.
gh authenticated: gh auth statusproject scope. If missing: gh auth refresh -s projectgit rev-parse --show-toplevel)Before any board action, resolve identifiers with the helper:
bashsource "$(dirname "$0")/scripts/gh-board.sh" # or run subcommands directly gh-board env # prints OWNER, REPO, PROJECT_NUMBER, PROJECT_ID, field + option IDs
The helper auto-detects:
OWNER/REPO via gh repo view --json owner,nameStatus, Priority, Size field IDs and their option IDs via gh project field-listIf detection is ambiguous (multiple projects), pass an override:
bashgh-board env --project-number 2 --owner some-owner
Never paste IDs from another repo. Re-resolve per repository.
| Layer | Role | |-------|------| | GitHub Project (Kanban board) | Status, priority, size, dates | | Issues | Scoped work units, acceptance criteria, Closes #N linkage | | Milestones | Phase / release grouping | | PRs | Implementation + review; auto-linked when referencing issues |
Conventions (labels, branches, claim protocol): conventions.md gh command recipes + the discovery helper: reference.md
Default flow (adapt to the board's actual options, discovered at runtime):
Backlog → Ready → In progress → In review → Done| Status | Meaning | Who moves | |--------|---------|-----------| | Backlog | Idea captured, not ready | Planner / human | | Ready | Scoped, can be picked up | Planner | | In progress | Branch open, active work | Implementing agent | | In review | PR open, awaiting merge | Implementing agent after PR | | Done | Merged + verified | Agent after merge (or human) |
If the board uses different option names, map intent to the closest existing option rather than inventing new ones.
- [ ] gh-board env (resolve IDs)
- [ ] List existing milestones, labels, board items (avoid duplicates)
- [ ] Create milestone if missing
- [ ] Create labels if missing (see conventions.md)
- [ ] Create issues with body template (below)
- [ ] Add each issue to the board
- [ ] Set Priority + Size on board items
- [ ] Leave Status = Backlog (or Ready if fully scoped)
- [ ] Post summary table to usergh project item-list — find Ready items without an active PRClaimed for implementation.<type>/<issue#>-<short-slug> (see conventions.md)Refs #N or Closes #Nnew-branch-and-pr or review-and-ship)gh pr list for overlapping scope.The skill cannot run as a daemon. "Listening" = polling the board activity feed and reacting. The helper aggregates, per board item and since a cursor, a normalized event feed (comments, reviews, labels, assignment, PR merge/close, and Status column changes via snapshot diff).
bash# One-off catch-up since the last run (cursor stored under .tmp/kanban/): ./scripts/gh-board.sh events # Explicit window (no cursor write), machine-readable: ./scripts/gh-board.sh events --since 2026-06-01T00:00:00Z --json
Each event is {ts, type, actor, number, title, url, detail}. React per type:
| Event type | Trigger | Skill reaction | |------------|---------|----------------| | comment | New issue/PR comment | Read it. If it's an instruction/mention → act, then reply. If Claimed for implementation → respect the claim, don't double-pick. | | review_approved | PR approved | Keep card in In review; it's ready to merge (hand off to babysit/loop-on-ci). | | review_changes_requested | Review requests changes | Move card → In progress; address feedback on the branch. | | review_commented / review_dismissed | Review note / dismissed | Note it; act only if it contains a blocking request. | | pr_merged | PR merged | Move linked issue card → Done; close the issue if not auto-closed. | | closed | Issue/PR closed (no merge) | If the issue was closed without a merged PR → confirm intent; otherwise reconcile the card to Done/Backlog. | | labeled / unlabeled | Label change | Map priority/size labels to the matching board field; if blocked added → annotate and keep out of Ready. | | assigned / unassigned | Assignment change | Record ownership; avoid claiming items assigned to someone else. | | status_changed | Card moved (manually or by another agent) | Reconcile: someone changed the column out-of-band — re-read state before acting. |
After reacting, always re-sync the board and report (see Output format).
| Mode | How | When | |------|-----|------| | On-demand | gh-board.sh events once | At the start of an orchestration turn (catch up). | | Loop (agent-native) | /loop 5m running gh-board.sh events + reactions | Hands-on session where the agent reacts each cycle. | | Background watch | gh-board.sh watch --interval 60 in a background terminal; read the terminal file for new lines | Passive monitoring inside one session. | | Push (GitHub Actions) | Drop the workflow template (see reference.md) into the repo | True event-driven automation across sessions. Needs a project-scoped token + runner. |
Add .tmp/ to the repo's .gitignore — the cursor and Status snapshot live in .tmp/kanban/.
> Always in English (see Guardrails).
markdown## Goal [One sentence] ## Scope - [ ] … ## Out of scope - … ## Definition of done - [ ] Code + tests / build pass - [ ] CI green on PR - [ ] Docs updated if behavior changed ## Agent notes - Milestone: … - Priority: P0 | P1 | P2 - Size: XS | S | M | L | XL
markdown## Summary - … ## Issue Closes #N ## Test plan - [ ] …
After gh-board env exported the IDs and you resolved the item ID:
bashgh project item-edit \ --project-id "$PROJECT_ID" \ --id "$ITEM_ID" \ --field-id "$STATUS_FIELD_ID" \ --single-select-option-id "$STATUS_IN_PROGRESS"
All $*_FIELD_ID and $STATUS_* / $PRIORITY_* / $SIZE_* come from gh-board env. See reference.md.
bashgh project create --owner "$OWNER" --title "<Repo> Board" gh project link <number> --owner "$OWNER" --repo "$OWNER/$REPO"
Then add Status, Priority, Size single-select fields in the GitHub UI (or via gh project field-create), and re-run gh-board env.
| Phase | Skill | |-------|-------| | Plan decomposition | writing-plans | | Execute plan tasks | executing-plans, subagent-driven-development | | Open / update PR | new-branch-and-pr, review-and-ship | | PR merge-ready | babysit, loop-on-ci, fix-ci | | Split large work | split-to-prs |
Always sync board status when those skills change PR/issue state.
main / mastergh issue list --search "keywords"feat:, fix:, chore:, docs:)messages and code comments. Match the user's language only in chat replies, never in the artifacts created on GitHub. Translate existing non-English issues/PRs when you touch them.
| Kanban layer | Foam layer (foam-project-memory) | |--------------|-------------------------------------| | Issue scoped work | prd/PRD-NNN-*.md | | Epic / Done | foam/features/shipped.md (or import-kanban.sh) | | Implementation | plans/PLAN-NNN-*.md | | Architecture choice | foam/decisions/ADR-NNN-*.md |
After merge: run import-kanban.sh or update foam; add ADR when a new technical decision was made.
After each orchestration action, report:
markdown### Board update | Issue/PR | Status | Priority | Agent action | |----------|--------|----------|--------------| | #N … | Ready → In progress | P1 | Claimed, branch created | ### Next - [ ] …
Other measured skills in the registry, with their headline benchmark lift.