refactor(onboard,init-project): migrate file paths to .claude/

Adapt the two skills that scaffold project config + the underlying
onboarder agent + the dotfiles-meta archetype folder tree to the new
governance layout. AUDIT_* files go to .claude/audits/, TODO goes to
.claude/tasks/, and .claude/memory/ is seeded from ~/.claude/templates/memory/
with all 5 registries (decisions/learnings/blockers/journal/evals).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
bastien 2026-04-23 16:06:14 +02:00
parent e93116e160
commit c1efd87aad
4 changed files with 51 additions and 47 deletions

View File

@ -1,6 +1,6 @@
--- ---
name: onboarder name: onboarder
description: Generate claude-config files (CLAUDE.md, settings.json, .claudeignore, .gitignore safety, tasks/) for an existing project. Pure config generator — no interview, no audit. Called by /onboard orchestrator. description: Generate claude-config files (CLAUDE.md, settings.json, .claudeignore, .gitignore safety, .claude/tasks/ + .claude/memory/ + .claude/audits/) for an existing project. Pure config generator — no interview, no audit. Called by /onboard orchestrator.
tools: Read, Write, Edit, Bash, Glob, Grep tools: Read, Write, Edit, Bash, Glob, Grep
model: sonnet model: sonnet
--- ---
@ -101,22 +101,19 @@ grep -q 'settings.local.json' ${PROJECT_ROOT}/.gitignore 2>/dev/null && echo "ha
--- ---
## PHASE 5 — tasks/ scaffold ## PHASE 5 — .claude/tasks/ + .claude/memory/ + .claude/audits/ scaffold
```bash ```bash
ls ${PROJECT_ROOT}/tasks/LESSONS.md ${PROJECT_ROOT}/tasks/TODO.md 2>/dev/null ls ${PROJECT_ROOT}/.claude/tasks/TODO.md ${PROJECT_ROOT}/.claude/memory/ 2>/dev/null
``` ```
- **tasks/TODO.md missing** create with header: - **.claude/tasks/TODO.md missing** → `mkdir -p ${PROJECT_ROOT}/.claude/tasks` then create with header:
``` ```
# TODO # TODO
<!-- Claude writes tasks here before implementing. Format: - [ ] task --> <!-- Claude writes tasks here before implementing. Format: - [ ] task -->
``` ```
- **tasks/LESSONS.md missing** → create with header: - **.claude/memory/ missing** → `mkdir -p ${PROJECT_ROOT}/.claude/memory`, then for each of the 5 registries (`decisions.md`, `learnings.md`, `blockers.md`, `journal.md`, `evals.md`): if the file does not exist in `${PROJECT_ROOT}/.claude/memory/`, copy from `~/.claude/templates/memory/<name>.md` (YAML schema + empty index + inline template comment). If a registry file already exists → skip (do NOT overwrite).
``` - **.claude/audits/ missing** → `mkdir -p ${PROJECT_ROOT}/.claude/audits` (empty — populated later by `/onboard` audit phase).
# Lessons learned
<!-- Format: [date] | what went wrong | rule to avoid it -->
```
**Do NOT overwrite existing content.** **Do NOT overwrite existing content.**
@ -144,8 +141,13 @@ FILES WRITTEN:
✅ .claude/settings.json ✅ .claude/settings.json
✅ .claudeignore ✅ .claudeignore
✅ .gitignore (created | updated | unchanged) ✅ .gitignore (created | updated | unchanged)
✅ tasks/TODO.md (created | unchanged) ✅ .claude/tasks/TODO.md (created | unchanged)
✅ tasks/LESSONS.md (created | unchanged) ✅ .claude/memory/decisions.md (created | unchanged)
✅ .claude/memory/learnings.md (created | unchanged)
✅ .claude/memory/blockers.md (created | unchanged)
✅ .claude/memory/journal.md (created | unchanged)
✅ .claude/memory/evals.md (created | unchanged)
✅ .claude/audits/ (created | unchanged)
[✅ ROADMAP.md] (if generate_roadmap) [✅ ROADMAP.md] (if generate_roadmap)
``` ```

View File

@ -111,5 +111,7 @@ skills/ (skills custom)
hooks/ (hooks projet, pas git) hooks/ (hooks projet, pas git)
templates/ (templates config fournis) templates/ (templates config fournis)
lib/ (helpers shell) lib/ (helpers shell)
tasks/ .claude/tasks/
.claude/memory/
.claude/audits/
``` ```

