github-issue-triage
Skill38 starsChanged 6 days agoApache-2.0View on GitHub
Triage open GitHub issues on sunholo-data/ailang by verifying each one against the current code on origin/dev, then closing (with evidence), labelling, transferring or escalating it. Use when the user asks to "check issues", "triage issues", "sync issues", "what issues are open", "clean up the issue tracker", or after a release to find what shipped.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- y-miyazaki/configtheir own version, first seen Nov 6, 2026
- drvoss/everything-copilot-clitheir own version, first seen Oct 26, 2026
- andr-ca/agentharnesstheir own version, first seen Oct 15, 2026
- OpenHands/extensionstheir own version, first seen Oct 8, 2026
- zeroclaw-labs/zeroclawtheir own version, first seen Oct 8, 2026
- mergisi/awesome-hermes-agenttheir own version, first seen Apr 29, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- zeroclaw-labs/zeroclaw★ 33ksame name
- OpenHands/extensions★ 167same name
- drvoss/everything-copilot-cli★ 48same name
- mergisi/awesome-hermes-agent★ 2same name
- andr-ca/agentharness★ 1same name
- robertolopezlopez/agent-skills★ 1same name
- y-miyazaki/config★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository85 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- docs/llms.txtllms.txt
- llms.txtllms.txt
- agent-inboxSkill
- ailang-core-triageSkill
- ailang-packagesSkill
- benchmark-managerSkill
- benchmark-runnerSkill
- builtin-developerSkill
- cli-doc-maintainerSkill
- cloud-cascade-debugSkill
- cloud-setupSkill
- codebase-organizerSkill
- collaboration-hubSkill
- coordinator-helperSkill
- design-doc-creatorSkill
- design-spec-auditorSkill
- docs-syncSkill
- eval-analyzerSkill
- eval-gap-finderSkill
- gemini-cli-helperSkill
- headless-runnerSkill
- local-model-onboardingSkill
- local-ollama-evalSkill
- mission-briefSkill
- mission-controlSkill
- mission-loop-changeSkill
- model-managerSkill
- motoko-analyzerSkill
- parser-developerSkill
- post-releaseSkill
- pr-monitorSkill
- prompt-managerSkill
- release-managerSkill
- sonarcloud-triageSkill
- sprint-evaluatorSkill
- sprint-executorSkill
- sprint-plannerSkill
- test-coverage-guardianSkill
- trace-debuggerSkill
- use-ailangSkill
- wasm-debuggerSkill
- agent-inboxSkill
- ailang-core-triageSkill
- ailang-packagesSkill
- benchmark-managerSkill
- benchmark-runnerSkill
- builtin-developerSkill
- cli-doc-maintainerSkill
- cloud-cascade-debugSkill
- cloud-setupSkill
- codebase-organizerSkill
- collaboration-hubSkill
- coordinator-helperSkill
- design-doc-creatorSkill
- design-spec-auditorSkill
- docs-syncSkill
- eval-analyzerSkill
- eval-gap-finderSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 68
Duplicates: When two agents disagree about which of a pair to keep, keep the one that describes the current defect most precisely.
- Very specific: line 86
After a pass, gh issue list -l priority:P0 is the fix-first list.
- Distinctive: line 99
keep it open when no patch exists, and note it.
- Very specific: line 111
All of them read docs and history from --ref (default origin/dev, fetched first) and fail loudly if the fetch fails.
- Distinctive: line 118
Use a worktree for any doc moves.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GitHub Issue Triage
Every verdict must come from the issue read against the code on origin/dev, not from a keyword match. The scripts only say where to start.
Measured 2026-09-28, against 100 issues verified one by one:
- The old "closable" heuristic (
#Nmentioned in a changelog or an implemented doc) flagged 25 issues. 7 were fixed and 18 were live bugs, several of them P0/P1. Its--closeflag would have closed all 25. - It also missed 6 real fixes whose commits never named the issue.
--closehas been removed.
Current State
- GitHub auth: !'gh auth status 2>&1 | grep -E "Active account: true" -B1 | head -1'
- Open issues: !'gh issue list --state open --limit 1000 --json number --jq length 2>/dev/null || echo "gh not available"'
- Missing a priority label: !'gh issue list --state open --limit 1000 --json labels --jq "[.[] | select([.labels[].name] | any(startswith("priority:")) | not)] | length" 2>/dev/null'
Workflow
1. Auth
This repo is worked as sunholo-voight-kampff, the bot account; check_auth.sh compares against github.expected_user in ~/.ailang/config.yaml. MarkEdmondson1234 is the human's account, and rw-markedmondson is a different project. If the wrong one is active, run gh auth switch --user sunholo-voight-kampff.
2. Starting-point report
.Codex/skills/github-issue-triage/scripts/triage_report.sh --output <scratchpad>/triage.mdIt gives counts, close candidates (unverified), issues missing a priority label, needs-decision, doc references and stale issues. All of it is read from origin/dev, never the working tree, because a worktree may sit on an old branch.
What the candidate list is worth:
- In the same measurement, its signals caught 3 of 13 real fixes.
- An issue missing from the list may still be fixed.
- An issue on the list may still be live: a commit once said "closes #612" wrongly.
3. Verify every issue against the code (the actual triage)
Split the open issues into groups of about 20 and give each group to a read-only agent, running in parallel, using resources/verify_agent_prompt.md. Each agent:
- reads the issue and its comments;
- searches
git log origin/devfor fix commits, by#Nand by keywords; - checks
design_docs/planned/againstimplemented/; - reads the current code path;
- reproduces with a build of origin/dev where that's cheap.
An empty search is a claim, not a fact: an agent should try a second phrasing before concluding "not fixed".
Each agent returns exactly one verdict per issue:
| Verdict | Meaning | Action |
CLOSE-FIXED | Fixed on origin/dev | Close with the commit SHA, PR or release, and how it was verified |
CLOSE-OBSOLETE | Premise moot, or the week or feature is gone | Close with the evidence |
CLOSE-DUPLICATE | Same defect as #X | Close in favour of the sharper, current one (see below) |
TRANSFER | The fix belongs in another repo | gh issue transfer N sunholo-data/<repo> |
KEEP-PLANNED | Real, and a planned doc covers it | Label it; note the doc |
KEEP-ORPHAN | Real, no doc | Label it with a priority; a doc if P0/P1 |
NEEDS-DECISION | Needs a maintainer ruling | Label needs-decision; state the decision in one line |
Show the user the combined verdict list, and get approval before closing, transferring or relabelling anything.
4. Act, with evidence
- Close with
gh issue close N --reason completed|"not planned" --comment "<evidence>". The comment cites the fix commit or the reason, and says "verified against origin/dev<sha>". - Duplicates. When two agents disagree about which of a pair to keep, keep the one that describes the current defect most precisely. That's usually the newer re-file, whose older sibling holds a half that has since been fixed or refuted.
- Transfer. Fixes that live in
sunholo-data/ailang-parse,email-parseordaneelare moved, not closed and not left open here. The bot has admin on those repos. - Weekly bookkeeping threads (
<mission> bookkeeping: week of <date>). Close a finished week once a newer thread exists and it has no open directives. Never close the current thread; the mission loop rotates it. - Stale. "Stale" means the mechanism was refuted or the watch item has gone quiet, not simply 30 days without activity. Close with a "reopen with a fresh repro" note.
5. Labels: priority plus area, and never a coordinator-watched label
| Label | Meaning |
priority:P0 | Soundness, security or data loss; fix before new features |
priority:P1 | A real bug hurting users or agents now |
priority:P2 | Worth doing, not urgent |
priority:P3 | Nice to have |
needs-decision | Blocked on a maintainer ruling |
area:* | effects ifc test-runner bytecode language verify iface cli pkg ai mission ci serveapi runtime messaging |
Don't add bug, feature or from:* to existing issues. They are the coordinator's default watch_labels (internal/coordinator/agent_config.go), so adding one can import an old issue as a new task. The labels above are not watched.
After a pass, gh issue list -l priority:P0 is the fix-first list.
6. Sync the design-doc tree
- Shipped work still in
planned/. Move its design doc todesign_docs/implemented/<release>/;git tag --contains <fix-sha>gives the release. Replace the status line with "Implemented in vX (sha; closes #N)", and keep the prior status as history. Fix the relative links to and from the moved doc. - Why it matters: a doc left in
planned/makes the next report list shipped work as open. - Real issues with no doc: P0/P1 soundness or correctness clusters get one design doc per root cause, via
/design-doc-creator. Check first whether the issues share a root cause.
7. Security alerts: check they're stale before acting
Dependabot evaluates GitHub's dependency graph, which can lag behind go.mod. On 2026-09-28, 30 of 40 alerts were for versions no file pinned anymore. For each alert:
- compare
security_vulnerability.first_patched_versionwith the version pinned onorigin/dev; - dismiss it with
dismissed_reason=inaccurateand both versions in the comment only when the pinned version is at or past the patch; - keep it open when no patch exists, and note it.
Scripts
| Script | Purpose |
check_auth.sh [--quiet] | Active gh account matches github.expected_user |
list_open_issues.sh [--json] [--labels L] [--limit N] | Open issues with labels and age (default limit 1000; gh truncates silently at the limit) |
triage_report.sh [--output F] [--stale-days N] [--ref R] | Starting-point report (step 2) |
find_closable.sh [--json] [--ref R] | Close candidates only: fixes #N commits, and implemented docs naming #N in their header. It cannot close. |
match_design_docs.sh [--planned|--implemented] [--json] [--ref R] | Which docs reference each issue, by exact #N or an M-ID filename match. A match means "mentioned", not "covered". |
All of them read docs and history from --ref (default origin/dev, fetched first) and fail loudly if the fetch fails.
Gotchas
commneeds lexically sorted input.sort -noutput silently mis-joins issue-number sets.- The interactive shell is zsh:
set -- $pairdoes not word-split, so run transfers and closes explicitly or in/bin/bash. ailang iface --jsonescapes<as<, so grep for the escaped form.- Use a worktree for any doc moves. Never switch branches in a checkout other agents share.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

