meeting-report
Génère automatiquement un compte-rendu de réunion en français à partir d'une transcription Teams (.vtt) et optionnellement d'un rapport de présence (.csv). Propose ensuite optionnellement de créer des issues de suivi GitLab/GitHub à partir du compte-rendu. Agnostique par défaut, avec un mode enrichi auto-détecté pour le projet hexagone-monorepo. À utiliser quand l'utilisateur dépose un ou deux chemins de fichiers Teams dans le prompt et demande la génération d'un compte-rendu.
What this skill does
# Meeting Report Generate a structured French meeting report from a Microsoft Teams `.vtt` transcript, optionally enriched with a Teams `.csv` attendance report. The skill works on **any project**. It auto-detects the **hexagone-monorepo** project and, when detected, applies project-specific rules (sub-domain classification, sub-folder routing, foundation date-only naming). On any other project, it falls back to a generic single-folder output. After the report is written, the skill can optionally propose follow-up GitLab/GitHub issues derived from the report (Step 12). ## Prerequisites Steps 1–11 require no external tooling. **Step 12 (optional issue creation)** uses a Git platform CLI — these are *soft* dependencies: if the CLI is absent or unauthenticated, Step 12 simply skips and the report is unaffected. - **`gh`** (GitHub CLI) — required only to create GitHub issues from the report. Install: https://cli.github.com - **`glab`** (GitLab CLI) — required only to create GitLab issues from the report. Install: https://gitlab.com/gitlab-org/cli ## When to Use This Skill Activate when the user: - Dépose un chemin vers un fichier `.vtt` Teams dans le prompt - Dit « crée un compte-rendu de cette transcription Teams » - Dit « génère le compte-rendu de cette réunion » - Dit « transforme cette transcription en rapport » - Dépose en plus un fichier `.csv` de présence Teams (optionnel) ## Inputs The skill expects **one or two file paths** dropped in the user prompt: - **Required:** `.vtt` file — Teams meeting transcript in WebVTT format - **Optional:** `.csv` file — Teams attendance report Detection: inspect file extensions in the user prompt. If both are present, `.vtt` is the transcript and `.csv` is the attendance report. If only one file is dropped, it must be the `.vtt`. ## Project Mode Detection Before processing, decide whether the current working directory is the **hexagone-monorepo** project. This sets the routing behavior for the rest of the workflow. Run these checks (any one of them is sufficient to enter `hexagone-monorepo` mode): 1. **Folder layout** — `docs/reports/foundation/` AND `docs/reports/interoperability/` both exist 2. **Git remote** — `git remote -v` mentions `hexagone-monorepo` 3. **Package name** — root `package.json` has a `name` containing `hexagone-monorepo` If none match → **generic mode**. The user may also explicitly override: - « mode générique » / « generic mode » → force generic - « mode hexagone » → force hexagone-monorepo (only valid if the layout exists) State the detected mode in one short sentence to the user before producing the report (e.g. « Mode détecté : hexagone-monorepo. » or « Mode détecté : générique. »). ## Workflow ### Step 1: Locate and Read the Files 1. Parse the user prompt for file paths (look for `.vtt` and `.csv` extensions) 2. Verify each file exists using Read 3. If no `.vtt` is found → stop and ask the user to provide one 4. Read the `.vtt` content entirely 5. Read the `.csv` content if provided ### Step 2: Parse the Transcript Teams `.vtt` file structure: ``` WEBVTT NOTE Meeting metadata may appear here (date, title, organizer) 00:00:01.000 --> 00:00:04.000 <v Speaker Name>Speech content</v> 00:00:05.000 --> 00:00:08.000 Anonymous speech without voice tag ``` Extract: 1. **Meeting date** — try in this order: - **(a)** `NOTE` header content containing a date pattern (ISO `YYYY-MM-DD` or French `DD/MM/YYYY`) - **(b)** Filename date pattern (e.g. `20260410_...vtt` → `2026-04-10`) - **(c)** Today's date as fallback 2. **Speakers** — parse `<v Speaker Name>...</v>` voice tags (may be absent) 3. **Content blocks** — each timestamped segment is a speaker turn ### Step 3: Resolve Participants Priority order: 1. **If `.csv` attendance report provided** → parse it and extract the `Name` column. Teams attendance CSVs typically contain columns like `Name`, `First Join`, `Last Leave`, `Duration`, `Role`, `Email`. Use names only for the `## Participants` section. 2. **Else if `<v>` voice tags are present in the `.vtt`** → extract unique speaker names 3. **Else** → **stop and ask the user** to provide the participants list before continuing: > « La transcription est anonyme et aucun fichier de présence n'est fourni. Peux-tu me donner la liste des participants ? » ### Step 4: Classify the Sub-Domain (hexagone-monorepo mode only) **Skip this step in generic mode.** In generic mode, there is no domain classification — the report goes to a single output folder (see Step 10). In **hexagone-monorepo mode**, analyze transcript content for domain signals using the table below (case-insensitive keyword matching): | Folder | Signals (French / technical keywords) | |---|---| | `foundation/` | sprint, rétro, rétrospective, point équipe, stand-up, daily, foundation, équipe foundation | | `core/` | architecture transversale, cross-domain, LDAP, S3A, S3A settings, permissions utilisateur, rôles, authentification | | `interoperability/` | Hexaflux, interopérabilité, interop, HL7, HL7 v2, HL7 v2.5, FHIR, IHE, PAM, ADT, segment, PID, PV1, PV2, NK1, OBX, EVN, MSH, HPK, flux, intégration, message, mapping, broker, Mirth, Rhapsody | | `gap/` | admission, patient, venue, séjour, dossier patient, pré-admission, AMO, AMC, débiteur, couverture sociale, facturation, valorisation, portail patient, ROC, serveur d'actes, actes, urgences, Diapason | | `grh/` | RH, ressources humaines, employé, salarié, contrat, paie, MyRHConnect, RH Dossier | | `gef/` | pharmacie, M21, contentieux, emprunts, trésorerie, HA GHT, immobilisations, achats, fournisseurs, comptabilité générale, Hélios, export comptable | | `ui-ux/` | design, maquette, Figma, atelier UX, atelier UI, wireframe, écran, prototype, UX/UI | **Classification rule:** Classification is **by project/domain, not by team org.** The Hexaflux team is organizationally part of the Foundation team but works exclusively on the Hexaflux project (domain = interoperability), so their recurring meetings land in `interoperability/`, not `foundation/`. Always check project-specific signals before the generic Foundation standup rule. 1. If the meeting is the **Hexaflux team recurring meeting** (mentions « Hexaflux », or a weekly/standup/rétro involving the HL7/interop scope) → `interoperability/` 2. Else if the meeting is a **Foundation team recurring meeting** working on the horizontal/transverse platform (sprint, rétro, daily, point équipe, stand-up — without project-specific scope) → `foundation/` 3. **Interoperability vs. GAP disambiguation.** HL7 messages carry patient data (PID, PV1, NK1, etc.) so GAP keywords (patient, admission, séjour, venue) will naturally appear. When HL7/interop signals are present alongside GAP signals, the meeting is about **integration**, not patient business workflows → classify as `interoperability/`. Only classify as `gap/` when the discussion is about the functional/business side (UI, portail patient, facturation, workflows métier admission) without a technical HL7/message layer. 4. Otherwise, count keyword matches per domain folder and pick the **folder with the highest count** (dominant domain) 5. On a tie, prefer the folder whose signals appear earliest in the transcript 6. If no signals match at all → ask the user to confirm the target folder ### Step 5: Extract Meeting Title and Slug 1. Read the first minutes of the transcript for explicit subject references (greetings usually mention the meeting title) 2. Infer a clean French meeting title (e.g. `Atelier UX/UI Recherche Patient`) 3. Generate a kebab-case slug from the title: - Lowercase, ASCII only (strip accents) - Replace spaces and punctuation with `-` - Max ~60 characters - Example: `atelier-ux-ui-recherche-patient` ### Step 6: Rewrite Content by Topic **Style:** Heavy rewrite, grouped by topic, **not** chronological, **not** verbatim. 1. Identify the main topics discussed — cluster speaker turns into thematic groups (topic detection, not s
Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.