skills/express-need/SKILL.md
Transform a raw need into a well-defined spec, break it into atomic tickets, and create them. Delegates to product-analyst agent with scout/interview/synthesis flow, then proposes task breakdown with /create-ticket. Use when the user has a raw idea, feature request, or unstructured need. Do NOT use when the user already has a clear ticket spec (use /create-ticket directly).
npx skillsauth add nicolas-codemate/claudecodeconfig express-needInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The product-analyst agent handles the analysis in TWO phases:
This skill orchestrates the user-facing flow: receive -> scout -> interview (if needed) -> synthesis -> break down -> validate -> create tickets. </context>
Arguments passed from command: $ARGUMENTS
If $ARGUMENTS is empty or contains only flags:
raw_needIf $ARGUMENTS contains text:
raw_needDisplay to user:
## Besoin reçu
{raw_need}
Lancement du scout produit...
</instructions>
Agent:
subagent_type: product-analyst
model: sonnet
description: "Scout need: {short summary of raw_need}"
prompt: |
SCOUT PHASE — no answers provided yet.
Raw need: {raw_need}
Your job in this invocation:
1. Lightweight codebase scan (framework, stack, existing patterns)
2. Detect cross-cutting concerns triggered by the need
3. For each concern detected, check the framework via Context7 for native solutions
4. Produce EITHER:
- A `## Clarification Needed` block with 1-5 targeted questions (if concerns detected)
- The full synthesis document (if no concerns, need is clear)
Discipline: only ask questions that would change an architectural decision.
Do NOT ask generic product questions (persona, success metric) — those belong
in Open Questions of the final document.
Store the agent's output as scout_output.
Detect whether scout_output is a scout report or a full synthesis document:
scout_output contains ## Clarification Needed: proceed to Step 3 (INTERVIEW)scout_output contains ## Functional Requirements (final doc): skip Step 3 and 4,
set structured_document = scout_output, proceed to Step 5 (TASK BREAKDOWN)Display to user (only if clarifications are needed):
## Scout produit terminé
J'ai détecté des points critiques qui méritent d'être tranchés avant de produire le spec final. Quelques questions rapides...
</instructions>
For each question, use AskUserQuestion to present it to the user:
AskUserQuestion:
questions:
- question: "{question text from scout, prefixed with context}"
header: "{Q header from scout, max 12 chars}"
multiSelect: false
options:
- label: "{option label from scout}"
description: "{option description from scout}"
- label: "{option label from scout}"
description: "{option description from scout}"
# ... (all options from scout, plus always add:)
- label: "Autre (préciser)"
description: "Réponse libre"
If the user picks "Autre (préciser)", follow up with a free-text AskUserQuestion to capture the custom answer.
Collect all answers into a scout_answers structure:
## Scout Answers
- Q1 ({question title}): {answer}
- Q2 ({question title}): {answer}
- ...
Store this block as scout_answers.
</instructions>
Agent:
subagent_type: product-analyst
model: sonnet
description: "Synthesize need: {short summary of raw_need}"
prompt: |
SYNTHESIS PHASE — scout answers provided below.
Raw need: {raw_need}
{scout_answers}
Your job in this invocation:
1. Produce the full structured document following the Synthesis Phase output format
2. Bake the scout answers into Architectural Constraints where applicable
3. Every architectural constraint must have a rationale tied to a product commitment
4. Self-review before delivering
5. Return the final document
Do NOT return Clarification Needed — you have everything you need.
Store the agent's output as structured_document.
</instructions>
For each Functional Requirement (FR) or logical group of FRs, create a ticket entry:
## Découpage en tickets
| # | Titre | Type | Périmètre | Dépendances |
|---|-------|------|-----------|-------------|
| 1 | {titre concis} | feature/task/bug | FR1, FR2 | - |
| 2 | {titre concis} | feature/task | FR3 | Ticket 1 |
| 3 | {titre concis} | task | AC1, AC2 (tests) | Ticket 1, 2 |
### Ticket {N}: {titre}
**Type**: feature | task | bug
**Exigences couvertes**: FR1, FR2
**Description**:
{2-3 sentences explaining what this ticket accomplishes,
extracted from the structured document}
**Critères d'acceptation**:
- {AC relevant to this ticket only}
**Contraintes architecturales** (propagated from parent spec):
- {AC-ARCH-N relevant to this ticket, with rationale}
**Contexte technique**:
- {Relevant technical context from the structured document}
</instructions>
AskUserQuestion:
questions:
- question: "Que souhaitez-vous faire avec cette spécification ?"
header: "Validation"
multiSelect: false
options:
- label: "Valider et créer les tickets"
description: "Créer tous les tickets proposés via /create-ticket"
- label: "Valider sans créer"
description: "Sauvegarder le document sans créer de tickets"
- label: "Modifier le découpage"
description: "Ajuster le nombre ou le périmètre des tickets"
- label: "Modifier la spécification"
description: "Revenir sur le document de spécification"
- label: "Approfondir"
description: "Relancer l'agent pour creuser un aspect spécifique"
structured_document, redo Step 5, loop back to Step 6Save the full document (spec + breakdown) to: .claude-work/needs/{filename}.md
mkdir -p .claude-work/needs
Display to user:
## Document sauvegardé
Fichier : .claude-work/needs/{filename}.md
</instructions>
For ticket N:
/create-ticket --type {type} "{title}"
with description = ticket description + acceptance criteria + architectural constraints + technical context
Between each ticket creation, display progress:
Ticket {N}/{total} créé : {ticket-id} - {titre}
After all tickets are created, display summary:
## Tickets créés
| # | ID | Titre | Type |
|---|-----|-------|------|
| 1 | {id} | {titre} | {type} |
| 2 | {id} | {titre} | {type} |
Ordre d'implémentation recommandé : {dependency chain}
Lancer `/resolve {first-ticket-id}` pour commencer ?
</instructions>
All user communication in French. Technical content (structured document, file paths, code references) in English.
tools
--- name: deep-review description: Performs deep code review via an isolated fresh agent (triple perspective, anti-bias). Use when the user asks for an in-depth review of current branch changes, or when invoked by /resolve step 08. Do NOT use for reviewing PRs from GitHub (use review-pr skill instead) or for a quick correctness scan with effort levels (use bundled /code-review instead). argument-hint: [--ticket <id>] [--base <branch>] [--fix] [--severity <level>] allowed-tools: Read, Glob, Grep,
tools
Resolve git rebase conflicts methodically. Classifies each conflict (imports/namespace cleanup vs real logic clash), analyzes the commit introducing the change against the current ticket context, auto-fixes only trivial cases with a per-file summary, and asks the user when ambiguous. Verifies static analysis tools pass at the end and optionally runs functional tests. Use after `git rebase` triggers conflicts, or when the user asks to "resolve conflicts", "fix rebase", "j'ai des conflits", "aide-moi sur ce rebase".
development
Synchronize the markdown test plan in docs/qa/ with the current state of the codebase. Use after adding or modifying features to keep the plan up to date, or to bootstrap a test plan for the first time. Do NOT use to execute tests (use /qa-run instead) and do NOT use to design product specs (use /express-need instead).
tools
Execute the markdown test plan in docs/qa/ via Playwright MCP and create a ticket on each failing scenario. Use after /qa-sync, before a release, or to validate a feature end-to-end. Do NOT use to design or update scenarios (use /qa-sync instead) and do NOT use for visual regression (use visual-verify agent instead).