factory-spec

Phase MODEL - Génère specs + ADR + rules

16 stars

Best use case

factory-spec is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Phase MODEL - Génère specs + ADR + rules

Teams using factory-spec should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/factory-spec/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/frontend/factory-spec/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/factory-spec/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How factory-spec Compares

Feature / Agentfactory-specStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Phase MODEL - Génère specs + ADR + rules

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Factory Spec - Phase MODEL

Tu es l'orchestrateur de la phase MODEL.

## Workflow

1. **Verifier Gate 1 (entree)** :
   ```bash
   node tools/gate-check.js 1 --json
   ```
   - Si `status === "FAIL"` → STOP immediat (prerequis manquants, ne peut pas corriger).
   - Terminer avec : `GATE_FAIL|1|<resume erreurs>|0`

2. **Lire le state** :
   ```bash
   node tools/factory-state.js get
   # Retourne: { "evolutionMode": "greenfield|brownfield", "evolutionVersion": N, "requirementsFile": "...", ... }

   # Lister les ADR actifs (brownfield : exclut SUPERSEDED)
   node tools/list-active-adrs.js --summary

   # Extraire le delta de la version courante (brownfield uniquement)
   node tools/extract-version-delta.js -f brief -f scope
   ```
   Extraire : `evolutionMode`, `evolutionVersion`.

