Session de QA interactive où l'utilisateur signale des bugs ou problèmes de manière conversationnelle, et l'agent crée des issues GitHub. Explore la base de code en arrière-plan pour le contexte et le langage du domaine. À utiliser lorsque l'utilisateur souhaite signaler des bugs, faire de la QA, créer des issues de manière conversationnelle, ou mentionne "session QA".

npx skills add https://github.com/mattpocock/skills --skill qa

QA Session

Run an interactive QA session. The user describes problems they're encountering. You clarify, explore the codebase for context, and file GitHub issues that are durable, user-focused, and use the project's domain language.

For each issue the user raises

1. Listen and lightly clarify

Let the user describe the problem in their own words. Ask at most 2-3 short clarifying questions focused on:

  • What they expected vs what actually happened
  • Steps to reproduce (if not obvious)
  • Whether it's consistent or intermittent

Do NOT over-interview. If the description is clear enough to file, move on.

2. Explore the codebase in the background

While talking to the user, kick off an Agent (subagent_type=Explore) in the background to understand the relevant area. The goal is NOT to find a fix — it's to:

  • Learn the domain language used in that area (check UBIQUITOUS_LANGUAGE.md)
  • Understand what the feature is supposed to do
  • Identify the user-facing behavior boundary

This context helps you write a better issue — but the issue itself should NOT reference specific files, line numbers, or internal implementation details.

3. Assess scope: single issue or breakdown?

Before filing, decide whether this is a single issue or needs to be broken down into multiple issues.

Break down when:

  • The fix spans multiple independent areas (e.g. "the form validation is wrong AND the success message is missing AND the redirect is broken")
  • There are clearly separable concerns that different people could work on in parallel
  • The user describes something that has multiple distinct failure modes or symptoms

Keep as a single issue when:

  • It's one behavior that's wrong in one place
  • The symptoms are all caused by the same root behavior

4. File the GitHub issue(s)

Create issues with gh issue create. Do NOT ask the user to review first — just file and share URLs.

Issues must be durable — they should still make sense after major refactors. Write from the user's perspective.

For a single issue

Use this template:

## What happened

[Describe the actual behavior the user experienced, in plain language]

## What I expected

[Describe the expected behavior]

## Steps to reproduce

1. [Concrete, numbered steps a developer can follow]
2. [Use domain terms from the codebase, not internal module names]
3. [Include relevant inputs, flags, or configuration]

## Additional context

[Any extra observations from the user or from codebase exploration that help frame the issue — e.g. "this only happens when using the Docker layer, not the filesystem layer" — use domain language but don't cite files]

For a breakdown (multiple issues)

Create issues in dependency order (blockers first) so you can reference real issue numbers.

Use this template for each sub-issue:

## Parent issue

#<parent-issue-number> (if you created a tracking issue) or "Reported during QA session"

## What's wrong

[Describe this specific behavior problem — just this slice, not the whole report]

## What I expected

[Expected behavior for this specific slice]

## Steps to reproduce

1. [Steps specific to THIS issue]

## Blocked by

- #<issue-number> (if this issue can't be fixed until another is resolved)

Or "None — can start immediately" if no blockers.

## Additional context

[Any extra observations relevant to this slice]

When creating a breakdown:

  • Prefer many thin issues over few thick ones — each should be independently fixable and verifiable
  • Mark blocking relationships honestly — if issue B genuinely can't be tested until issue A is fixed, say so. If they're independent, mark both as "None — can start immediately"
  • Create issues in dependency order so you can reference real issue numbers in "Blocked by"
  • Maximize parallelism — the goal is that multiple people (or agents) can grab different issues simultaneously

Rules for all issue bodies

  • No file paths or line numbers — these go stale
  • Use the project's domain language (check UBIQUITOUS_LANGUAGE.md if it exists)
  • Describe behaviors, not code — "the sync service fails to apply the patch" not "applyPatch() throws on line 42"
  • Reproduction steps are mandatory — if you can't determine them, ask the user
  • Keep it concise — a developer should be able to read the issue in 30 seconds

After filing, print all issue URLs (with blocking relationships summarized) and ask: "Next issue, or are we done?"

5. Continue the session

Keep going until the user says they're done. Each issue is independent — don't batch them.

Plus de skills de mattpocock

improve-codebase-architecture
mattpocock
Trouver des opportunités d'approfondissement dans une base de code, en s'appuyant sur le langage du domaine dans CONTEXT.md et les décisions dans docs/adr/. Utiliser lorsque l'utilisateur souhaite améliorer l'architecture, trouver des opportunités de refactorisation, consolider des modules fortement couplés, ou rendre une base de code plus testable et navigable par l'IA.
developmentcode-reviewapi
tdd
mattpocock
Développement piloté par les tests avec boucle rouge-vert-refactorisation. À utiliser lorsque l'utilisateur souhaite développer des fonctionnalités ou corriger des bugs en utilisant le TDD, mentionne "rouge-vert-refactorisation", veut des tests d'intégration, ou demande un développement test-first.
developmenttesting
handoff
mattpocock
Compacter la conversation actuelle en un document de transfert pour qu’un autre agent puisse le reprendre.
communicationproject-managementdocument
prototype
mattpocock
Construisez un prototype jetable pour étoffer une conception avant de vous y engager. Achemine entre deux branches — une application terminal exécutable pour les questions d'état/logique métier, ou plusieurs variations d'interface utilisateur radicalement différentes, basculables depuis une seule route. À utiliser lorsque l'utilisateur souhaite prototyper, vérifier la cohérence d'un modèle de données ou d'une machine d'état, maquetter une interface utilisateur, explorer des options de conception, ou dit « prototype ceci », « laisse-moi jouer avec », « essaie quelques designs ».
developmentdesigncreative
triage
mattpocock
Trier les problèmes via une machine à états pilotée par des rôles de triage. Utiliser lorsque l'utilisateur souhaite créer un problème, trier des problèmes, examiner les bogues entrants ou les demandes de fonctionnalités, préparer des problèmes pour un agent AFK, ou gérer le flux de travail des problèmes.
developmentproject-managementcommunication
obsidian-vault
mattpocock
Rechercher, créer et gérer des notes dans le coffre Obsidian avec des wikiliens et des notes d’index. Utiliser lorsque l’utilisateur souhaite trouver, créer ou organiser des notes dans Obsidian.
productivitydocument
edit-article
mattpocock
Modifier et améliorer des articles en restructurant les sections, en améliorant la clarté et en resserrant la prose. À utiliser lorsque l'utilisateur souhaite éditer, réviser ou améliorer un brouillon d'article.
documentcreative
writing-great-skills
mattpocock
Référence pour bien rédiger et éditer des compétences — le vocabulaire et les principes qui rendent une compétence prévisible.
documentdevelopment