skills/omc-gh-triage/SKILL.md
GitHub issue and PR triage — surfaces open issues, PRs needing review, failing CI, and security alerts. WHEN: User wants to check GitHub project status, triage issues, see CI health, review open PRs, or get a project health overview. DO NOT USE FOR: PR code review (use omc-gh-review), project board management (use omc-gh-project), initial GitHub setup (use omc-gh-setup), or ADO projects (use omc-ado-triage).
npx skillsauth add RobinNorberg/oh-my-copilot omc-gh-triageInstall 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.
Perform a full GitHub triage cycle for the current project. Reads .omcp/config.json for connection settings, queries all relevant GitHub surfaces (issues, PRs, Actions, Dependabot), and presents a prioritized summary with recommended actions.
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 namedefaultBranch — default branch namelabelTriage — triage label filter (optional)If config is NOT_FOUND or missing the github key: tell the user to run /oh-my-copilot:omc-gh-setup first and stop.
Run all data-gathering queries in parallel (they are independent).
gh issue list --repo {owner}/{repo} --assignee @me --state open --json number,title,labels,createdAt,milestone --limit 20 2>&1
Issues matching the triage label (if configured) or issues with no labels:
gh issue list --repo {owner}/{repo} --label "{labelTriage}" --state open --json number,title,createdAt --limit 20 2>&1
If labelTriage is not configured, query issues with no labels:
gh issue list --repo {owner}/{repo} --state open --json number,title,labels,createdAt --limit 30 --jq '[.[] | select(.labels | length == 0)]' 2>&1
gh pr list --repo {owner}/{repo} --search "review-requested:@me" --state open --json number,title,author,createdAt,reviewDecision --limit 20 2>&1
gh pr list --repo {owner}/{repo} --author @me --state open --json number,title,reviewDecision,statusCheckRollup --limit 10 2>&1
gh run list --repo {owner}/{repo} --branch {defaultBranch} --status failure --limit 5 --json databaseId,displayTitle,conclusion,headBranch,updatedAt 2>&1
gh api repos/{owner}/{repo}/dependabot/alerts --jq '[.[] | select(.state=="open")] | length' 2>&1
If this fails (Dependabot not enabled or insufficient permissions), skip this section and note "Dependabot not enabled or insufficient permissions."
Present results using the following structured format. Omit sections that have 0 items (but keep the header with a "(0)" count so the user knows the query ran).
## GitHub Triage Summary
Repository: {owner}/{repo} | Branch: {defaultBranch}
Generated: {timestamp}
---
### My Open Issues ({N})
| # | Title | Labels | Milestone | Age |
|---|-------|--------|-----------|-----|
| #42 | Fix login timeout | bug, p1 | v2.0 | 3d |
### Untriaged Issues ({N})
| # | Title | Created |
|---|-------|---------|
| #55 | New feature request | 2026-03-28 |
### PRs Needing My Review ({N})
| # | Title | Author | Age | Decision |
|---|-------|--------|-----|----------|
| #38 | Add retry logic | alice | 3d | Pending |
### My Open PRs ({N})
| # | Title | Review Status | CI Status |
|---|-------|--------------|-----------|
| #40 | Refactor auth | Changes requested | Passing |
### CI Status — {defaultBranch}
| Workflow | Last Run | Result |
|----------|----------|--------|
| CI | 2026-03-31 08:14 | failed |
| Deploy | 2026-03-30 17:02 | succeeded |
### Security Alerts
Dependabot: {N} open alerts
---
### Recommended Actions
1. [Priority] Action description
2. [Priority] Action description
...
Build the action list using this priority order:
| Condition | Action |
|-----------|--------|
| CI failing on default branch | Fix failing workflow: {workflow name} |
| Dependabot alerts > 0 | Address {N} open Dependabot alerts |
| PR with CHANGES_REQUESTED I authored | Respond to review feedback on #{id} |
| PR review requested from me | Review PR #{id} — {title} |
| Untriaged issues > 0 | Triage {N} issues — assign labels and milestone |
| PR age > 5 days with no reviews | Ping reviewers on stale PR #{id} |
After presenting the summary, ask the user (via AskUserQuestion):
Question: "Would you like me to take action on any of these items?"
Options:
build-fixer agent/oh-my-copilot:omc-gh-review| Error | Action |
|-------|--------|
| .omcp/config.json missing | Tell user to run /oh-my-copilot:omc-gh-setup first |
| gh auth required | Prompt user to authenticate; do not abort — skip that section |
| Dependabot not enabled | Skip security alerts section, note it in summary |
| Query returns 0 results | Show the section with count "(0)" — do not omit the header |
| Rate limit / 403 | Wait 2 seconds and retry once; if still failing, note the section 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