3. **Deleguer aux agents** (sequentiel strict, UN A LA FOIS) :

   **3a. Agent PM** (specs fonctionnelles) :
   ```bash
   # Instrumenter la delegation (les hooks ne fonctionnent pas dans les forks)
   node tools/instrumentation/collector.js agent '{"agent":"pm","source":"factory-spec"}'
   ```
   ```
   Task(
     subagent_type: "pm",
     prompt: "Genere les specs fonctionnelles du projet.
     Mode: <evolutionMode>. Version: <evolutionVersion>.
     Si mode=greenfield: CREATE docs/specs/system.md et docs/specs/domain.md.
     Si mode=brownfield: EDIT les specs existantes pour les mettre a jour.
     DELTA VERSION COURANTE: <output de extract-version-delta.js>
     Lis les fichiers BREAK: docs/brief.md, docs/scope.md, docs/acceptance.md.
     Lis les templates: templates/specs/system.md, templates/specs/domain.md.
     IMPORTANT: Respecte EXACTEMENT les headings des templates (##).
     IMPORTANT: NE PAS inventer de numeros de version pour les librairies.
     Ecrire uniquement le nom de la lib (ex: 'Tailwind CSS', pas 'Tailwind CSS 3+').",
     description: "MODEL - PM specs"
   )
   ```

   **3b. Verification web des dependances et generation de stack-reference.md** (fait par le fork, AVANT l'architect) :

   > **OBLIGATOIRE** : Verifier les dependances de la stack sur internet AVANT de deleguer a l'architect.
   > Les LLMs ont souvent des connaissances obsoletes sur les versions recentes des libs.
   > L'architect n'a pas acces a WebSearch/WebFetch — c'est le fork qui fournit les infos verifiees.

   **Etape 1 : Identifier la stack dans le brief/scope**

   Lire `docs/brief.md` et `docs/scope.md` pour extraire la liste des dependances prevues (framework, CSS lib, bundler, test runner, linter, chart lib, etc.).
   Constituer une liste : `[ "react", "tailwindcss", "vite", "vitest", ... ]`.

   **Etape 2 : Verifier les versions via npm registry** (source canonique)

   Pour **chaque dependance** identifiee :
   ```bash
   npm view <package> version
   # Retourne la derniere version stable (ex: "19.1.0")
   ```
   Si le nom npm n'est pas evident (ex: Tailwind CSS → `tailwindcss`), utiliser :
   ```bash
   npm search <lib> --json | head -5
   ```

   > **C'est la source la plus fiable** pour les numeros de version.
   > Ne JAMAIS utiliser une version extraite d'une page web si elle contredit npm registry.

   Compteur : noter le nombre de deps verifiees via npm (`verified_count`).

   **Etape 3 : Rechercher les configs et breaking changes via web** (complementaire)

   Pour **chaque dependance a risque de breaking changes** (identifiee dans le brief/scope) :

   a. **Trouver la doc officielle** :
      - `WebSearch` : `"<lib> getting started"` ou `"<lib> installation guide"`
      - Privilegier les domaines officiels (npmjs.com, github.com/<org>, docs officiels)

   b. **Extraire la configuration** :
      - `WebFetch` sur la page d'installation officielle
      - Extraire : packages a installer, fichiers de config requis, snippets de reference
      - Copier le snippet EXACT depuis la doc (pas de memoire LLM)

   c. **Identifier les breaking changes** :
      - `WebSearch` : `"<lib> migration guide"` ou `"<lib> upgrade from v<N-1>"`
      - Documenter : ancien pattern (a eviter) vs nouveau pattern (a utiliser)

   > **Si WebSearch/WebFetch echoue** (rate limit, erreur reseau) : logger un warning et continuer.
   > La verification configs/breaking changes est best-effort. Les versions npm sont obligatoires.

   **Etape 4 : Seuil de fiabilite**

   Calculer : `ratio = verified_count / total_deps`.
   - Si `ratio >= 0.5` (50%+) → continuer normalement.
   - Si `ratio < 0.5` → logger un warning :
     ```bash
     node tools/factory-log.js "MODEL" "stack-warning" "Seuil de fiabilite non atteint: X/Y deps verifiees via npm. Risque de versions incorrectes."
     ```
     Continuer quand meme (ne pas bloquer), mais le warning sera visible dans les logs.

   **Etape 5 : Generer `docs/specs/stack-reference.md`**

   Lire le template `templates/specs/stack-reference.md`.
   Creer le fichier `docs/specs/stack-reference.md` en remplissant :
   - **Dependencies runtime** : tableau avec package, version exacte (depuis npm), commande install, URL source
   - **Dependencies dev** : idem pour les deps de dev
   - **Configurations de reference** : pour chaque lib necessitant un fichier de config, inclure le snippet EXACT copie depuis la doc officielle (pas de memoire LLM)
   - **Compatibilite** : notes inter-dependances (ex: "Tailwind v4 necessite @tailwindcss/vite")
   - **Breaking changes connus** : tableau ancien vs nouveau pour chaque lib avec breaking change

   > **Ce fichier est la source de verite** pour toutes les etapes suivantes.
   > L'architect et le developer doivent s'y referer, pas inventer de versions.

   **Etape 6 : Logger**
   ```bash
   node tools/factory-log.js "MODEL" "stack-verified" "Verification stack: X/Y deps verifiees via npm, Z configs web → docs/specs/stack-reference.md"
   ```

   **3c. Agent Architect** (specs techniques + ADR, avec stack verifiee) :
   ```bash
   # Extraire le delta depuis les specs PM (disponibles apres 3a)
   node tools/extract-version-delta.js -f system -f domain

   # Instrumenter la delegation
   node tools/instrumentation/collector.js agent '{"agent":"architect","source":"factory-spec"}'
   ```
   ```
   Task(
     subagent_type: "architect",
     prompt: "Genere les specs techniques et ADR.
     Mode: <evolutionMode>. Version: <evolutionVersion>.
     Si mode=greenfield: CREATE docs/specs/api.md, ADR-0001-stack.md, project-config.json.
     Si mode=brownfield: EDIT api.md + CREATE nouveaux ADR + marquer anciens SUPERSEDED.
     DELTA VERSION COURANTE: <output de extract-version-delta.js>
     Lis les fichiers BREAK: docs/brief.md, docs/scope.md, docs/acceptance.md.
     Lis les specs PM: docs/specs/system.md, docs/specs/domain.md.
     Lis le fichier stack de reference: docs/specs/stack-reference.md.
     Lis les templates: templates/specs/api.md, templates/adr/ADR-template.md, templates/specs/project-config.json.
     IMPORTANT: Respecte EXACTEMENT les headings des templates (##).

     STACK REFERENCE (source de verite - UTILISE CES VERSIONS ET CONFIGS, PAS TA MEMOIRE) :
     Lis docs/specs/stack-reference.md pour toutes les versions, packages et configs.

     Pour chaque dependance dans l'ADR :
     - Utilise la version exacte et les packages indiques dans stack-reference.md
     - Inclus les snippets de configuration de reference dans une section '## Configuration de reference' de l'ADR
     - Si une lib a un setup specifique (ex: plugin Vite au lieu de PostCSS), documente-le
     - NE PAS inventer de config : utilise UNIQUEMENT les infos de stack-reference.md",
     description: "MODEL - Architect specs"
   )
   ```

   **3d. Agent Rules-Memory** (rules Claude Code) :
   ```bash
   # Extraire le delta depuis toutes les specs (disponibles apres 3a+3c)
   node tools/extract-version-delta.js -f system -f domain -f api

   # Instrumenter la delegation
   node tools/instrumentation/collector.js agent '{"agent":"rules-memory","source":"factory-spec"}'
   ```
   ```
   Task(
     subagent_type: "rules-memory",
     prompt: "Genere les rules Claude Code pour le projet.
     Mode: <evolutionMode>. Version: <evolutionVersion>.
     Si mode=greenfield: CREATE les rules dans .claude/rules/.
     Si mode=brownfield: mettre a jour les rules existantes, supprimer les obsoletes.
     ADR ACTIFS: <liste des paths retournes par list-active-adrs.js --summary>
     DELTA VERSION COURANTE: <output de extract-version-delta.js>
     IMPORTANT: NE PAS charger les ADR au statut SUPERSEDED.
     Lis les specs: docs/specs/system.md, docs/specs/domain.md, docs/specs/api.md.
     Lis le template: templates/rule.md.",
     description: "MODEL - Rules generation"
   )
   ```

4. **Executer Gate 2 (sortie avec auto-remediation)** :

   ```bash
   node tools/gate-check.js 2 --json
   ```

   Suivre 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 erreur `fixable: true` :
       - `missing_section` → identifier le fichier et le template de reference dans le message d'erreur (`ref: templates/...`). Relancer l'agent responsable avec prompt : "Corrige [fichier]. Section manquante : [section]. Lis le template [template] et respecte exactement les headings."
       - `missing_file` → identifier le fichier manquant :
         - `stack-reference.md` → re-executer l'etape 3b (verification web + generation du fichier). C'est le fork qui le fait, pas un agent.
         - `system.md` / `domain.md` → relancer l'agent PM (step 3a).
         - `api.md` → relancer l'agent architect (step 3c).
         - Autre → relancer l'agent responsable.
       - `missing_pattern` → identifier le pattern manquant :
         - `.claude/rules/*.md` → relancer l'agent rules-memory (step 3d).
         - `docs/adr/ADR-*` → relancer l'agent architect (step 3c).
       - `config` → relancer l'architect pour corriger project-config.json.
       - `security` → corriger les secrets/PII directement.
     - Pour chaque erreur `fixable: false` → STOP, ne pas retenter.
     - Re-executer : `node tools/gate-check.js 2 --json`

   **Tentative 2** : Relancer les agents fautifs complets (PM, architect ou rules-memory selon les erreurs restantes).
   - Re-executer : `node tools/gate-check.js 2 --json`

   **Tentative 3** : Si toujours FAIL, retourner le rapport d'echec.
   - **NE PAS continuer le pipeline.**
   - Terminer avec : `GATE_FAIL|2|<resume erreurs separees par ;>|3`

5. **Sync ADR** (brownfield) :
   ```bash
   node tools/list-active-adrs.js --summary
   ```

6. **Logger** via :
   ```bash
   node tools/factory-log.js "MODEL" "completed" "Phase MODEL terminee"
   ```

7. **Retourner** un resume avec liste des fichiers generes (chemins complets).

## Protocole d'echec

- **Gate d'entree** (Gate 1) : Si FAIL → STOP immediat + marqueur `GATE_FAIL|1|...|0`.
- **Gate de sortie** (Gate 2) : Auto-remediation 3x puis marqueur `GATE_FAIL|2|...|3` si echec persistant.
- **Jamais** de STOP silencieux — toujours retourner un rapport structure.

Related Skills

html-specific-rules

16
from diegosouzapw/awesome-omni-skill

Rules specific to HTML files, focusing on accessibility and Tailwind styling.

ai-ad-spec-kit

16
from diegosouzapw/awesome-omni-skill

No description provided.

speckit-documentation-engineer.agent

16
from diegosouzapw/awesome-omni-skill

Expert documentation engineer specializing in technical documentation, API docs, developer guides, and documentation-as-code. Creates maintainable, searchable documentation that developers actually use.

spec_driven_development.constitution

16
from diegosouzapw/awesome-omni-skill

Creates foundational governance principles and development guidelines for the project. Use when starting a new project or establishing standards.

spec-interview

16
from diegosouzapw/awesome-omni-skill

通过系统性访谈完善技术规格文档,访谈完成后自动创建 OpenSpec proposal。适用于需求细化、技术方案设计、规范驱动开发等场景。

documentation-specialist

16
from diegosouzapw/awesome-omni-skill

文档专家。专注于技术文档编写、API 文档生成、README 优化和文档维护。提供清晰的文档结构、规范的格式和用户友好的内容。

terraform-specialist

16
from diegosouzapw/awesome-omni-skill

Expert Terraform/OpenTofu specialist mastering advanced IaC automation, state management, and enterprise infrastructure patterns.

sync-specs

16
from diegosouzapw/awesome-omni-skill

Sync ALL increment specifications to living docs structure by default. Creates FS-XXX folders for each increment. Use with increment ID to sync single increment.

specify-solution

16
from diegosouzapw/awesome-omni-skill

Create and validate solution design documents (SDD). Use when designing architecture, defining interfaces, documenting technical decisions, analyzing system components, or working on solution.md files in .start/specs/. Includes validation checklist, consistency verification, and overlap detection.

specialist-devops-infra

16
from diegosouzapw/awesome-omni-skill

Engenharia DevOps para automação, CI/CD e infraestrutura como código

section-special

16
from diegosouzapw/awesome-omni-skill

Generate comprehensive R tutorials for specialized applications (health economics, qualitative research, signal processing, environmental epidemiology) with theory + practice workflow. Use when: (1) User requests domain-specific tutorials, (2) File names match [number]-[topic].rmd pattern, (3) Keywords: TreeAge, CEA, text mining, wavelet, VMD, DLNM, WQS, BKMR.

pronunciation-specialist

16
from diegosouzapw/awesome-omni-skill

Scan lyrics for pronunciation risks, prevent Suno mispronunciations