Community Triage
roryeckel/wyoming_openai
GitHub issues, pull requests, bug reports, scope questions, and support threads.
Triage Chatbook's auto-generated bug-report issues on GitHub by grouping them on their Failure Data signature (the failing Wolfram Language function plus the confirmed expression/pattern), finding…
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install WolframResearch/Chatbook triage-failure-reports --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/triage-failure-reports .claude/skills/triage-failure-reports && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .claude/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reportsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install WolframResearch/Chatbook triage-failure-reports --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/triage-failure-reports .agents/skills/triage-failure-reports && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .agents/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install WolframResearch/Chatbook triage-failure-reports --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/triage-failure-reports .cursor/skills/triage-failure-reports && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .cursor/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/WolframResearch/Chatbook.git --path .claude/skills/triage-failure-reports--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install WolframResearch/Chatbook triage-failure-reports --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/triage-failure-reports .gemini/skills/triage-failure-reports && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .gemini/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install WolframResearch/Chatbook triage-failure-reportsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/triage-failure-reports .github/skills/triage-failure-reports && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .github/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install WolframResearch/Chatbook triage-failure-reports --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WolframResearch/Chatbook.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/triage-failure-reports .opencode/skills/triage-failure-reports && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "triage-failure-reports" agent skill from https://github.com/WolframResearch/Chatbook/tree/main/.claude/skills/triage-failure-reports into .opencode/skills/triage-failure-reports/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-failure-reports", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
triage-failure-reportsTriage Chatbook's auto-generated bug-report issues on GitHub by grouping them on their Failure Data signature (the failing Wolfram Language function plus the confirmed expression/pattern), finding…
Triage Failure Reports is an agent skill from WolframResearch/Chatbook. Triage Chatbook's auto-generated bug-report issues on GitHub by grouping them on their Failure Data signature (the failing Wolfram Language function plus the confirmed expression/pattern), finding the canonical issue or the PR that resolves each cluster, and closing the rest with an explanatory comment. Use this whenever the user wants to dedupe, triage, or clean up GitHub issues - for example "find duplicates of 1550", "are any of these crash reports the same bug?", "close the issues already fixed by PR 906"…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/extract_signatures.py`).
It sits in Testing & QA, covering QA and bug reports and Mobile testing and debugging. It works with GitHub, Wolfram Alpha and OpenAI. The repository describes itself as: Wolfram Notebooks + LLMs. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a601484. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ghpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Triage Failure Reports loads about 2.7k tokens when it runs. Until then it costs about 237 tokens; SKILL.md has 1,291 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from WolframResearch/Chatbook at commit a601484, republished under its MIT licence (© WolframResearch). 1,291 words, ~2,731 tokens.
.claude/skills/triage-failure-reports/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Chatbook posts machine-generated bug reports to GitHub. They pile up because the same underlying bug gets reported many times across different services, versions, and users. This skill turns that pile into a small number of signature-grouped clusters, ties each cluster to the issue or PR that resolves it, and closes the duplicates with a comment that tells the reporter where the real fix lives.
The hard part is not the closing - it's being sure two reports are actually the same bug before you act on someone else's issue. Most of this skill is about earning that confidence.
Each report has an auto-generated <details> block. The fields that matter:
Version and ReleaseID (the git SHA the user was
running). These drive the timeline check; do not skip them.Model, e.g. <|"Service" -> "OpenAI", "Name" -> Automatic|>.
Tells you which service/model triggered it."Evaluation" - the failing call, e.g.
Wolfram`Chatbook`Common`resolveFullModelSpec[<|"Service" -> "OpenAI", "Name" -> Automatic|>].
The short function name (resolveFullModelSpec) is the primary key."Expression" - the value that broke a Confirm* check, e.g.
Missing["NoModelList"]. (Unhandled-definition failures don't have this
field; the bad value is a call argument instead - see the script's fallback.)"Pattern" - what the value failed to match, e.g. _List | Missing["NotConnected"]."Information" - Tag@@path:line,col. Useful for the file; ignore the
line number - it drifts between versions for the same bug.resolveAutoSettings0 -> EvaluateChatInput.Same failing function + same confirmed expression (and pattern, when present). That's it. Everything else is allowed to vary:
Information - same bug, different version.The trap to avoid: the same expression surfacing in a different function is a
sibling bug, not a duplicate. For example Missing["NoModelList"] thrown
inside resolveFullModelSpec (chat evaluation) is a different bug from
Missing["NoModelList"] passed into makeServiceModelMenu (the model submenu UI),
even though both mention NoModelList. They get fixed by different PRs. Keyword
co-occurrence is a candidate filter, never a conclusion.
If the user named a reference issue, read it (gh issue view <N>) and pull the
failing function + expression + pattern from its Failure Data. If they instead
handed you a set of reports or a fix, derive the signature from the cluster or
from the code the fix touches.
Search the distinctive symbols from the signature - typically the head of the
expression (NoModelList) and the failing function (resolveFullModelSpec):
gh issue list --state all --search "NoModelList" --json number,title,state
gh issue list --state all --search "resolveFullModelSpec" --json number,title,stateTwo rules that matter:
--state all. You want closed siblings too: the canonical issue may
already be closed, and you must not re-close or miss it.NoModelList, not Missing["NoModelList"].Strong candidates appear in every term's results (intersection). The helper script does this intersection for you.
Do not trust keyword co-occurrence. Open each candidate's Failure Data and verify the failing function and confirmed expression actually match. The helper script extracts and groups these for you:
# Intersect the searches and print every candidate grouped by signature:
python .claude/skills/triage-failure-reports/scripts/extract_signatures.py \
--search NoModelList --search resolveFullModelSpec
# Or inspect a hand-picked set:
python .claude/skills/triage-failure-reports/scripts/extract_signatures.py 1550 1545 547Run it from the repo working directory so gh resolves the right repository. It
prints, per signature group, every issue with its state, version, service,
created date, and ReleaseID - exactly the columns you need for the next two steps.
Read scripts/extract_signatures.py if you need to adjust parsing for a report
format it doesn't recognize.
Confirm the groups make sense: the cluster you care about shares one function + expression; anything in a different function is a sibling to set aside.
Every cluster needs a single thing it is "resolved by". Two cases:
gh pr list --search, or the PR that last touched the failing
function). Verify it - don't take it on faith. A #NNNN can be an issue or a
PR (they share one number space), so confirm with gh pr view <N>, then check
the diff actually addresses this signature:gh pr view 906 --json number,title,state,mergedAt,mergeCommit
gh pr diff 906 | grep -iE 'makeServiceModelMenu|NoModelList'You want to see the diff add or change handling for the failing function and the
expression (e.g. a new makeServiceModelMenu[..., Missing["NoModelList"]]
definition). If the diff doesn't touch the signature's code path, it is not the fix.
This is the step that prevents wrong closes. A report can be filed after a fix merged and still be the old bug, because the user was on a stale paclet. So compare the report's Version/ReleaseID (from Debug Data) against the fix, not the issue's creation date:
For an open canonical issue (not a merged PR), there's no version gate; you're just folding duplicates into the one that stays open.
Print the grouped findings first - what will be closed, under which canonical issue
or PR, and why - so each gh write you then make is an informed action. (Closing
and commenting are irreversible and land on other people's issues; the per-write
approval is the safety gate, and your verification in steps 3-5 is what makes that
approval meaningful.)
Comment, then close. Lead the comment with the GitHub-recognized phrasing so the link is obvious, and pick the close reason that matches the situation:
| Situation | Comment leads with | Close reason |
|---|---|---|
| Duplicate of another issue | Duplicate of #<canonical>. | --reason "not planned" |
| Fixed by a merged PR | Fixed by #<pr>. | --reason completed |
gh has no native "duplicate" reason; not planned is the honest fit because the
work is tracked elsewhere. A real merged fix is completed.
Quoting matters. WL signatures contain backticks, brackets, and quotes that a
shell will mangle (backticks trigger command substitution). Write the comment to a
file and use --body-file:
# comment.md -> "Duplicate of #1550 - same `resolveFullModelSpec` failure with
# `Missing[\"NoModelList\"]` ... Fixed by #1558. Closing as a duplicate."
gh issue comment 1545 --body-file comment.md
gh issue close 1545 --reason "not planned"Reuse one comment file across a cluster. Use the scratchpad for fetched bodies and comment files. Leave already-closed issues alone (just note them). Leave sibling clusters open unless they have their own resolver.
The case this skill was built from:
resolveFullModelSpec[<|... "Name" -> Automatic|>] fails a
ConfirmMatch with Missing["NoModelList"] against _List | Missing["NotConnected"].NoModelList x resolveFullModelSpec and grouping yielded 8 issues
with that exact signature (1086, 1137, 1303, 1468, 1514, 1530, 1545, 1550) across
OpenAI/Anthropic/DeepSeek/GoogleGemini/LocalEvaluator - all duplicates, fixed by
PR #1558. Closed with Duplicate of #1550 / not planned.Missing["NoModelList"] but in
makeServiceModelMenu - a sibling, not a duplicate. Verified PR #906
added the makeServiceModelMenu[..., Missing["NoModelList"]] overload; their
versions (1.4.1, 1.4.6, 1.5.2) all predate it, so closed with Fixed by #906 /
completed. #969 was filed after #906 merged but on old v1.4.6 - the version
check, not the date, is what confirmed it.#NNNN is.Information line numbers drift across versions - never match on them.© WolframResearch, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .claude/skills/triage-failure-reports of WolframResearch/Chatbook.
Open the folder on GitHubat commit a601484
Triage Failure Reports next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Triage Failure Reports this skillWolframResearch/Chatbook | 124 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Community Triageroryeckel/wyoming_openai | 219 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Weavebench Cua ReproduceAMAP-ML/LongHorizon-Harness | 1.7k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Evidence-Driven Testingmichaelshimeles/skills | 1.3k | 1 repos | ~3.9k | Automated safety check: Pass | None | |
| Create GitHub IssueNVIDIA/OpenShell | 16k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Triage IssuesClickHouse/clickhouse-java | 1.6k | — | ~904 | Automated safety check: Pass | Apache-2.0 |
roryeckel/wyoming_openai
GitHub issues, pull requests, bug reports, scope questions, and support threads.
AMAP-ML/LongHorizon-Harness
Reproduce CUA-Harness experiments on WeaveBench from a GitHub checkout.
michaelshimeles/skills
Records an annotated screen recording of the agent testing an app hands-on, then posts the video and a results summary to the PR and tracker issue.
NVIDIA/OpenShell
Create GitHub issues using the gh CLI. An agent skill from NVIDIA/OpenShell.
ClickHouse/clickhouse-java
Analyzes a single GitHub issue at a time. An agent skill from ClickHouse/clickhouse-java.
Gentleman-Programming/gentle-shell
Create and triage GitHub issues from repository evidence. An agent skill from Gentleman-Programming/gentle-shell.
WolframResearch/Chatbook
Drive a real Wolfram front end (WolframNB) to test Chatbook's actual UI: launch a fresh front end on a private Xvfb display (optionally with the development Chatbook loaded) or attach to one that is…
WolframResearch/Chatbook
Verifies that Chatbook's agent skill support is working. An agent skill from WolframResearch/Chatbook.
Works with
Categories
Triage Chatbook's auto-generated bug-report issues on GitHub by grouping them on their Failure Data signature (the failing Wolfram Language function plus the confirmed expression/pattern), finding…. Triage Failure Reports is an agent skill from WolframResearch/Chatbook. Triage Chatbook's auto-generated bug-report issues on GitHub by grouping them on their Failure Data signature (the failing Wolfram Language function plus the confirmed expression/pattern), finding the canonical issue or the PR that resolves each cluster, and closing the rest with an explanatory comment.
Triage Failure Reports fits situations like: wants to dedupe; clean up GitHub issues - for example find duplicates of 1550; are any of these crash reports the same bug?; close the issues already fixed by PR 906.
Run `npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a claude-code`. Or copy the skill folder (.claude/skills/triage-failure-reports in WolframResearch/Chatbook) into .claude/skills/triage-failure-reports in your project. Claude Code loads it when a task matches its description.
Run `npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a codex`. Or copy the skill folder (.claude/skills/triage-failure-reports in WolframResearch/Chatbook) into .agents/skills/triage-failure-reports in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add WolframResearch/Chatbook --skill triage-failure-reports -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage-failure-reports, .gemini/skills/triage-failure-reports, .github/skills/triage-failure-reports and .opencode/skills/triage-failure-reports in your project.
Going by SKILL.md and its folder, Triage Failure Reports needs Python for the scripts in its folder and the command-line tools its instructions call (gh and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Triage Failure Reports is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Triage Failure Reports: Community Triage (roryeckel/wyoming_openai, 219 stars), Weavebench Cua Reproduce (AMAP-ML/LongHorizon-Harness, 1.7k stars), Evidence-Driven Testing (michaelshimeles/skills, 1.3k stars) and Create GitHub Issue (NVIDIA/OpenShell, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
WolframResearch (a GitHub organization) maintains it in WolframResearch/Chatbook, which has 124 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 9, 2026.
Source: WolframResearch/Chatbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.