From operations
Crée un ticket (Bug, Improvement ou Projet) dans Notion à partir de n'importe quelle source. Utiliser quand l'utilisateur mentionne "créer un ticket", "logger ce bug", "ajouter dans Notion", ou colle un message Slack, un lien Notion, ou une réunion Granola.
How this skill is triggered — by the user, by Claude, or both
Slash command
/operations:create-ticketThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Templates de contenu : `${CLAUDE_SKILL_DIR}/references/templates.md`
Templates de contenu :
${CLAUDE_SKILL_DIR}/references/templates.md
MCPs requis :
Notion:notion-search, Notion:notion-create-pages)Slack:slack_read_thread)Granola:get_meeting_transcript, Granola:query_granola_meetings)Si un MCP requis est absent → arrêter et indiquer lequel configurer.
Variables d'environnement :
Lire depuis .claude/settings.local.json. Pour chaque variable vide → AskUserQuestion en un seul appel, puis écrire les valeurs dans .claude/settings.local.json sous env.
| Variable | Utilisation |
|---|---|
$NOTION_FEATURES_DB_ID | BDD cible pour Fix et Improvement |
$NOTION_PROJECTS_DB_ID | BDD cible pour Projet |
| Type d'input | Action |
|---|---|
| Texte brut | Analyser directement |
| Lien Slack | Extraire channel_id et thread_ts de l'URL → Slack:slack_read_thread(channel_id, thread_ts). Lire le fil complet (parent + réponses). |
| Lien Notion | Notion:notion-fetch(url) — lire pour contexte uniquement, extraire les éléments pertinents |
| Granola | Si lien ou nom de réunion → Granola:get_meeting_transcript ou Granola:query_granola_meetings. Si texte collé directement → analyser tel quel. |
Conversion timestamp Slack : URL
.../p1741234567890123→thread_ts = 1741234567.890123(point après les 10 premiers chiffres).
Si plusieurs liens fournis, les lire tous avant de continuer.
Si le fil contient plusieurs demandes distinctes — les lister avant tout :
J'ai détecté 2 demandes dans ce fil. Je vais créer 2 tickets :
1. [titre A]
2. [titre B]
Dis-moi si tu veux en ignorer une.
Puis traiter chaque demande séquentiellement avec les étapes 2→6.
Pour chaque demande, inférer :
| Champ | Comment l'inférer |
|---|---|
| Titre | Phrase courte et claire résumant le sujet |
| Problème | Description détaillée du bug ou besoin |
| Solution | Si mentionnée ou évidente, sinon laisser vide |
| Type | Voir règle ci-dessous |
Règle de décision :
Fix si dysfonctionnement, Improvement si amélioration/feature) (BDD Features)Annoncer la décision avant toute création :
Titre : [titre inféré]
Type : Projet — raison : [x]
→ Création dans la BDD Projets.
Dis-moi si tu veux changer quelque chose.
Pas de question posée — Claude décide, l'utilisateur corrige si besoin.
Si plusieurs tickets détectés à l'étape 1 — regrouper en un seul appel :
AskUserQuestion: "Priority pour chaque ticket ? (High / Medium / Low)
1. [titre A] ([type A])
2. [titre B] ([type B])"
Si un seul ticket — demande individuelle :
AskUserQuestion: "Priority pour '[titre inféré]' ([type]) ? (High / Medium / Low)"
Chercher dans la BDD cible (Features ou Projets selon le type décidé à l'étape 1) via Notion:notion-search. Faire 1 à 2 recherches avec des formulations différentes.
| Cas | Comportement |
|---|---|
| Doublon évident | Arrêter. Afficher le ticket existant avec son lien. |
| Ticket similaire | Afficher les similaires (max 3) et demander si créer quand même. |
| Aucun résultat | Continuer directement. |
Lire les templates depuis ${CLAUDE_SKILL_DIR}/references/templates.md et appliquer le bon selon le type.
$NOTION_FEATURES_DB_ID{
"parent": { "data_source_id": "$NOTION_FEATURES_DB_ID" },
"pages": [{
"icon": "[/icons/bug_red.svg pour Fix, emoji pertinent pour Improvement]",
"properties": {
"Nom": "[titre]",
"Type": "[Fix ou Improvement]",
"Priority": "[priority choisie]",
"Etat": "Raffinage",
"DoD": "__NO__",
"Feature flag": "__NO__",
"Scope change?": "__NO__",
"Factory": ["Dev"]
},
"content": "[contenu selon template Fix ou Improvement]"
}]
}
$NOTION_PROJECTS_DB_IDInférer Origin depuis le contexte (ex: Slack, Client, Interne, Granola).
{
"parent": { "data_source_id": "$NOTION_PROJECTS_DB_ID" },
"pages": [{
"icon": "[emoji pertinent]",
"properties": {
"Nom": "[titre]",
"Priority": "[priority choisie]",
"Statut": "Raffinage / Découverte",
"Origin": "[inféré du contexte]"
},
"content": "[contenu selon template Projet]"
}]
}
Ne pas inclure les propriétés calculées (Completion, RICE score, etc.) — elles sont auto-calculées.
Afficher :
Extraction du thread_ts Slack.
URL .../p1741234567890123 → thread_ts = 1741234567.890123 (insérer un point après les 10 premiers chiffres). Oublier ce point retourne une erreur silencieuse.
Notion:notion-search retourne des pages archivées.
Vérifier que les résultats ne sont pas archivés avant de signaler un doublon — une page archivée ne compte pas.
Notion:notion-search cherche dans tout le workspace.
Filtrer explicitement par $NOTION_FEATURES_DB_ID ou $NOTION_PROJECTS_DB_ID selon le type pour éviter les faux positifs de doublons.
Ne pas inclure les propriétés calculées dans Notion:notion-create-pages.
Completion, RICE score, etc. sont auto-calculées par Notion — les inclure provoque une erreur 400.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub kikisad/claude-plugin --plugin operations