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.
development
Method to diagnose and raise the Lighthouse performance score of a public page (landing, marketing, home). Use when asked to improve Lighthouse/PageSpeed scores, when auditing the first uncached paint of a public page, or when a landing embedded in a SPA must reach a top score. Do NOT use for in-app screen performance (data loading, rendering). For a brand-new landing, the first recommendation is static HTML with no framework runtime — most of this skill exists for when that is not an option.
tools
Audits a project's Claude Code setup against real usage — mines the project's conversations (worktrees included), confronts the project's skills/agents/CLAUDE.md with best practices, and proposes adjustments or new skills/agents/rules. Use when the user asks to audit the project config, analyze project conversations, or find automation opportunities for the current project. Do NOT use for the global ~/.claude configuration (use /audit-config instead).
development
Coaching workflow orchestrator. Guides the developer through implementation without writing code.
development
Disciplined methodology for code architecture refactoring. Use when the user asks to refactor architecture, decouple code, restructure a family of classes, redesign an interface, or rename/reorganize a set of related components. Forces a big-picture analysis before any code is written. Do NOT use for simple bug fixes, feature additions, or single-file refactoring.