View File

@ -57,7 +57,7 @@ Changes → back to STEP 3. Approved → continue.
## STEP 5 — SCAFFOLD ## STEP 5 — SCAFFOLD
Load `$HOME/.claude/agents/scaffolder.md`. Pass: BRIEF + DESIGN + `~/.claude/templates/project-CLAUDE.md` + `~/.claude/CLAUDE.md`. Load `$HOME/.claude/agents/scaffolder.md`. Pass: BRIEF + DESIGN + `~/.claude/templates/project-CLAUDE.md` + `~/.claude/CLAUDE.md`.
Creates: CLAUDE.md, settings, structure, config, empty entry points, .gitignore, .env.example, tasks/TODO.md, tasks/LESSONS.md. NO README, NO features. Creates: CLAUDE.md, settings, structure, config, empty entry points, .gitignore, .env.example, .claude/tasks/TODO.md, .claude/memory/{decisions,learnings,blockers,journal,evals}.md, .claude/audits/. NO README, NO features.
Verify: `git init` + build passes. Verify: `git init` + build passes.
## STEP 5b — CREATE README ## STEP 5b — CREATE README

View File

@ -1,6 +1,6 @@
--- ---
name: onboard name: onboard
description: Onboard an existing project — detects archetype, installs claude-config, runs full audit (dette/SEO-GEO/UI-UX/perf/sécu/a11y/doc), produces improvement plan in ./tasks/. Use on repos not created via /init-project. description: Onboard an existing project — detects archetype, installs claude-config, runs full audit (dette/SEO-GEO/UI-UX/perf/sécu/a11y/doc), produces improvement plan in .claude/audits/ + .claude/tasks/. Use on repos not created via /init-project.
argument-hint: [optional hints: "Python FastAPI" | "add gsd" | "Next.js monorepo" | "force-archetype:wordpress"] argument-hint: [optional hints: "Python FastAPI" | "add gsd" | "Next.js monorepo" | "force-archetype:wordpress"]
disable-model-invocation: true disable-model-invocation: true
allowed-tools: Read, Write, Edit, Bash, Glob, Grep allowed-tools: Read, Write, Edit, Bash, Glob, Grep
@ -96,7 +96,7 @@ L'agent génère :
- `.claude/settings.json` - `.claude/settings.json`
- `.claudeignore` - `.claudeignore`
- `.gitignore` (safety check) - `.gitignore` (safety check)
- `tasks/TODO.md`, `tasks/LESSONS.md` - `.claude/tasks/TODO.md`, `.claude/memory/{decisions,learnings,blockers,journal,evals}.md`
- **Pas encore** `ROADMAP.md` (décision STEP 9) - **Pas encore** `ROADMAP.md` (décision STEP 9)
Si `CLAUDE.md` existe déjà : lire son contenu, ne PAS écraser — fusionner après STEP 3. Si `CLAUDE.md` existe déjà : lire son contenu, ne PAS écraser — fusionner après STEP 3.
@ -219,7 +219,7 @@ grep -q '^\.onboard-audit/' .gitignore 2>/dev/null || \
printf '\n# onboard audit raw outputs (consumed by /onboard STEP 7)\n.onboard-audit/\n' >> .gitignore printf '\n# onboard audit raw outputs (consumed by /onboard STEP 7)\n.onboard-audit/\n' >> .gitignore
``` ```
Ce dossier contient les sorties brutes des audits (L3a+L3b). STEP 7 (L4) les synthétise vers `tasks/`. Peut être supprimé après L4 sans perte. Ce dossier contient les sorties brutes des audits (L3a+L3b). STEP 7 (L4) les synthétise vers `.claude/audits/` (rapports) et `.claude/tasks/` (backlog). Peut être supprimé après L4 sans perte.
### Injection contexte archétype ### Injection contexte archétype
@ -677,25 +677,25 @@ done
--- ---
## STEP 7 — SYNTHÈSE dans `tasks/` ## STEP 7 — SYNTHÈSE dans `.claude/audits/`
À partir des rapports bruts dans `.onboard-audit/`, générer 4 fichiers structurés dans `tasks/`. À partir des rapports bruts dans `.onboard-audit/`, générer 4 fichiers structurés dans `.claude/audits/`.
Spawn un subagent synthétiseur (isolé, chargé uniquement du contenu de `.onboard-audit/`) : Spawn un subagent synthétiseur (isolé, chargé uniquement du contenu de `.onboard-audit/`) :
``` ```
Agent( Agent(
subagent_type="general-purpose", subagent_type="general-purpose",
description="Onboard — synthèse vers tasks/", description="Onboard — synthèse vers .claude/audits/",
prompt=""" prompt="""
Lire tous les fichiers de <PROJECT_ROOT>/.onboard-audit/ : Lire tous les fichiers de <PROJECT_ROOT>/.onboard-audit/ :
- analyze.md, code-clean.md, cso.md, doc.md (toujours) - analyze.md, code-clean.md, cso.md, doc.md (toujours)
- seo.md, geo.md, design.md, perf.md, a11y.md (si présents) - seo.md, geo.md, design.md, perf.md, a11y.md (si présents)
Contexte : archetype=<archetype>, public=<bool>, stack=<stack>, brief_interview=<summary>. Contexte : archetype=<archetype>, public=<bool>, stack=<stack>, brief_interview=<summary>.
Produire 4 fichiers dans <PROJECT_ROOT>/tasks/ : Produire 4 fichiers dans <PROJECT_ROOT>/.claude/audits/ :
═══ 1. tasks/ONBOARD_REPORT.md — synthèse exécutive ═══ ═══ 1. .claude/audits/ONBOARD_REPORT.md — synthèse exécutive ═══
Structure : Structure :
# Onboard Report — <project_name> # Onboard Report — <project_name>
## Profile ## Profile
@ -714,12 +714,12 @@ Agent(
| design | ... | design | ...
| perf | ... | perf | ...
| a11y | ... | a11y | ...
## Top 5 priorités (choisies depuis AUDIT_ISSUES par score sévérité × impact projet) ## Top 5 priorités (choisies depuis .claude/audits/AUDIT_ISSUES.md par score sévérité × impact projet)
1. [P0 Critique] <titre><domaine><impact en 1 phrase> 1. [P0 Critique] <titre><domaine><impact en 1 phrase>
2. ... 2. ...
## Prochaines étapes (pointeurs vers les 3 autres fichiers) ## Prochaines étapes (pointeurs vers les 3 autres fichiers)
═══ 2. tasks/AUDIT_GOOD.md — ce qui va ═══ ═══ 2. .claude/audits/AUDIT_GOOD.md — ce qui va ═══
Inventaire positif par domaine. Ce qu'il faut PROTÉGER en modifiant le reste. Inventaire positif par domaine. Ce qu'il faut PROTÉGER en modifiant le reste.
Structure: Structure:
# Audit — Ce qui va # Audit — Ce qui va
@ -729,7 +729,7 @@ Agent(
- <forces> - <forces>
## [domaine par domaine] ## [domaine par domaine]
═══ 3. tasks/AUDIT_ISSUES.md — ce qui ne va pas ═══ ═══ 3. .claude/audits/AUDIT_ISSUES.md — ce qui ne va pas ═══
Listing par sévérité descendante (Critique → Basse). Listing par sévérité descendante (Critique → Basse).
Structure: Structure:
# Audit — Ce qui ne va pas # Audit — Ce qui ne va pas
@ -744,7 +744,7 @@ Agent(
## Basse ## Basse
Ne pas inventer, ne citer QUE ce qui est dans .onboard-audit/. Ne pas inventer, ne citer QUE ce qui est dans .onboard-audit/.
═══ 4. tasks/AUDIT_PROPOSALS.md — propositions ═══ ═══ 4. .claude/audits/AUDIT_PROPOSALS.md — propositions ═══
Pour CHAQUE issue Critique et Haute du fichier ISSUES : proposer au minimum 2 options, Pour CHAQUE issue Critique et Haute du fichier ISSUES : proposer au minimum 2 options,
avec tradeoffs. Pour les issues Moyennes : 1 option suffit. avec tradeoffs. Pour les issues Moyennes : 1 option suffit.
Structure: Structure:
@ -774,7 +774,7 @@ Agent(
) )
``` ```
Vérifier que les 4 fichiers `tasks/ONBOARD_REPORT.md`, `tasks/AUDIT_GOOD.md`, `tasks/AUDIT_ISSUES.md`, `tasks/AUDIT_PROPOSALS.md` existent et sont non vides. Vérifier que les 4 fichiers `.claude/audits/ONBOARD_REPORT.md`, `.claude/audits/AUDIT_GOOD.md`, `.claude/audits/AUDIT_ISSUES.md`, `.claude/audits/AUDIT_PROPOSALS.md` existent et sont non vides.
--- ---
@ -789,7 +789,7 @@ Archétype: <name>
Stack: <stack> Stack: <stack>
Scores: dette:<X> · sécu:<X> · doc:<X> [· seo:<X> · geo:<X> · design:<X> · perf:<X> · a11y:<X>] Scores: dette:<X> · sécu:<X> · doc:<X> [· seo:<X> · geo:<X> · design:<X> · perf:<X> · a11y:<X>]
📂 Fichiers produits dans tasks/ : 📂 Fichiers produits dans .claude/audits/ :
- ONBOARD_REPORT.md (synthèse exécutive) - ONBOARD_REPORT.md (synthèse exécutive)
- AUDIT_GOOD.md (ce qui va) - AUDIT_GOOD.md (ce qui va)
- AUDIT_ISSUES.md (ce qui ne va pas, par sévérité) - AUDIT_ISSUES.md (ce qui ne va pas, par sévérité)
@ -802,13 +802,13 @@ TOP 5 PRIORITÉS :
4. [P1 Haute] <titre> 4. [P1 Haute] <titre>
5. [P2 Moyenne] <titre> 5. [P2 Moyenne] <titre>
Prochaine étape : générer tasks/TODO.md depuis AUDIT_PROPOSALS.md approuvé. Prochaine étape : générer .claude/tasks/TODO.md depuis .claude/audits/AUDIT_PROPOSALS.md approuvé.
Options : Options :
A) Lire d'abord les 4 fichiers, je reviens te le dire (STOP) A) Lire d'abord les 4 fichiers, je reviens te le dire (STOP)
B) Tout est OK, génère TODO.md depuis toutes les propositions recommandées B) Tout est OK, génère .claude/tasks/TODO.md depuis toutes les propositions recommandées
C) Je veux éditer AUDIT_PROPOSALS.md avant de générer TODO.md (indiquer ce à changer) C) Je veux éditer .claude/audits/AUDIT_PROPOSALS.md avant de générer .claude/tasks/TODO.md (indiquer ce à changer)
D) Réduire le scope — ne garder que P0 Critique dans TODO.md D) Réduire le scope — ne garder que P0 Critique dans .claude/tasks/TODO.md
E) Abort — je n'utilise pas le backlog auto E) Abort — je n'utilise pas le backlog auto
Choix ? (A / B / C / D / E) Choix ? (A / B / C / D / E)
@ -818,15 +818,15 @@ Choix ? (A / B / C / D / E)
- **A** → stop ici, l'utilisateur relira et reviendra avec `/onboard continue`. - **A** → stop ici, l'utilisateur relira et reviendra avec `/onboard continue`.
- **B** → continuer STEP 9 avec toutes les recommandations. - **B** → continuer STEP 9 avec toutes les recommandations.
- **C** → demander les changements spécifiques, les appliquer dans AUDIT_PROPOSALS.md, puis re-présenter la gate. - **C** → demander les changements spécifiques, les appliquer dans .claude/audits/AUDIT_PROPOSALS.md, puis re-présenter la gate.
- **D** → continuer STEP 9 avec seulement les P0. - **D** → continuer STEP 9 avec seulement les P0.
- **E** → arrêter sans générer TODO.md, print "Onboard rapport figé dans tasks/ — tu peux t'en servir à la main ensuite." - **E** → arrêter sans générer .claude/tasks/TODO.md, print "Onboard rapport figé dans .claude/audits/ — tu peux t'en servir à la main ensuite."
--- ---
## STEP 9 — BACKLOG → tasks/TODO.md ## STEP 9 — BACKLOG → .claude/tasks/TODO.md
Lire `tasks/AUDIT_PROPOSALS.md` (avec les "Recommandations" sélectionnées par l'utilisateur). Pour chaque proposition recommandée, générer une entrée dans `tasks/TODO.md` : Lire `.claude/audits/AUDIT_PROPOSALS.md` (avec les "Recommandations" sélectionnées par l'utilisateur). Pour chaque proposition recommandée, générer une entrée dans `.claude/tasks/TODO.md` :
Format : Format :
``` ```
@ -838,7 +838,7 @@ Format :
## P0 — Critique ## P0 — Critique
- [ ] [P0] [/hotfix] — <titre> - [ ] [P0] [/hotfix] — <titre>
Fichiers: <paths> Fichiers: <paths>
Source: AUDIT_PROPOSALS.md § "<titre>" Source: .claude/audits/AUDIT_PROPOSALS.md § "<titre>"
Option recommandée: <A/B/C> Option recommandée: <A/B/C>
- [ ] [P0] [/bugfix] — <titre> - [ ] [P0] [/bugfix] — <titre>
Fichiers: ... Fichiers: ...
@ -871,7 +871,7 @@ Format :
| Audit SEO/GEO à re-lancer après corrections | `/seo` ou `/geo` | | Audit SEO/GEO à re-lancer après corrections | `/seo` ou `/geo` |
| Audit docs à re-sync après changement | `/doc` | | Audit docs à re-sync après changement | `/doc` |
Ne PAS écraser `tasks/TODO.md` s'il contient déjà du contenu utilisateur : append avec un séparateur : Ne PAS écraser `.claude/tasks/TODO.md` s'il contient déjà du contenu utilisateur : append avec un séparateur :
``` ```
<contenu existant> <contenu existant>
@ -883,8 +883,8 @@ Ne PAS écraser `tasks/TODO.md` s'il contient déjà du contenu utilisateur : ap
Print : Print :
``` ```
✅ tasks/TODO.md mis à jour — <N> tâches ajoutées (<P0>/<P1>/<P2>/<P3>) .claude/tasks/TODO.md mis à jour — <N> tâches ajoutées (<P0>/<P1>/<P2>/<P3>)
Pour démarrer : lire tasks/TODO.md, choisir une tâche P0, lancer le /skill indiqué. Pour démarrer : lire .claude/tasks/TODO.md, choisir une tâche P0, lancer le /skill indiqué.
``` ```
--- ---
@ -912,7 +912,7 @@ Pour démarrer : lire tasks/TODO.md, choisir une tâche P0, lancer le /skill ind
ONBOARD COMPLETE: <project name> ONBOARD COMPLETE: <project name>
ARCHETYPE : <name> (confiance: <niveau>) ARCHETYPE : <name> (confiance: <niveau>)
STACK : <stack> STACK : <stack>
CONFIG : ✅ CLAUDE.md, settings.json, .claudeignore, tasks/ CONFIG : ✅ CLAUDE.md, settings.json, .claudeignore, .claude/{tasks,memory,audits}/
CTX7 CACHE : ✅ [libs] | ⚠️ not installed | — N/A CTX7 CACHE : ✅ [libs] | ⚠️ not installed | — N/A
GRAPHIFY : ✅ graphify-out/ | ⚠️ not installed | — skipped (simple) GRAPHIFY : ✅ graphify-out/ | ⚠️ not installed | — skipped (simple)
AUDITS : AUDITS :
@ -925,15 +925,15 @@ AUDITS :
✅ accessibilité (.onboard-audit/a11y.md) [si frontend] ✅ accessibilité (.onboard-audit/a11y.md) [si frontend]
SYNTHÈSE : SYNTHÈSE :
✅ tasks/ONBOARD_REPORT.md (exécutif) .claude/audits/ONBOARD_REPORT.md (exécutif)
✅ tasks/AUDIT_GOOD.md .claude/audits/AUDIT_GOOD.md
✅ tasks/AUDIT_ISSUES.md (par sévérité) .claude/audits/AUDIT_ISSUES.md (par sévérité)
✅ tasks/AUDIT_PROPOSALS.md (options + tradeoffs) .claude/audits/AUDIT_PROPOSALS.md (options + tradeoffs)
✅ tasks/TODO.md (backlog priorisé avec skill recommandé) .claude/tasks/TODO.md (backlog priorisé avec skill recommandé)
NEXT STEPS : NEXT STEPS :
1. Ouvrir tasks/ONBOARD_REPORT.md — overview complète 1. Ouvrir .claude/audits/ONBOARD_REPORT.md — overview complète
2. Démarrer par la première tâche P0 de tasks/TODO.md avec le skill indiqué 2. Démarrer par la première tâche P0 de .claude/tasks/TODO.md avec le skill indiqué
3. /onboard add gsd — générer ROADMAP.md pour multi-session si besoin 3. /onboard add gsd — générer ROADMAP.md pour multi-session si besoin
4. .onboard-audit/ peut être supprimé (raw data consommée en synthèse) 4. .onboard-audit/ peut être supprimé (raw data consommée en synthèse)
``` ```