Créer une Issue GitHub
Utilisez cette compétence quand l'utilisateur demande de créer une issue. Vous devez respecter le format de modèle d'issue du repository.
Workflow
Étape 1 : Déterminer le type de modèle
Analysez la demande de l'utilisateur pour déterminer le type d'issue :
- Si l'utilisateur décrit un problème, une erreur, un crash ou quelque chose qui ne fonctionne pas -> Bug Report
- Si l'utilisateur demande une nouvelle fonctionnalité, une amélioration ou un support supplémentaire -> Feature Request
- Si l'utilisateur pose une question ou a besoin d'aide -> Questions & Discussion
- Sinon -> Others
En cas de doute, demandez à l'utilisateur quel modèle utiliser. Ne passez pas par défaut à « Others » de votre propre initiative.
Étape 2 : Lire le modèle sélectionné
- Lisez le fichier de modèle correspondant depuis le répertoire
.github/ISSUE_TEMPLATE/. - Identifiez les champs obligatoires (
validations.required: true), le préfixe de titre (title) et les labels (labels, s'il y en a).
Étape 3 : Collecter les informations
En fonction du modèle sélectionné, demandez à l'utilisateur uniquement les informations requises. Respectez les champs obligatoires du modèle et les contraintes d'options (par exemple, les choix de Platform et Priority).
Étape 4 : Construire et prévisualiser le contenu de l'issue
Créez un fichier temporaire et écrivez le contenu de l'issue :
- Utilisez
issue_body_file="$(mktemp /tmp/gh-issue-body-XXXXXX).md" - Utilisez exactement le préfixe de titre du modèle sélectionné.
- Remplissez le contenu en suivant la structure et l'ordre des sections du modèle.
- Appliquez les labels exactement comme définis par le modèle.
- Conservez tous les labels s'il y en a plusieurs.
- Si le modèle n'a pas de labels, n'ajoutez pas de labels personnalisés.
Prévisualisez le contenu du fichier temporaire. Affichez le chemin du fichier (par ex. /tmp/gh-issue-body-XXXXXX.md) et demandez une confirmation avant de créer. Ignorez cette étape si l'utilisateur indique explicitement qu'aucune prévisualisation/confirmation n'est nécessaire (par exemple, pour les workflows d'automatisation).
Étape 5 : Créer l'issue
Utilisez la commande gh issue create pour créer l'issue.
Utilisez un fichier temporaire unique pour le body :
issue_body_file="$(mktemp /tmp/gh-issue-body-XXXXXX).md"
cat > "$issue_body_file" <<'EOF'
...contenu de l'issue construit à partir du modèle sélectionné...
EOF
Créez l'issue en utilisant les valeurs du modèle sélectionné :
gh issue create --title "<title_avec_préfixe_du_modèle>" --body-file "$issue_body_file"
Si le modèle sélectionné inclut des labels, ajoutez un --label par label :
gh issue create --title "<title_avec_préfixe_du_modèle>" --body-file "$issue_body_file" --label "<label_1_du_modèle>" --label "<label_2_du_modèle>"
Si le modèle n'a pas de labels, ne passez pas --label.
Vous pouvez utiliser --template comme point de départ (utilisez exactement le nom du modèle du repository) :
gh issue create --template "<nom_du_modèle>"
Utilisez le flag --web pour ouvrir la page de création dans le navigateur quand un formatage complexe est nécessaire :
gh issue create --web
Nettoyez le fichier temporaire après création :
rm -f "$issue_body_file"
Notes
- Vous devez lire les fichiers de modèle sous
.github/ISSUE_TEMPLATE/pour vous assurer que vous suivez le format correct. - Traitez les fichiers de modèle comme la seule source de vérité. Ne codez pas en dur les préfixes de titre ou les labels dans cette compétence.
- Le titre doit être clair et concis, évitez les termes vagues comme « une suggestion » ou « bloqué ».
- Fournissez autant de détails que possible pour aider les développeurs à comprendre et à résoudre l'issue.
- Si l'utilisateur ne spécifie pas de type de modèle, demandez-lui d'en choisir un d'abord.