Issue Triage Loop
cobusgreyling/loop-engineering
Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.
Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state.
$ npx skills add bholmesdev/hubble.md --skill triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bholmesdev/hubble.md triage --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/bholmesdev/hubble.md.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/triage .claude/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .claude/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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/bholmesdev/hubble.md/tree/main/.agents/skills/triageType 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 bholmesdev/hubble.md --skill triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bholmesdev/hubble.md triage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bholmesdev/hubble.md.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/triage .agents/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .agents/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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 bholmesdev/hubble.md --skill triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bholmesdev/hubble.md triage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bholmesdev/hubble.md.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/triage .cursor/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .cursor/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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/bholmesdev/hubble.md.git --path .agents/skills/triage--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 bholmesdev/hubble.md --skill triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bholmesdev/hubble.md triage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bholmesdev/hubble.md.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/triage .gemini/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .gemini/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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 bholmesdev/hubble.md triageInstalls 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 bholmesdev/hubble.md --skill triage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bholmesdev/hubble.md.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/triage .github/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .github/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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 bholmesdev/hubble.md --skill triage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bholmesdev/hubble.md triage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bholmesdev/hubble.md.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/triage .opencode/skills/triage && 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" agent skill from https://github.com/bholmesdev/hubble.md/tree/main/.agents/skills/triage into .opencode/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", 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.
triageTriage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state.
Triage is an agent skill from bholmesdev/hubble.md. Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state. Use whenever the user asks to triage, classify, assess, prioritize, or label an issue for implementation readiness, especially when an issue URL, key, or number is supplied in the prompt.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Issue triage. It works with GitHub and Jira. The repository describes itself as: The best notepad for you and your agents. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 571a523. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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 loads about 1.5k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 762 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); files beside SKILL.md are not scanned.
The full file from bholmesdev/hubble.md at commit 571a523, republished under its MIT licence (© bholmesdev). 762 words, ~1,492 tokens.
.claude/skills/triage/SKILL.md (or your agent's skills folder).Assess the issue passed in the user's prompt and decide exactly one triage state:
Ready to implementDuplicateNeeds discussionThe goal is to route work honestly, not to make every issue appear actionable. Base the decision on evidence from the issue tracker, current checkout, and related issues.
This is a read-only analysis: inspect the issue and codebase but do not mutate the tracker. Return the structured decision described in step 5; the caller applies the label and comment.
Extract the issue URL, key, or number from the prompt. Determine whether it belongs to GitHub Issues, Jira, Linear, or another tracker.
If the prompt does not identify one issue unambiguously, ask the user for the issue rather than guessing.
Read the issue using the best available integration, in this order:
ghFetch:
Do not classify solely from the title. Do not expose credentials or secrets while fetching tracker data.
Confirm the current checkout is the relevant repository. Search the codebase for the affected feature, behavior, terminology, and likely implementation area.
Assess:
Prefer targeted searches and reads. This is triage, not implementation: do not edit product code.
Use the following rubric. When evidence sits between states, choose Needs discussion.
Choose when:
Small bugs with clear reproduction steps and straightforward improvements usually belong here.
Choose when another issue already tracks the same underlying behavior and scope. Require concrete tracker evidence; similar symptoms or overlapping implementation areas alone are not enough.
DuplicateChoose when neither implementation nor duplicate status is clear:
Pick the tracker label that matches the chosen state, preferring an existing label with the same meaning and the tracker's established naming and casing (for example ready-to-implement, needs-discussion, or duplicate).
Return a single raw JSON object as your final response — no prose and no markdown code fences:
{
"state": "Ready to implement | Duplicate | Needs discussion",
"label": "exact tracker label matching the chosen state",
"duplicate_of": "canonical issue URL or tracker key when state is Duplicate; otherwise null",
"comment": "markdown body for the issue"
}Write comment as reporter-facing markdown: a short lead sentence with the decision, then the evidence-based rationale, using a brief bullet list where it aids readability. For Needs discussion, end with the concrete questions and open decisions from step 4. For Duplicate, lead with Duplicate of <duplicate_of>, using the exact duplicate_of value from the result, and briefly state why it covers this report. Because comment is a JSON string, encode every line break as \n (a literal newline would make the JSON invalid).
© bholmesdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/triage of bholmesdev/hubble.md.
Open the folder on GitHubat commit 571a523
Triage 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 this skillbholmesdev/hubble.md | 1.5k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Issue Triage Loopcobusgreyling/loop-engineering | 11k | — | ~522 | Automated safety check: Pass | MIT | |
| Specwarpdotdev-demos/cloud-factory-demo | 320 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Triage Findingvlinx-io/VelaTerm | 259 | — | ~6.9k | Automated safety check: Pass | MIT | |
| Triagewarpdotdev-demos/cloud-factory-demo | 320 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Mfs Findzilliztech/mfs | 150 | — | ~4k | Automated safety check: Pass | Apache-2.0 |
cobusgreyling/loop-engineering
Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.
warpdotdev-demos/cloud-factory-demo
Coordinate spec-driven development for a GitHub, Jira, Linear, or other issue-tracker issue marked ready-to-spec by using write-product-spec and write-tech-spec, creating PRODUCT.md and TECH.md…
vlinx-io/VelaTerm
A skill your agent uses when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub…
warpdotdev-demos/cloud-factory-demo
Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related open issues, then return a structured decision with exactly one…
zilliztech/mfs
Search, grep, browse, and read across registered MFS data sources via the mfs CLI — codebases, docs, PDFs, web crawls, databases (postgres/mysql/mongo/snowflake/bigquery), issue trackers…
warpdotdev-demos/cloud-factory-demo
Implement a fix or feature from a GitHub, Jira, Linear, or other issue-tracker issue by fetching issue context, inspecting the current codebase, making code changes, validating them, verifying…
bholmesdev/hubble.md
Add a user-facing entry to CHANGELOG.md for work that just landed.
bholmesdev/hubble.md
Review a pull request or local branch diff for correctness, security, lifecycle, error handling, tests, and meaningful performance risks.
bholmesdev/hubble.md
Use this skill automatically when you feel your code is ready for human review, and whenever writing or reviewing code comments.
bholmesdev/hubble.md
Write a PRODUCT.md spec for a significant Hubble user-facing feature, focused only on user experience and observable behavior.
bholmesdev/hubble.md
Write a TECH.md spec for a significant Hubble feature after researching the monorepo architecture.
bholmesdev/hubble.md
Ask Claude Code to make a taste-driven call on something ambiguous — UI polish, prose phrasing, naming, formatting.
Categories
Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state. md. Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state.
Triage fits situations like: the user asks to triage; label an issue for implementation readiness; especially when an issue URL; number is supplied in the prompt.
Run `npx skills add bholmesdev/hubble.md --skill triage -a claude-code`. Or copy the skill folder (.agents/skills/triage in bholmesdev/hubble.md) into .claude/skills/triage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bholmesdev/hubble.md --skill triage -a codex`. Or copy the skill folder (.agents/skills/triage in bholmesdev/hubble.md) into .agents/skills/triage 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 bholmesdev/hubble.md --skill triage -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, .gemini/skills/triage, .github/skills/triage and .opencode/skills/triage in your project.
SKILL.md names no scripts, command-line tools or credentials: Triage is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6k 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: Issue Triage Loop (cobusgreyling/loop-engineering, 11k stars), Spec (warpdotdev-demos/cloud-factory-demo, 320 stars), Triage Finding (vlinx-io/VelaTerm, 259 stars) and Triage (warpdotdev-demos/cloud-factory-demo, 320 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bholmesdev (a GitHub user) maintains it in bholmesdev/hubble.md, which has 1,483 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 1, 2026.
Source: bholmesdev/hubble.md on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.