Pre-Release PR Triage
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
Audits open GitHub issues, categorizes them, flags duplicates and linked PRs in three phases, with optional deep analysis and comments posted only after validation.
SKILL.md written in French; this summary is our English description.
$ npx skills add rtk-ai/rtk --skill issue-triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rtk-ai/rtk issue-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/rtk-ai/rtk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/issue-triage .claude/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .claude/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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/rtk-ai/rtk/tree/develop/.claude/skills/issue-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 rtk-ai/rtk --skill issue-triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rtk-ai/rtk issue-triage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rtk-ai/rtk.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/issue-triage .agents/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .agents/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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 rtk-ai/rtk --skill issue-triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rtk-ai/rtk issue-triage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rtk-ai/rtk.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/issue-triage .cursor/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .cursor/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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/rtk-ai/rtk.git --path .claude/skills/issue-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 rtk-ai/rtk --skill issue-triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rtk-ai/rtk issue-triage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rtk-ai/rtk.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/issue-triage .gemini/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .gemini/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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 rtk-ai/rtk issue-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 rtk-ai/rtk --skill issue-triage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rtk-ai/rtk.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/issue-triage .github/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .github/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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 rtk-ai/rtk --skill issue-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 rtk-ai/rtk issue-triage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rtk-ai/rtk.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/issue-triage .opencode/skills/issue-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 "issue-triage" agent skill from https://github.com/rtk-ai/rtk/tree/develop/.claude/skills/issue-triage into .opencode/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-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.
issue-triageAudits open GitHub issues, categorizes them, flags duplicates and linked PRs in three phases, with optional deep analysis and comments posted only after validation.
Work runs in three phases: an automatic audit, an opt-in deep analysis, and comments that need explicit validation before they are posted. Phase one gathers repository data with the gh CLI and analyzes each issue along six dimensions, including sorting into bug, feature, enhancement or question, cross-referencing open PRs that say fixes or closes, and spotting duplicates by title similarity above 60%. Issues linked to a merged PR are recommended for closure.
Arguments set the scope: all for a deep analysis of everything, issue numbers to focus on specific ones, and en or fr for the output language, with French as the default when no argument is given. GitHub comments are always written in English. The skill checks that it is inside a git work tree with an authenticated gh, falls back to recent merged PR authors when collaborators cannot be listed, and ships an issue-comment template. It is meant to run when more than 10 issues are open without triage or when an issue has been stale for more than 30 days.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8533612. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, 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.
RTK Issue Triage loads about 3k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 821 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, GrepAutomated 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 rtk-ai/rtk at commit 8533612, republished under its Apache-2.0 licence (© rtk-ai). 821 words, ~2,962 tokens.
.claude/skills/issue-triage/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.| Skill | Usage | Output |
|---|---|---|
/issue-triage | Trier, analyser, commenter les issues | Tableaux d'action + deep analysis + commentaires postés |
/repo-recap | Récap général pour partager avec l'équipe | Résumé Markdown (PRs + issues + releases) |
Déclencheurs :
/issue-triage ou /issue-triage all ou /issue-triage 42 57en ou english → tableaux et résumé en anglaisfr, french, ou pas d'argument → français (défaut)Workflow en 3 phases : audit automatique → deep analysis opt-in → commentaires avec validation obligatoire.
git rev-parse --is-inside-work-tree
gh auth statusSi l'un échoue, stop et expliquer ce qui manque.
# Identité du repo
gh repo view --json nameWithOwner -q .nameWithOwner
# Issues ouvertes avec métadonnées complètes
gh issue list --state open --limit 100 \
--json number,title,author,createdAt,updatedAt,labels,assignees,body,comments
# PRs ouvertes (pour cross-référence)
gh pr list --state open --limit 50 --json number,title,body
# Issues fermées récemment (pour détection doublons)
gh issue list --state closed --limit 20 \
--json number,title,labels,closedAt
# Collaborateurs (pour protéger les issues des mainteneurs)
gh api "repos/{owner}/{repo}/collaborators" --jq '.[].login'Fallback collaborateurs : si gh api .../collaborators échoue (403/404) :
gh pr list --state merged --limit 10 --json author --jq '.[].author.login' | sort -uSi toujours ambigu, demander à l'utilisateur via AskUserQuestion.
Note : author est un objet {login: "..."} — toujours extraire .author.login.
1. Catégorisation (labels existants > inférence titre/body) :
crash, error, fail, broken, regression, wrong, unexpectedadd, implement, support, new, feat:improve, optimize, better, enhance, refactorhow, why, help, unclear, docs, documentation2. Cross-ref PRs :
body de chaque PR ouverte pour fixes #N, closes #N, resolves #N (case-insensitive, regex)issue_number -> [PR numbers]3. Détection doublons :
bug:, feat:, [bug], [feature], etc.)4. Classification risque :
CVE, vulnerability, injection, auth bypass, security, exploit, unsafe, credentials, leak, RCE, XSSbreaking change, migration, deprecation, remove API, breaking, incompatible5. Staleness :
30j sans activité (updatedAt) → Stale
90j sans activité → Very Stale
6. Recommandations d'action :
Accept & Prioritize : issue claire, reproducible, dans scopeLabel needed : issue sans labelComment needed : info manquante, body insuffisantLinked to PR : une PR ouverte référence cette issueDuplicate candidate : candidat doublon identifié (préciser avec #N)Close candidate : stale + aucune activité récente, ou hors scope (jamais si auteur est collaborateur)PR merged → close : PR liée est mergée, issue encore ouverte## Issues ouvertes ({count})
### Critiques (risque rouge)
| # | Titre | Auteur | Âge | Labels | Action |
| - | ----- | ------ | --- | ------ | ------ |
### Liées à une PR
| # | Titre | Auteur | PR(s) liée(s) | Status PR | Action |
| - | ----- | ------ | ------------- | --------- | ------ |
### Actives
| # | Titre | Auteur | Catégorie | Âge | Labels | Action |
| - | ----- | ------ | --------- | --- | ------ | ------ |
### Doublons candidats
| # | Titre | Doublon de | Similarité | Action |
| - | ----- | ---------- | ---------- | ------ |
### Stale
| # | Titre | Auteur | Dernière activité | Action |
| - | ----- | ------ | ----------------- | ------ |
### Résumé
- Total : {N} issues ouvertes
- Critiques : {N} (risque sécurité ou breaking)
- Liées à PR : {N}
- Doublons candidats : {N}
- Stale (>30j) : {N} | Very Stale (>90j) : {N}
- Sans labels : {N}
- Quick wins (à fermer ou labeler rapidement) : {liste}0 issues → afficher Aucune issue ouverte. et terminer.
Note : Âge = jours depuis createdAt, format {N}j. Si >30j, afficher en gras.
Après affichage du tableau de triage, copier dans le presse-papier :
# Cross-platform clipboard
clip() {
if command -v pbcopy &>/dev/null; then pbcopy
elif command -v xclip &>/dev/null; then xclip -selection clipboard
elif command -v wl-copy &>/dev/null; then wl-copy
else cat
fi
}
clip <<'EOF'
{tableau de triage complet}
EOFConfirmer : Tableau copié dans le presse-papier. (FR) / Triage table copied to clipboard. (EN)
Si argument passé :
"all" → toutes les issues ouvertes"42 57") → uniquement ces issuesAskUserQuestionSi pas d'argument, afficher :
question: "Quelles issues voulez-vous analyser en profondeur ?"
header: "Deep Analysis"
multiSelect: true
options:
- label: "Toutes ({N} issues)"
description: "Analyse approfondie de toutes les issues avec agents en parallèle"
- label: "Critiques uniquement"
description: "Focus sur les {M} issues à risque rouge/jaune"
- label: "Doublons candidats"
description: "Confirmer ou écarter les {K} doublons détectés"
- label: "Stale uniquement"
description: "Décision close/keep sur les {J} issues stale"
- label: "Passer"
description: "Terminer ici — juste l'audit"Si "Passer" → fin du workflow.
Pour chaque issue sélectionnée, lancer un agent via Task tool en parallèle :
subagent_type: general-purpose
model: sonnet
prompt: |
Analyze GitHub issue #{num}: "{title}" by @{author}
**Metadata**: Created {createdAt}, last updated {updatedAt}, labels: {labels}
**Body**:
{body}
**Existing comments** ({comments_count} total, showing last 5):
{last_5_comments}
**Context**:
- Linked PRs: {linked_prs or "none"}
- Duplicate candidate of: {duplicate_of or "none"}
- Risk classification: {risk_color}
Analyze this issue and return a structured report:
### Scope Assessment
What is this issue actually asking for? Is it clearly defined?
### Missing Information
What's needed to act on this? (reproduction steps, version, environment, etc.)
### Risk & Impact
Security risk? Breaking change? Who's affected?
### Effort Estimate
XS (<1h) / S (1-4h) / M (1-2d) / L (3-5d) / XL (>1 week)
### Priority
P0 (critical, act now) / P1 (high, this sprint) / P2 (medium, backlog) / P3 (low, someday)
### Recommended Action
One of: Accept & Prioritize, Request More Info, Mark Duplicate (#N), Close (Stale), Close (Out of Scope), Link to Existing PR
### Draft Comment
Draft a GitHub comment in English using the appropriate template from templates/issue-comment.md.
Be specific, helpful, and constructive.Si issue a >50 commentaires, résumer les 5 derniers uniquement.
Agréger tous les rapports. Afficher un résumé après toutes les analyses.
gh issue comment {num} --body-file -gh issue edit {num} --add-label "{label}" (skip si label déjà présent)gh issue close {num} --reason "not planned" (jamais sans validation)Pour chaque issue analysée, générer les actions (commentaire + labels + fermeture si applicable) en utilisant templates/issue-comment.md.
Règles :
gh issue commentAfficher TOUS les drafts au format :
---
### Draft — Issue #{num}: {title}
**Actions proposées** : {Commentaire | Label: "bug" | Fermeture}
**Commentaire** :
{commentaire complet}
---Puis demander validation via AskUserQuestion :
question: "Ces actions sont prêtes. Lesquelles voulez-vous exécuter ?"
header: "Exécuter"
multiSelect: true
options:
- label: "Toutes ({N} actions)"
description: "Commenter + labeler + fermer selon les drafts"
- label: "Issue #{x} — {title_truncated}"
description: "Exécuter uniquement les actions pour cette issue"
- label: "Aucune"
description: "Annuler — ne rien faire"(Générer une option par issue + "Toutes" + "Aucune")
Pour chaque action validée, exécuter dans l'ordre : commenter → labeler → fermer.
# Commenter
gh issue comment {num} --body-file - <<'COMMENT_EOF'
{commentaire}
COMMENT_EOF
# Labeler (si applicable)
gh issue edit {num} --add-label "{label}"
# Fermer (si applicable)
gh issue close {num} --reason "not planned"Confirmer chaque action : Commentaire posté sur issue #{num}: {title}
Si "Aucune" → Aucune action exécutée. Workflow terminé.
| Situation | Comportement |
|---|---|
| 0 issues ouvertes | Aucune issue ouverte. + terminer |
| Issue sans body | Catégoriser par titre, recommander Comment needed |
| >50 commentaires | Résumer les 5 derniers uniquement |
| Faux positif doublon | Phase 2 confirme/écarte — ne pas agir sur suspicion seule |
| Labels déjà présents | Ne pas re-labeler, signaler "label déjà appliqué" |
| Issue d'un collaborateur | Jamais close candidate automatique |
| Rate limit GitHub API | Réduire --limit, notifier l'utilisateur |
| PR mergée liée à issue ouverte | Recommander fermeture de l'issue |
| Issue sans activité >90j | Very Stale — proposer fermeture avec message bienveillant |
| Duplicate confirmed in Phase 2 | Poster commentaire + fermer en faveur de l'issue originale |
gh repo view, jamais hardcodergh CLI (pas curl GitHub API) sauf pour la liste des collaborateursupdatedAt peut être null sur certaines issues → traiter comme createdAtgh issue comment© rtk-ai, Apache-2.0. 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 in .claude/skills/issue-triage of rtk-ai/rtk.
Open the folder on GitHubat commit 8533612
RTK Issue 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 |
|---|---|---|---|---|---|---|
| RTK Issue Triage this skillrtk-ai/rtk | 83k | — | ~3k | Automated safety check: Notes | Apache-2.0 | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT | |
| GitHub Triagetrailofbits/skills | 7.4k | — | ~5.8k | Automated safety check: Notes | CC-BY-SA-4.0 | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Mole Release Notes Publishertw93/Mole | 70k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| WinAppSDK Triage Meeting Prepmicrosoft/WindowsAppSDK | 4.7k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 |
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
trailofbits/skills
Triages open GitHub issues and pull requests with the gh CLI, optionally merging ready PRs, closing resolved issues with evidence and assigning local priority and size estimates.
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
tw93/Mole
Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.
microsoft/WindowsAppSDK
Prepares the triage meeting summary for WinAppSDK Needs-Triage issues, with research-backed area suggestions, draft replies and a diff since the last triage.
ansible/ansible
Creates backports of a merged Ansible devel pull request onto the right stable branches by cherry-picking its merge commit onto new backport branches.
rtk-ai/rtk
Enforces red-green-refactor for Rust work, with idiomatic test patterns, a naming convention and a pre-commit gate of cargo fmt, clippy and test.
rtk-ai/rtk
Describes seven Rust design patterns for the RTK CLI filter modules, with when to use each, RTK examples, and notes on when a pattern is overkill.
rtk-ai/rtk
Enforces red-green-refactor for new RTK output filters in Rust, using real captured fixtures, snapshot tests with insta and token-savings assertions.
rtk-ai/rtk
Reviews RTK's Rust code for over-engineering and verbose patterns, applying idioms like iterator chains and early returns while protecting a specific list of constraints from being simplified away.
rtk-ai/rtk
Audits a repository's open pull requests, deep-reviews chosen ones and drafts review comments that are only posted after you approve them.
rtk-ai/rtk
Runs issue triage and PR triage in parallel, then cross-analyzes the results to flag duplicate coverage, security gaps, P0 issues with no PR, and PR conflicts.
Categories
Audits open GitHub issues, categorizes them, flags duplicates and linked PRs in three phases, with optional deep analysis and comments posted only after validation. Work runs in three phases: an automatic audit, an opt-in deep analysis, and comments that need explicit validation before they are posted. Phase one gathers repository data with the gh CLI and analyzes each issue along six dimensions, including sorting into bug, feature, enhancement or question, cross-referencing open PRs that say fixes or closes, and spotting duplicates by title similarity above 60%.
RTK Issue Triage fits situations like: auditing the open issue backlog of a repository; detecting duplicate issues and issues already fixed by merged PRs; posting triage comments after reviewing the proposed ones; focusing triage on a few specific issue numbers.
Run `npx skills add rtk-ai/rtk --skill issue-triage -a claude-code`. Or copy the skill folder (.claude/skills/issue-triage in rtk-ai/rtk) into .claude/skills/issue-triage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rtk-ai/rtk --skill issue-triage -a codex`. Or copy the skill folder (.claude/skills/issue-triage in rtk-ai/rtk) into .agents/skills/issue-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 rtk-ai/rtk --skill issue-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/issue-triage, .gemini/skills/issue-triage, .github/skills/issue-triage and .opencode/skills/issue-triage in your project.
Going by SKILL.md and its folder, RTK Issue Triage needs the command-line tools its instructions call (gh and git). Our summary lists: A git repository checkout; GitHub CLI (gh), authenticated. Its frontmatter pre-approves these tools: Bash, Read, Grep.
SKILL.md contains no URLs. Its commands use gh and git, 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
RTK Issue Triage is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k 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 RTK Issue Triage: Pre-Release PR Triage (jamiepine/voicebox, 57k stars), GitHub Triage (trailofbits/skills, 7.4k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Mole Release Notes Publisher (tw93/Mole, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rtk-ai (a GitHub organization) maintains it in rtk-ai/rtk, which has 82,651 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.
Source: rtk-ai/rtk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.