Skip to content
Development
Skill

/issue-triage

Issue triage: audit open issues, categorize, detect duplicates, cross-ref PRs, risk assessment, post comments. Args: "all" for deep analysis of all, issue numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.

From plugin
rtk
86k12 skills6 agents13 commands

Claude Code

$ npx -y skills add rtk-ai/rtk --skill issue-triage --agent claude-code

SKILL.md

issue-triage.SKILL.md
name: issue-triage
description: >
  Issue triage: audit open issues, categorize, detect duplicates, cross-ref PRs, risk assessment, post comments.
  Args: "all" for deep analysis of all, issue numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.
allowed-tools:
  - Bash
  - Read
  - Grep
effort: medium
tags: [triage, issues, github, categorize, duplicates, risk]

Issue Triage

Quand utiliser

| 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** :

  • Manuellement : `/issue-triage` ou `/issue-triage all` ou `/issue-triage 42 57`
  • Proactivement : quand >10 issues ouvertes sans triage, ou issue stale >30j détectée

---

Langue

  • Vérifier l'argument passé au skill
  • Si `en` ou `english` → tableaux et résumé en anglais
  • Si `fr`, `french`, ou pas d'argument → français (défaut)
  • Note : les commentaires GitHub (Phase 3) restent TOUJOURS en anglais (audience internationale)

---

Workflow en 3 phases : audit automatique → deep analysis opt-in → commentaires avec validation obligatoire.

Préconditions

git rev-parse --is-inside-work-tree
gh auth status

Si l'un échoue, stop et expliquer ce qui manque.

---

Phase 1 — Audit (toujours exécutée)

Data Gathering (commandes en parallèle)

# 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 -u

Si toujours ambigu, demander à l'utilisateur via `AskUserQuestion`.

**Note** : `author` est un objet `{login: "..."}` — toujours extraire `.author.login`.

Analyse — 6 dimensions

**1. Catégorisation** (labels existants > inférence titre/body) :

  • **Bug** : mots-clés `crash`, `error`, `fail`, `broken`, `regression`, `wrong`, `unexpected`
  • **Feature** : `add`, `implement`, `support`, `new`, `feat:`
  • **Enhancement** : `improve`, `optimize`, `better`, `enhance`, `refactor`
  • **Question/Support** : `how`, `why`, `help`, `unclear`, `docs`, `documentation`
  • **Duplicate Candidate** : voir dimension 3 ci-dessous

**2. Cross-ref PRs** :

  • Scanner `body` de chaque PR ouverte pour `fixes #N`, `closes #N`, `resolves #N` (case-insensitive, regex)
  • Construire un map : `issue_number -> [PR numbers]`
  • Une issue liée à une PR mergée → recommander fermeture

**3. Détection doublons** :

  • Normaliser les titres : lowercase, strip préfixes (`bug:`, `feat:`, `[bug]`, `[feature]`, etc.)
  • **Jaccard sur mots des titres** : si score > 60% entre deux issues → candidat doublon
  • **Keywords body overlap** > 50% → renforcement du signal
  • Comparer aussi avec issues fermées récentes (20 dernières)
  • Un faux positif peut être confirmé/écarté en Phase 2

**4. Classification risque** :

  • **Rouge** : mots-clés `CVE`, `vulnerability`, `injection`, `auth bypass`, `security`, `exploit`, `unsafe`, `credentials`, `leak`, `RCE`, `XSS`
  • **Jaune** : `breaking change`, `migration`, `deprecation`, `remove API`, `breaking`, `incompatible`
  • **Vert** : tout le reste

**5. Staleness** :

  • >30j sans activité (updatedAt) → **Stale**
  • >90j sans activité → **Very Stale**
  • Calculer depuis la date actuelle

**6. Recommandations d'action** :

  • `Accept & Prioritize` : issue claire, reproducible, dans scope
  • `Label needed` : issue sans label
  • `Comment needed` : info manquante, body insuffisant
  • `Linked to PR` : une PR ouverte référence cette issue
  • `Duplicate 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

Output — 5 tableaux

## 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**.

Copie automatique

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}
EOF

Confirmer : `Tableau copié dans le presse-p

Read more
@rtk-ai
Ships withrtk

CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies

86k12 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
86.0k
Star history of rtk-ai/rtk on GitHub, a chart by star-history.com

Other skills on rtk.

code-simplifier

code-simplifier

Review RTK Rust code for idiomatic simplification. Detects over-engineering, unnecessary allocations, verbose patterns. Applies…

@rtk-ai@rtk-aiInstall Skill
design-patterns

design-patterns

Rust design patterns for RTK. Newtype, Builder, RAII, Trait Objects, State Machine. Applied to CLI filter modules. Use when…

@rtk-ai@rtk-aiInstall Skill
performance

performance

CLI performance optimization - startup time, memory usage, token savings benchmarking

@rtk-ai@rtk-aiInstall Skill
pr-review

pr-review

Batch review des PRs RTK par ordre de complexité croissante (XS → S → M → L). Pour chaque PR : vérifie l'état (conflits, CLA,…

@rtk-ai@rtk-aiInstall Skill
pr-triage

pr-triage

PR triage: audit open PRs, deep review selected ones, draft and post review comments. Args: "all" to review all, PR numbers to…

@rtk-ai@rtk-aiInstall Skill
repo-recap

repo-recap

Generate a comprehensive repo recap (PRs, issues, releases) for sharing with team. Pass "en" or "fr" as argument for language…

@rtk-ai@rtk-aiInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about issue-triage.

Which coding agents can use issue-triage?
issue-triage installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.