| name | github-goal-issue-triage |
| description | Triage open GitHub issues across one or more repositories against each repository's GOAL.md, create missing p0/p1/p2/p3 priority labels, apply exactly one priority label to each open issue, nominate the next issue to work on per repository, and generate a clean HTML report grouped by project. Use when asked to prioritize, label, rank, audit, or report on GitHub issues based on project goals. |
GitHub Goal Issue Triage
Overview
Use this skill to turn a list of GitHub repositories into an applied issue-priority pass and a readable HTML report. Treat GOAL.md as the project's north star; without it, flag the repository and skip all issue triage for that repository.
Inputs
Expect the repository list from one of these sources:
- Inline in the user's prompt, separated by spaces, commas, or new lines.
- A local text, Markdown, JSON, YAML, or CSV file path supplied by the user.
- Standard input or pasted content from the user.
- The current GitHub issue, pull request, repository page, or local git remote only when the user explicitly asks to use the current context.
Accept repository entries as owner/name, https://github.com/owner/name, git@github.com:owner/name.git, or a JSON/YAML/CSV field clearly named repo, repository, repositories, url, or github_url. Normalize every entry to owner/name, remove duplicates while preserving first-seen order, and ignore blank lines and comments beginning with #.
If no repository list is provided and no current GitHub context was explicitly requested, ask the user for the repository list before taking action. If the user does not specify an output path, write github-issue-triage-report.html in the current working directory.
Use the authenticated GitHub connector when available. Otherwise use gh or the GitHub REST/GraphQL API. If authentication or write permission is missing, continue in read-only mode and report the labels that would have been applied.
Repository Workflow
For each repository, in the user's order:
- Fetch
GOAL.md from the repository root on the default branch.
- If
GOAL.md is missing, record the repository as skipped, include the reason in the report, and move to the next repository.
- Read the project goal and extract the concrete outcomes, audiences, constraints, and near-term signals of progress.
- Retrieve all open issues, not pull requests. Use pagination; do not rely on default issue-list limits.
- Inspect each issue's title, body, labels, milestone, assignees, comments when needed, age, and recent activity. Avoid changing issue bodies, comments, milestones, state, or assignees unless the user explicitly asks.
- Ensure the repository has the labels
p0, p1, p2, and p3. Create only missing labels and preserve existing label colors/descriptions.
- Assign exactly one priority label to each open issue. Remove any other
p0/p1/p2/p3 labels from that issue so priority state is unambiguous. Preserve all non-priority labels.
- Nominate one next issue for the repository unless there are no open issues.
Priority Rubric
Use goal alignment as the main criterion, then weigh impact, urgency, unblock value, user harm, implementation readiness, and risk.
p0: Critical to the project goal now. Blocks core usage, release, trust, security, data integrity, or a prerequisite without which the project cannot make meaningful progress.
p1: High-impact work that substantially advances the goal, fixes a major user-facing problem, unlocks several other issues, or removes a major adoption or reliability barrier.
p2: Useful and goal-aligned, but not urgent. Includes medium-impact bugs, incremental improvements, important documentation, and work that helps after higher-priority blockers are handled.
p3: Low immediate impact, weak goal alignment, polish, speculative ideas, minor cleanup, stale work, or nice-to-have improvements.
When evidence is thin, choose the lower priority and explain the uncertainty in the issue rationale.
Next Issue Nomination
Nominate the issue that should be worked on next, not necessarily the smallest issue.
Prefer the highest-priority issue that:
- Most directly advances the stated goal.
- Unblocks other issues or users.
- Has enough context to start.
- Has a reasonable scope for the next focused work session.
- Carries lower coordination risk than equally important alternatives.
If the top issue is too ambiguous, nominate a clearer issue and note what context would be needed before the ambiguous one becomes actionable.
GitHub Label Details
Create missing labels with these defaults unless the repository already defines them:
| Label | Color | Description |
|---|
p0 | b60205 | Critical priority: blocking the project goal or urgent user impact |
p1 | d93f0b | High priority: major impact or strong goal alignment |
p2 | fbca04 | Medium priority: useful, goal-aligned, not urgent |
p3 | 0e8a16 | Low priority: polish, speculative, or weak immediate impact |
If label creation or issue updates fail, capture the error and include a read-only triage result in the report. Do not claim labels were applied unless the update succeeded.
HTML Report Requirements
Generate a self-contained HTML file with readable CSS and no external dependencies. Escape every dynamic value before writing HTML, including repository names, GOAL.md summaries, generated status text, skipped reasons, issue URLs/numbers/titles, labels, body excerpts, rationale, impact, nominee text, and notes. Prefer a single escapeHtml() helper at the interpolation boundary.
The report must include:
- Generation timestamp.
- Input repository list.
- A summary section with counts by repository: skipped, total open issues, p0, p1, p2, p3, and nominated next issue.
- One
<details> element per repository, with a <summary> that includes the repository name, status, priority counts, and nominee.
- For skipped repositories, a short explanation that
GOAL.md was missing and no issues were triaged.
- For triaged repositories, the project goal summary, label-update status, next-issue nomination, and an issue table.
Issue table columns:
- Priority.
- Issue link with number and title.
- Rationale tied to
GOAL.md.
- Impact.
- Current labels after update or intended labels in read-only mode.
- Notes or uncertainty.
Sort issues within each repository by priority (p0 to p3), then by goal alignment and impact. Keep repositories in the input order.
Use semantic HTML. A compact structure like this is sufficient:
<details open>
<summary>owner/repo - 12 open issues - next: #42 Improve release flow</summary>
</details>
Quality Checks
Before finishing:
- Verify every input repository has either a skipped reason or complete triage results.
- Verify every open issue in triaged repositories has exactly one
p0/p1/p2/p3 label applied or listed as intended in read-only mode.
- Verify the nominee for each repository links to an open issue from that repository.
- Verify the HTML file opens without missing resources and all issue links are absolute GitHub URLs.
- Summarize what changed on GitHub and where the HTML report was written.