GHPM
Use GitHub as the single source of truth (SSOT) for project work shared by humans and AI agents.
This skill handles task intake, triage, issue/project schemas, status updates, handoff logs, and GitHub automation through gh, git, GraphQL, REST, and Actions.
Does NOT replace product judgment, private planning, secrets management, or code review.
Security
- Never paste secrets into issues, project fields, PR bodies, workflow logs, or comments.
- Treat public repos as public evidence ledgers; redact customer data and credentials.
- Use least-privilege tokens. For Projects, verify
project scope before edits: gh auth status.
- Prefer
GH_TOKEN in Actions; do not write PATs to workflow files.
- If a task needs private data, store only a pointer: owner, system, access request, and redacted summary.
Use When
- User asks to manage tasks, status, roadmap, project boards, issue labels, GitHub Projects, or handoff/handover.
- Work spans humans + AI agents and needs durable context between sessions.
- Need convert chat/plans/TODOs into GitHub Issues with evidence, owners, dependencies, status.
- Need chain skills into execution pipelines and report progress from GitHub state.
- Need automate triage/status/comments with GitHub Actions or
gh api.
Core Model
Use GitHub primitives deliberately:
| Primitive |
Role |
| Issue |
Atomic task, bug, decision, or milestone slice |
| Issue body |
Contract: context, acceptance criteria, handoff log |
| Labels |
Stable routing: type, priority, area, risk, agent/human lane |
| Project |
Live board: status, iteration, owner, estimate, target |
| PR |
Execution evidence linked to issues |
| Actions |
Automation worker for triage, reminders, stale checks, reports |
| Comments |
Append-only handoff log and decision trail |
| Branch |
Work-in-progress pointer linked to issue/PR |
Prefer Projects Status for live state. Use labels for taxonomy and search. If no Project exists, use status:* labels as a lightweight fallback.
Workflow
Orient repo and auth:
git remote -v
gh repo view --json nameWithOwner,defaultBranchRef,owner
gh auth status
gh project list --owner OWNER
gh issue list --state open --limit 50 --json number,title,labels,assignees,updatedAt
Choose operating mode:
- Bootstrap: create labels, project fields, templates, automation.
- Intake: turn request/plan/chat into GitHub issues.
- Execute: link branch/PR/checks to issues, update status.
- Handoff: write current state, blockers, commands, next owner.
- Audit: compare GitHub state against local repo/plans/CI.
Load only needed references:
references/schema-and-taxonomy.md for labels, fields, issue body contract.
references/command-cookbook.md for gh, GraphQL, REST, and Actions snippets.
references/skill-pipelines.md for chained workflows with other skills.
Update GitHub first, then local artifacts:
- If a task changes, update issue/project/comment.
- If code changes, link PR/branch/checks back to the issue.
- If docs/plans change, put the canonical task state in GitHub and link local files.
Report from evidence:
- Cite issue/PR/project URLs, check names, branch names, timestamps.
- End with unresolved questions only if GitHub/current repo cannot answer them.
Task Contract
Every task issue should contain:
## Outcome
What done means.
## Context
Relevant repo, branch, files, links, constraints.
## Acceptance Criteria
- [ ] Verifiable condition
## Handoff Log
- YYYY-MM-DD HH:mm TZ - actor: state, evidence, next step.
## Skill Chain
Suggested skills and order, e.g. mk-scout -> mk-plan -> mk-cook -> mk-test -> mk-git -> mk-ship.
Keep the issue body as the contract. Use comments for chronological updates.
Operating Rules
- Use
gh first for normal operations; use gh api graphql when Projects fields need precise reads/writes.
- Never silently create broad label taxonomies; inspect existing labels and extend minimally.
- Keep statuses mutually exclusive: one live status only.
- Record blockers as both field/label and comment with owner + unblock condition.
- Prefer issue dependencies/sub-issues when available; otherwise cross-link with
Blocked by #N and Blocks #M.
- For AI handoff, include exact commands already run, tests/checks result, touched files, and next safe command.
- For humans, summarize current decision, risk, and what needs approval.
Quick Commands
# Create task
gh issue create --title "feat: add billing webhook retry" \
--label "type:feature,priority:p1,status:ready,agent:ai-ok" \
--body-file /tmp/task.md
# Update state
gh issue edit 123 --remove-label status:ready --add-label status:in-progress
gh issue comment 123 --body-file /tmp/handoff.md
# Link branch
gh issue develop 123 --checkout
# Trigger automation
gh workflow run project-triage.yml --ref main -f issue=123
Output Format
When using this skill, return concise evidence-based status:
**GHPM Status**
- Repo: OWNER/REPO
- Project: URL or none
- Issues: #N title [status, owner, priority]
- Actions: workflow/check result
- Handoff: last comment URL, next owner/action
Unresolved questions:
- None
1---2name: ghpm-23description: GitHub project management for humans and AI agents. Use for issue/task planning, Projects boards, handoff status, gh/API automation, and CI-driven work tracking.4license: MIT5---67# GHPM89Use GitHub as the single source of truth (SSOT) for project work shared by humans and AI agents.10This skill handles task intake, triage, issue/project schemas, status updates, handoff logs, and GitHub automation through `gh`, `git`, GraphQL, REST, and Actions.11Does NOT replace product judgment, private planning, secrets management, or code review.1213## Security1415- Never paste secrets into issues, project fields, PR bodies, workflow logs, or comments.16- Treat public repos as public evidence ledgers; redact customer data and credentials.17- Use least-privilege tokens. For Projects, verify `project` scope before edits: `gh auth status`.18- Prefer `GH_TOKEN` in Actions; do not write PATs to workflow files.19- If a task needs private data, store only a pointer: owner, system, access request, and redacted summary.2021## Use When2223- User asks to manage tasks, status, roadmap, project boards, issue labels, GitHub Projects, or handoff/handover.24- Work spans humans + AI agents and needs durable context between sessions.25- Need convert chat/plans/TODOs into GitHub Issues with evidence, owners, dependencies, status.26- Need chain skills into execution pipelines and report progress from GitHub state.27- Need automate triage/status/comments with GitHub Actions or `gh api`.2829## Core Model3031Use GitHub primitives deliberately:3233| Primitive | Role |34| --- | --- |35| Issue | Atomic task, bug, decision, or milestone slice |36| Issue body | Contract: context, acceptance criteria, handoff log |37| Labels | Stable routing: type, priority, area, risk, agent/human lane |38| Project | Live board: status, iteration, owner, estimate, target |39| PR | Execution evidence linked to issues |40| Actions | Automation worker for triage, reminders, stale checks, reports |41| Comments | Append-only handoff log and decision trail |42| Branch | Work-in-progress pointer linked to issue/PR |4344Prefer Projects `Status` for live state. Use labels for taxonomy and search. If no Project exists, use `status:*` labels as a lightweight fallback.4546## Workflow47481. Orient repo and auth:49 ```bash50 git remote -v51 gh repo view --json nameWithOwner,defaultBranchRef,owner52 gh auth status53 gh project list --owner OWNER54 gh issue list --state open --limit 50 --json number,title,labels,assignees,updatedAt55 ```56572. Choose operating mode:58 - **Bootstrap**: create labels, project fields, templates, automation.59 - **Intake**: turn request/plan/chat into GitHub issues.60 - **Execute**: link branch/PR/checks to issues, update status.61 - **Handoff**: write current state, blockers, commands, next owner.62 - **Audit**: compare GitHub state against local repo/plans/CI.63643. Load only needed references:65 - `references/schema-and-taxonomy.md` for labels, fields, issue body contract.66 - `references/command-cookbook.md` for `gh`, GraphQL, REST, and Actions snippets.67 - `references/skill-pipelines.md` for chained workflows with other skills.68694. Update GitHub first, then local artifacts:70 - If a task changes, update issue/project/comment.71 - If code changes, link PR/branch/checks back to the issue.72 - If docs/plans change, put the canonical task state in GitHub and link local files.73745. Report from evidence:75 - Cite issue/PR/project URLs, check names, branch names, timestamps.76 - End with unresolved questions only if GitHub/current repo cannot answer them.7778## Task Contract7980Every task issue should contain:8182```markdown83## Outcome84What done means.8586## Context87Relevant repo, branch, files, links, constraints.8889## Acceptance Criteria90- [ ] Verifiable condition9192## Handoff Log93- YYYY-MM-DD HH:mm TZ - actor: state, evidence, next step.9495## Skill Chain96Suggested skills and order, e.g. mk-scout -> mk-plan -> mk-cook -> mk-test -> mk-git -> mk-ship.97```9899Keep the issue body as the contract. Use comments for chronological updates.100101## Operating Rules102103- Use `gh` first for normal operations; use `gh api graphql` when Projects fields need precise reads/writes.104- Never silently create broad label taxonomies; inspect existing labels and extend minimally.105- Keep statuses mutually exclusive: one live status only.106- Record blockers as both field/label and comment with owner + unblock condition.107- Prefer issue dependencies/sub-issues when available; otherwise cross-link with `Blocked by #N` and `Blocks #M`.108- For AI handoff, include exact commands already run, tests/checks result, touched files, and next safe command.109- For humans, summarize current decision, risk, and what needs approval.110111## Quick Commands112113```bash114# Create task115gh issue create --title "feat: add billing webhook retry" \116 --label "type:feature,priority:p1,status:ready,agent:ai-ok" \117 --body-file /tmp/task.md118119# Update state120gh issue edit 123 --remove-label status:ready --add-label status:in-progress121gh issue comment 123 --body-file /tmp/handoff.md122123# Link branch124gh issue develop 123 --checkout125126# Trigger automation127gh workflow run project-triage.yml --ref main -f issue=123128```129130## Output Format131132When using this skill, return concise evidence-based status:133134```markdown135**GHPM Status**136- Repo: OWNER/REPO137- Project: URL or none138- Issues: #N title [status, owner, priority]139- Actions: workflow/check result140- Handoff: last comment URL, next owner/action141142Unresolved questions:143- None144```