name: factory-intake description: "Phase BREAK - Normalise les requirements en brief/scope/acceptance" allowed-tools: Read, Glob, Grep, Task, Bash, AskUserQuestion
Factory Intake - Phase BREAK
Tu es l'orchestrateur de la phase BREAK.
Phase CRITIQUE : Le cadrage du besoin determine la qualite de tout le projet. L'interaction avec l'utilisateur pour clarifier les ambiguites est ESSENTIELLE.
Workflow
Lire le state :
node tools/factory-state.js get # Retourne: { "evolutionMode": "greenfield|brownfield", "evolutionVersion": N, "requirementsFile": "input/requirements-N.md", ... }Extraire :
evolutionMode,evolutionVersion,requirementsFile.Verifier Gate 0 (entree) : Valider le fichier requirements
node tools/gate-check.js 0 --json- Si
status === "FAIL"→ STOP immediat (prerequis manquants, ne peut pas corriger). - Les erreurs de type
requirementssontfixable: false— l'utilisateur DOIT completer les sections. - Terminer avec :
GATE_FAIL|0|<resume erreurs>|0
- Si
Informer l'utilisateur :
"Phase BREAK - Cadrage du besoin Je vais analyser vos requirements et vous poser des questions de clarification. Vos reponses seront stockees dans docs/factory/questions.md Vous pouvez repondre : - Directement dans le terminal (recommande) - Ou en editant docs/factory/questions.md puis relancer /factory-intake"
3a. Phase ANALYSE - Deleguer a l'agent analyst (analyse seule) :
# Instrumenter la delegation (pas de hooks dans le skill inline non plus)
node tools/instrumentation/collector.js agent '{"agent":"analyst","source":"factory-intake","phase":"analyse"}'
Task(
subagent_type: "analyst",
prompt: "MODE DELEGATION - PHASE ANALYSE UNIQUEMENT.
Fichier requirements: <requirementsFile>. Mode: <evolutionMode>. Version: <evolutionVersion>.
Analyse le requirements, identifie les ambiguites et questions.
Lis le template templates/break/questions-template.md AVANT de generer le fichier questions.
Ecris le fichier questions : docs/factory/questions.md (V1) ou questions-v<evolutionVersion>.md (V2+).
IMPORTANT: Respecte EXACTEMENT le format du template (colonnes, statuts).
- NE PAS utiliser AskUserQuestion (le skill s'en charge)
- NE PAS generer brief.md, scope.md, acceptance.md
- NE PAS inventer de numeros de version pour les librairies.
Ecrire uniquement le nom de la lib (ex: 'Tailwind CSS', pas 'Tailwind CSS v3' ou 'Tailwind CSS 4+').
Les versions seront verifiees automatiquement en phase MODEL via WebSearch.
- Retourne dans ta reponse la LISTE des questions identifiees avec leur priorite (bloquante/optionnelle) et les hypotheses proposees.",
description: "Analyst - Phase ANALYSE (delegation)"
)
3b. Poser les questions a l'utilisateur (fait par le skill, PAS par le subagent) :
- Lire le fichier questions genere par l'analyst (
docs/factory/questions.mdoudocs/factory/questions-vN.md) - Extraire les questions identifiees (depuis le fichier ou la reponse de l'analyst)
- Poser les questions bloquantes en premier via
AskUserQuestion:- Regrouper par lot de 1 a 4 questions (limite du tool)
- Proposer les hypotheses de l'analyst comme options par defaut
- Ajouter toujours une option pour que l'utilisateur precise sa reponse
- Pour les questions optionnelles, poser egalement via
AskUserQuestionmais accepter l'hypothese si l'utilisateur ne precise pas - Mettre a jour le fichier questions avec les reponses recues :
- Statut →
REPONDUavec la reponse - Ou statut →
HYPOTHESEsi l'utilisateur accepte l'hypothese par defaut
- Statut →
IMPORTANT : Cette etape est executee par le skill lui-meme (pas un subagent) car les subagents ne posent pas les questions de maniere fiable.
3c. Phase GENERATION - Deleguer a l'agent analyst (generation des documents) :
node tools/instrumentation/collector.js agent '{"agent":"analyst","source":"factory-intake","phase":"generation"}'
Task(
subagent_type: "analyst",
prompt: "MODE DELEGATION - PHASE GENERATION.
Fichier requirements: <requirementsFile>. Mode: <evolutionMode>. Version: <evolutionVersion>.
Lis le fichier questions mis a jour avec les reponses utilisateur :
docs/factory/questions.md (V1) ou docs/factory/questions-v<evolutionVersion>.md (V2+).
Les reponses de l'utilisateur sont dans la colonne 'Reponse' du tableau.
Si mode=greenfield: CREATE docs/brief.md, scope.md, acceptance.md.
Si mode=brownfield: EDIT les docs existants pour les enrichir.
Lis les templates AVANT de generer les documents :
- templates/break/brief-template.md
- templates/break/scope-template.md
- templates/break/acceptance-template.md
IMPORTANT: Respecte EXACTEMENT les headings des templates (##).
Integre les reponses de l'utilisateur dans les documents generes.
IMPORTANT:
- NE PAS utiliser AskUserQuestion (les reponses sont deja dans le fichier questions)
- Lire le fichier questions AVANT de generer les documents
- Les hypotheses acceptees doivent etre marquees comme telles dans brief.md
- NE PAS inventer de numeros de version pour les librairies.
Ecrire uniquement le nom de la lib (ex: 'Tailwind CSS', pas 'Tailwind CSS v3').
Les versions seront verifiees automatiquement en phase MODEL via WebSearch.",
description: "Analyst - Phase GENERATION (delegation)"
)
Executer Gate 1 (avec auto-remediation) :
node tools/gate-check.js 1 --jsonSuivre le protocole standard de gate handling :
Tentative 1 : Analyser le JSON retourne.
- Si
status === "PASS"→ continuer a l'etape 5. - Si
status === "FAIL":- Lire
errors[]. Pour chaque erreurfixable: true:missing_file→ relancer l'agent analyst en phase GENERATION avec prompt cible : "Genere le fichier [fichier]. Lis le template [template] et respecte exactement les headings."brief.md→ templatetemplates/break/brief-template.mdscope.md→ templatetemplates/break/scope-template.mdacceptance.md→ templatetemplates/break/acceptance-template.md
missing_section→ relancer l'agent analyst en phase GENERATION avec prompt cible : "Corrige [fichier]. Section manquante : [section]. Lis le template (ref dans le message d'erreur) et respecte exactement les headings."structure→ creer les repertoires manquants directement (mkdir -p).
- Pour chaque erreur
fixable: false→ STOP, ne pas retenter. - Re-executer :
node tools/gate-check.js 1 --json
- Lire
Tentative 2 : Relancer l'agent analyst complet (phase GENERATION).
- Re-executer :
node tools/gate-check.js 1 --json
Tentative 3 : Si toujours FAIL apres 3 tentatives, retourner le rapport d'echec.
- NE PAS continuer le pipeline.
- Terminer avec ce message EXACT en fin de reponse :
Exemple :GATE_FAIL|1|<resume des erreurs separees par ;>|3GATE_FAIL|1|Fichier manquant: docs/brief.md;Section manquante: ## IN|3
- Si
Logger via :
node tools/factory-log.js "BREAK" "completed" "Phase BREAK terminee - X questions posees, Y repondues"Retourner un resume avec :
- Liste des artefacts crees
- Nombre de questions posees/repondues
- Hypotheses generees (si applicable)
Gestion des questions
| Situation | Action |
|---|---|
| Questions bloquantes non repondues | STOP - Demander reponse |
| Questions optionnelles non repondues | Continuer avec hypothese explicite |
| Utilisateur veut repondre plus tard | Pause - Expliquer comment reprendre |
Protocole d'echec
- Gate d'entree (Gate 0) : Si FAIL → STOP immediat (prerequis manquants, ne peut pas corriger).
- Gate de sortie (Gate 1) : Auto-remediation 3x puis marqueur
GATE_FAILsi echec persistant. - Jamais de STOP silencieux — toujours retourner un rapport structure.