{
  "id": "architecture-decision-record-n1",
  "code": "PS-0075",
  "titre": "Architecture Decision Record (ADR) automatique",
  "resume": "Pour chaque choix architectural pris pendant une session de développement, l'IA génère un ADR structuré (contexte, décision, alternatives, conséquences, condition de révision) et maintient un index versionné de toutes les décisions.",
  "type_ia": "dev-autonome",
  "piliers": [
    "persistance-contexte",
    "securite-productions"
  ],
  "niveau": "N1",
  "owasp": [],
  "tags": [
    "ADR",
    "architecture",
    "décision",
    "développement",
    "documentation",
    "traçabilité"
  ],
  "prompt_fr": "Pour tout choix architectural dans cette session — technologie, pattern, structure de données, design d'API, choix d'infrastructure, organisation du code — génère immédiatement un ADR dans ce format :\n\n## ADR-[N] — [Titre court et précis]\n\n**Statut** : Proposé\n**Date** : [date du jour]\n\n**Contexte**\n[Situation, contraintes et forces en présence qui rendent cette décision nécessaire]\n\n**Décision**\n[Ce qui a été décidé, formulé clairement]\n\n**Alternatives considérées**\n- [Option A] — écartée car [raison précise]\n- [Option B] — écartée car [raison précise]\n\n**Conséquences**\n- ✅ [Avantage ou bénéfice attendu]\n- ⚠️ [Inconvénient, risque ou dette technique acceptée]\n\n**Révision suggérée si**\n[Condition concrète qui devrait faire reconsidérer ce choix à l'avenir]\n\n**Livrables à produire**\n- **Fichier ADR** : chaque ADR est sauvegardé sous `docs/adr/ADR-NNN-<slug>.md`. Le numéro est attribué dans l'ordre d'apparition.\n- **Index des ADR** : à la fin de la session ou sur demande explicite (« mets à jour l'index ADR »), génère/maintiens un fichier `docs/adr/index.md` au format :\n  ```\n  # Architecture Decision Records\n  | N° | Date | Titre | Statut |\n  |---|---|---|---|\n  | 001 | 2026-05-21 | <titre> | Proposé |\n  ```\n- **Ligne de log** (à émettre après chaque ADR créé) :\n  `[ADR_CREATED] {\"id\":\"ADR-NNN\",\"title\":\"<court>\",\"reversible\":<true|false>}`\n\nUn choix est architectural s'il est difficile à inverser, s'il influence la structure du projet ou s'il introduit une dépendance significative.",
  "prompt_en": "For any architectural choice in this session — technology, pattern, data structure, API design, infrastructure choice, code organization — immediately generate an ADR in this format:\n\n## ADR-[N] — [Short, precise title]\n\n**Status**: Proposed\n**Date**: [today's date]\n\n**Context**\n[Situation, constraints and forces that make this decision necessary]\n\n**Decision**\n[What was decided, stated clearly]\n\n**Alternatives Considered**\n- [Option A] — rejected because [precise reason]\n- [Option B] — rejected because [precise reason]\n\n**Consequences**\n- ✅ [Expected advantage or benefit]\n- ⚠️ [Drawback, risk or accepted technical debt]\n\n**Suggested Revision If**\n[Concrete condition that should prompt revisiting this choice in the future]\n\n**Deliverables to produce**\n- **ADR file**: each ADR is saved as `docs/adr/ADR-NNN-<slug>.md`. Number is assigned in order of appearance.\n- **ADR index**: at end of session or on explicit request (\"update the ADR index\"), generate/maintain `docs/adr/index.md`:\n  ```\n  # Architecture Decision Records\n  | # | Date | Title | Status |\n  |---|---|---|---|\n  | 001 | 2026-05-21 | <title> | Proposed |\n  ```\n- **Log line** (emit after each ADR created):\n  `[ADR_CREATED] {\"id\":\"ADR-NNN\",\"title\":\"<short>\",\"reversible\":<true|false>}`\n\nA choice is architectural if it is hard to reverse, influences the project structure, or introduces a significant dependency.",
  "langue_recommandee": "en",
  "modeles_recommandes": [
    "claude-sonnet",
    "gpt-4o",
    "mistral-large"
  ],
  "source": {
    "auteur": "PromptSecOps",
    "organisation": "PromptSecOps",
    "url": null,
    "type": "editoriale"
  },
  "cumulable_avec": [
    "decision-trace-log-n2",
    "code-review-security-n2",
    "dependency-vulnerability-check-n2",
    "self-review-external-opinion-n2"
  ],
  "explication": "Le format ADR (Architecture Decision Record) est une pratique standard en ingénierie logicielle pour documenter les décisions architecturales et leur raisonnement. Sans ce prompt, un agent de développement ou une session de code avec un LLM produit des décisions architecturales implicites et non documentées — impossibles à auditer, à justifier ou à inverser intelligemment.\n\n**Quand l'utiliser :** dans toute session de développement avec un agent IA ou un copilote, particulièrement en début de projet ou lors de refactorings structurels.\n\n**Ce qu'il protège :** contre la dérive architecturale silencieuse et la perte d'historique des compromis acceptés. La condition « Révision suggérée si » donne une durée de vie intentionnelle à chaque décision. L'index versionné permet la traçabilité ISO 27002 §8.25 (Développement sécurisé).\n\n**Pour aller plus loin :** la discipline de cadrage d'un LLM développeur (modifications chirurgicales, simplicité, critères vérifiables) est traitée dans la doctrine [Cadrer son LLM développeur](https://promptsecops.fr/a-propos/cadrer-son-llm-developpeur/) — synthèse appliquée des principes popularisés par Andrej Karpathy fin janvier 2026, à combiner avec cette fiche en code review.",
  "installation": {
    "ou_quand": "Ce prompt s'installe **une fois au démarrage du projet** (dans `CLAUDE.md`, Custom Instructions, ou équivalent), puis s'active automatiquement **à chaque session de développement**. L'index ADR est mis à jour à la fin de chaque session ou sur demande explicite.",
    "moments": [
      "projet-debut",
      "session-debut"
    ],
    "exemples": [
      {
        "contexte": "Claude Code",
        "instruction": "Ajouter à `./CLAUDE.md` (racine du projet). Claude Code créera et mettra à jour les fichiers `docs/adr/*.md` directement dans le repo, prêts à être commités."
      },
      {
        "contexte": "GitHub Copilot Chat / Cursor",
        "instruction": "Coller dans les **Custom Instructions** de l'extension ou du workspace. Pour Cursor : éditer `.cursorrules` à la racine du projet."
      },
      {
        "contexte": "Claude.ai (Projet « Dev »)",
        "instruction": "Créer un **Projet → Custom Instructions** dédié au développement de ce projet, coller le prompt. Téléverser les fichiers existants `docs/adr/*.md` dans les knowledge files du projet pour que Claude connaisse les ADR antérieurs."
      },
      {
        "contexte": "ChatGPT (Project ou Custom GPT « Architecte »)",
        "instruction": "Créer un **Projet ou Custom GPT** dédié → coller le prompt dans **Instructions**. Copier-coller manuellement les ADR générés dans le repo (ChatGPT n'écrit pas directement les fichiers)."
      }
    ]
  },
  "date_creation": "2026-05-18",
  "date_maj": "2026-05-24",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 290,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-18",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-24",
      "version": "1.1",
      "summary": "Ajout référence doctrine \"Cadrer son LLM développeur\""
    }
  ]
}
