From e1910740d958c9c860e5dc9fb2ebb5ca89b5d864 Mon Sep 17 00:00:00 2001 From: MaksTinyWorkshop Date: Sun, 8 Mar 2026 11:05:57 +0100 Subject: [PATCH] ajout script automatisation --- AGENTS.md | 6 ++-- CLAUDE.md | 2 +- _AI_INSTRUCTIONS.md | 54 +++++++++++++++++++++++++++++++ _projects.conf | 5 +++ sync-ai-instructions.sh | 71 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 _AI_INSTRUCTIONS.md create mode 100644 _projects.conf create mode 100755 sync-ai-instructions.sh diff --git a/AGENTS.md b/AGENTS.md index 0713c02..f425c23 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,7 @@ # Instructions globales — Lead Tech Copilote -# Chargé automatiquement par OpenAI Codex CLI + +Ce fichier est chargé automatiquement par Codex à chaque session. +Il pointe vers la base de connaissance commune à tous les projets. ## Rôle et posture @@ -39,7 +41,7 @@ Puis propose le contenu à ajouter dans le format du fichier cible. | Projet | Stack | Localisation | État | |---|---|---|---| -| app-alexandrie | NestJS + Expo (React Native) + Prisma + pnpm monorepo | `/srv/projects/app-alexandrie` (NUC) | Epic 2 en préparation | +| app-alexandrie | NestJS + Expo (React Native) + Prisma + pnpm monorepo | `/srv/projects/app-alexandrie` | Epic 2 en préparation | ## Patterns clés à appliquer systématiquement diff --git a/CLAUDE.md b/CLAUDE.md index bb00ce5..1a69f3c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,7 +41,7 @@ Puis propose le contenu à ajouter dans le format du fichier cible. | Projet | Stack | Localisation | État | |---|---|---|---| -| app-alexandrie | NestJS + Expo (React Native) + Prisma + pnpm monorepo | `/Volumes/TeraSSD/Projets_Dev/__Mindleaf/app-alexandrie` | Epic 2 en préparation | +| app-alexandrie | NestJS + Expo (React Native) + Prisma + pnpm monorepo | `/srv/projects/app-alexandrie` | Epic 2 en préparation | ## Patterns clés à appliquer systématiquement diff --git a/_AI_INSTRUCTIONS.md b/_AI_INSTRUCTIONS.md new file mode 100644 index 0000000..d809de6 --- /dev/null +++ b/_AI_INSTRUCTIONS.md @@ -0,0 +1,54 @@ +## Rôle et posture + +Tu es mon copilote principal : technicien, lead tech, coach et challenger. +Priorité absolue : justesse, robustesse, réduction du temps de debug. +Jamais de sur-ingénierie. Jamais d'invention de comportements incertains. + +Langue de travail : **français**. + +## Base de connaissance à consulter en priorité + +Ces fichiers sont la mémoire durable inter-projets. Consulte-les avant de proposer +une solution dans leur domaine respectif. + +| Fichier | Contenu | +|---|---| +| `10_backend_patterns_valides.md` | Patterns backend validés en conditions réelles | +| `10_frontend_patterns_valides.md` | Patterns frontend/mobile validés | +| `10_backend_risques_et_vigilance.md` | Risques et anti-patterns backend | +| `10_frontend_risques_et_vigilance.md` | Risques et anti-patterns frontend | +| `40_decisions_et_archi.md` | Décisions techniques (mini-ADR) | +| `90_debug_et_postmortem.md` | Post-mortems et bugs capitalisés | + +## Règles de mise à jour + +Quand tu repères qu'un pattern mérite d'être capitalisé : + +``` +FILE_UPDATE_PROPOSAL +Fichier : `` +Pourquoi : <1-2 phrases> +``` + +Puis propose le contenu à ajouter dans le format du fichier cible. + +## Projets actifs + +{{PROJECTS_TABLE}} + +## Patterns clés à appliquer systématiquement + +- **Contracts-First / Zod-Infer / No-DTO** : voir `10_backend_patterns_valides.md` +- **Navigation réactive useEffect** : voir `10_frontend_patterns_valides.md` +- **Guard NestJS — ordre d'enregistrement** : voir `10_backend_patterns_valides.md` +- **Format d'erreur API standardisé** : `{ error: { code, message, requestId } }` +- **Sessions avec TTL** : toujours un champ `expiresAt`, filtrer dans les queries + +## Infrastructure NUC + +Convention de structure Docker sur le NUC (Proxmox) : +- `/srv/projects` — code applicatif +- `/srv/docker-data` — données persistantes (bind mounts explicites) +- `/srv/backups` — dumps et archives + +Éviter SQL Server en LXC Proxmox → préférer PostgreSQL/MariaDB (voir `90_debug_et_postmortem.md`). diff --git a/_projects.conf b/_projects.conf new file mode 100644 index 0000000..de11622 --- /dev/null +++ b/_projects.conf @@ -0,0 +1,5 @@ +# Configuration des projets actifs +# Format : nom|stack|path_nuc|path_mac|etat +# Ajouter une ligne par projet + +app-alexandrie|NestJS + Expo (React Native) + Prisma + pnpm monorepo|/srv/projects/app-alexandrie|/Volumes/TeraSSD/Projets_Dev/__Mindleaf/app-alexandrie|Epic 2 en préparation diff --git a/sync-ai-instructions.sh b/sync-ai-instructions.sh new file mode 100755 index 0000000..39c8be8 --- /dev/null +++ b/sync-ai-instructions.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +# sync-ai-instructions.sh +# Génère CLAUDE.md et AGENTS.md depuis _AI_INSTRUCTIONS.md + _projects.conf +# selon la machine courante (Darwin = Mac, Linux = NUC) + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SOURCE="$SCRIPT_DIR/_AI_INSTRUCTIONS.md" +PROJECTS_CONF="$SCRIPT_DIR/_projects.conf" + +# --- Détection machine --- +OS="$(uname -s)" + +# --- Construire la table markdown des projets --- +build_projects_table() { + local os="$1" + echo "| Projet | Stack | Localisation | État |" + echo "|---|---|---|---|" + while IFS='|' read -r nom stack path_nuc path_mac etat; do + # Ignorer lignes vides et commentaires + [[ -z "$nom" || "$nom" == \#* ]] && continue + if [ "$os" = "Darwin" ]; then + path="$path_mac" + else + path="$path_nuc" + fi + echo "| $nom | $stack | \`$path\` | $etat |" + done < "$PROJECTS_CONF" +} + +# --- Fonction de génération --- +generate() { + local header="$1" + local dest="$2" + local projects_table + projects_table="$(build_projects_table "$OS")" + + { + echo "$header" + echo "" + # Remplacer {{PROJECTS_TABLE}} par la table générée + while IFS= read -r line; do + if [ "$line" = "{{PROJECTS_TABLE}}" ]; then + echo "$projects_table" + else + echo "$line" + fi + done < "$SOURCE" + } > "$dest" + echo " -> $dest" +} + +echo "Sync AI instructions (OS: $OS)" + +CLAUDE_HEADER="# Instructions globales — Lead Tech Copilote + +Ce fichier est chargé automatiquement par Claude Code à chaque session. +Il pointe vers la base de connaissance commune à tous les projets." + +CODEX_HEADER="# Instructions globales — Lead Tech Copilote + +Ce fichier est chargé automatiquement par Codex à chaque session. +Il pointe vers la base de connaissance commune à tous les projets." + +generate "$CLAUDE_HEADER" "$HOME/.claude/CLAUDE.md" +generate "$CLAUDE_HEADER" "$SCRIPT_DIR/CLAUDE.md" +generate "$CODEX_HEADER" "$HOME/.codex/AGENTS.md" +generate "$CODEX_HEADER" "$SCRIPT_DIR/AGENTS.md" + +echo "Sync terminé."