skills/omc-gh-project/SKILL.md
GitHub Projects (v2) board management — list items, update status, manage iterations, and add issues/PRs to projects. WHEN: User wants to manage project boards, move cards between statuses, check project progress, or assign items to iterations. DO NOT USE FOR: Issue triage (use omc-gh-triage), PR review (use omc-gh-review), initial GitHub setup (use omc-gh-setup), or ADO sprint planning (use omc-ado-sprint).
npx skillsauth add RobinNorberg/oh-my-copilot omc-gh-projectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage GitHub Projects (v2) boards for the current repository. Lists project items, updates card statuses, manages iterations, and adds issues or PRs to projects.
When this skill is invoked, immediately execute the workflow below. Do not only restate or summarize these instructions back to the user.
Read .omcp/config.json:
cat .omcp/config.json 2>/dev/null || echo "NOT_FOUND"
Extract from the github key:
owner — GitHub owner (org or user)repo — repository nameIf config is NOT_FOUND or missing the github key: tell the user to run /oh-my-copilot:omc-gh-setup first and stop.
List all projects accessible to the owner.
gh project list --owner {owner} --format json --limit 10 2>&1
Present the projects:
### GitHub Projects ({N})
| # | Title | Items | Status |
|---|-------|-------|--------|
| 1 | Sprint Board | 24 | Open |
| 2 | Roadmap | 12 | Open |
If no projects are found, report "No projects found for {owner}. Create one at https://github.com/orgs/{owner}/projects or https://github.com/users/{owner}/projects."
Prompt the user to select a project, or accept a project number directly.
gh project item-list {projectNumber} --owner {owner} --format json --limit 50 2>&1
Present the items grouped by status:
### Project: {projectTitle}
#### Todo ({N})
| Type | # | Title | Assignees |
|------|---|-------|-----------|
| Issue | #42 | Fix login timeout | alice |
| Draft | — | Research caching options | — |
#### In Progress ({N})
| Type | # | Title | Assignees |
|------|---|-------|-----------|
| PR | #38 | Add retry logic | bob |
#### Done ({N})
| Type | # | Title | Completed |
|------|---|-------|-----------|
| Issue | #35 | Set up CI | 2026-03-28 |
Move an item between status columns.
gh project field-list {projectNumber} --owner {owner} --format json 2>&1
Find the Status field and its available options (e.g. Todo, In Progress, Done).
gh project item-edit --project-id {projectId} --id {itemId} --field-id {statusFieldId} --single-select-option-id {optionId} 2>&1
Confirm:
Moved #{issueNumber} "{title}" → {newStatus}
If the project uses iteration fields (sprint-like cycles):
gh project field-list {projectNumber} --owner {owner} --format json 2>&1
Find the Iteration field and its available iterations.
gh project item-edit --project-id {projectId} --id {itemId} --field-id {iterationFieldId} --iteration-id {iterationId} 2>&1
Confirm:
Assigned #{issueNumber} "{title}" → {iterationName}
Add an existing issue or PR to the project.
gh project item-add {projectNumber} --owner {owner} --url "https://github.com/{owner}/{repo}/issues/{issueNumber}" 2>&1
Or for a PR:
gh project item-add {projectNumber} --owner {owner} --url "https://github.com/{owner}/{repo}/pull/{prNumber}" 2>&1
Confirm:
Added #{number} "{title}" to project "{projectTitle}"
Create a new draft item directly in the project (no backing issue/PR).
gh project item-create {projectNumber} --owner {owner} --title "{title}" --format json 2>&1
Confirm:
Created draft item "{title}" in project "{projectTitle}"
GitHub Projects v2 CLI support is still evolving. Known limitations:
| Operation | CLI Support | Workaround |
|-----------|------------|------------|
| List items | Full | — |
| Update status field | Full | — |
| Update iteration field | Full | — |
| Custom field updates | Partial | Use gh api graphql for complex field types |
| Capacity tracking | Not available | GitHub Projects has no built-in capacity tracking |
| Velocity/burndown | Not available | Use project insights in the web UI |
| Create project | Not via gh project | Use web UI or gh api graphql |
For operations not supported by gh project, use the GraphQL API:
gh api graphql -f query='
mutation {
updateProjectV2ItemFieldValue(
input: {
projectId: "{projectId}"
itemId: "{itemId}"
fieldId: "{fieldId}"
value: { text: "{value}" }
}
) {
projectV2Item { id }
}
}
' 2>&1
| Error | Action |
|-------|--------|
| .omcp/config.json missing | Tell user to run /oh-my-copilot:omc-gh-setup first |
| gh auth required | Prompt user to authenticate; stop execution |
| No projects found | Suggest creating a project in the web UI |
| Project item not found | Verify item ID; it may have been removed |
| Field update fails | May require project scope; suggest gh auth refresh -s project |
| GraphQL errors | Check query syntax; GitHub Projects v2 API is in active development |
| Rate limit / 403 | Wait 2 seconds and retry once; if still failing, note as unavailable |
tools
Durable multi-goal workflow that persists plan/ledger artifacts under .omcp/ultragoal and prints Claude /goal handoff text for the active session
tools
testing
Evidence-driven tracing lane that orchestrates competing tracer hypotheses in Claude built-in team mode
development
N coordinated agents on shared task list using Claude Code native teams