create-go-plate 0.0.0-stage → 0.1.0
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 +14 -0
- package/LICENSE +21 -0
- package/README.md +103 -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 +32 -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,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
|
+
-->
|