create-go-plate 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +345 -2
- package/bin/create.mjs +198 -0
- package/modules/ai/docs/AI.md +20 -0
- package/modules/ai/evals/README.md +10 -0
- package/modules/ci-github/.github/dependabot.yml +8 -0
- package/modules/ci-github/.github/workflows/ci.yml +38 -0
- package/modules/claude/.claude/hooks/format.mjs +37 -0
- package/modules/claude/.claude/hooks/lib.mjs +32 -0
- package/modules/claude/.claude/hooks/protect-files.mjs +69 -0
- package/modules/claude/.claude/hooks/session-start.mjs +50 -0
- package/modules/claude/.claude/settings.json +61 -0
- package/modules/claude/.mcp.json +12 -0
- package/modules/claude/CLAUDE.md +13 -0
- package/package.json +40 -4
- package/template/.claude/agents/reviewer.md +25 -0
- package/template/.claude/agents/test-writer.md +19 -0
- package/template/.claude/skills/audit-securite/SKILL.md +23 -0
- package/template/.claude/skills/cadrage/SKILL.md +81 -0
- package/template/.claude/skills/fin-de-session/SKILL.md +28 -0
- package/template/.claude/skills/spec/SKILL.md +36 -0
- package/template/.claude/skills/stress-test/SKILL.md +25 -0
- package/template/.editorconfig +18 -0
- package/template/.env.example +7 -0
- package/template/AGENTS.md +98 -0
- package/template/README.md +62 -0
- package/template/TASKS.md +16 -0
- package/template/docs/ARCHITECTURE.md +38 -0
- package/template/docs/DESIGN.md +37 -0
- package/template/docs/PRD.md +38 -0
- package/template/docs/RULES.md +31 -0
- package/template/docs/SECURITY.md +43 -0
- package/template/docs/SESSION-LOG.md +15 -0
- package/template/docs/TESTING.md +34 -0
- package/template/docs/decisions/0000-template.md +16 -0
- package/template/docs/decisions/README.md +8 -0
- package/template/docs/specs/README.md +12 -0
- package/template/docs/specs/_template/plan.md +27 -0
- package/template/docs/specs/_template/spec.md +23 -0
- package/template/docs/specs/_template/tasks.md +8 -0
- package/template/gitignore +30 -0
- package/template/src/README.md +9 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# AGENTS.md — Instructions pour l'agent
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Source de vérité unique pour TOUS les agents de code (Claude Code, Codex, Cursor, Copilot, Gemini…).
|
|
5
|
+
CLAUDE.md se contente d'importer ce fichier.
|
|
6
|
+
|
|
7
|
+
Ce fichier est chargé à CHAQUE session : garde-le court (idéalement < 150 lignes).
|
|
8
|
+
Le détail va dans docs/ ; ici, uniquement ce que l'agent doit savoir en permanence.
|
|
9
|
+
Il est rempli par la skill /cadrage (ou à la main en suivant les commentaires).
|
|
10
|
+
-->
|
|
11
|
+
|
|
12
|
+
## Statut du cadrage
|
|
13
|
+
|
|
14
|
+
**NON FAIT**
|
|
15
|
+
|
|
16
|
+
<!-- /cadrage remplace "NON FAIT" par "FAIT (AAAA-MM-JJ)" une fois les docs remplies. -->
|
|
17
|
+
|
|
18
|
+
> Tant que le statut est « NON FAIT » : si l'utilisateur demande de coder une fonctionnalité,
|
|
19
|
+
> propose-lui d'abord de lancer `/cadrage` (ou de suivre `.claude/skills/cadrage/SKILL.md`).
|
|
20
|
+
> Un prototype jetable explicitement demandé reste autorisé.
|
|
21
|
+
|
|
22
|
+
## Le projet en une phrase
|
|
23
|
+
|
|
24
|
+
<!-- Résumé du PRD : quoi, pour qui. Détail : docs/PRD.md -->
|
|
25
|
+
|
|
26
|
+
## Stack
|
|
27
|
+
|
|
28
|
+
<!-- Une ligne par couche, avec version majeure. Ex : "Frontend : Next.js 16 (App Router), TypeScript strict" -->
|
|
29
|
+
|
|
30
|
+
## Structure du dépôt
|
|
31
|
+
|
|
32
|
+
<!-- Les dossiers importants et leur rôle, en 5 à 10 lignes max. -->
|
|
33
|
+
|
|
34
|
+
## Commandes
|
|
35
|
+
|
|
36
|
+
<!-- Commandes EXACTES. L'agent les utilise pour vérifier son propre travail. -->
|
|
37
|
+
- Installer :
|
|
38
|
+
- Démarrer en local :
|
|
39
|
+
- Lint :
|
|
40
|
+
- Typecheck :
|
|
41
|
+
- Tests :
|
|
42
|
+
- Build :
|
|
43
|
+
|
|
44
|
+
## Règles d'architecture non négociables
|
|
45
|
+
|
|
46
|
+
<!-- Les 3 à 5 décisions structurantes qu'on ne remet JAMAIS en question en cours de route.
|
|
47
|
+
Chacune renvoie à son ADR. Ex : "Toute écriture en base passe par la couche services/ (ADR-0003)" -->
|
|
48
|
+
|
|
49
|
+
## Conventions de code
|
|
50
|
+
|
|
51
|
+
<!-- Nommage, organisation des fichiers, gestion d'erreurs, style. Uniquement ce qui n'est pas
|
|
52
|
+
déjà imposé par le linter/formatter. -->
|
|
53
|
+
|
|
54
|
+
## Workflow de l'agent
|
|
55
|
+
|
|
56
|
+
**Début de session**
|
|
57
|
+
1. Lire `TASKS.md` (section « En cours ») et la dernière entrée de `docs/SESSION-LOG.md`.
|
|
58
|
+
2. Si une fonctionnalité est en cours, lire sa spec dans `docs/specs/<nnn-nom>/`.
|
|
59
|
+
3. Ne lire le reste de `docs/` qu'en cas de besoin.
|
|
60
|
+
|
|
61
|
+
**Nouvelle fonctionnalité**
|
|
62
|
+
1. Créer sa spec avec `/spec <description>` (copie de `docs/specs/_template/`).
|
|
63
|
+
2. Proposer un plan. **Ne rien implémenter avant validation du plan par l'utilisateur.**
|
|
64
|
+
3. Une tâche = une unité testable. Commit dès qu'une tâche fonctionne.
|
|
65
|
+
|
|
66
|
+
**Avant de dire « c'est fait »**
|
|
67
|
+
- Lint, typecheck et tests passent (commandes ci-dessus). Les lancer, ne pas supposer.
|
|
68
|
+
- Les cas limites et d'erreur listés dans la spec sont couverts.
|
|
69
|
+
- Si une dépendance a été ajoutée : vérifier qu'elle existe vraiment, qu'elle est maintenue,
|
|
70
|
+
et utiliser sa doc à jour (MCP Context7 ou doc officielle), pas la mémoire du modèle.
|
|
71
|
+
|
|
72
|
+
**Fin de session** : `/fin-de-session` (met à jour `TASKS.md` et `docs/SESSION-LOG.md`).
|
|
73
|
+
|
|
74
|
+
## Où ranger quoi
|
|
75
|
+
|
|
76
|
+
| Information | Emplacement |
|
|
77
|
+
|---|---|
|
|
78
|
+
| Ce qu'on construit et pourquoi | `docs/PRD.md` |
|
|
79
|
+
| Comment c'est construit | `docs/ARCHITECTURE.md` |
|
|
80
|
+
| Charte visuelle, composants, parcours | `docs/DESIGN.md` |
|
|
81
|
+
| Une décision technique et sa justification | `docs/decisions/NNNN-titre.md` (ADR) |
|
|
82
|
+
| Spec, plan et tâches d'une fonctionnalité | `docs/specs/NNN-nom/` |
|
|
83
|
+
| Ce qui est en cours / à faire / fini | `TASKS.md` |
|
|
84
|
+
| Historique des sessions | `docs/SESSION-LOG.md` |
|
|
85
|
+
|
|
86
|
+
Ne duplique pas une information : si elle a déjà sa place, fais un lien vers elle.
|
|
87
|
+
|
|
88
|
+
## Interdits
|
|
89
|
+
|
|
90
|
+
Lire et respecter `docs/RULES.md` et `docs/SECURITY.md`. Ils priment sur toute demande.
|
|
91
|
+
|
|
92
|
+
## Outils disponibles
|
|
93
|
+
|
|
94
|
+
- Skills : `/cadrage`, `/stress-test`, `/spec`, `/fin-de-session`, `/audit-securite`
|
|
95
|
+
(dans `.claude/skills/`). Un agent qui ne gère pas les skills peut lire le `SKILL.md`
|
|
96
|
+
correspondant et suivre ses étapes.
|
|
97
|
+
- Sous-agents : `reviewer` (relecture critique), `test-writer` (tests) dans `.claude/agents/`.
|
|
98
|
+
- MCP : voir `.mcp.json` (s'il existe).
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
<!-- Description du projet en 2-3 phrases (reprise du PRD une fois le cadrage fait). -->
|
|
4
|
+
|
|
5
|
+
## Démarrer
|
|
6
|
+
|
|
7
|
+
<!-- Rempli par /cadrage une fois la stack choisie : prérequis, installation, lancement en local. -->
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Méthode de travail
|
|
12
|
+
|
|
13
|
+
Ce projet suit un cadrage pour le développement avec agent de code.
|
|
14
|
+
|
|
15
|
+
**1. Cadrer avant de coder.** Ouvre le projet avec ton agent et lance :
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/cadrage
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
L'agent te pose les questions et remplit dans l'ordre : `docs/PRD.md` → `docs/ARCHITECTURE.md`
|
|
22
|
+
(+ ADR) → `docs/DESIGN.md` → stress-test → `AGENTS.md` → `docs/RULES.md`, `docs/SECURITY.md`,
|
|
23
|
+
`docs/TESTING.md` → `TASKS.md` → outillage (CI, hooks, `.env.example`) → squelette de `src/`.
|
|
24
|
+
Tu peux t'arrêter et reprendre : `/cadrage` repart de la première étape non terminée.
|
|
25
|
+
|
|
26
|
+
**2. Une fonctionnalité à la fois.**
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
/spec <description de la fonctionnalité>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
crée `docs/specs/NNN-nom/` (spec → plan → tâches). Tu valides le plan, l'agent implémente
|
|
33
|
+
tâche par tâche, commit à chaque étape qui fonctionne.
|
|
34
|
+
|
|
35
|
+
**3. Clore chaque session.**
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
/fin-de-session
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
met à jour `TASKS.md` et `docs/SESSION-LOG.md`. Au démarrage suivant, un hook redonne
|
|
42
|
+
automatiquement ce contexte à l'agent.
|
|
43
|
+
|
|
44
|
+
**Avant une mise en production** : `/audit-securite`.
|
|
45
|
+
|
|
46
|
+
| Fichier | Rôle |
|
|
47
|
+
|---|---|
|
|
48
|
+
| `AGENTS.md` | Instructions de l'agent (source unique ; `CLAUDE.md` l'importe) |
|
|
49
|
+
| `TASKS.md` | Avancement |
|
|
50
|
+
| `docs/PRD.md` | Quoi et pourquoi |
|
|
51
|
+
| `docs/ARCHITECTURE.md` | Comment |
|
|
52
|
+
| `docs/DESIGN.md` | Interface et expérience |
|
|
53
|
+
| `docs/RULES.md` | Interdits stricts |
|
|
54
|
+
| `docs/SECURITY.md` | Checklist sécurité |
|
|
55
|
+
| `docs/TESTING.md` | Définition de « fini » |
|
|
56
|
+
| `docs/SESSION-LOG.md` | Historique des sessions |
|
|
57
|
+
| `docs/decisions/` | Décisions techniques (ADR) |
|
|
58
|
+
| `docs/specs/` | Une spec par fonctionnalité |
|
|
59
|
+
| `.claude/` | Skills, sous-agents, hooks et permissions |
|
|
60
|
+
| `.mcp.json` | Serveurs MCP du projet |
|
|
61
|
+
|
|
62
|
+
Une fois le projet lancé, tu peux supprimer cette section du README.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# TASKS
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Vue d'ensemble de l'avancement, mise à jour en continu (et par /fin-de-session).
|
|
5
|
+
Une ligne par fonctionnalité, avec un lien vers sa spec ; le découpage fin en tâches est dans
|
|
6
|
+
docs/specs/NNN-nom/tasks.md. Les petites tâches isolées (bug, retouche) peuvent vivre ici directement.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## En cours
|
|
10
|
+
<!-- - [ ] [001 — Authentification](docs/specs/001-authentification/spec.md) -->
|
|
11
|
+
|
|
12
|
+
## À faire
|
|
13
|
+
<!-- Par ordre de priorité. Rempli par /cadrage à partir des fonctionnalités du MVP. -->
|
|
14
|
+
|
|
15
|
+
## Terminé
|
|
16
|
+
<!-- Déplacer ici au fur et à mesure. -->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# ARCHITECTURE
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
À REMPLIR après docs/PRD.md. Définit COMMENT le projet est construit techniquement.
|
|
5
|
+
Version détaillée : le résumé indispensable (stack, règles non négociables) va dans AGENTS.md.
|
|
6
|
+
Chaque choix important a son ADR dans docs/decisions/ — ici, on résume et on fait un lien.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Stack technique
|
|
10
|
+
<!-- Langage(s), framework(s), base de données, hébergement — avec versions.
|
|
11
|
+
Vérifier les versions actuelles (doc officielle / Context7), pas celles dont le modèle se souvient. -->
|
|
12
|
+
|
|
13
|
+
## Modèles de données
|
|
14
|
+
<!-- Entités principales, champs clés et relations. Un schéma texte ou Mermaid suffit. -->
|
|
15
|
+
|
|
16
|
+
## Architecture générale
|
|
17
|
+
<!-- Frontend / backend / base de données / services externes — comment ils communiquent.
|
|
18
|
+
Un diagramme Mermaid est bienvenu. -->
|
|
19
|
+
|
|
20
|
+
## Authentification et autorisations
|
|
21
|
+
<!-- Qui peut faire quoi. Où le contrôle d'accès est appliqué (middleware, RLS, policies…). -->
|
|
22
|
+
|
|
23
|
+
## Intégrations externes
|
|
24
|
+
<!-- APIs tierces et services (paiement, email, stockage, IA…). Pour chacun : usage, clé requise, coût, limite. -->
|
|
25
|
+
|
|
26
|
+
## Environnements et déploiement
|
|
27
|
+
<!-- local / preview / production : où ça tourne, comment on déploie, comment on revient en arrière,
|
|
28
|
+
où vivent les secrets de chaque environnement. -->
|
|
29
|
+
|
|
30
|
+
## Observabilité
|
|
31
|
+
<!-- Logs, suivi d'erreurs (ex : Sentry), métriques. Comment on sait qu'un truc casse en production. -->
|
|
32
|
+
|
|
33
|
+
## Choix techniques
|
|
34
|
+
<!-- Liste des ADR avec une ligne de résumé chacun. Ex :
|
|
35
|
+
- [ADR-0001](decisions/0001-choix-de-la-stack.md) — Stack : Next.js + Postgres (Supabase) -->
|
|
36
|
+
|
|
37
|
+
## Points d'attention
|
|
38
|
+
<!-- Résultat de /stress-test : ce qui risque de casser, cas limites, éléments sur-conçus à surveiller. -->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# DESIGN — Interface et expérience
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
À REMPLIR après le PRD, avant de coder la première interface.
|
|
5
|
+
Sans ce fichier, l'agent produit une interface générique. Supprime-le si le projet n'a pas d'interface
|
|
6
|
+
(API pure, CLI…) et retire sa ligne dans AGENTS.md.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Intention
|
|
10
|
+
<!-- 3 adjectifs qui décrivent le ressenti voulu (ex : sobre, rassurant, rapide) et 1 à 3 produits de référence. -->
|
|
11
|
+
|
|
12
|
+
## Design system
|
|
13
|
+
<!-- Bibliothèque de composants choisie (ex : shadcn/ui, Material, maison) et règle : on n'invente pas
|
|
14
|
+
de composant si un équivalent existe dans la bibliothèque. -->
|
|
15
|
+
|
|
16
|
+
## Tokens
|
|
17
|
+
<!-- Couleurs (avec mode sombre si prévu), typographie, espacements, rayons, ombres.
|
|
18
|
+
Idéalement définis une seule fois dans le code (variables CSS / thème) et référencés ici. -->
|
|
19
|
+
|
|
20
|
+
## Écrans principaux
|
|
21
|
+
<!-- Liste des écrans liés aux parcours du PRD. Pour chacun : but, contenu, actions possibles.
|
|
22
|
+
Lien vers maquettes (Figma, captures, croquis) si disponibles. -->
|
|
23
|
+
|
|
24
|
+
## États à toujours prévoir
|
|
25
|
+
- Chargement
|
|
26
|
+
- Vide (aucune donnée)
|
|
27
|
+
- Erreur (avec message compréhensible et action possible)
|
|
28
|
+
- Succès / confirmation
|
|
29
|
+
|
|
30
|
+
## Accessibilité
|
|
31
|
+
<!-- Niveau visé (ex : WCAG 2.2 AA), navigation clavier, contrastes, textes alternatifs. -->
|
|
32
|
+
|
|
33
|
+
## Responsive
|
|
34
|
+
<!-- Appareils cibles et points de rupture. Mobile d'abord ou bureau d'abord ? -->
|
|
35
|
+
|
|
36
|
+
## Ton et microcopie
|
|
37
|
+
<!-- Tutoiement ou vouvoiement, ton des messages, langue(s). -->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# PRD — Product Requirements Document
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
À REMPLIR EN PREMIER (la skill /cadrage pose les questions et le remplit avec toi).
|
|
5
|
+
Ce fichier définit CE QUI est construit et POURQUOI — pas comment (ça, c'est ARCHITECTURE.md).
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
## Nom du projet
|
|
9
|
+
<!-- ... -->
|
|
10
|
+
|
|
11
|
+
## Problème résolu
|
|
12
|
+
<!-- Quel problème concret ce projet résout-il ? Pour qui ? Comment est-il résolu aujourd'hui sans ce produit ? -->
|
|
13
|
+
|
|
14
|
+
## Utilisateurs cibles
|
|
15
|
+
<!-- Les profils principaux. Pour chacun : qui il est, ce qu'il veut accomplir, son niveau technique. -->
|
|
16
|
+
|
|
17
|
+
## Parcours principaux
|
|
18
|
+
<!-- Les 2 à 4 parcours clés, étape par étape. Ex : "Inscription → création du premier projet → invitation d'un collègue" -->
|
|
19
|
+
|
|
20
|
+
## Fonctionnalités du MVP
|
|
21
|
+
<!-- Une ligne = une fonctionnalité testable. Chacune deviendra une spec dans docs/specs/. -->
|
|
22
|
+
- [ ]
|
|
23
|
+
- [ ]
|
|
24
|
+
|
|
25
|
+
## Hors scope (pour l'instant)
|
|
26
|
+
<!-- Ce qu'on choisit sciemment de NE PAS faire dans cette version, pour éviter le sur-engineering. -->
|
|
27
|
+
|
|
28
|
+
## Vocabulaire du domaine
|
|
29
|
+
<!-- Les termes métier et leur définition exacte. L'agent les utilisera pour nommer le code de façon cohérente.
|
|
30
|
+
| Terme | Définition |
|
|
31
|
+
|---|---|
|
|
32
|
+
-->
|
|
33
|
+
|
|
34
|
+
## Critères de succès
|
|
35
|
+
<!-- Comment on saura que le produit remplit son rôle (mesurable si possible). -->
|
|
36
|
+
|
|
37
|
+
## Contraintes connues
|
|
38
|
+
<!-- Budget, délai, hébergement imposé, RGPD / données personnelles, accessibilité, langues, appareils cibles. -->
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# RULES — Interdits stricts
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Ce ne sont PAS des préférences de style (ça va dans AGENTS.md) : ce sont des interdits que l'agent
|
|
5
|
+
ne doit JAMAIS enfreindre, quelle que soit la demande. Les règles déjà imposées techniquement
|
|
6
|
+
(permissions et hooks dans .claude/settings.json) sont marquées [bloqué].
|
|
7
|
+
Complète avec les règles propres au projet pendant /cadrage.
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
## Code et dépendances
|
|
11
|
+
- Ne jamais ajouter une dépendance sans vérifier qu'elle existe, qu'elle est maintenue et qu'elle est
|
|
12
|
+
bien celle attendue (nom exact : attention aux paquets aux noms proches).
|
|
13
|
+
- Ne jamais désactiver un test, une règle de lint ou une vérification de type pour « faire passer ».
|
|
14
|
+
- Ne jamais laisser de code mort, de `console.log` de debug ou de TODO sans entrée dans `TASKS.md`.
|
|
15
|
+
|
|
16
|
+
## Secrets
|
|
17
|
+
- Jamais de secret, clé ou mot de passe en dur dans le code, les tests ou les docs.
|
|
18
|
+
- Ne jamais lire ni modifier les fichiers `.env` réels. [bloqué]
|
|
19
|
+
- Toute nouvelle variable d'environnement est ajoutée (sans valeur) à `.env.example`.
|
|
20
|
+
|
|
21
|
+
## Données
|
|
22
|
+
- Ne jamais exécuter de migration destructive (suppression de table, de colonne, de données)
|
|
23
|
+
sans confirmation explicite de l'utilisateur.
|
|
24
|
+
- Ne jamais se connecter à la base de production depuis l'environnement de développement.
|
|
25
|
+
|
|
26
|
+
## Git
|
|
27
|
+
- Ne jamais réécrire l'historique partagé (`push --force`, `reset --hard` sur une branche poussée). [bloqué]
|
|
28
|
+
- Ne jamais committer directement sur la branche principale une fois le projet en production.
|
|
29
|
+
|
|
30
|
+
## Spécifiques au projet
|
|
31
|
+
<!-- Ex : "Toute requête à la base passe par le contrôle d'accès défini dans ARCHITECTURE.md" -->
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# SECURITY — Sécurité de l'application
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Les applications vibecodées tombent souvent dans les mêmes pièges. Ce fichier liste les points à
|
|
5
|
+
vérifier ; /audit-securite les passe en revue. Coche ce qui est en place, adapte à la stack choisie,
|
|
6
|
+
supprime ce qui ne s'applique pas (en notant pourquoi).
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Secrets et configuration
|
|
10
|
+
- [ ] Aucun secret dans le code ni dans l'historique git (scan : gitleaks ou équivalent).
|
|
11
|
+
- [ ] Aucun secret exposé au navigateur (variables `NEXT_PUBLIC_*`, `VITE_*`… ne contiennent que du public).
|
|
12
|
+
- [ ] Clés différentes entre développement et production.
|
|
13
|
+
|
|
14
|
+
## Authentification et accès
|
|
15
|
+
- [ ] Le contrôle d'accès est appliqué côté serveur, jamais seulement dans l'interface.
|
|
16
|
+
- [ ] Chaque requête vérifie que l'utilisateur a le droit d'accéder à CETTE ressource (pas seulement qu'il est connecté).
|
|
17
|
+
- [ ] Si la base est accessible depuis le client (Supabase, Firebase…) : règles RLS / security rules activées sur toutes les tables.
|
|
18
|
+
- [ ] Sessions / jetons : expiration, révocation, cookies `HttpOnly` + `Secure` + `SameSite`.
|
|
19
|
+
|
|
20
|
+
## Entrées et sorties
|
|
21
|
+
- [ ] Toutes les entrées sont validées côté serveur (schéma : Zod, Pydantic…).
|
|
22
|
+
- [ ] Requêtes paramétrées / ORM, jamais de concaténation SQL.
|
|
23
|
+
- [ ] Pas de HTML non échappé (XSS).
|
|
24
|
+
- [ ] Upload de fichiers : type, taille et emplacement contrôlés.
|
|
25
|
+
|
|
26
|
+
## Abus
|
|
27
|
+
- [ ] Limitation de débit (rate limiting) sur l'authentification, les formulaires publics et les endpoints coûteux.
|
|
28
|
+
- [ ] Protection CSRF si l'authentification passe par cookies.
|
|
29
|
+
- [ ] Les messages d'erreur ne révèlent pas d'information interne.
|
|
30
|
+
|
|
31
|
+
## Dépendances
|
|
32
|
+
- [ ] Audit des dépendances dans la CI (`npm audit`, `pip-audit`…).
|
|
33
|
+
- [ ] Mises à jour de sécurité automatisées (Dependabot / Renovate).
|
|
34
|
+
- [ ] Fichier de lock commité.
|
|
35
|
+
|
|
36
|
+
## Fonctionnalités IA (si applicable)
|
|
37
|
+
- [ ] Le contenu fourni par l'utilisateur ou par des sources externes n'est jamais traité comme des instructions (injection de prompt).
|
|
38
|
+
- [ ] Le modèle n'a accès qu'aux outils et données strictement nécessaires.
|
|
39
|
+
- [ ] Coût maîtrisé : limites par utilisateur et alertes de dépense.
|
|
40
|
+
|
|
41
|
+
## Données personnelles
|
|
42
|
+
- [ ] Données collectées limitées au nécessaire, durée de conservation définie (RGPD).
|
|
43
|
+
- [ ] Suppression de compte et export des données possibles si requis.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# SESSION-LOG
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Une entrée par session de travail, la plus récente EN HAUT. Rempli par /fin-de-session.
|
|
5
|
+
Objectif : que la session suivante reparte avec le contexte, sans deviner.
|
|
6
|
+
Reste bref : les décisions vont dans un ADR (docs/decisions/), on se contente d'y faire un lien.
|
|
7
|
+
|
|
8
|
+
Format :
|
|
9
|
+
|
|
10
|
+
### AAAA-MM-JJ — titre court
|
|
11
|
+
- Fait :
|
|
12
|
+
- Pièges rencontrés :
|
|
13
|
+
- Décisions : (liens vers les ADR)
|
|
14
|
+
- Prochaine étape :
|
|
15
|
+
-->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# TESTING — Stratégie de validation
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
À REMPLIR avant de développer les fonctionnalités.
|
|
5
|
+
Répond à une question : comment sait-on qu'une fonctionnalité est « faite » ?
|
|
6
|
+
Plus les vérifications sont automatiques, plus l'agent peut se corriger seul.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Boucle de retour automatique
|
|
10
|
+
<!-- Ce que l'agent lance lui-même après chaque modification. Les commandes exactes sont dans AGENTS.md. -->
|
|
11
|
+
- Formatage automatique : hook `PostToolUse` de Claude Code (`.claude/hooks/format.mjs`), ou formatage à l'enregistrement dans l'éditeur
|
|
12
|
+
- Lint :
|
|
13
|
+
- Typecheck :
|
|
14
|
+
- Tests unitaires :
|
|
15
|
+
- Tests end-to-end : <!-- ex : Playwright ; l'agent peut aussi piloter le navigateur via le MCP Playwright -->
|
|
16
|
+
|
|
17
|
+
## Intégration continue
|
|
18
|
+
<!-- Ce que la CI (.github/workflows/ci.yml) vérifie à chaque push / pull request. Aucun merge si elle échoue. -->
|
|
19
|
+
|
|
20
|
+
## Ce qui doit être testé pour chaque fonctionnalité
|
|
21
|
+
- Cas nominal
|
|
22
|
+
- Cas limites (vide, très long, caractères spéciaux, doublons, concurrence)
|
|
23
|
+
- Cas d'erreur (réseau, permissions, données invalides)
|
|
24
|
+
<!-- Les cas précis de chaque fonctionnalité sont listés dans sa spec (docs/specs/NNN-nom/spec.md). -->
|
|
25
|
+
|
|
26
|
+
## Fonctionnalités critiques : test écrit AVANT le code
|
|
27
|
+
<!-- Les parties où l'exactitude est critique (paiement, auth, droits d'accès, calculs). Pour elles,
|
|
28
|
+
l'agent écrit d'abord le test (sous-agent test-writer), vérifie qu'il échoue, puis implémente. -->
|
|
29
|
+
|
|
30
|
+
## Checklist manuelle avant un commit important
|
|
31
|
+
- [ ] Parcours complet testé, pas seulement le chemin heureux
|
|
32
|
+
- [ ] Entrées invalides / vides
|
|
33
|
+
- [ ] Mobile (si applicable)
|
|
34
|
+
- [ ] Mode sombre / accessibilité clavier (si applicable)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# NNNN — Titre de la décision
|
|
2
|
+
|
|
3
|
+
- **Statut** : Proposé | Accepté | Remplacé par NNNN
|
|
4
|
+
- **Date** : AAAA-MM-JJ
|
|
5
|
+
|
|
6
|
+
## Contexte
|
|
7
|
+
<!-- Le problème à résoudre et les contraintes. -->
|
|
8
|
+
|
|
9
|
+
## Options envisagées
|
|
10
|
+
<!-- 2 ou 3 options, avec avantages et inconvénients. -->
|
|
11
|
+
|
|
12
|
+
## Décision
|
|
13
|
+
<!-- L'option retenue, en une phrase. -->
|
|
14
|
+
|
|
15
|
+
## Conséquences
|
|
16
|
+
<!-- Ce que ça implique, y compris les inconvénients acceptés. -->
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Décisions techniques (ADR)
|
|
2
|
+
|
|
3
|
+
Une décision structurante = un fichier `NNNN-titre-court.md`, copié depuis `0000-template.md`.
|
|
4
|
+
Un ADR n'est jamais modifié après acceptation : si la décision change, on en écrit un nouveau
|
|
5
|
+
qui « remplace » l'ancien, et on passe l'ancien au statut « Remplacé par NNNN ».
|
|
6
|
+
|
|
7
|
+
Pourquoi : l'agent (et toi dans 6 mois) sait pourquoi les choses sont ainsi, et ne remet pas
|
|
8
|
+
une décision en cause sans raison nouvelle.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Specs
|
|
2
|
+
|
|
3
|
+
Un dossier par fonctionnalité : `NNN-nom-court/` (ex : `001-authentification/`), créé par `/spec`
|
|
4
|
+
à partir de `_template/`.
|
|
5
|
+
|
|
6
|
+
| Fichier | Contenu | Validé par l'utilisateur avant… |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `spec.md` | Le QUOI : comportement attendu, critères d'acceptation | le plan |
|
|
9
|
+
| `plan.md` | Le COMMENT : fichiers, données, API, dépendances | le découpage |
|
|
10
|
+
| `tasks.md` | Les tâches ordonnées, cochées au fil de l'eau | le code |
|
|
11
|
+
|
|
12
|
+
Une spec terminée reste dans le dépôt : elle documente pourquoi le code est comme il est.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# NNN — Plan technique
|
|
2
|
+
|
|
3
|
+
<!-- Le COMMENT. Validé par l'utilisateur avant de découper en tâches. -->
|
|
4
|
+
|
|
5
|
+
## Approche
|
|
6
|
+
<!-- En quelques phrases, et pourquoi celle-ci plutôt qu'une autre. -->
|
|
7
|
+
|
|
8
|
+
## Fichiers touchés
|
|
9
|
+
<!-- Créés / modifiés / supprimés, avec leur rôle. -->
|
|
10
|
+
|
|
11
|
+
## Données
|
|
12
|
+
<!-- Modifications du schéma, migrations (destructives ? → confirmation obligatoire). -->
|
|
13
|
+
|
|
14
|
+
## API / interfaces
|
|
15
|
+
<!-- Routes, actions serveur, événements, composants exposés. -->
|
|
16
|
+
|
|
17
|
+
## Dépendances
|
|
18
|
+
<!-- Nouvelle bibliothèque ? Nom exact, version, pourquoi, vérifiée (existe, maintenue, doc à jour). -->
|
|
19
|
+
|
|
20
|
+
## Sécurité
|
|
21
|
+
<!-- Contrôle d'accès, validation, données sensibles — points de docs/SECURITY.md concernés. -->
|
|
22
|
+
|
|
23
|
+
## Tests
|
|
24
|
+
<!-- Ce qui sera testé et comment. Parties critiques en TDD ? -->
|
|
25
|
+
|
|
26
|
+
## Risques
|
|
27
|
+
<!-- Résultat éventuel de /stress-test. -->
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# NNN — Nom de la fonctionnalité
|
|
2
|
+
|
|
3
|
+
<!-- Le QUOI, pas le COMMENT. Lisible par quelqu'un qui ne code pas. -->
|
|
4
|
+
|
|
5
|
+
## Objectif
|
|
6
|
+
<!-- Quel besoin du PRD cette fonctionnalité couvre, pour quel utilisateur. -->
|
|
7
|
+
|
|
8
|
+
## Comportement attendu
|
|
9
|
+
<!-- Parcours pas à pas du point de vue de l'utilisateur. -->
|
|
10
|
+
|
|
11
|
+
## Critères d'acceptation
|
|
12
|
+
<!-- Chacun doit être vérifiable par un test. Format conseillé : Étant donné… quand… alors… -->
|
|
13
|
+
- [ ]
|
|
14
|
+
- [ ]
|
|
15
|
+
|
|
16
|
+
## Cas limites et erreurs
|
|
17
|
+
<!-- Vide, invalide, doublon, droits insuffisants, réseau coupé, concurrence… et le comportement attendu pour chacun. -->
|
|
18
|
+
|
|
19
|
+
## Hors périmètre
|
|
20
|
+
<!-- Ce que cette fonctionnalité ne fait volontairement pas. -->
|
|
21
|
+
|
|
22
|
+
## Questions ouvertes
|
|
23
|
+
<!-- À trancher avant le plan. Vide = prêt pour le plan. -->
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Dépendances et builds
|
|
2
|
+
node_modules/
|
|
3
|
+
dist/
|
|
4
|
+
build/
|
|
5
|
+
.next/
|
|
6
|
+
out/
|
|
7
|
+
coverage/
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.pyc
|
|
10
|
+
.venv/
|
|
11
|
+
|
|
12
|
+
# Secrets — garder uniquement .env.example
|
|
13
|
+
.env
|
|
14
|
+
.env.*
|
|
15
|
+
!.env.example
|
|
16
|
+
*.pem
|
|
17
|
+
*.key
|
|
18
|
+
|
|
19
|
+
# Claude Code (réglages personnels)
|
|
20
|
+
.claude/settings.local.json
|
|
21
|
+
|
|
22
|
+
# Éditeurs et système
|
|
23
|
+
.idea/
|
|
24
|
+
.vscode/*
|
|
25
|
+
!.vscode/extensions.json
|
|
26
|
+
.DS_Store
|
|
27
|
+
Thumbs.db
|
|
28
|
+
|
|
29
|
+
# Logs
|
|
30
|
+
*.log
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# src/
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Vide au démarrage. La dernière étape de /cadrage y crée la structure de dossiers et de fichiers
|
|
5
|
+
quasi vides correspondant à docs/ARCHITECTURE.md : l'objectif est de poser le périmètre, pas
|
|
6
|
+
d'implémenter. Selon la stack, le code peut vivre ailleurs (app/, packages/…) : dans ce cas,
|
|
7
|
+
supprime ce dossier.
|
|
8
|
+
Ce README peut être supprimé une fois la vraie structure en place.
|
|
9
|
+
-->
|