github-issues

Par github · awesome-copilot

Créer, mettre à jour et gérer des issues GitHub à l'aide des outils MCP. Utilisez cette skill lorsque les utilisateurs souhaitent créer des rapports de bugs, des demandes de fonctionnalités ou des issues de tâches, mettre à jour des issues existantes, ajouter des labels/assignees/milestones, définir des champs d'issue (dates, priorité, champs personnalisés), définir des types d'issue, gérer des workflows d'issues, lier des issues, ajouter des dépendances ou suivre des relations blocked-by/blocking. Se déclenche sur des demandes telles que « créer une issue », « signaler un bug », « demander une fonctionnalité », « mettre à jour l'issue X », « définir la priorité », « définir la date de début », « lier des issues », « ajouter une dépendance », « bloqué par », « bloque », ou toute tâche de gestion d'issues GitHub.

npx skills add https://github.com/github/awesome-copilot --skill github-issues

GitHub Issues

Gérez les issues GitHub en utilisant le serveur MCP @modelcontextprotocol/server-github.

Outils Disponibles

Outils MCP (opérations de lecture)

Outil Objectif
mcp__github__issue_read Lire les détails d'une issue, les sous-issues, les commentaires, les labels (méthodes : get, get_comments, get_sub_issues, get_labels)
mcp__github__list_issues Lister et filtrer les issues du repository par état, labels, date
mcp__github__search_issues Rechercher des issues dans les repos en utilisant la syntaxe de recherche GitHub
mcp__github__projects_list Lister les projets, les champs de projet, les éléments de projet, les mises à jour de statut
mcp__github__projects_get Obtenir les détails d'un projet, d'un champ, d'un élément ou d'une mise à jour de statut
mcp__github__projects_write Ajouter/mettre à jour/supprimer des éléments de projet, créer des mises à jour de statut

