feat(archetypes): add project archetype library + detection algorithm

Introduce ~/.claude/lib/project-archetypes/ with 25 archetype files
(web, mobile, APIs, CMS, infra, firmware, etc.) and the detection
algorithm in lib/archetype-detector.md. Consumed by /onboard STEP 1
to drive archetype-specific audit stacks and plugin recommendations.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
bastien 2026-04-21 22:37:07 +02:00
parent 72920e032e
commit 3c8b2a8f68
26 changed files with 3080 additions and 0 deletions

139
lib/archetype-detector.md Normal file
View File

@ -0,0 +1,139 @@
# ARCHETYPE DETECTOR
Logique de détection d'archétype projet consommée par `/onboard` STEP 1.
Aucune exécution autonome — ce fichier documente l'algorithme que le skill applique.
---
## Inputs
1. Répertoire projet (cwd)
2. Résultat filesystem scan (manifests, structure, deps)
3. Liste des archétypes disponibles : `~/.claude/lib/project-archetypes/*.md` (hors `_TEMPLATE.md`)
## Algorithme
### PHASE A — Collect signals
Lire chaque archétype. Pour chaque archétype, charger les blocs :
- Strong signals (weight=3)
- Medium signals (weight=2)
- Weak signals (weight=1)
Types de signaux (syntaxe à matcher) :
| Syntaxe | Vérification |
|---|---|
| `FILE: <path>` | `test -f <path>` (relatif au projet root) |
| `DIR: <path>/` | `test -d <path>` |
| `STRING_IN_FILE: <path> contient "<pattern>"` | `grep -q "<pattern>" <path>` (fichier existe requis) |
| `DEP: <manifest> contient "<pkg>"` | parse manifest, vérifie clé `dependencies` OU `devDependencies` contient pkg |
| `EXT: N fichiers .<ext>` | `find . -name "*.<ext>" -not -path "*/node_modules/*" -not -path "*/.git/*" \| wc -l` → >= N |
| `TOOL: <cmd>` | `command -v <cmd>` existe |
| `REGEX: <path> matches "/<pattern>/"` | grep regex sur fichier |
### PHASE B — Score each archetype
Pour chaque archétype :
```
score_raw = Σ (signal_matched ? signal_weight : 0)
score_max = Σ signal_weight_total
score_pct = score_raw / score_max (si score_max > 0, sinon 0)
```
Aussi compter `strong_hits` : nombre de strong signals matchés.
### PHASE C — Rank + select
Classer archétypes par `score_raw` décroissant.
**Règles de sélection** (dans l'ordre) :
1. **Un seul archétype avec score_raw ≥ 6 ET strong_hits ≥ 1** → SELECTED, confiance HAUTE.
2. **Top archétype dépasse le 2ème de ≥ 50% ET strong_hits ≥ 1** → SELECTED, confiance MOYENNE.
3. **2-3 archétypes avec scores proches (delta < 30%)** → AMBIGUOUS → demander à l'utilisateur.
4. **Aucun archétype avec score_raw ≥ 3** → UNKNOWN → demander manuellement ou partir d'un gabarit "generic".
### PHASE D — Composition
Certains projets sont combinés. Cas de composition détectés AUTOMATIQUEMENT :
- **WordPress + WooCommerce** : archétype `wordpress` + overlay `woocommerce` (si détecté)
- **Next.js + backend séparé dans monorepo** : plugin-advisor détecte déjà `monorepo`, on applique l'archétype par package
- **Astro + React islands** : archétype principal `astro-static`, noter la présence d'islands React dans les signaux
- **Drupal multi-site** : archétype `drupal` avec flag multisite
Ne pas inventer de compositions non listées.
---
## Output format
```
ARCHETYPE DETECTION
─────────────────────
Scores (top 5) :
1. <name> score: XX/YY (zz%) — strong: N, medium: N, weak: N [SELECTED | CANDIDATE | REJECTED]
2. ...
SELECTED : <name> (confiance : HAUTE | MOYENNE | BASSE | AMBIGU)
COMPOSITION : <overlay si applicable, sinon "none">
JUSTIFICATION (signaux déterminants) :
✓ [strong] <signal>
✓ [medium] <signal>
✗ [strong] <signal> (attendu pour cet archétype, absent)
IMPLICATIONS AUTO-APPLIQUÉES :
- public : true | false
- database : required | optional | none
- audit_stack: [liste]
- plugins : [recommandations]
```
Si AMBIGUOUS :
```
⚠️ ARCHÉTYPE AMBIGU — plusieurs candidats proches :
A) <name> score: XX (signaux: ...)
B) <name> score: XX (signaux: ...)
C) <name> score: XX (signaux: ...)
D) None of the above — I'll describe it manually
Which one? (A / B / C / D)
```
Si UNKNOWN :
```
⚠️ AUCUN ARCHÉTYPE RECONNU
Je vois : <signaux détectés, ex : PHP files, no manifest, custom Makefile>
Questions manuelles :
1. Quel type de projet ? (web / API / CLI / lib / desktop / mobile / game / firmware / autre)
2. Public-facing (visible en recherche) ? (yes / no)
3. Utilise une base de données ? (yes / no / depends)
4. Stack principale ? (libre)
```
---
## Règles de robustesse
- **Ne jamais inventer un archétype** non présent dans `~/.claude/lib/project-archetypes/`.
- **Exclure** les dossiers `node_modules`, `.git`, `vendor`, `target`, `dist`, `build`, `.next`, `__pycache__` de tous les scans.
- **Timeout** : si un grep prend > 2s, l'abandonner et marquer le signal non-testé (ne compte pas dans le score).
- **Archétype non-monorepo** : si `monorepo` est détecté par plugin-advisor, passer la détection par package (un archetype par sous-package, pas un archetype global).
---
## Extension
Ajouter un nouvel archétype :
1. Créer `~/.claude/lib/project-archetypes/<name>.md` en respectant `_TEMPLATE.md`.
2. Tester avec `/onboard` en dry-run sur un projet connu de ce type.
3. Ajuster les weights si un signal s'avère trop discriminant/pas assez.
Retirer un archétype :
1. Supprimer le fichier.
2. Si des projets existants s'y référaient, migrer leur `CLAUDE.md` manuellement.

View File

@ -0,0 +1,75 @@
---
name: <archetype-id>
category: <cms | static | framework | api | cli | library | mobile | desktop | game | embedded | monorepo>
public: <true | false> # public-facing website (SEO/GEO relevant)
database: <required | optional | none>
hosting_hints:
- <shared | vps | managed | vercel | netlify | cloudflare-pages | docker | k8s | app-store>
audit_stack:
- analyze # dette technique (toujours)
- code-clean # style/dead code (toujours)
- seo # uniquement si public: true
- design-review # uniquement si UI présente (frontend / frontend-in-CMS)
- perf # lighthouse + bundle analyzer
- cso # sécurité — toujours recommandé si DB, auth, deps externes
- a11y # accessibilité — uniquement si UI
- doc # drift docs
plugins:
context7: <yes | no | optional> # utile si fast-libs dans l'archétype
ui-ux-pro-max: <yes | no | optional> # si frontend
gstack: <yes | no | optional> # si site déployable navigable
---
# <Archetype Name>
## Detection signals
**Logique OR — toute combinaison ci-dessous = CANDIDAT.**
Le score final pour cet archétype = `matches / total_signals`. Plus un signal est rare/spécifique, plus il est discriminant.
### Strong signals (score × 3) — quasi-unique à cet archétype
- `FILE: <chemin exact>` — description
- `STRING_IN_FILE: <fichier> contient "<pattern>"`
- `DEP: <manifest> contient "<package>"`
### Medium signals (score × 2)
- `FILE: <chemin>` — description
- `DIR: <dossier>/`
### Weak signals (score × 1) — non discriminants seuls
- `EXT: N fichiers .<ext>`
- `TOOL: <commande> disponible`
## Implications
Liste ce que cet archétype implique automatiquement, sans questionner l'utilisateur :
- Hébergement probable : ...
- Base de données : requise / optionnelle / aucune
- SEO/GEO : critique / important / N/A
- Surface sécurité : large / moyenne / petite
- UI/UX : critique / important / aucune
## Typical pain points
Problèmes typiques que l'audit DOIT chercher pour cet archétype :
- ...
- ...
## Interview questions (adaptive)
Questions à poser EN PLUS du set minimum business (users, stade, deadlines, équipe, légal, perfs).
Chaque question a un hint `[if: <condition>]` si elle ne s'applique que conditionnellement.
- Question 1 ?
- Question 2 ? `[if: public=true]`
- Question 3 ?
## Plugin recommendations
Rationale court pour chaque plugin recommandé ou désactivé pour cet archétype.
## Example project layout
```
<tree minimal pour reconnaître l'archétype à l'œil>
```

View File

@ -0,0 +1,102 @@
---
name: astro-static
category: framework
public: true
database: optional
hosting_hints:
- netlify
- cloudflare-pages
- vercel
- github-pages
- shared
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: optional
ui-ux-pro-max: yes
gstack: optional
---
# Astro (static / islands)
Framework statique avec islands (React/Vue/Svelte). Zéro JS par défaut. Idéal portfolio, docs, blog, landing.
## Detection signals
### Strong signals (×3)
- FILE: `astro.config.mjs` OR `astro.config.ts` OR `astro.config.js`
- DEP: `package.json` contient "astro"
### Medium signals (×2)
- DIR: `src/pages/` AVEC FILE `.astro`
- EXT: 3+ fichiers .astro
- DIR: `src/components/`
- DIR: `src/layouts/`
### Weak signals (×1)
- DIR: `src/content/` (Content Collections)
- DEP: `@astrojs/*` (integrations : react, tailwind, mdx, sitemap)
- FILE: `tsconfig.json` avec "extends": "astro/tsconfigs/*"
### Composition overlays
- Islands framework : DEP `@astrojs/react`, `@astrojs/vue`, `@astrojs/svelte` → noter
- SSR activé : `astro.config.*` contient `output: 'server'` → change implications (pas 100% static)
## Implications
- **Hébergement** : Netlify, Cloudflare Pages, Vercel, GitHub Pages, shared (static)
- **Base de données** : OPTIONNELLE — rare en mode statique, possible via Astro DB ou backend externe
- **SEO/GEO** : EXCELLENT — HTML statique au build, parfait pour AI crawlers
- **Surface sécurité** : PETITE (pas de backend en mode static) / MOYENNE (mode SSR)
- **UI/UX** : CRITIQUE
## Typical pain points
- `@astrojs/sitemap` non installé/configuré
- `@astrojs/mdx` mal configuré (pas de frontmatter type-safe)
- Content Collections sans schéma Zod
- Images non optimisées (pas `<Image>` d'Astro)
- `client:load` utilisé partout (défait l'intérêt des islands)
- Pas de `robots.txt`
- Pas de JSON-LD / Schema.org
- View Transitions non utilisées alors que pertinentes
- RSS feed manquant (blog)
## Interview questions (adaptive)
En plus du set minimum business :
- Type de site : portfolio / blog / docs / landing / e-commerce / autre ?
- Islands framework si besoin d'interactivité : React / Vue / Svelte / Solid / aucun ?
- Content Collections utilisées ? (articles / projets / autre)
- Mode : static (par défaut) ou SSR (output: 'server') ?
- Déploiement : Netlify / Cloudflare / Vercel / GitHub Pages / autre ?
- i18n prévu ? (oui + quelles langues / non) `[if: public=true]`
- CMS headless couplé ? (Sanity / Contentful / Notion / aucun)
## Plugin recommendations
- **context7** : OPTIONAL — ON si Astro version récente + integrations nombreuses
- **ui-ux-pro-max** : ON — Astro est souvent choisi pour sites "beaux"
- **gstack** : OPTIONAL — utile pour Lighthouse
## Example project layout
```
astro.config.mjs
src/
pages/
index.astro
about.astro
blog/[slug].astro
layouts/
Base.astro
components/
Header.astro
Card.tsx (React island)
content/
blog/*.md
public/
favicon.svg
```

View File

@ -0,0 +1,102 @@
---
name: cli-tool
category: cli
public: false
database: none
hosting_hints:
- npm-registry
- pypi
- crates-io
- homebrew
- github-releases
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: optional
ui-ux-pro-max: no
gstack: no
---
# CLI Tool
Outil en ligne de commande — distribué via un registry (npm, PyPI, crates.io, Homebrew) ou binaire.
## Detection signals
### Strong signals (×3)
- STRING_IN_FILE: `package.json` contient "\"bin\":" (entry point CLI)
- STRING_IN_FILE: `setup.py` OR `pyproject.toml` contient "console_scripts" OR "[project.scripts]"
- STRING_IN_FILE: `Cargo.toml` contient "[[bin]]"
- FILE: `cmd/*/main.go` (convention Go CLI)
### Medium signals (×2)
- DEP: "commander", "yargs", "clap" (Rust), "click" (Python), "typer", "cobra" (Go), "argparse"
- FILE: `bin/*` executable
- FILE: `src/cli.ts` OR `src/cli.py` OR `src/cli.rs` OR `src/main.rs`
### Weak signals (×1)
- DEP: "chalk", "kleur", "colorama", "termcolor" (output coloré)
- DEP: "inquirer", "prompts", "questionary" (prompts interactifs)
- FILE: `README.md` AVEC STRING "Usage:" OR "Installation:"
- FILE: `CHANGELOG.md`
### Counter-signals (exclusion)
- DEP: `react`, `next`, `vue`, `fastapi`, `express` → web, pas CLI
- FILE: `index.html` → web
## Implications
- **Distribution** : npm / PyPI / crates.io / Homebrew / binaires GitHub Releases
- **Base de données** : aucune (sauf outil qui manipule une DB externe)
- **SEO/GEO** : N/A
- **Surface sécurité** : MOYENNE — deps externes, exécution locale, parfois privilèges élevés
- **UI/UX** : N/A (interface texte)
## Typical pain points
- Pas de versioning semver strict (breaking changes silencieux)
- CHANGELOG absent ou pas à jour
- Tests des commandes absents (pytest-click, oclif-test, etc.)
- Pas de help text cohérent (`--help` incomplet)
- Exit codes incohérents (0 toujours, même en erreur)
- Output pas parseable (pas de `--json`)
- Pas de shell completion (bash/zsh/fish)
- Deps avec failles (npm audit / cargo audit / pip-audit non exécuté)
- Pas de cross-platform test (Win/macOS/Linux)
- Logs vers stdout au lieu de stderr (casse les pipes)
- Pas de gestion des signaux (SIGINT → cleanup ?)
- Installation instructions incomplètes dans README
## Interview questions (adaptive)
En plus du set minimum business :
- Langage : Node.js / Python / Rust / Go / autre ?
- Framework CLI : Commander / Clap / Click / Cobra / argparse / autre ?
- Distribution : npm / PyPI / crates.io / Homebrew / binaires GitHub / multiple ?
- OS cibles : Linux / macOS / Windows / WSL ?
- Interactivité : prompts interactifs / pure arguments CLI ?
- Output : texte formaté / JSON / les deux (`--json`) ?
- Shell completion fournie ? (oui / non / souhaité)
- Tests : couverture actuelle / cible ?
- Releases : manuelles / CI (goreleaser, semantic-release, release-please) ?
- Deps externes binaires requis ? (git, docker, ffmpeg, etc.)
## Plugin recommendations
- **context7** : OPTIONAL — ON si framework CLI récent
- **ui-ux-pro-max** : OFF (pas d'UI graphique)
- **gstack** : OFF
## Example project layout
```
package.json OR pyproject.toml OR Cargo.toml
src/
cli.ts OR cli.py OR main.rs
commands/
init.ts
build.ts
bin/
my-tool
tests/
README.md (Usage + Installation)
CHANGELOG.md
```

View File

@ -0,0 +1,121 @@
---
name: data-notebook
category: meta
public: false
database: optional
hosting_hints:
- local
- jupyterhub
- colab
- kaggle
- databricks
- sagemaker
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: optional
ui-ux-pro-max: no
gstack: no
---
# Data / Jupyter Notebook
Projet data science / ML axé sur notebooks Jupyter. Exploration, analyse, modèles. Pas d'application déployée au sens applicatif.
## Detection signals
### Strong signals (×3)
- EXT: 5+ fichiers `.ipynb`
- DEP: `requirements.txt` OR `pyproject.toml` OR `environment.yml` contient "jupyter" OR "jupyterlab" OR "notebook"
- FILE: `environment.yml` (Conda)
### Medium signals (×2)
- DIR: `notebooks/` OR `nb/` avec `.ipynb`
- DIR: `data/` OR `datasets/` (souvent gitignored)
- DEP: "pandas", "numpy", "matplotlib", "seaborn", "scikit-learn", "torch", "tensorflow", "jax"
- FILE: `Makefile` avec cibles data (download-data/, preprocess/, train/)
- FILE: `dvc.yaml` (DVC pipeline)
### Weak signals (×1)
- DIR: `models/` (trained artifacts)
- FILE: `.gitattributes` avec LFS rules
- DEP: "mlflow", "wandb", "tensorboard"
- DIR: `figures/` OR `plots/` (outputs)
### Counter-signals (exclusion)
- DEP: "streamlit" OR "gradio" OR "dash" + main entry point → data app UI (archétype à créer)
- DEP: "fastapi" / "flask" / "django" comme dep principale → API, pas notebook
- FILE: `setup.py` OR `pyproject.toml` AVEC `[project.scripts]` → package, pas notebook
## Implications
- **Exécution** : local / Google Colab / Kaggle / JupyterHub / Databricks / SageMaker
- **Base de données** : variable (souvent CSV/Parquet/DuckDB locaux, parfois DB externe)
- **SEO/GEO** : N/A
- **Surface sécurité** : SOUS-ESTIMÉE — notebooks souvent commités avec credentials, outputs, PII
- **UI/UX** : N/A (sauf si app Streamlit/Dash ajoutée)
## Typical pain points
- `.ipynb` committés avec **outputs** = fuite potentielle (données clients affichées)
- Credentials en dur dans cellules (API keys AWS, tokens Kaggle, mots de passe DB)
- PII dans outputs cellules (noms clients, emails, numéros carte)
- Datasets volumineux committés (pas de LFS / DVC / gitignore)
- `requirements.txt` non pinned → résultats non reproductibles
- Pas de seed random → runs non déterministes
- Notebooks monolithiques (10000+ lignes, cells non documentées)
- Logique dupliquée entre notebooks (pas de `src/lib.py`)
- Variables d'état entre cells (exécution non idempotente)
- Modèles trainés commités dans git (bloat repo)
- Pas de versioning data (DVC / lakeFS / Pachyderm absents)
- Expériences non trackées (MLflow / W&B absent)
- Pas de tests (pytest sur fonctions extraites)
- Conversion prod : notebook → script Python sans refactor (code non modulaire)
- GPU / environnement non documenté (CUDA version, cuDNN)
- Shared secrets dans environment.yml / requirements.txt
## Interview questions (adaptive)
En plus du set minimum business :
- Plateforme d'exécution : local / Colab / Kaggle / JupyterHub / Databricks / autre ?
- Python + libs stack principale ?
- Package manager : pip / poetry / uv / conda / mamba / pdm ?
- Datasets : taille moyenne ? où sont-ils stockés ? versionnés ?
- DVC / lakeFS / Git LFS pour data ?
- Tracking expériences : MLflow / W&B / TensorBoard / aucun ?
- Tests automatiques sur fonctions extraites ?
- Convention commit notebooks : nbstripout (outputs strippés) ou outputs inclus ?
- GPU requis ? CUDA version ?
- But final : exploration ponctuelle / modèle en prod / rapport reproductible / papier / autre ?
- Si prod : comment le modèle sort du notebook (export pickle/ONNX/API) ?
- RGPD / données sensibles dans les datasets ?
## Plugin recommendations
- **context7** : OPTIONAL — ON pour libs modernes (Pytorch, JAX, Transformers qui évoluent)
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
environment.yml OR requirements.txt OR pyproject.toml
notebooks/
01-exploration.ipynb
02-preprocessing.ipynb
03-modeling.ipynb
04-evaluation.ipynb
src/
features.py (fonctions extraites, testables)
models.py
utils.py
data/ (GITIGNORED ou DVC-tracked)
raw/
interim/
processed/
models/ (artifacts — GITIGNORED ou LFS)
figures/
tests/
test_features.py
dvc.yaml (optional)
.pre-commit-config.yaml (nbstripout idéal)
Makefile
```

View File

@ -0,0 +1,132 @@
---
name: desktop-electron
category: desktop
public: false
database: optional
hosting_hints:
- github-releases
- autoupdate-servers
- mac-app-store
- microsoft-store
- snap-store
- aur
audit_stack:
- analyze
- code-clean
- cso
- design-review
- perf
- a11y
- doc
plugins:
context7: yes
ui-ux-pro-max: yes
gstack: optional
---
# Desktop Electron
Application desktop basée sur Electron (Chromium + Node.js). Distribution binaires pour macOS / Windows / Linux.
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient "electron"
- STRING_IN_FILE: tout .js/.ts du projet contient "app.whenReady()" OR "new BrowserWindow(" OR "require('electron')" OR "import .* from 'electron'"
- FILE: `electron-builder.json` OR `electron-builder.yml` OR `forge.config.js` OR `forge.config.ts`
### Medium signals (×2)
- DEP: "electron-builder" OR "@electron-forge/cli"
- DIR: `src/main/` (main process) AND `src/renderer/` (renderer)
- FILE: `main.js` OR `main.ts` OR `src/main/index.ts` (main process entry)
- FILE: `preload.js` OR `src/preload/index.ts`
### Weak signals (×1)
- DIR: `build/` avec icons (icon.icns, icon.ico, icon.png)
- DEP: "electron-updater"
- DEP: "electron-store"
- FILE: `.env.production` avec vars Electron
### Composition overlays
- **Tauri** (NOT Electron but similar archetype) : DEP `@tauri-apps/*` ET `src-tauri/` — à traiter avec archétype `desktop-tauri` (à créer plus tard)
- **Frontend framework inside renderer** : React / Vue / Svelte detected → noter
## Implications
- **Distribution** : GitHub Releases, autoupdate servers, Mac App Store, Microsoft Store, Snap Store, AUR
- **Base de données** : OPTIONNELLE — souvent SQLite via better-sqlite3 ou electron-store (JSON)
- **SEO/GEO** : N/A (app native desktop)
- **Surface sécurité** : **CRITIQUE** — accès file system, shell, nodeIntegration si mal config = RCE
- **UI/UX** : CRITIQUE — conventions desktop par OS
## Typical pain points
- `nodeIntegration: true` et `contextIsolation: false` dans BrowserWindow → XSS = exécution code natif arbitraire
- `contextBridge` non utilisé (preload expose Node API brut au renderer)
- `webSecurity: false` (CORS désactivé dans renderer — risque énorme)
- Secrets / API keys dans le bundle (déchiffrable par n'importe quel user — asar non chiffré)
- URL chargée remote dans BrowserWindow → MITM sur un site compromis = RCE
- Pas de code signing (macOS Gatekeeper / Windows SmartScreen avertissements)
- Pas d'autoupdate (`electron-updater`) → users bloqués sur vieilles versions faillibles
- Electron version obsolète (updates mensuelles critiques)
- Shell IPC non validé (renderer peut exécuter commandes shell via ipcMain mal filtré)
- `navigator.userAgent` leak (app detectable, fingerprint)
- Menu context / clipboard : permissions non gérées
- Deep links (`app://`) non validés → phishing
- Accessibilité OS : ARIA ignoré, screen readers non testés
- Taille du bundle énorme (Chromium = 150-200MB)
- Performances : main process bloqué par ops synchrones (fs sync dans main)
- Memory leaks : BrowserWindows non fermés, event listeners non cleanup
- Pas de crash reporting natif (`electron-log`, Sentry Electron)
- Pas de tests E2E (Spectron déprécié, Playwright Electron recommandé)
## Interview questions (adaptive)
En plus du set minimum business :
- Framework build : electron-builder / electron-forge / autre ?
- Frontend dans renderer : React / Vue / Svelte / vanilla / autre ?
- IPC : `ipcMain`+`ipcRenderer` directs / `contextBridge` secure / `@electron/remote` (déprécié) ?
- BrowserWindow config : nodeIntegration / contextIsolation / sandbox / webSecurity ?
- Auth : OAuth desktop / tokens locaux / SSO entreprise ?
- Stockage : electron-store / SQLite (better-sqlite3) / IndexedDB / file system direct / cloud ?
- Code signing : macOS (Developer ID + notarization) / Windows (EV Cert) / aucun ?
- Autoupdate : electron-updater / custom / aucun ?
- Distribution : GitHub Releases / Homebrew Cask / MS Store / Mac App Store / autre ?
- OS cibles : macOS min / Windows min / Linux distros ?
- Architecture : x64 / arm64 / universal2 (macOS) ?
- Electron version + cycle d'upgrade ?
- Crash reporting : Sentry Electron / electron-log / aucun ?
- Analytics : respecte RGPD (opt-in, désactivable) ?
- Tests : unit + Playwright Electron ?
- CI/CD : builds multi-OS (GitHub Actions matrix / CircleCI) ?
- Deep links / protocol handlers registered ?
- App menu + accelerators ?
- Accessibilité OS native testée ?
## Plugin recommendations
- **context7** : ON — Electron évolue vite (mensuel), breaking changes fréquents
- **ui-ux-pro-max** : ON
- **gstack** : OPTIONAL — Playwright peut tester le renderer
## Example project layout
```
package.json
forge.config.ts OR electron-builder.json
src/
main/
index.ts (main process)
window.ts
menu.ts
ipc-handlers.ts
preload/
index.ts (contextBridge)
renderer/
index.html
main.tsx (React/Vue/Svelte app)
components/
resources/
icon.icns
icon.ico
icon.png
build/
entitlements.mac.plist
background.png
.env.example
```

View File

@ -0,0 +1,113 @@
---
name: docker-compose-infra
category: meta
public: false
database: optional
hosting_hints:
- vps
- bare-metal
- homelab
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: no
ui-ux-pro-max: no
gstack: no
---
# Docker Compose Infrastructure
Stack docker-compose orchestrant services externes (DB, cache, reverse proxy, monitoring, apps déployables) — pas de code applicatif au root. Exemple : stack homelab / VPS / environnement local partagé.
## Detection signals
### Strong signals (×3)
- FILE: `docker-compose.yml` OR `docker-compose.yaml`
- FILE: `compose.yml` OR `compose.yaml` (syntaxe moderne)
- FILE: plusieurs `docker-compose.*.yml` (override, prod, dev)
### Medium signals (×2)
- FILE: `.env.example` avec vars de services (POSTGRES_PASSWORD, REDIS_PASSWORD, etc.)
- DIR: `configs/` OR `conf/` OR `volumes/` avec configs de services (nginx.conf, redis.conf, postgresql.conf)
- FILE: `Makefile` avec cibles docker (`up:`, `down:`, `restart:`, `logs:`)
- DIR: `traefik/` OR `nginx/` OR `caddy/` (reverse proxy configs)
- FILE: `.dockerignore`
### Weak signals (×1)
- DIR: `scripts/` avec scripts d'init DB / backup
- FILE: `backup.sh` OR `restore.sh`
- DIR: `data/` (gitignored, volumes montés)
### Counter-signals (exclusion)
- FILE: `package.json` AVEC deps applicatives (react/next/express/...) → c'est une app, pas de l'infra-only
- FILE: `pyproject.toml` AVEC `[project.scripts]` → app Python
- FILE: `Cargo.toml` → app Rust
- DIR: `src/` significatif avec code métier → c'est une app, pas du pur infra
## Implications
- **Hébergement** : VPS / bare-metal / homelab (Raspberry Pi, NAS)
- **Base de données** : souvent incluse dans la stack (Postgres/MySQL/Redis/Mongo)
- **SEO/GEO** : N/A
- **Surface sécurité** : GRANDE — secrets, ports exposés, privilèges containers
- **UI/UX** : N/A
## Typical pain points
- `.env` committé avec credentials
- Images `:latest` (pas de versions pinnées) → upgrades casse-stack
- `privileged: true` abusif
- Ports exposés sur 0.0.0.0 sans firewall (DB accessible Internet !)
- Pas de healthchecks
- Pas de restart policy
- Volumes non nommés (data perdue à la recréation)
- Pas de backup automatique (cron, restic, borg)
- Logs non centralisés ni rotés
- Reverse proxy sans TLS (Let's Encrypt absent)
- Network default bridge avec tous services (pas d'isolation)
- User `root` dans containers (privilege escalation)
- Resources limits absents (un service OOM-kill les autres)
- Secrets en environment (visibles `docker inspect`)
- Images Dockerfile non custom : `postgres:15` nu sans hardening
## Interview questions (adaptive)
En plus du set minimum business :
- OS host : Ubuntu / Debian / CoreOS / autre ?
- Services principaux dans la stack (DB / cache / reverse proxy / monitoring / apps) ?
- Reverse proxy : Traefik / Caddy / nginx / aucun ?
- TLS : Let's Encrypt / certs custom / aucun ?
- Secrets management : .env / Docker secrets / Vault / autre ?
- Backup strategy : aucun / manuel / automatisé (quoi ?) ?
- Monitoring / logs : Portainer / Grafana / Loki / ELK / aucun ?
- Uptime monitoring externe : UptimeRobot / BetterStack / aucun ?
- Mise à jour des images : manuelle / Watchtower / Renovate / aucune ?
- Restrictions réseau (firewall, fail2ban) ?
- Multi-env : dev + prod séparés ?
## Plugin recommendations
- **context7** : OFF (Docker/Compose stable)
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
docker-compose.yml
docker-compose.prod.yml (override prod)
.env.example
.dockerignore
Makefile (up:/down:/logs:/backup:)
configs/
nginx/
default.conf
traefik/
traefik.yml
dynamic.yml
postgres/
init.sql
scripts/
backup.sh
restore.sh
volumes/ (gitignored data)
README.md
```

View File

@ -0,0 +1,115 @@
---
name: dotfiles-meta
category: meta
public: false
database: none
hosting_hints:
- git-repo-personal
- github
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: no
ui-ux-pro-max: no
gstack: no
---
# Dotfiles / Meta-tooling / Config framework
Repo qui ne produit pas d'application mais du **configuration / scripts / conventions** — dotfiles personnels, framework de config partagée, collection de scripts de provisionning, hooks, templates.
Exemple : un repo `claude-config` avec scripts shell + settings JSON + templates + agents, sans langage applicatif compilé.
## Detection signals
### Strong signals (×3)
- FILE: `install.sh` OR `install-*.sh`
- FILE: `Makefile` AVEC STRING "install:" OR "link:" OR "setup:"
- DIR: `hooks/` (PAS git/.git/hooks — hooks custom projet)
- DIR: `templates/` AVEC contenu de config (non-code applicatif)
- FILE: `settings.json` à la racine (hors dossier d'app type .vscode/)
- STRING_IN_FILE: `README.md` contient "dotfiles" OR "config framework" OR "provisioning"
### Medium signals (×2)
- EXT: 5+ fichiers .sh
- EXT: 10+ fichiers .md
- FILE: `link.sh` OR `symlink.sh` OR `bootstrap.sh`
- DIR: `agents/` OR `skills/` OR `scripts/` (sans code applicatif associé)
- FILE: `plugins.lock.json` OR `plugins.json`
### Weak signals (×1)
- FILE: `CHANGELOG.md` de releases de config (pas d'app)
- FILE: `.gitmodules` (sub-projects config)
- FILE: `doctor.sh` OR `health.sh`
- DIR: `lib/` contenant surtout du .sh ou .md (pas du code applicatif)
### Counter-signals (exclusion — si matché, rejette)
- FILE: `package.json` AVEC DEPS applicatives (react/next/express/etc.)
- FILE: `pyproject.toml` AVEC `[project.scripts]` OR deps applicatives
- FILE: `Cargo.toml` AVEC `[[bin]]`
- FILE: `index.html` au root → web project
- FILE: `wp-config.php` → WordPress
## Implications
- **Distribution** : git clone personnel / GitHub public / fork
- **Base de données** : aucune
- **SEO/GEO** : N/A
- **Surface sécurité** : MOYENNE — scripts exécutés sur machine utilisateur, risque élevé si compromis (exécution arbitraire en shell)
- **UI/UX** : N/A
## Typical pain points
- Scripts shell sans `set -euo pipefail` → échecs silencieux
- Pas de `shellcheck` en CI
- Symlinks / installation non idempotents (re-run casse l'état)
- Pas de test / dry-run mode
- Pas de détection OS (cmd Linux-only qui casse sur macOS, ou inverse)
- Secrets en dur dans templates (API keys, tokens)
- `curl | sh` dans README (risque MITM, pas de checksum)
- Versioning flou (pas de CHANGELOG cohérent)
- Breaking changes non signalés aux utilisateurs
- Dépendances externes non vérifiées (brew/apt/npm auto-install sans consentement)
- Uninstall / rollback absent
- Documentation incomplète (comment étendre, comment contribuer)
- Pas de `LICENSE`
## Interview questions (adaptive)
En plus du set minimum business :
- Audience : personnel (dotfiles privés) / équipe / public open source ?
- OS cibles : Linux / macOS / WSL / Windows natif / tous ?
- Shell cible : bash / zsh / fish / multi ?
- Idempotence : les scripts peuvent-ils être re-exécutés sans casser ? (oui / non / à vérifier)
- Mode dry-run / preview disponible ? (oui / non / souhaité)
- Tests automatiques : shellcheck / bats / aucun ?
- Distribution : git clone manuel / installer en un liner / brew tap / autre ?
- Dépendances externes auto-installées ? (brew/apt/npm/pip) — avec consentement utilisateur ?
- Uninstall prévu ? (oui / non)
- Versioning : semver / dates / aucun ?
- `CHANGELOG.md` maintenu ? (oui / non)
- Hébergement : GitHub public / privé / GitLab / autre ?
## Plugin recommendations
- **context7** : OFF — pas de fast-libs
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
install.sh
link.sh
doctor.sh
Makefile
CLAUDE.md (si le repo lui-même est un contexte Claude)
README.md
CHANGELOG.md
settings.json (config globale outil)
plugins.lock.json (lockfile d'extensions)
agents/ (agents custom)
skills/ (skills custom)
hooks/ (hooks projet, pas git)
templates/ (templates config fournis)
lib/ (helpers shell)
tasks/
```

View File

@ -0,0 +1,124 @@
---
name: drupal
category: cms
public: true
database: required
hosting_hints:
- shared
- vps
- acquia
- pantheon
- platform-sh
- docker
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: no
ui-ux-pro-max: optional
gstack: optional
---
# Drupal
CMS PHP/MySQL enterprise. Architecture modulaire. Thèmes custom, modules contrib + custom. Headless possible (Drupal API + frontend découplé).
## Detection signals
### Strong signals (×3)
- FILE: `sites/default/settings.php`
- FILE: `core/lib/Drupal.php`
- DIR: `core/`
- STRING_IN_FILE: `composer.json` contient "drupal/core" OR "drupal/core-recommended"
### Medium signals (×2)
- DIR: `modules/contrib/`
- DIR: `modules/custom/`
- DIR: `themes/custom/`
- DIR: `web/` (Composer-based install, `composer create-project drupal/recommended-project`)
- FILE: `composer.lock` contenant deps drupal
- FILE: `.drush/`
### Weak signals (×1)
- DIR: `vendor/`
- FILE: `.htaccess` contenant "RewriteRule .*\.php"
- FILE: `update.php`
- EXT: 20+ fichiers .php
### Composition overlays
- **Multisite** : STRING_IN_FILE `sites/sites.php` contient "$sites[" → noter multisite
- **Headless/decoupled** : DEP JSON:API activée (`core/modules/jsonapi/`) + frontend séparé → composer avec l'archetype frontend détecté
## Implications
- **Hébergement** : shared (rare pour Drupal), VPS, Acquia Cloud, Pantheon, platform.sh, Docker
- **Base de données** : MySQL/MariaDB/PostgreSQL REQUISE
- **SEO/GEO** : CRITIQUE
- **Surface sécurité** : TRÈS GRANDE — cœur + modules contrib + thème custom + permissions complexes
- **UI/UX** : thème-dependent
## Typical pain points
- Drupal core obsolète (Drupal 7 EOL, migration vers 10/11 critique)
- Modules contrib obsolètes → failles sécurité
- `settings.php` committé avec credentials DB
- DB_SECRET / hash_salt en dur
- Pas d'environnement staging / CI
- Permissions roles/users mal configurées
- Cache (Redis/Memcache) absent
- Vues complexes non optimisées (queries multi-joins)
- Composer.lock obsolète (drupal deps avec vulnérabilités)
- PHP version obsolète (< 8.1)
- Entity references sans index → slow queries
- Pas de CI pour les tests (PHPUnit/Behat ignorés)
- Configuration management non utilisé (changements DB non versionnés)
## Interview questions (adaptive)
En plus du set minimum business :
- Version Drupal ? (7 / 8 / 9 / 10 / 11)
- Hébergeur actuel ? (shared / VPS / Acquia / Pantheon / autre)
- Thème : custom ou contrib ?
- Modules custom importants (nombre + fonctionnalités) ?
- Architecture : monolithique ou headless (JSON:API / GraphQL) ?
- Configuration Management utilisé ? (yml exportés dans config/sync)
- Staging / CI pipeline existant ?
- Stratégie de backup DB ?
- Dernier audit sécurité ?
- Composer workflow (core-recommended vs legacy) ?
- Drush / Drupal Console utilisé ?
- Trafic mensuel + dimensionnement serveur ?
## Plugin recommendations
- **ui-ux-pro-max** : OPTIONAL — ON si thème custom en dev
- **gstack** : OPTIONAL — audit Lighthouse/Axe sur staging
- **context7** : OFF — Drupal évolue lentement
## Example project layout
```
composer.json
composer.lock
web/
core/
modules/
contrib/
custom/
mon_module/
mon_module.info.yml
mon_module.module
themes/
custom/
mon_theme/
mon_theme.info.yml
mon_theme.libraries.yml
sites/
default/
settings.php
files/
config/
sync/
vendor/
```

View File

@ -0,0 +1,132 @@
---
name: firmware-embedded
category: embedded
public: false
database: none
hosting_hints:
- bare-metal
- microcontroller-flash
- ota-server
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: no
ui-ux-pro-max: no
gstack: no
---
# Firmware / Embedded
Projet firmware bas-niveau / microcontrôleur (STM32, ESP32, RP2040, Nordic, AVR). Pas de système d'exploitation complet (bare-metal / RTOS léger type FreeRTOS/Zephyr).
## Detection signals
### Strong signals (×3)
- FILE: `platformio.ini` (PlatformIO)
- FILE: `*.ld` OR `*.lds` OR `linker*.ld` (linker scripts — signature bare-metal)
- FILE: `CMakeLists.txt` contenant "arm-none-eabi" OR "riscv-none-elf" OR "xtensa-esp32" OR "ESP_PLATFORM" OR "STM32"
- FILE: `Kconfig` (Zephyr RTOS)
### Medium signals (×2)
- FILE: `Makefile` avec variables CC / AS / LD / OBJCOPY
- DIR: `src/` avec fichiers .c / .cpp / .h ET absence de manifests langage haut-niveau (pas de package.json, Cargo.toml, go.mod, pyproject.toml)
- DIR: `drivers/` OR `hal/` OR `bsp/` OR `mcu/`
- FILE: `sdkconfig` (ESP-IDF)
- FILE: `prj.conf` (Zephyr)
- FILE: `idf_component.yml` (ESP-IDF component)
### Weak signals (×1)
- FILE: `openocd.cfg` (debug probe config)
- FILE: `*.cfg` contenant "adapter" OR "interface" OR "transport select"
- EXT: outputs `.bin`, `.hex`, `.uf2`, `.elf` dans un `build/` ou `.pio/`
- DEP (platformio): "[env:*]" sections
### Counter-signals (exclusion)
- FILE: `package.json` AVEC deps JavaScript → app web (pas embedded)
- FILE: `Cargo.toml` AVEC `[dependencies]` bibliothèques hautes → peut être Rust embedded (créer archetype rust-embedded plus tard)
- FILE: `.c` files AVEC `pyproject.toml` / `Cargo.toml` contenant pybind/pyo3 → FFI bindings, PAS embedded
## Implications
- **Cible** : microcontrôleur (STM32/ESP32/RP2040/nRF/AVR/MSP430) / SoC bas-niveau / bare-metal
- **Base de données** : aucune (stockage = flash interne / EEPROM / SD card brute)
- **SEO/GEO** : N/A
- **Surface sécurité** : SPÉCIFIQUE — buffer overflows stack/heap, secure boot, OTA integrity, JTAG exposé, downgrade attacks
- **UI/UX** : N/A (sauf petits LCD/OLED)
## Typical pain points
- Buffer overflows : `strcpy`, `strcat`, `sprintf` sans bounds check
- `malloc` dans ISR / sections critiques (hang potentiel)
- Pas de watchdog timer activé
- Optim compiler `-O0` ou `-O3` sans profil (bugs volatile manquent)
- `volatile` oublié sur MMIO / variables partagées ISR-main
- Pas de `-Wall -Wextra -Wpedantic` + `-Werror`
- Linker script maison non audité (sections overlap / alignement incorrect)
- Stack size insuffisant (crash silencieux par overflow)
- Secrets / keys en dur dans le binaire (extractibles par dump flash)
- Secure Boot / signing non activé
- OTA sans vérification signature → persistant firmware malveillant possible
- JTAG / SWD non désactivé en prod → extraction firmware / inject code
- Debug logs activés en release (`printf` via UART exposé)
- Ressources cycles hardcoded (sleeps en loops `for`) → non portable à autre horloge
- Pas d'abstraction HAL → couplage MCU-specific partout
- Timings critiques non mesurés (analyseur logique absent du workflow)
- Energy profile ignoré (wake-up patterns sous-optimaux, sleep modes inutilisés)
- Pas de tests unitaires (on-host avec mocks HAL absent)
- CI sans cross-compilation (`arm-none-eabi-gcc` non disponible)
- Documentation registres absente (cf datasheet + magic numbers dans le code)
- Flash wear leveling ignoré (écritures fréquentes sur même secteur)
## Interview questions (adaptive)
En plus du set minimum business :
- MCU / SoC cible : famille (STM32Fxx / ESP32-S3 / RP2040 / nRF52 / autre) ?
- Toolchain : GNU ARM / ESP-IDF / Zephyr / PlatformIO / Arduino / autre ?
- Framework / RTOS : bare-metal / FreeRTOS / Zephyr / Mbed / Arduino / ESP-IDF ?
- HAL / BSP : vendor HAL / CMSIS / libopencm3 / custom ?
- Langage : C / C++ / Rust embedded / Ada ?
- Standard C version (C99 / C11 / C17) + flags GCC ?
- Secure Boot activé ? Signing firmware ?
- OTA : présent / comment (MQTT / HTTP / custom) / signature vérifiée ?
- Debug : JTAG / SWD en prod (devrait être désactivé) ?
- Watchdog actif ? reset sources tracées ?
- Power budget : ampérage / sleep modes utilisés ?
- Memory budget : flash size / RAM size / current usage ?
- Tests : on-host (Unity/CMocka/etc.) / on-target / HIL (hardware-in-loop) ?
- CI : cross-compile + tests on-host ? lint (cppcheck, clang-tidy) ?
- MISRA-C / CERT-C conformance ?
- Product certifications visées (FCC / CE / CE-RED / FIPS / IEC 62443) ?
- Bootloader : custom / vendor / MCUboot ?
- Logs prod : UART / RTT / deep-ignored ?
## Plugin recommendations
- **context7** : OFF — docs MCU (datasheets, ref manuals) PDF, hors scope context7
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout (PlatformIO STM32)
```
platformio.ini
include/
config.h
src/
main.c
drivers/
uart.c
i2c.c
gpio.c
hal/
stm32f4xx_it.c
rtos/
tasks.c
app/
sensor.c
protocol.c
lib/
external/
test/
test_sensor.c
docs/
datasheets/
```

View File

@ -0,0 +1,166 @@
---
name: game-engine-native
category: game
public: true
database: optional
hosting_hints:
- steam
- itch-io
- gog
- epic-store
- app-stores
- console-stores
audit_stack:
- analyze
- code-clean
- perf
- design-review
- a11y
- doc
plugins:
context7: no
ui-ux-pro-max: optional
gstack: no
---
# Game Engine Native (Godot / Unity)
Projet de jeu utilisant un moteur natif : Godot (GDScript / C#) ou Unity (C#). Distribution standalone desktop / mobile / console, parfois web export.
## Detection signals
### Strong signals (×3)
- FILE: `project.godot` (Godot)
- DIR: `ProjectSettings/` contenant `*.asset` (Unity)
- FILE: `Assets/Settings/*.asset` OR `Packages/manifest.json` (Unity)
- EXT: 5+ fichiers `.gd` (Godot GDScript)
- EXT: 5+ fichiers `.unity` (Unity scene files)
### Medium signals (×2)
- DIR: `scenes/` AVEC `.tscn` (Godot)
- DIR: `Assets/Scripts/` AVEC `.cs` (Unity)
- DIR: `addons/` (Godot custom plugins)
- DIR: `Library/` (Unity, gitignored normalement)
- FILE: `.godot/` directory (Godot cache)
- DEP: `Packages/manifest.json` contient "com.unity.*"
### Weak signals (×1)
- DIR: `.gitattributes` avec LFS rules pour assets binaires
- EXT: `.tres` (Godot resources), `.prefab` (Unity)
- DIR: `Builds/` OR `exports/` (builds sortie)
- FILE: `.gdignore` OR `.gitignore` avec patterns Unity/Godot
### Composition overlays
- **Godot 4 vs 3** : détection sur `config_version=5` (Godot 4) vs `config_version=4` (Godot 3)
- **Unity URP / HDRP / Built-in** : `Assets/Settings/URP-*.asset` / `HDRenderPipelineAsset.asset`
- **C# in Godot** : FILE `*.csproj` AVEC Godot references
## Implications
- **Distribution** : Steam, itch.io, GOG, Epic Store, App Store, Play Store, consoles (avec portage)
- **Base de données** : OPTIONNELLE — save files locaux, backends externes possibles (Unity Gaming Services, PlayFab, Firebase)
- **SEO/GEO** : N/A (sauf page produit sur Steam / site du jeu)
- **Surface sécurité** : MOYENNE — anti-cheat si multiplayer, injection via mods, DLC entitlements
- **UI/UX** : CRITIQUE — game feel + UI in-game + onboarding + accessibilité
## Typical pain points
- Assets volumineux (textures, audio, modèles 3D) NON en LFS → repo bloat / clone lent
- Meta files (.meta Unity) non commités → references cassées en équipe
- Scene conflicts Unity (YAML non mergeable) sans SmartMerge configuré
- Pas de CI build (builds manuels depuis l'éditeur, erreurs env-specific)
- Pas de tests (Unity Test Framework / GUT Godot rarement utilisés)
- Hardcoded paths (résolution, language, keymaps)
- Input non rebindable (clavier/manette)
- Accessibilité catastrophique : pas de color-blind mode, pas de subtitles, pas d'options motion
- Pas de pause propre (main menu ok, mais in-game pause buggé)
- Performances non profilées (frame drops sans diagnostic)
- Memory leaks : particules non freed, signals non disconnect, scenes non queue_free
- Localisation absente ou hardcodée (pas de `.po` / `.csv` / Unity Localization Package)
- Save files en clair dans `%APPDATA%` / `~/Library/Application Support` — triche triviale
- Multiplayer : auth client-side, state non validé server-side
- Modding non supporté (absence d'API plugins)
- Pas d'analytics respectueux RGPD (opt-in, anonymisé)
- Build size non optimisé (toutes textures en 4K, pas de compression format GPU)
- Pas d'Over-the-air patches (cycles Steam update long)
- Audio non mixé (master bus saturé, pas de ducking, pas d'accessibilité audio)
- Shaders custom non cross-platform (Metal vs Vulkan vs DX12 vs OpenGL ES)
## Interview questions (adaptive)
En plus du set minimum business :
- Moteur : Godot (3.x / 4.x) / Unity (version LTS / Alpha) / autre ?
- Langage : GDScript / C# (Godot Mono) / C# Unity ?
- Pipeline rendu Unity : Built-in / URP / HDRP ?
- Version control : Git LFS activé ? Unity SmartMerge configuré ? Plastic SCM ?
- Scène principale + architecture : monolithique / modulaire (additive scenes) ?
- Type de jeu : 2D / 3D / first-person / third-person / puzzle / MMO / ... ?
- Solo / coop local / multiplayer online / les deux ?
- Multiplayer : Mirror / Netcode for GameObjects / Fishnet / Godot High-Level Multiplayer / Photon / autre ?
- Analytics : Unity Analytics / custom / aucun ?
- Save system : binaire / JSON / steam cloud / server-side ?
- Localisation : Unity Localization / Godot tr() / externe ?
- Input System : Unity Input System / InputManager legacy / Godot InputMap ?
- Cibles plateformes : PC (Windows/macOS/Linux) / mobile / consoles (PS/Xbox/Switch) ?
- Distribution : Steam / itch.io / GOG / Epic / App Store / consoles ?
- Anti-cheat si multiplayer ?
- Modding prévu ?
- Accessibilité : color-blind mode / subtitles / motion options / remappable controls / haptic alternatives ?
- Audio mixing + ducking fait ?
- CI builds : GitHub Actions / CircleCI / Unity Cloud Build / Jenkins ?
- Tests : Unity Test Framework / GUT (Godot) / Gherkin ?
- Profiling : Unity Profiler / Godot Debugger / RenderDoc / autre ?
- Analytics respecte RGPD ?
## Plugin recommendations
- **context7** : OFF — docs engines (Godot, Unity) stables, context7 peu utile
- **ui-ux-pro-max** : OPTIONAL — utile pour UI menus HUD, peu pour gameplay
- **gstack** : OFF
## Example project layout (Godot 4)
```
project.godot
.gitignore (exclude .godot/, export/, *.tmp)
.gitattributes (LFS for .png .wav .ogg .glb .tres binaires)
scenes/
main.tscn
levels/
level_01.tscn
ui/
main_menu.tscn
scripts/
player.gd
enemy.gd
systems/
save_system.gd
assets/
sprites/
audio/
fonts/
addons/
dialogue_manager/
exports/ (gitignored)
.godot/ (cache, gitignored)
```
## Example project layout (Unity)
```
Assets/
Scripts/
Player/
Enemies/
Systems/
SaveSystem.cs
Scenes/
MainMenu.unity
Level_01.unity
Prefabs/
Materials/
Settings/
URP-Renderer.asset
InputActions.inputactions
Localization/
ProjectSettings/
Packages/
manifest.json
packages-lock.json
.gitattributes (LFS for binary assets)
.gitignore (exclude Library/, Temp/, Builds/)
```

View File

@ -0,0 +1,114 @@
---
name: ghost
category: cms
public: true
database: required
hosting_hints:
- ghost-pro
- vps
- docker
- digitalocean-marketplace
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: optional
ui-ux-pro-max: yes
gstack: optional
---
# Ghost (publishing CMS, Node.js)
CMS de publication Node.js orienté blog / newsletter / membership. Thème Handlebars. Database MySQL (SQLite en dev).
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient "ghost" (au niveau du thème : engines.ghost)
- FILE: `package.json` contient `"engines": { "ghost": "..." }` (thème)
- FILE: `config.production.json` OR `config.development.json` (install Ghost)
- DIR: `content/themes/`
### Medium signals (×2)
- DIR: `partials/` AVEC `.hbs`
- FILE: `default.hbs` OR `index.hbs` OR `post.hbs`
- DIR: `assets/css/` AVEC `source/` (stylesheets SCSS)
- FILE: `gulpfile.js` OR `rollup.config.js` (build Ghost theme)
- EXT: 5+ fichiers .hbs
### Weak signals (×1)
- DIR: `content/images/`
- DIR: `content/data/` (SQLite dev)
- FILE: `ghost.service` (systemd)
- DEP: `@tryghost/content-api` OR `@tryghost/admin-api` (headless usage)
### Composition overlays
- **Headless Ghost** : usage via Content API avec frontend séparé → traiter comme API producer + frontend archetype
## Implications
- **Hébergement** : Ghost(Pro) managed, VPS (Ghost-CLI), Docker, DigitalOcean marketplace
- **Base de données** : MySQL prod REQUISE, SQLite dev
- **SEO/GEO** : CRITIQUE (blog / content)
- **Surface sécurité** : MOYENNE — admin panel, API, member auth, Stripe integration
- **UI/UX** : theme-dependent
## Typical pain points
- Version Ghost obsolète (cycle release rapide)
- Thème incompatible avec version Ghost courante (GSCAN warnings)
- `config.production.json` committé avec DB credentials
- Mailgun API key en dur (delivery newsletter)
- Stripe secret key exposée (membership)
- Pas de backup automatique (content/images + DB)
- Members non conformes RGPD (pas de double opt-in, pas de unsubscribe)
- Pas de robots.txt / sitemap custom (Ghost génère mais pas configurable)
- Perf : images non optimisées, Handlebars non cache
- Newsletter : HTML email non testé clients (Outlook catastrophique)
- CDN absent (images/assets servis depuis serveur)
- Intégrations Zapier / custom webhooks : secrets rotation absente
## Interview questions (adaptive)
En plus du set minimum business :
- Hébergement : Ghost(Pro) / self-hosted VPS / Docker ?
- Thème : custom (avec source .hbs) ou acheté ?
- Usage principal : blog / newsletter / membership / combinaison ?
- Members payants ? (Stripe intégration)
- Version Ghost actuelle ?
- Backup strategy (content/images + DB) ?
- Intégrations : Mailgun / SendGrid / Postmark pour emails ?
- CDN / image optimization ?
- Headless / découplé ? (Content API + frontend séparé)
- i18n prévu (Ghost n'a pas i18n natif) ?
- GSCAN check passe-t-il ?
## Plugin recommendations
- **context7** : OPTIONAL — Ghost release cycle rapide
- **ui-ux-pro-max** : ON — theming orienté contenu
- **gstack** : OPTIONAL — audit Lighthouse sur posts clés
## Example project layout (theme)
```
package.json ("engines": { "ghost": "^5.0.0" })
default.hbs
index.hbs
post.hbs
page.hbs
tag.hbs
author.hbs
partials/
header.hbs
footer.hbs
post-card.hbs
assets/
css/
source/
screen.scss
js/
images/
gulpfile.js
```

View File

@ -0,0 +1,109 @@
---
name: library
category: library
public: false
database: none
hosting_hints:
- npm-registry
- pypi
- crates-io
- maven-central
- nuget
- github-packages
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: no
ui-ux-pro-max: no
gstack: no
---
# Library / Package
Bibliothèque réutilisable (API publique stable), distribuée via registry. Pas d'entry point CLI, pas de serveur, pas de frontend applicatif.
## Detection signals
### Strong signals (×3)
- STRING_IN_FILE: `package.json` contient "\"main\":" OR "\"exports\":" SANS "\"bin\":"
- STRING_IN_FILE: `pyproject.toml` contient "[project]" SANS "[project.scripts]"
- STRING_IN_FILE: `Cargo.toml` contient "[lib]" SANS "[[bin]]"
- STRING_IN_FILE: `package.json` contient "\"private\": false" OR absent ET "\"name\":" commence par "@"
### Medium signals (×2)
- FILE: `src/index.ts` OR `src/lib.rs` OR `src/__init__.py`
- DIR: `src/` AVEC code uniquement (pas de server.ts, pas de app.py)
- FILE: `tsconfig.json` AVEC STRING "\"declaration\": true" OR "\"emitDeclarationOnly\""
- FILE: `rollup.config.*` OR `tsup.config.*` OR `vite.config.*` en mode lib
### Weak signals (×1)
- FILE: `README.md` AVEC STRING "## API" OR "## Installation"
- FILE: `CHANGELOG.md`
- FILE: `LICENSE` OR `LICENSE.md`
- DIR: `examples/` OR `docs/`
- FILE: `.npmignore`
### Counter-signals (exclusion)
- STRING_IN_FILE: `package.json` contient "\"bin\":" → CLI
- DEP: `express`, `fastapi`, `react`, `next` → app, pas lib
- FILE: `index.html` → web
## Implications
- **Distribution** : npm / PyPI / crates.io / Maven / NuGet
- **Base de données** : aucune
- **SEO/GEO** : N/A (sauf page de doc dédiée, rare)
- **Surface sécurité** : INDIRECTE — les failles de la lib se propagent à ses consommateurs
- **UI/UX** : N/A
## Typical pain points
- Versioning non semver-strict → breaking changes surprise les consommateurs
- CHANGELOG absent ou vague
- Docstrings / JSDoc / rustdoc incomplets
- Exports publics instables (API leakage depuis internes)
- Pas de tests de régression / snapshot
- Couverture tests faible (< 80%)
- Pas de benchmarks (si performance critique)
- TypeScript : types trop lâches (`any`), pas d'export de types
- Rust : `#[non_exhaustive]` manquant sur enums publics
- Python : pas de `py.typed` marker → typing ignoré par consommateurs
- Deps transitives avec failles (supply chain)
- Pas de fichier `SECURITY.md`
- Pas de CI qui publie automatiquement (releases manuelles)
- Tests sur une seule version de Node/Python/Rust
## Interview questions (adaptive)
En plus du set minimum business :
- Langage + runtime cible : Node (version min) / Python (version min) / Rust (MSRV) / autre ?
- Audience : publique (open source) / privée (interne org) / mixte ?
- Stabilité actuelle : pré-1.0 / stable / LTS ?
- API : stable / en évolution / expérimentale ?
- Distribution : npm public / npm privé / PyPI / GitHub Packages / multiple ?
- Bundler si applicable : tsup / rollup / vite / esbuild ? (ESM + CJS + types ?)
- Documentation : README / docs site dédié / typedoc / Sphinx / autre ?
- Tests : coverage cible ? snapshots ? property-based ?
- CI / CD : auto-publish on tag ? semver auto (changesets / semantic-release) ?
- Politique de support : combien de versions majeures maintenues en parallèle ?
- Benchmarks requis ? (oui si lib perf-critique)
## Plugin recommendations
- **context7** : OFF — lib stable par nature, peu de doc fast-libs
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
package.json OR pyproject.toml OR Cargo.toml
src/
index.ts OR __init__.py OR lib.rs
core/
utils/
tests/
docs/
examples/
README.md (API + Installation + Examples)
CHANGELOG.md
LICENSE
```

View File

@ -0,0 +1,136 @@
---
name: mobile-expo
category: mobile
public: true
database: optional
hosting_hints:
- app-store
- play-store
- expo-go
- eas-build
audit_stack:
- analyze
- code-clean
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: yes
ui-ux-pro-max: yes
gstack: no
---
# Mobile Expo / React Native
Application mobile React Native gérée par Expo (managed workflow) ou bare React Native. Distribution iOS + Android via App Store / Play Store, ou Expo Go en dev.
## Detection signals
### Strong signals (×3)
- FILE: `app.json` OR `app.config.js` OR `app.config.ts` contenant "expo"
- DEP: `package.json` contient "expo"
- FILE: `metro.config.js` OR `metro.config.ts`
- DEP: "react-native"
### Medium signals (×2)
- DEP: "expo-router", "@expo/vector-icons", "expo-font"
- DIR: `app/` (Expo Router file-system routing) avec `.tsx`
- DIR: `assets/` avec `icon.png`, `splash.png`
- FILE: `eas.json` (EAS Build)
- FILE: `babel.config.js` avec preset "babel-preset-expo"
### Weak signals (×1)
- DIR: `android/`, `ios/` (bare workflow uniquement)
- DEP: "react-navigation" OR "@react-navigation/native"
- DEP: "@supabase/supabase-js" OR "firebase" OR "@tanstack/react-query"
### Counter-signals
- DEP: "next" ET .tsx au root → c'est Next.js (web), pas Expo
- FILE: `astro.config.*` → Astro
## Implications
- **Distribution** : App Store (iOS), Play Store (Android), Expo Go (dev), internal distribution (TestFlight/Play Console Internal)
- **Base de données** : locale (AsyncStorage / SQLite / MMKV / WatermelonDB) + backend (Supabase / Firebase / API custom)
- **SEO/GEO** : N/A (app native)
- **Surface sécurité** : GRANDE — AsyncStorage non chiffré par défaut, secrets côté app, deep links exploitables
- **UI/UX** : CRITIQUE — mobile = exigences spécifiques (gestures, haptics, safe area)
## Typical pain points
- Secrets / API keys dans `app.json` → exposés dans le bundle
- AsyncStorage utilisé pour tokens → JWT en clair sur l'appareil
- Pas d'expo-secure-store ou react-native-keychain pour secrets
- Permissions iOS/Android demandées mal justifiées (rejet review)
- Performances : listes longues sans FlatList/FlashList (re-render entier)
- Images non optimisées / pas de `expo-image` (cache + formats)
- Pas de splash screen configuré → écran blanc au démarrage
- Icône app basse résolution
- Deep links non configurés / configurés sans validation
- Pas de crash reporting (Sentry / Bugsnag absents)
- Expo SDK obsolète (upgrade annuel obligatoire)
- Bare workflow sans CI/CD (builds manuels en local)
- Tests E2E absents (Detox / Maestro non configurés)
- i18n absent ou hardcodé
- Accessibilité : `accessibilityLabel` absent, focus order cassé, contrast insuffisant
- Dark mode pas supporté (useColorScheme non utilisé)
- Safe area non respectée (contenu sous notch / home indicator)
- Gestures conflits (swipe drawer vs swipe back iOS)
- Over-the-air updates (expo-updates) non utilisées
- app.json "version" / "buildNumber" non incrémentés
## Interview questions (adaptive)
En plus du set minimum business :
- Workflow : Expo managed / Expo bare / pur React Native ?
- SDK Expo version ?
- Navigation : Expo Router / React Navigation / autre ?
- State : Redux / Zustand / Jotai / Context / React Query seul ?
- Backend : Supabase / Firebase / API custom / BaaS autre ?
- Auth : provider + storage (SecureStore / Keychain / AsyncStorage) ?
- Database locale : AsyncStorage / MMKV / SQLite / WatermelonDB / Realm ?
- Push notifications : Expo Push / FCM / OneSignal / aucun ?
- Crash reporting : Sentry / Bugsnag / aucun ?
- Analytics : Amplitude / Mixpanel / PostHog / Firebase / aucun ?
- Tests : unit (Jest) + E2E (Detox / Maestro) ?
- Build + distribution : EAS Build + EAS Submit / Xcode/Gradle manuels / CI custom ?
- Over-the-air updates activées ?
- Cible OS : iOS min version / Android min API level ?
- Dark mode supporté ?
- i18n : librairie + langues ?
- Accessibilité : audit VoiceOver / TalkBack effectué ?
- App Store Review : première soumission faite / rejetée / en cours ?
## Plugin recommendations
- **context7** : ON — Expo SDK évolue vite (breaking chaque SDK)
- **ui-ux-pro-max** : ON — mobile UX spécifique
- **gstack** : OFF (pas de browser QA)
## Example project layout (Expo Router)
```
app.json OR app.config.ts
package.json
metro.config.js
babel.config.js
eas.json
app/
_layout.tsx (root layout)
index.tsx (home)
(tabs)/
_layout.tsx
home.tsx
profile.tsx
auth/
login.tsx
components/
Button.tsx
Card.tsx
hooks/
lib/
supabase.ts
assets/
icon.png
splash.png
adaptive-icon.png
fonts/
.env.example
```

View File

@ -0,0 +1,146 @@
---
name: mobile-flutter
category: mobile
public: true
database: optional
hosting_hints:
- app-store
- play-store
- huawei-appgallery
- web-hosting
- desktop-distribution
audit_stack:
- analyze
- code-clean
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: optional
ui-ux-pro-max: yes
gstack: no
---
# Mobile Flutter
Application Flutter (Dart) cible iOS + Android + Web + Desktop. Widgets tree, state management variable (Provider / Riverpod / Bloc / GetX).
## Detection signals
### Strong signals (×3)
- FILE: `pubspec.yaml`
- FILE: `pubspec.lock`
- DIR: `lib/` AVEC fichiers `.dart`
- FILE: `lib/main.dart`
### Medium signals (×2)
- DIR: `android/`
- DIR: `ios/`
- FILE: `analysis_options.yaml`
- DIR: `test/` AVEC `.dart`
- DEP dans pubspec.yaml: "flutter_bloc", "provider", "riverpod", "get"
### Weak signals (×1)
- DIR: `web/`, `macos/`, `linux/`, `windows/` (multi-plateforme)
- FILE: `l10n.yaml` (i18n)
- DIR: `assets/images/`, `assets/fonts/`
- FILE: `.flutter-plugins`, `.flutter-plugins-dependencies`
### Counter-signals (exclusion)
- DEP pubspec contient "dart_sdk" uniquement sans "flutter" → projet Dart pur (CLI / server), pas Flutter
## Implications
- **Distribution** : App Store / Play Store / AppGallery (Huawei) / Web (Flutter Web) / Desktop (macOS/Win/Linux via Flutter desktop)
- **Base de données** : locale (sqflite / Hive / Isar / Drift) + backend (Firebase / Supabase / API custom)
- **SEO/GEO** : PARTIEL si Flutter Web — Flutter Web rend en canvas/HTML, SEO limité même en HTML renderer
- **Surface sécurité** : GRANDE — shared_preferences non chiffré, secrets dans bundle, deep links
- **UI/UX** : CRITIQUE — design system Material/Cupertino + custom
## Typical pain points
- Secrets / API keys dans `pubspec.yaml` ou `lib/config.dart` committés
- `shared_preferences` pour tokens → pas chiffré (doit être `flutter_secure_storage`)
- State management non cohérent (mélange setState + Provider + Bloc dans même app)
- Rebuild excessif (pas de `const` widgets, pas de `Selector`, pas de keys)
- Performances listes : pas de `ListView.builder` (rend tout d'un coup)
- Images non optimisées (pas de `cached_network_image`, pas de compression)
- Pas de splash screen natif (flash blanc au démarrage)
- Permissions iOS/Android demandées sans justification → reject App Store
- Pas de crash reporting (Sentry / Firebase Crashlytics absents)
- Deep links non configurés / uni_links / go_router mal configurés
- Pas de tests unitaires / widget tests
- Pas de tests E2E (integration_test / Patrol / Maestro)
- Flutter SDK obsolète (cycle release rapide)
- `flutter pub outdated` ignoré → deps avec failles
- Accessibilité : `Semantics` widget pas utilisé, focus order incorrect
- Dark mode : `ThemeMode.system` pas supporté ou mal
- i18n : strings hardcodées au lieu de `.arb` files
- Platform channels pas testés (plugins natifs)
- Code generation (build_runner) pas dans CI → fichiers générés commités
- App bundle size énorme (pas de `--split-per-abi` Android, pas de tree shaking)
## Interview questions (adaptive)
En plus du set minimum business :
- State management : Provider / Riverpod / Bloc / GetX / Cubit / vanilla ?
- Flutter SDK / Dart version ?
- Targets : iOS / Android / Web / macOS / Windows / Linux ?
- Navigation : Navigator 1.0 / go_router / auto_route / beamer ?
- Backend : Firebase / Supabase / API custom / GraphQL ?
- Auth : provider + storage (flutter_secure_storage obligatoire pour tokens) ?
- Database locale : sqflite / Hive / Isar / Drift / SharedPreferences ?
- Push notifications : FCM / OneSignal / Notifee / aucun ?
- Crash reporting : Firebase Crashlytics / Sentry / aucun ?
- Analytics : Firebase / Amplitude / PostHog / aucun ?
- Tests : unit / widget / integration / Patrol ?
- CI/CD : Codemagic / Bitrise / GitHub Actions / Fastlane / aucun ?
- Code generation : build_runner / freezed / json_serializable / riverpod_generator ?
- i18n : `flutter_localizations` + .arb ?
- Design system : Material 3 / Cupertino / custom tokens ?
- Dark mode supporté ?
- Accessibilité : Semantics widgets + testé VoiceOver / TalkBack ?
- App bundle size cible ?
- App Store Review : première soumission / rejet déjà eu / actif ?
## Plugin recommendations
- **context7** : OPTIONAL — ON pour Flutter 3.x récent (Impeller, Material 3, Riverpod 2+)
- **ui-ux-pro-max** : ON
- **gstack** : OFF
## Example project layout
```
pubspec.yaml
pubspec.lock
analysis_options.yaml
lib/
main.dart
app.dart
core/
theme.dart
constants.dart
features/
auth/
data/
domain/
presentation/
home/
data/
domain/
presentation/
shared/
widgets/
services/
test/
widget_test.dart
features/
auth_test.dart
integration_test/
app_test.dart
assets/
images/
fonts/
android/
ios/
web/
l10n.yaml
```

View File

@ -0,0 +1,109 @@
---
name: nextjs-app-router
category: framework
public: true
database: optional
hosting_hints:
- vercel
- netlify
- cloudflare-pages
- docker
- k8s
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: yes
ui-ux-pro-max: yes
gstack: optional
---
# Next.js (App Router)
Framework React SSR/SSG/ISR. App Router (`app/` dir) est la convention moderne depuis Next 13+.
## Detection signals
### Strong signals (×3)
- FILE: `next.config.js`
- FILE: `next.config.mjs`
- FILE: `next.config.ts`
- DEP: `package.json` contient "next"
- DIR: `app/` AVEC FILE `app/layout.tsx` OR `app/layout.jsx` OR `app/layout.js`
### Medium signals (×2)
- FILE: `app/page.tsx` OR `app/page.jsx` OR `app/page.js`
- DIR: `app/api/` (route handlers)
- FILE: `middleware.ts` OR `middleware.js`
- FILE: `.env.local`
### Weak signals (×1)
- DIR: `public/` (assets statiques)
- EXT: 5+ fichiers .tsx
- DEP: `tailwindcss` (stack fréquente)
- DEP: `@vercel/*`
### Counter-signals (exclusion)
- DIR: `pages/` AU PREMIER NIVEAU SANS DIR `app/` → c'est Pages Router (archétype à part, à créer plus tard)
### Composition overlays
- ORM détecté : DEP `prisma`, `drizzle-orm`, `@supabase/supabase-js`, `mongoose` → ajouter questions DB
- Auth détectée : DEP `next-auth`, `@clerk/nextjs`, `@auth0/nextjs-auth0` → ajouter questions auth
## Implications
- **Hébergement** : Vercel (first-class), Netlify, Cloudflare Pages, Docker (standalone output)
- **Base de données** : OPTIONNELLE — souvent présente via Prisma/Drizzle/Supabase
- **SEO/GEO** : CRITIQUE (App Router permet SSR/SSG parfaitement indexable si bien configuré)
- **Surface sécurité** : MOYENNE-GRANDE (middleware, API routes, auth)
- **UI/UX** : CRITIQUE
## Typical pain points
- Mix "use client" / Server Components mal maîtrisé (fuite d'état, hydratation)
- `revalidate` / cache ISR mal configuré (contenu obsolète ou trop de builds)
- Metadata API (`generateMetadata`) absente → pas de SEO dynamique
- Pas de `robots.txt` / `sitemap.ts` (SEO)
- Images non optimisées (`next/image` pas utilisé)
- Bundle JS trop gros (analyser avec `@next/bundle-analyzer`)
- `.env` committé / secrets exposés côté client (NEXT_PUBLIC_*)
- Pas de rate limiting sur route handlers
- Middleware lourd (latence sur chaque requête)
- API routes sans validation input (Zod/Yup absent)
- Pas de loading.tsx / error.tsx / not-found.tsx
## Interview questions (adaptive)
En plus du set minimum business :
- Rendu cible : SSR / SSG / ISR / mix ? Stratégie par route ?
- ORM / DB : Prisma / Drizzle / Supabase / autre / aucun ?
- Auth : NextAuth / Clerk / Auth0 / custom / aucun ?
- Déploiement : Vercel / selfhost Docker / Cloudflare / autre ?
- Testing : Playwright / Vitest / Jest / aucun ?
- i18n prévu ? (oui + quelles langues / non)
- CMS headless couplé ? (Sanity / Strapi / Contentful / aucun)
- Trafic cible et budget perf (TTI, LCP) ?
## Plugin recommendations
- **context7** : ON — Next.js évolue vite (App Router changes fréquents)
- **ui-ux-pro-max** : ON
- **gstack** : OPTIONAL — ON pour QA navigateur (Lighthouse, Axe, E2E)
## Example project layout
```
next.config.ts
middleware.ts
app/
layout.tsx
page.tsx
globals.css
(marketing)/
about/page.tsx
api/
hello/route.ts
public/
favicon.ico
```

View File

@ -0,0 +1,126 @@
---
name: react-spa
category: framework
public: false
database: optional
hosting_hints:
- netlify
- cloudflare-pages
- vercel
- s3-cloudfront
- docker
audit_stack:
- analyze
- code-clean
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: yes
ui-ux-pro-max: yes
gstack: optional
---
# React SPA (admin / dashboard / internal)
Application React pure côté client (CRA legacy / Vite / Webpack custom). PAS indexée — si public avec besoin SEO, utiliser Astro ou Next.js.
## ⚠️ Avertissement SEO (à afficher si projet public-facing)
**Une React SPA n'est pas indexable par les moteurs de recherche classiques (Google/Bing) ni par les moteurs IA (ChatGPT/Perplexity/Claude).**
Raison : le HTML servi est une coquille vide (`<div id="root"></div>`). Le contenu n'apparaît qu'APRÈS exécution JavaScript côté navigateur. Les crawlers :
- Google peut *parfois* rendre le JS, mais lentement et partiellement (pas d'indexation fiable)
- Bing : rendu JS limité
- ChatGPT/Perplexity/Claude/Gemini crawlers : **ne rendent pas de JS du tout** → ils voient une page vide → contenu invisible
**Si ce projet est public (site vitrine, blog, landing, e-commerce, docs) :**
- Migration recommandée : **Astro** (statique, SEO parfait, React islands possibles) ou **Next.js App Router** (SSR/SSG, SEO parfait)
- Coût migration : moyen (logique métier réutilisable, routing à reprendre)
- Alternative temporaire : pré-rendu (react-snap, rendertron) — fragile, déconseillé en 2026
**Si ce projet est interne (admin panel, dashboard, outil métier auth-gated) :**
- Aucun souci, le SEO n'est pas nécessaire
- React SPA est un choix valide dans ce cas
→ L'orchestrateur `/onboard` DOIT poser la question "public / interne" et afficher ce bloc si réponse = public.
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient "react" ET "react-dom"
- FILE: `vite.config.ts` OR `vite.config.js`
- FILE: `webpack.config.js` (custom bundler)
- DEP: `react-scripts` (CRA legacy)
### Medium signals (×2)
- FILE: `index.html` AVEC STRING "<div id=\"root\">"
- FILE: `src/main.tsx` OR `src/main.jsx` OR `src/index.tsx` OR `src/index.jsx`
- FILE: `src/App.tsx` OR `src/App.jsx`
- DEP: `react-router-dom` OR `@tanstack/react-router`
### Weak signals (×1)
- DIR: `src/components/`
- DIR: `src/pages/` OR `src/routes/`
- DEP: `tailwindcss`, `@mui/material`, `antd`, `chakra-ui`
- DEP: `redux`, `zustand`, `jotai`, `@tanstack/react-query`
### Counter-signals (exclusion)
- DEP: `next` → c'est Next.js (archétype nextjs-app-router)
- DEP: `astro` → c'est Astro
- FILE: `remix.config.js` → Remix (archétype à créer)
- FILE: `react-native.config.js` → mobile (archétype mobile-react-native)
## Implications
- **Hébergement** : Netlify / Cloudflare Pages / Vercel (SPA mode) / S3+CloudFront / Docker statique
- **Base de données** : OPTIONNELLE — souvent consommée via API séparée
- **SEO/GEO** : NON (rendu client-only) — si SEO critique, c'est un mauvais choix, flag à soulever
- **Surface sécurité** : MOYENNE (état côté client, auth token storage)
- **UI/UX** : CRITIQUE
## Typical pain points
- Bundle JS énorme (absence de code-splitting par route)
- Token JWT stocké dans localStorage (XSS → vol)
- Pas de CSP
- Pas de tests E2E (Playwright / Cypress absent)
- State management mal dimensionné (Redux pour 3 états simples, ou au contraire `useState` partout dans une app grosse)
- Suspense / Error Boundary non utilisés
- A11y : focus management, ARIA roles manquants
- Pas de skeleton / optimistic UI
- Fetch sans cache (pas de `@tanstack/react-query` ou SWR)
- "Public website" en SPA → SEO mort (signal d'alerte majeur à remonter en audit)
## Interview questions (adaptive)
En plus du set minimum business :
- **Usage : admin panel / dashboard interne / outil métier / webapp publique / autre ?**
- **Si "publique" → afficher en PREMIER le bloc d'avertissement SEO ci-dessus**
- **Puis demander : "Sachant ça, confirmez-vous que vous voulez rester en SPA, ou préférez-vous explorer une migration Astro/Next.js ?"**
- La réponse alimente la synthèse `ONBOARD_REPORT.md` (STEP 7) en proposition d'amélioration P0 si stay=SPA+public.
- Backend : API séparée (URL) / BaaS (Supabase/Firebase) / aucune ?
- Auth : quel provider ? stockage token ?
- Routing : react-router / TanStack Router / autre ?
- State : Redux / Zustand / Jotai / context / React Query seul ?
- Tests E2E : Playwright / Cypress / aucun ?
- Bundle size cible ?
- Bundler actuel : Vite / Webpack / CRA (à migrer ?) ?
## Plugin recommendations
- **context7** : ON — React 18+/19, TanStack, etc. évoluent vite
- **ui-ux-pro-max** : ON
- **gstack** : OPTIONAL — pour E2E / Lighthouse
## Example project layout
```
index.html
vite.config.ts
src/
main.tsx
App.tsx
routes/
components/
hooks/
lib/
public/
```

View File

@ -0,0 +1,106 @@
---
name: rest-api-node
category: api
public: false
database: optional
hosting_hints:
- vps
- docker
- k8s
- render
- railway
- fly
audit_stack:
- analyze
- code-clean
- cso
- perf
- doc
plugins:
context7: yes
ui-ux-pro-max: no
gstack: no
---
# REST API (Node.js)
API backend Node.js pure (Express / Fastify / Koa / Hapi / NestJS), sans frontend inclus.
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient l'un de : "express", "fastify", "koa", "@hapi/hapi", "@nestjs/core"
- FILE: `src/app.ts` OR `src/server.ts` OR `src/main.ts` AVEC STRING "listen(" OR "createServer"
### Medium signals (×2)
- FILE: `src/routes/` OR `src/controllers/` OR `src/handlers/`
- DEP: ORM — `prisma`, `typeorm`, `sequelize`, `drizzle-orm`, `mongoose`, `knex`
- DEP: Validation — `zod`, `joi`, `yup`, `class-validator`
### Weak signals (×1)
- DEP: `jsonwebtoken`, `passport`, `bcrypt`, `argon2`
- DEP: `pino`, `winston`, `morgan` (logging)
- FILE: `Dockerfile`
- DIR: `tests/` OR `src/__tests__/`
### Counter-signals (exclusion)
- DEP: `react`, `next`, `astro`, `vue` → frontend présent, c'est un fullstack (archetype à créer plus tard) ou SPA+API séparé (monorepo)
- DEP: `react-native` → mobile
## Implications
- **Hébergement** : VPS, Docker (Render, Railway, Fly.io), K8s, AWS ECS/Lambda
- **Base de données** : FORTEMENT PROBABLE — la plupart des API backend ont une DB
- **SEO/GEO** : N/A (API non indexée)
- **Surface sécurité** : GRANDE — point d'entrée principal pour attaques (injections, auth, rate limit)
- **UI/UX** : N/A
## Typical pain points
- Pas de versioning API (/api/v1/) — flag CLAUDE.md : "Web APIs always versioned"
- Validation input absente (pas de Zod/Joi/class-validator)
- SQL injections (string concat dans queries brutes)
- Auth faible (pas de hash password, ou MD5/SHA1)
- JWT secret en dur / faible / court
- CORS `*` en production
- Pas de rate limiting (`express-rate-limit`, `@fastify/rate-limit`)
- Pas de helmet / CSP
- Secrets dans le repo (.env committé)
- Logs qui fuient PII / tokens
- Pas de health check (`/healthz`) pour load balancer
- Pas d'observability (Sentry / OTel)
- Pas de tests (intégration absente)
- Deps obsolètes (npm audit non exécuté)
## Interview questions (adaptive)
En plus du set minimum business :
- Framework : Express / Fastify / NestJS / Koa / Hapi ?
- Base de données : PostgreSQL / MySQL / MongoDB / SQLite / autre / aucune ?
- ORM : Prisma / Drizzle / TypeORM / Sequelize / Mongoose / raw SQL ?
- Auth : JWT / OAuth / session / API key / aucun ?
- Consommateurs : frontend propre / mobile / tierce partie / interne ?
- Rate limiting en place ? (oui + comment / non)
- Observability : Sentry / OpenTelemetry / logs seulement / aucun ?
- Tests : unitaires + intégration ? couverture cible ?
- Déploiement : VPS / Docker / Lambda / autre ?
- Documentation API : OpenAPI/Swagger / Postman / aucune ?
## Plugin recommendations
- **context7** : ON — Prisma/Drizzle/Fastify évoluent vite
- **ui-ux-pro-max** : OFF
- **gstack** : OFF (API non navigable)
## Example project layout
```
src/
app.ts
server.ts
routes/
v1/
users.ts
orders.ts
controllers/
services/
middlewares/
schemas/ (Zod / Joi)
tests/
Dockerfile
```

View File

@ -0,0 +1,114 @@
---
name: rest-api-python
category: api
public: false
database: optional
hosting_hints:
- vps
- docker
- k8s
- render
- railway
- fly
- heroku
audit_stack:
- analyze
- code-clean
- cso
- perf
- doc
plugins:
context7: optional
ui-ux-pro-max: no
gstack: no
---
# REST API (Python)
API backend Python (FastAPI / Flask / Django REST / Starlette / Litestar), sans frontend inclus.
## Detection signals
### Strong signals (×3)
- FILE: `pyproject.toml` OR `requirements.txt` OR `Pipfile` OR `setup.py`
- DEP: l'un de : "fastapi", "flask", "django", "djangorestframework", "starlette", "litestar"
- STRING_IN_FILE: tout .py du projet contient "FastAPI(" OR "Flask(__name__)" OR "app = Starlette(" OR "from django"
### Medium signals (×2)
- FILE: `src/main.py` OR `app/main.py` OR `app.py` OR `manage.py`
- DEP: ORM — "sqlalchemy", "tortoise-orm", "peewee", "django" (Django ORM), "pydantic"
- DEP: Validation — "pydantic" (implicite avec FastAPI), "marshmallow"
### Weak signals (×1)
- DEP: "uvicorn", "gunicorn", "hypercorn"
- DEP: "alembic" (migrations)
- DEP: "python-jose", "passlib", "bcrypt"
- FILE: `Dockerfile`
- DIR: `tests/`
- FILE: `alembic.ini`
### Counter-signals (exclusion)
- DEP: "streamlit", "gradio", "dash" → data app UI (archétype à créer)
- DEP: "jupyter" comme main focus → notebook project
## Implications
- **Hébergement** : VPS, Docker (Render, Railway, Fly), K8s, AWS Lambda, Heroku
- **Base de données** : FORTEMENT PROBABLE — PostgreSQL dominant
- **SEO/GEO** : N/A
- **Surface sécurité** : GRANDE — mêmes risques que Node, plus Django admin exposé si mal config
- **UI/UX** : N/A (sauf Django admin, rarement customisé)
## Typical pain points
- Pas de versioning API (/api/v1/)
- Pydantic mal utilisé (types trop permissifs, `Any` partout)
- SQLAlchemy : N+1 queries (pas de `selectinload`/`joinedload`)
- Django : `SECRET_KEY` committé, DEBUG=True en prod
- Secrets dans le repo
- Requirements non pinned (`fastapi` sans version) → builds instables
- CORS `*` en production
- Pas de rate limiting
- Tests : pytest fixtures non isolées (DB pollution entre tests)
- Alembic migrations conflictuelles (branches non résolues)
- Async mal maîtrisé (bloque event loop avec `requests` sync en FastAPI)
- Dependencies audit absent (`pip-audit` non exécuté)
- Couverture de types mypy / pyright absente
## Interview questions (adaptive)
En plus du set minimum business :
- Framework : FastAPI / Flask / Django REST / Starlette / Litestar ?
- Mode : sync / async ?
- Base de données : PostgreSQL / MySQL / SQLite / MongoDB / autre / aucune ?
- ORM : SQLAlchemy / Django ORM / Tortoise / Peewee / raw SQL ?
- Migrations : Alembic / Django migrate / autre / aucune ?
- Auth : JWT / OAuth / session / API key / aucun ?
- Validation : Pydantic (v1 ou v2 ?) / Marshmallow / autre ?
- Typing : mypy / pyright / aucun ?
- Tests : pytest + fixtures ? couverture cible ?
- Linting / formatter : Ruff / Black / Flake8 / Mypy ?
- Déploiement : VPS / Docker / Lambda / Heroku / autre ?
- Package manager : pip / poetry / pdm / uv / Pipenv ?
- Documentation : OpenAPI auto (FastAPI) / Swagger manuel / aucune ?
## Plugin recommendations
- **context7** : OPTIONAL — ON pour FastAPI récent, Pydantic v2, SQLAlchemy 2.0
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
pyproject.toml
src/
main.py
api/
v1/
users.py
orders.py
models/
schemas/
services/
db/
alembic/
versions/
tests/
Dockerfile
```

View File

@ -0,0 +1,109 @@
---
name: shopify
category: cms
public: true
database: managed
hosting_hints:
- shopify-managed
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- a11y
- doc
plugins:
context7: optional
ui-ux-pro-max: yes
gstack: optional
---
# Shopify (theme / custom app)
Thème Shopify custom (Liquid + JSON templates) ou custom app. DB gérée par Shopify. Déploiement via Shopify CLI. Hébergement Shopify-exclusive.
## Detection signals
### Strong signals (×3)
- DIR: `sections/` AVEC `.liquid` files
- DIR: `templates/` AVEC `.liquid` OR `.json`
- FILE: `config/settings_schema.json`
- DEP: `package.json` contient "@shopify/cli" OR "@shopify/cli-hydrogen" OR "@shopify/theme"
### Medium signals (×2)
- DIR: `snippets/` AVEC `.liquid`
- DIR: `layout/` AVEC `theme.liquid`
- DIR: `locales/` AVEC `.json` (i18n Shopify)
- FILE: `.shopifyignore`
- FILE: `config/settings_data.json`
### Weak signals (×1)
- DIR: `assets/` avec theme assets
- FILE: `package.json` avec scripts "shopify theme dev"
- EXT: 10+ fichiers .liquid
### Composition overlays
- **Hydrogen** (headless Shopify + Remix) : DEP `@shopify/hydrogen` → archetype devient hybride (traiter comme Remix/React + Shopify API)
## Implications
- **Hébergement** : Shopify managed (aucun serveur à gérer)
- **Base de données** : gérée par Shopify (produits, clients, commandes)
- **SEO/GEO** : CRITIQUE (e-commerce)
- **Surface sécurité** : MOYENNE — Shopify sécurise l'infra ; côté thème = XSS possible via Liquid mal échappé, secrets dans config
- **UI/UX** : CRITIQUE (conversion)
## Typical pain points
- Liquid non échappé (`{{ product.description }}` sans `| escape` → XSS si contenu user)
- Images produits non optimisées (pas de responsive srcset)
- JS tiers accumulés (reviews, chat, upsell, tracker) → perf morte
- Sections `<script>` inline sans defer
- Core Web Vitals mauvais (LCP > 4s typique)
- Pas de JSON-LD Product schema
- Meta tags produits générés auto mal personnalisés
- Langues multiples : `locales/` incomplet
- Theme check warnings ignorés (`shopify theme check`)
- Pas de version control sur `settings_data.json` (conflits entre dev et prod)
- Accessibilité : cart drawers sans focus trap, modals sans ARIA
## Interview questions (adaptive)
En plus du set minimum business :
- Thème : custom (OS 2.0 avec sections JSON) ou thème acheté ?
- Hydrogen (headless) ou thème classique ?
- Plan Shopify : Basic / Standard / Advanced / Plus ?
- Multi-langue / multi-devise ? (Shopify Markets)
- Apps installées critiques (nombre + top 5) ?
- Custom code actuel : ampleur (juste tweaks, ou theme from scratch) ?
- Volume commandes mensuel (dimensionnement) ?
- Intégrations : ERP / CRM / fulfillment ?
- Checkout customization (Plus only) ?
- Theme check passe-t-il sans erreur ?
## Plugin recommendations
- **context7** : OPTIONAL — Hydrogen/Remix évolue vite
- **ui-ux-pro-max** : ON — e-commerce UX = conversion
- **gstack** : OPTIONAL — pour audit Lighthouse live sur le store
## Example project layout
```
config/
settings_schema.json
settings_data.json
sections/
header.liquid
product-form.liquid
templates/
index.json
product.json
snippets/
price.liquid
layout/
theme.liquid
assets/
theme.css
theme.js
locales/
en.default.json
fr.json
.shopifyignore
```

View File

@ -0,0 +1,105 @@
---
name: static-html
category: static
public: true
database: none
hosting_hints:
- shared
- netlify
- cloudflare-pages
- github-pages
- vercel
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- a11y
- doc
plugins:
context7: no
ui-ux-pro-max: yes
gstack: optional
---
# Static HTML Site
Site statique pur — HTML/CSS/JS écrits à la main, sans framework, sans build step (ou build minimal type `sass`).
## Detection signals
### Strong signals (×3)
- FILE: `index.html`
- STRING_IN_FILE: `index.html` contient "<!DOCTYPE html>"
### Medium signals (×2)
- DIR: `css/` OR `styles/`
- DIR: `js/` OR `scripts/`
- DIR: `img/` OR `images/` OR `assets/`
- EXT: 3 fichiers .html (multi-pages)
### Weak signals (×1)
- FILE: `.htaccess` (hébergement Apache classique)
- FILE: `CNAME` (GitHub Pages)
- FILE: `netlify.toml` OR `_redirects`
- FILE: `robots.txt`
- FILE: `sitemap.xml`
### Counter-signals (exclusion, si matchés → rejette)
- FILE: `package.json` AVEC DEP react/vue/svelte/astro/next
- FILE: `wp-config.php` → c'est WordPress
- DIR: `node_modules/` (suggère framework)
## Implications
- **Hébergement** : shared hosting classique, GitHub Pages, Netlify, Cloudflare Pages
- **Base de données** : aucune (formulaires via services tiers : Formspree, Netlify Forms)
- **SEO/GEO** : CRITIQUE — souvent le seul canal d'acquisition
- **Surface sécurité** : petite (si pas de formulaires/PHP) / moyenne (avec contact form ou CMS caché)
- **UI/UX** : critique — c'est toute l'expérience
## Typical pain points
- Meta tags manquants/incomplets (description, OG, Twitter Card)
- Pas de schema.org / JSON-LD
- Images non optimisées (pas de WebP/AVIF, pas de lazy loading, pas de srcset)
- Vidéos non optimisées : auto-play bloquant LCP, pas de poster image, codec unique (pas de fallback), pas de preload="metadata"
- Embeds tiers (Calendly, YouTube, Typeform, Mapbox iframe) → CLS + TBT + cookies RGPD + invisibles aux crawlers
- CSS/JS non minifiés
- Pas de robots.txt ou sitemap
- Pas de favicon/manifeste PWA
- Liens cassés internes (pas de vérification automatique)
- Accessibilité : alt manquants, contraste insuffisant, pas de landmarks
- Pas de Core Web Vitals monitoring
- Pas de gestion 404/redirections
## Interview questions (adaptive)
En plus du set minimum business :
- Hébergement actuel / cible ? (shared / Netlify / Cloudflare / GitHub Pages / autre)
- Nom de domaine configuré ? (oui + lequel / pas encore)
- Multi-langue prévu ? (oui + langues / non) `[if: public=true]`
- Formulaire de contact / newsletter ? (oui + via quel service / non)
- Analytics ? (Plausible / GA4 / aucun / autre)
- Widgets / embeds tiers ? (Calendly, YouTube, Typeform, Mapbox, etc. — impacte perf + RGPD)
- Vidéos intégrées ? (hébergement : local / YouTube / Vimeo / Cloudflare Stream — poids, poster, codecs)
- Contraintes légales France : cookies, mentions légales, RGAA a11y ? (liste)
- Déjà un compte Google Search Console / Bing Webmaster ? (oui / non)
## Plugin recommendations
- **ui-ux-pro-max** : ON — l'UI/UX est 100% du produit
- **gstack** : OPTIONAL — utile pour audit Lighthouse/Axe si site déployé
- **context7** : OFF — pas de fast-libs
## Example project layout
```
index.html
about.html
contact.html
css/
style.css
js/
main.js
img/
logo.svg
robots.txt
sitemap.xml
```

View File

@ -0,0 +1,120 @@
---
name: strapi
category: cms
public: false
database: required
hosting_hints:
- vps
- docker
- render
- railway
- strapi-cloud
audit_stack:
- analyze
- code-clean
- cso
- perf
- doc
plugins:
context7: yes
ui-ux-pro-max: no
gstack: no
---
# Strapi (headless CMS, Node.js)
CMS headless Node.js, API REST + GraphQL. Admin panel React intégré. Consomé par frontend séparé (Next/Nuxt/Astro/React/etc.).
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient "@strapi/strapi" OR "strapi"
- FILE: `config/server.js` OR `config/server.ts`
- FILE: `config/admin.js` OR `config/admin.ts`
- FILE: `config/database.js` OR `config/database.ts`
### Medium signals (×2)
- DIR: `src/api/`
- DIR: `src/components/`
- DIR: `config/env/`
- FILE: `.strapi-updater.json`
- DEP: `@strapi/plugin-*`
### Weak signals (×1)
- DIR: `public/uploads/`
- FILE: `database/migrations/`
- FILE: `favicon.png` (admin panel favicon)
- DEP: "sqlite3" OR "pg" OR "mysql2" (DB adapter)
## Implications
- **Hébergement** : VPS, Docker (Render, Railway, Fly), Strapi Cloud
- **Base de données** : REQUISE — SQLite (dev), PostgreSQL/MySQL (prod)
- **SEO/GEO** : N/A (admin panel non indexé) — mais le frontend qui consomme peut être public
- **Surface sécurité** : GRANDE — API publique, permissions par type de contenu, tokens API
- **UI/UX** : admin panel built-in (rarement customisé)
## Typical pain points
- Permissions roles & users mal configurées (Public peut lire/écrire par défaut)
- API tokens permanents (non expirants) en dur dans frontend
- JWT_SECRET en dur ou faible
- ADMIN_JWT_SECRET non rotaté
- SQLite en production (verrouillage, pas scalable)
- `uploads/` non délégué à CDN/S3 → storage serveur plein
- Content types modifiés en prod sans migration (données perdues)
- Plugins marketplace obsolètes
- Pas de CI (schema.json versionné mais pas de tests API)
- Strapi v3 → v4 migration non effectuée (v3 EOL)
- Webhook secrets en dur
- CORS config mal restrictive
- Rate limiting absent (DDOS admin trivial)
- `config/database.js` committé avec credentials
## Interview questions (adaptive)
En plus du set minimum business :
- Version Strapi ? (v3 / v4 / v5)
- Base de données prod : PostgreSQL / MySQL / SQLite (warn si SQLite) ?
- Plugins marketplace utilisés ? (top 5)
- API consommateurs : frontend(s) propre(s) ? tierces parties ?
- Tokens API : permanents ou revocables ?
- Content-types count et profondeur (nested components) ?
- Uploads : local / S3 / Cloudinary / autre ?
- Déploiement : VPS / Docker / Strapi Cloud ?
- Webhooks configurés ? (revalidate frontend après changement content)
- GraphQL activé ?
- Rate limiting + CORS correctement configurés ?
- Environnement staging ?
## Plugin recommendations
- **context7** : ON — Strapi évolue (v4 → v5 breaking changes fréquents)
- **ui-ux-pro-max** : OFF (admin panel built-in, rarement customisé)
- **gstack** : OFF
## Example project layout
```
package.json
config/
server.ts
admin.ts
database.ts
plugins.ts
env/
production/
database.ts
src/
api/
article/
controllers/
routes/
services/
content-types/
article/
schema.json
components/
seo/
metadata.json
extensions/
public/
uploads/
database/
migrations/
```

View File

@ -0,0 +1,123 @@
---
name: terraform-infra
category: meta
public: false
database: none
hosting_hints:
- aws
- gcp
- azure
- digitalocean
- cloudflare
- hetzner
audit_stack:
- analyze
- code-clean
- cso
- doc
plugins:
context7: optional
ui-ux-pro-max: no
gstack: no
---
# Terraform Infrastructure-as-Code
Projet Terraform/OpenTofu définissant une infrastructure cloud. Pas de code applicatif — que des ressources cloud.
## Detection signals
### Strong signals (×3)
- EXT: 2+ fichiers `.tf` à la racine OU dans `modules/`
- FILE: `main.tf`
- FILE: `terraform.tfvars` OR `*.auto.tfvars` (attention: doit être gitignored)
- FILE: `.terraform.lock.hcl`
### Medium signals (×2)
- FILE: `variables.tf`
- FILE: `outputs.tf`
- FILE: `backend.tf` OR `versions.tf` OR `providers.tf`
- DIR: `modules/` contenant sous-modules `.tf`
- FILE: `terragrunt.hcl`
### Weak signals (×1)
- DIR: `.terraform/` (gitignored normalement)
- FILE: `.tflint.hcl`
- FILE: `.tfsec.yaml` OR `.checkov.yaml`
- DIR: `environments/` (dev/staging/prod en workspaces)
### Composition overlays
- **Terragrunt** : `terragrunt.hcl` présent → multi-env DRY
- **OpenTofu** : `opentofu.lock.hcl` OR `tofu.tf` → fork open-source, même archétype
## Implications
- **Cloud provider** : variable (AWS/GCP/Azure/DO/Cloudflare/Hetzner/mix)
- **Base de données** : N/A (mais peut provisionner des DBs managées)
- **SEO/GEO** : N/A
- **Surface sécurité** : CRITIQUE — un mauvais `.tf` peut ouvrir un S3 bucket publique ou IAM trop permissif
- **UI/UX** : N/A
## Typical pain points
- `terraform.tfvars` committé avec secrets (API keys, DB passwords)
- State file en local (pas de remote backend S3/GCS/Terraform Cloud)
- State file committé dans git (ÉNORME red flag — contient secrets en clair)
- Pas de state locking (DynamoDB / GCS lock) → corruption en équipe
- IAM policies trop permissives (`"*"` actions / resources)
- S3 buckets sans encryption, sans versioning, sans logging
- Security groups ingress `0.0.0.0/0` sur ports non-HTTP
- Secrets dans variables au lieu de secret manager
- Providers non pinned → breaking changes silencieuses
- Modules non versionnés (`source = "./modules/x"` au lieu de `git::...?ref=v1.0.0`)
- Pas de `tflint` / `tfsec` / `checkov` en CI
- Plan non reviewé avant apply (auto-approve en CI dangereux)
- Pas de `depends_on` explicite → ordre d'apply instable
- `count` / `for_each` mal utilisé → ressources détruites-recréées accidentellement
## Interview questions (adaptive)
En plus du set minimum business :
- Cloud provider(s) : AWS / GCP / Azure / DO / Cloudflare / Hetzner / multi ?
- Terraform ou OpenTofu ?
- Terragrunt utilisé ?
- State backend : local / S3+DynamoDB / GCS / Terraform Cloud / Spacelift / autre ?
- Multi-env : workspaces / modules / Terragrunt ?
- Pipeline CI : Atlantis / Terraform Cloud / GitHub Actions / GitLab / aucun ?
- Plan review obligatoire avant apply ?
- Secrets : Vault / AWS Secrets Manager / GCP Secret Manager / SOPS / autre ?
- Scanners sécu : tflint / tfsec / checkov / trivy ?
- Versions providers pinnées ?
- Drift detection (terraform plan régulier en CI) ?
- Disaster recovery plan (perte de state) ?
## Plugin recommendations
- **context7** : OPTIONAL — ON pour AWS/GCP providers (APIs évoluent)
- **ui-ux-pro-max** : OFF
- **gstack** : OFF
## Example project layout
```
main.tf
variables.tf
outputs.tf
providers.tf
versions.tf
backend.tf
terraform.tfvars (GITIGNORED — contient secrets)
.terraform.lock.hcl
.tflint.hcl
modules/
vpc/
main.tf
variables.tf
outputs.tf
ecs-service/
...
environments/
dev/
terragrunt.hcl
prod/
terragrunt.hcl
.github/
workflows/
terraform-plan.yml
terraform-apply.yml
```

View File

@ -0,0 +1,132 @@
---
name: web-game
category: game
public: true
database: optional
hosting_hints:
- itch-io
- netlify
- cloudflare-pages
- vercel
- github-pages
- newgrounds
audit_stack:
- analyze
- code-clean
- perf
- design-review
- a11y
- cso
- doc
plugins:
context7: optional
ui-ux-pro-max: optional
gstack: optional
---
# Web Game (browser-based)
Jeu web navigateur — Phaser / Pixi.js / Three.js / Babylon.js / p5.js / Matter.js / Canvas 2D / WebGL brut. Distribution : itch.io / Newgrounds / site dédié / portail HTML5.
## Detection signals
### Strong signals (×3)
- DEP: `package.json` contient l'un de : "phaser", "pixi.js", "three", "babylonjs" OR "@babylonjs/core", "matter-js", "p5"
- STRING_IN_FILE: tout .js/.ts contient "new Phaser.Game(" OR "new PIXI.Application(" OR "new THREE.Scene(" OR "BABYLON.Engine("
### Medium signals (×2)
- DIR: `src/scenes/` OR `src/entities/` OR `src/sprites/`
- FILE: `game.config.js` OR `src/config.js` avec game settings
- DEP: "howler" OR "tone" OR "sound.js" (audio)
- DEP: "gsap" OR "@tweenjs/tween.js" (animations)
### Weak signals (×1)
- DIR: `assets/sprites/` OR `assets/audio/` OR `assets/tilesets/`
- EXT: `.atlas` OR `.tmx` (Tiled maps)
- DEP: "webpack" OR "vite" (bundler)
- FILE: `index.html` avec `<canvas>` ou `<div id="game">`
### Counter-signals (exclusion)
- DEP: "react-three-fiber" sans Three.js scène principale → peut être composant 3D dans app React (pas un jeu)
## Implications
- **Hébergement** : itch.io (dominant indie), Newgrounds, Cloudflare Pages, Netlify, GitHub Pages, site custom
- **Base de données** : OPTIONNELLE — souvent localStorage pour saves, parfois backend pour leaderboard/multiplayer
- **SEO/GEO** : IMPORTANT si monétisation via portail web (mais jeu lui-même = canvas opaque)
- **Surface sécurité** : MOYENNE-GRANDE si multiplayer ou backend (anti-cheat, auth)
- **UI/UX** : CRITIQUE — game feel, juice, feedback
## Typical pain points
- FPS instable (pas de rAF, setInterval utilisé, physics tickée dans render)
- Assets chargés tous au démarrage (loading screen 30s) au lieu de streaming
- Sprites non atlas (chaque image = requête réseau)
- Audio non compressé (WAV uncompressed au lieu de OGG/WebM)
- Pas de fallback WebGL → Canvas2D (GPU insuffisant = écran noir)
- Memory leaks (scenes non destroy-ées, event listeners non cleanup)
- Input hardcoded (pas de rebind, pas de support manette via Gamepad API)
- Pas de pause native (perte focus tab = jeu continue en bg)
- Persistance : localStorage (limitation 5MB, synchrone, bloquant)
- Pas de save cloud ni cross-device
- Multiplayer : auth client-side uniquement (triche triviale)
- Accessibilité : pas d'options (no-motion, color-blind, subtitle, remappable controls)
- Perf mobile : jeu pensé desktop, pas touch-optimized, pas adaptatif
- Monétisation : ads ou IAP sans consentement RGPD
- Analytics intrusifs (user tracking sans consentement)
## Interview questions (adaptive)
En plus du set minimum business :
- Moteur / framework : Phaser / Pixi / Three / Babylon / p5 / custom canvas / autre ?
- Type de jeu : 2D / 3D / isométrique / top-down / platformer / puzzle / runner / autre ?
- Solo / multijoueur / les deux ?
- Persistance : localStorage / IndexedDB / backend (lequel) / cloud saves ?
- Cible : desktop seulement / mobile / tablette / manette ?
- FPS cible : 60 / 120 / variable ?
- Monétisation : gratuit / premium / free-to-play + ads / IAP ?
- Plateforme de distribution : itch.io / Newgrounds / site custom / Steam (via Electron ?) / autre ?
- Multi-langue prévu ?
- Audio : effets + musique ? compression ?
- Rebind controls / manette prévu ?
- Accessibilité : options (reduced motion / subtitles / color-blind) ?
- Ads réseau si free : lequel ?
- Leaderboard / social ?
## Plugin recommendations
- **context7** : OPTIONAL — ON si Three/Babylon récents
- **ui-ux-pro-max** : OPTIONAL — utile pour UI menus (pas pour gameplay)
- **gstack** : OPTIONAL — tester sur navigateur
## Example project layout
```
index.html
package.json
vite.config.ts
src/
main.ts
game.ts
config.ts
scenes/
BootScene.ts
MenuScene.ts
GameScene.ts
UIScene.ts
entities/
Player.ts
Enemy.ts
systems/
InputManager.ts
AudioManager.ts
SaveSystem.ts
data/
levels.json
assets/
sprites/
player.atlas
enemies.png
audio/
music.ogg
sfx/
tilesets/
world.tmx
public/
index.html
```

View File

@ -0,0 +1,101 @@
---
name: woocommerce
category: cms
public: true
database: required
hosting_hints:
- vps
- managed-wp
- woocommerce-com
- docker
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: no
ui-ux-pro-max: yes
gstack: optional
---
# WooCommerce (WordPress e-commerce)
Extension WordPress pour e-commerce. Archétype **composé** : hérite de wordpress + ajoute e-commerce (PII, paiements, stocks).
## Detection signals
Présuppose que `wordpress.md` a déjà matché (fortement ou moyennement). Signaux additionnels pour ajouter l'overlay WooCommerce :
### Strong signals (×3)
- DIR: `wp-content/plugins/woocommerce/`
- FILE: `wp-content/plugins/woocommerce/woocommerce.php`
- DEP: `composer.json` contient "woocommerce/woocommerce" (Composer-managed WP)
### Medium signals (×2)
- STRING_IN_FILE: thème actif `functions.php` contient "add_theme_support( 'woocommerce' )"
- DIR: `wp-content/themes/*/woocommerce/` (template overrides)
- DIR: `wp-content/plugins/woocommerce-*/` (extensions WC : shipping, payments, subscriptions)
### Weak signals (×1)
- STRING_IN_FILE: database dumps / SQL contient tables "wp_wc_*" OR "wp_woocommerce_*"
- DEP: `@woocommerce/*` dans package.json (blocks custom)
## Implications (en plus de wordpress.md)
- **Surface sécurité** : **TRÈS GRANDE** — paiements, PII clients, tokens passerelles
- **Conformité** : PCI-DSS indirecte (via gateway), RGPD (données clients), consentement cookies obligatoire
- **SEO/GEO** : CRITIQUE — schema Product + Offer + Review obligatoire
- **Perf** : critique pour conversion (LCP < 2.5s idéal checkout)
## Typical pain points (en plus de WordPress)
- Extensions WC obsolètes (WooCommerce Payments, Subscriptions, Stripe Gateway) — failles récurrentes
- Template overrides thème non mis à jour avec les changements core WC → bugs silencieux
- Pas de schema.org Product / Offer / AggregateRating
- Checkout lent (plugins overload, AJAX chain)
- Variations produits : performances DB catastrophiques au-delà de 500 produits sans index
- Stocks non synchronisés avec ERP / marketplaces (Amazon, Etsy)
- Backup produits / commandes absent
- Logs d'erreur checkout non monitorés → ventes perdues silencieuses
- Emails transactionnels non délivrés (SMTP absent, spam folder)
- HPOS (High-Performance Order Storage) non migré (WC 8+)
- Taxes mal configurées (TVA intracommunautaire, prix HT/TTC)
- PII stockée en clair (numéros téléphones, adresses)
## Interview questions (adaptive)
En plus des questions wordpress.md :
- Volume produits (catalogue simple ou milliers) ?
- Variations produits (tailles, couleurs, bundles) ?
- Volume commandes mensuel ?
- Gateway de paiement : Stripe / PayPal / WC Payments / autre ?
- Abonnements (WC Subscriptions) ?
- Multi-devise / multi-langue ?
- Gestion stocks (manuelle / ERP synchronisé) ?
- Marketplaces connectés (Amazon, eBay, Etsy) ?
- HPOS activé (WC 8.2+) ?
- RGPD / consentement cookies en place ?
- Emails transactionnels (SMTP configuré / via plugin / via Mailgun/Postmark) ?
- Monitoring erreurs checkout ?
## Plugin recommendations
- **ui-ux-pro-max** : ON — parcours d'achat = UX intensive
- **gstack** : RECOMMANDÉ — Lighthouse + audit checkout flow
- **context7** : OFF
## Example project layout (en plus de wordpress.md)
```
wp-content/
plugins/
woocommerce/
woocommerce-stripe-gateway/
woocommerce-subscriptions/
themes/
mon-theme-wc/
woocommerce/ ← template overrides
single-product.php
cart/cart.php
functions.php ← add_theme_support('woocommerce')
```

View File

@ -0,0 +1,109 @@
---
name: wordpress
category: cms
public: true
database: required
hosting_hints:
- shared
- vps
- managed-wp
- docker
audit_stack:
- analyze
- code-clean
- seo
- design-review
- perf
- cso
- a11y
- doc
plugins:
context7: no
ui-ux-pro-max: optional
gstack: optional
---
# WordPress
CMS PHP/MySQL classique. Thème custom OU thème acheté + plugins. Peut inclure WooCommerce (overlay séparé).
## Detection signals
### Strong signals (×3)
- FILE: `wp-config.php`
- FILE: `wp-config-sample.php`
- DIR: `wp-admin/`
- DIR: `wp-includes/`
### Medium signals (×2)
- DIR: `wp-content/`
- DIR: `wp-content/themes/`
- DIR: `wp-content/plugins/`
- STRING_IN_FILE: `wp-content/themes/*/style.css` contient "Theme Name:"
- STRING_IN_FILE: `composer.json` contient "johnpbloch/wordpress" OR "roots/wordpress"
### Weak signals (×1)
- FILE: `.htaccess` contient "RewriteRule ^index\.php$"
- EXT: 20+ fichiers .php
- FILE: `wp-cli.yml`
- DIR: `mu-plugins/`
### Composition overlays
- **WooCommerce** : DIR `wp-content/plugins/woocommerce/` OR DEP `woocommerce` → appliquer overlay e-commerce
- **Multisite** : STRING_IN_FILE `wp-config.php` contient "WP_ALLOW_MULTISITE" → noter
## Implications
- **Hébergement** : shared hosting (OVH, IONOS, Hostinger), VPS, ou managed-WP (WP Engine, Kinsta)
- **Base de données** : MySQL/MariaDB REQUISE
- **SEO/GEO** : CRITIQUE
- **Surface sécurité** : GRANDE — plugins tiers, wp-admin exposé, XML-RPC, attaques massives bruteforce
- **UI/UX** : dépend du thème (custom ou acheté)
## Typical pain points
- Plugins obsolètes / non mis à jour (failles critiques)
- Pas d'environnement staging
- Images non optimisées (poids page énorme)
- Pas de cache (page cache, object cache)
- wp-admin accessible publiquement sans 2FA
- XML-RPC exposé (pingback DDoS, bruteforce)
- Base de données : tables `wp_options` gonflées par transients
- SEO plugin (Yoast / RankMath / SEOPress) mal configuré ou absent
- Thème custom non testé sur mobile / a11y
- Backup absent ou manuel
- PHP version obsolète (< 8.1)
## Interview questions (adaptive)
En plus du set minimum business :
- Hébergeur actuel ? (shared / VPS / managed-WP — lequel)
- Version PHP et WordPress ?
- Thème : custom (code propre) ou acheté (ThemeForest / autre) ?
- Plugins critiques ? (nombre total + liste des plus importants)
- Environnement staging dispo ? (oui / non / souhaité)
- Dernier audit sécurité ? (date / jamais)
- Stratégie de backup actuelle ? (quotidien / manuel / aucun)
- SEO plugin installé ? (Yoast / RankMath / SEOPress / aucun)
- WooCommerce installé ? (oui / non) `[if: signal matches WooCommerce]`
- Accès SSH / WP-CLI disponible ? (oui / non)
- Trafic mensuel estimé ? (pour dimensionnement perf)
## Plugin recommendations
- **ui-ux-pro-max** : OPTIONAL — ON si thème custom en dev
- **gstack** : OPTIONAL — pour audit Lighthouse/Axe sur staging
- **context7** : OFF — WP évolue lentement, pas de doc fast-libs
## Example project layout
```
wp-config.php
wp-admin/
wp-includes/
wp-content/
themes/
mon-theme/
style.css
functions.php
index.php
plugins/
yoast-seo/
woocommerce/ (overlay e-commerce)
uploads/
```