CLI / REST API (opérations d'écriture)

Le serveur MCP ne supporte actuellement pas la création, la mise à jour ou le commentaire des issues. Utilisez gh api pour ces opérations.

Opération Commande
Créer une issue gh api repos/{owner}/{repo}/issues -X POST -f title=... -f body=...
Mettre à jour une issue gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f title=... -f state=...
Ajouter un commentaire gh api repos/{owner}/{repo}/issues/{number}/comments -X POST -f body=...
Fermer une issue gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f state=closed
Définir le type d'issue Incluez -f type=Bug dans l'appel de création (API REST uniquement, non supporté par la CLI gh issue create)

Remarque : gh issue create fonctionne pour la création basique d'issues mais ne supporte pas le flag --type. Utilisez gh api lorsque vous devez définir des types d'issues.

Flux de travail

  1. Déterminer l'action : Créer, mettre à jour ou interroger ?
  2. Rassembler le contexte : Obtenir les infos du repo, les labels existants, les milestones si nécessaire
  3. Structurer le contenu : Utiliser le template approprié de references/templates.md
  4. Exécuter : Utiliser les outils MCP pour les lectures, gh api pour les écritures
  5. Confirmer : Rapporter l'URL de l'issue à l'utilisateur

Créer des Issues

Utilisez gh api pour créer des issues. Cela supporte tous les paramètres, incluant les types d'issues.

gh api repos/{owner}/{repo}/issues \
  -X POST \
  -f title="Titre de l'issue" \
  -f body="Corps de l'issue en markdown" \
  -f type="Bug" \
  --jq '{number, html_url}'

Paramètres Optionnels

Ajoutez l'un de ces flags à l'appel gh api :

-f type="Bug"                    # Type d'issue (Bug, Feature, Task, Epic, etc.)
-f labels[]="bug"                # Labels (répéter pour plusieurs)
-f assignees[]="username"        # Assignés (répéter pour plusieurs)
-f milestone=1                   # Numéro de milestone

Les types d'issues sont des métadonnées au niveau de l'organisation. Pour découvrir les types disponibles, utilisez :

gh api graphql -f query='{ organization(login: "ORG") { issueTypes(first: 10) { nodes { name } } } }' --jq '.data.organization.issueTypes.nodes[].name'

Préférez les types d'issues aux labels pour la catégorisation. Lorsque les types d'issues sont disponibles (par ex. Bug, Feature, Task), utilisez le paramètre type au lieu d'appliquer des labels équivalents comme bug ou enhancement. Les types d'issues sont la façon canonique de catégoriser les issues sur GitHub. Utilisez les labels uniquement lorsque l'organisation n'a pas de types d'issues configurés.

Recommandations pour les Titres

  • Soyez spécifique et actionnable
  • Restez en dessous de 72 caractères
  • Lorsque les types d'issues sont définis, n'ajoutez pas de préfixes redondants comme [Bug]
  • Exemples :
    • La connexion échoue avec SSO activé (avec type=Bug)
    • Ajouter le support du mode sombre (avec type=Feature)
    • Ajouter des tests unitaires pour le module d'auth (avec type=Task)

Structure du Corps

Utilisez toujours les templates dans references/templates.md. Choisissez selon le type d'issue :

Demande utilisateur Template
Bug, erreur, cassé, ne fonctionne pas Bug Report
Feature, amélioration, ajouter, nouveau Feature Request
Task, chore, refactor, mettre à jour Task

Mettre à Jour les Issues

Utilisez gh api avec PATCH :

gh api repos/{owner}/{repo}/issues/{number} \
  -X PATCH \
  -f state=closed \
  -f title="Titre mis à jour" \
  --jq '{number, html_url}'

Incluez uniquement les champs que vous souhaitez modifier. Champs disponibles : title, body, state (open/closed), labels, assignees, milestone.

Exemples

Exemple 1 : Rapport de Bug

Utilisateur : "Créer une issue de bug - la page de connexion plante lors de l'utilisation de SSO"

Action :

gh api repos/github/awesome-copilot/issues \
  -X POST \
  -f title="La page de connexion plante lors de l'utilisation de SSO" \
  -f type="Bug" \
  -f body="## Description
La page de connexion plante lorsque les utilisateurs tentent de s'authentifier via SSO.

## Étapes pour reproduire
1. Naviguer vers la page de connexion
2. Cliquer sur 'Se connecter avec SSO'
3. La page plante

## Comportement attendu
L'authentification SSO devrait se terminer et rediriger vers le tableau de bord.

## Comportement réel
La page devient inresponsive et affiche une erreur." \
  --jq '{number, html_url}'

Exemple 2 : Demande de Feature

Utilisateur : "Créer une demande de feature pour le mode sombre avec priorité haute"

Action :

gh api repos/github/awesome-copilot/issues \
  -X POST \
  -f title="Ajouter le support du mode sombre" \
  -f type="Feature" \
  -f labels[]="high-priority" \
  -f body="## Résumé
Ajouter une option de thème sombre pour une meilleure expérience utilisateur et accessibilité.

## Motivation
- Réduit la fatigue oculaire dans les environnements peu éclairés
- Attendu de plus en plus par les utilisateurs

## Solution proposée
Implémenter un bouton de basculement avec détection des préférences système.

## Critères d'acceptation
- [ ] Bouton de basculement dans les paramètres
- [ ] Préférence utilisateur persistante
- [ ] Respecte les préférences système par défaut" \
  --jq '{number, html_url}'

Labels Courants

Utilisez ces labels standard le cas échéant :

Label Utilisation
bug Quelque chose ne fonctionne pas
enhancement Nouvelle feature ou amélioration
documentation Mises à jour de documentation
good first issue Bon pour les nouveaux contributeurs
help wanted Attention supplémentaire requise
question Informations supplémentaires demandées
wontfix Ne sera pas résolu
duplicate Existe déjà
high-priority Issues urgentes

Astuces

  • Confirmez toujours le contexte du repository avant de créer des issues
  • Demandez les informations critiques manquantes plutôt que de deviner
  • Liez les issues associées lorsqu'elles sont connues : Related to #123
  • Pour les mises à jour, récupérez d'abord l'issue actuelle pour préserver les champs inchangés

Capacités Étendues

Les features suivantes nécessitent des APIs REST ou GraphQL au-delà des outils MCP basiques. Chacune est documentée dans son propre fichier de référence pour que l'agent charge uniquement les connaissances dont il a besoin.

Capacité Quand l'utiliser Référence
Recherche avancée Requêtes complexes avec logique booléenne, plages de dates, recherche multi-repo, filtres de champs d'issue (field.name:value) references/search.md
Sous-issues & issues parent Décomposer le travail en tâches hiérarchiques references/sub-issues.md
Dépendances d'issues Suivi des relations blocked-by / blocking references/dependencies.md
Types d'issues (avancé) Opérations GraphQL au-delà de MCP list_issue_types / paramètre type references/issue-types.md
Projects V2 Tableaux de projet, rapports de progression, gestion des champs references/projects.md
Champs d'issue Métadonnées personnalisées : dates, priorité, texte, nombres (preview privé) references/issue-fields.md
Images dans les issues Incorporation d'images dans les corps d'issues et commentaires via CLI references/images.md

Skills similaires