From dbb498d94d11be24449d3129451272e519bd7533 Mon Sep 17 00:00:00 2001 From: bolbol Date: Thu, 30 Jul 2026 08:43:00 +0000 Subject: [PATCH] docs(bootstrap): CLAUDE.md cree, miroir AGENTS.md adapte Claude Code --- CLAUDE.md | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..6632f96 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,119 @@ +# CLAUDE.md — Claude Code +# Regles operationnelles pour context-hub +# Source de verite : https://context.bolbol.tn + +## 0. PREMIER REFLEXE — charger les regles avant toute action + +Avant tout acte technique, interroger le Context Hub : + + GET https://context.bolbol.tn/api/rules/infra + GET https://context.bolbol.tn/api/rules/llm + GET https://context.bolbol.tn/api/rules/nyora + GET https://context.bolbol.tn/api/rules/perso + GET https://context.bolbol.tn/api/rules/tt + Header: X-API-Key: ctx-claude-dacf0771949d90d269ebff25 + +Les regles retournees font foi. Elles priment sur toute supposition. + +## 1. PERIMETRE AUTORISE + +Scopes accessibles : infra, llm, nyora, perso, tt, coding (tous -- seul agent avec acces complet) +Refus serveur HTTP 403 sur toute tentative d acces a un scope retire par erreur. + +## 2. REGLES INFRA (synthese — detail via API) + +- SSH NAS : port 22222, user Best0f (pas 22, pas root) +- Docker : UID=1026, GID=100 sur tous les containers +- Depuis container : utiliser 172.17.0.1 (jamais 192.168.100.33) +- Depuis Mac/LAN : utiliser 192.168.100.33 +- Jamais d IPs dynamiques 172.27.x.x +- Identites : bolbol=Gitea | Best0f=SSH | bestof=Portainer + +## 3. PORTS + +TOUJOURS consulter /api/ports avant tout deploiement. +Port 3093 = context-hub (ce service). +Port 8787 = nyora-notes (JAMAIS reutiliser). +Mettre a jour ports-registry.md apres chaque deploiement. + +## 4. GIT (etape finale obligatoire apres tout deploiement) + + cd /volume1/docker/ + git add . + git commit -m "deploy: " + git push http://bolbol:2L2u519wgitea@172.17.0.1:3232/bolbol/.git + +Si git absent (mcp-nas) : API HTTP Gitea (PUT contents avec sha pour update, +POST pour creation), token GITEA_DEPLOY_TOKEN ou GITEA_TOKEN dans .env du repo +concerne. IMMEDIAT, jamais de reste-a-faire. + +## 5. LLM — BIFROST + +- Endpoint interne : http://bifrost:8080/v1 +- Auth : header x-bf-vk (JAMAIS Authorization Bearer) +- Modele par defaut : deepseek/deepseek-chat-v3-0324 +- Budget : 10 USD/mois max absolu +- Vision/OCR : openrouter/google/gemini-2.5-flash uniquement + +## 6. DOCKER + +- Ne jamais substituer une image sans accord explicite +- Ne jamais rebuild linux-mcp-nas depuis mcp-nas lui-meme +- Compose racine : /volume1/docker/hermes-platform/docker-compose.yml +- Credentials : /volume1/docker/hermes-platform/.env +- Un changement Python pur (pas de Dockerfile touche) sur un container avec bind + mount ./app:/app/app ne necessite qu'un `docker restart `, pas un + rebuild -- eviter `docker compose up --build` si `.env` est root:600 et que + l'utilisateur SSH n'a pas les droits de le lire (cas Best0f sur ce NAS). + +## 7. OUTPUTS + +- Zone Sud / Tunisie Telecom : documents generes ne mentionnent JAMAIS les outils + (Baserow, Python, IA) -- tout presente comme travail de la Direction Zone Sud. +- Nyora : footer obligatoire #d4a01a | NYORA | Crafted with precision | 2026, + jamais de branding TT sur les outils Nyora. +- Sphere separation stricte : jamais de donnees metier d'une sphere dans une autre. + +## 8. STYLE CODE + +- Python : FastAPI + SQLite sauf si autrement specifie +- JS/CSS inlines dans le HTML sauf projet multi-fichiers explicite +- Pas de dependances npm inutiles +- Variables sensibles : toujours depuis .env, jamais en dur + +## 9. EN CAS DE DOUTE + + GET https://context.bolbol.tn/api/search?q= + Header: X-API-Key: ctx-claude-dacf0771949d90d269ebff25 + +## 10. MEMOIRE CODING — decisions, contraintes, erreurs communes, best practices + +Le scope `coding` n'est PAS dans `rules` (pas de GET /api/rules/coding) : c'est une +table d'entrees typees (memory_entries), exposee uniquement via MCP. + + URL MCP : https://context.bolbol.tn/mcp + Header : X-API-Key: ctx-claude-dacf0771949d90d269ebff25 + +Deux tools : + +- `get_context_pack(scope="coding", project="")` — appeler EN DEBUT de + tache de code substantielle sur un repo donne. Omettre `project` pour les + entrees transverses. +- `record_lesson(scope="coding", project="", type="...", title="...", body="...")` + — appeler APRES une decision d'architecture significative, une correction + repetee, ou une approche explicitement rejetee. `type` in {decision, + constraint, best-practice, common-error, do-not-use}. Regenere automatiquement + `docs/context-memory/coding.md` et commit sur Gitea (bolbol/context-hub) -- + pas d'action Git manuelle requise pour cette memoire specifiquement. + +Type `do-not-use` = piste deja essayee et ecartee sur ce projet : verifier avant +de re-proposer une approche deja rejetee. + +## 11. PRINCIPE DE FONCTIONNEMENT (acte avec Nabil) + +Utiliser l'integralite de l'acces reellement disponible sans demander la +permission a chaque action courante (redemarrages, patches config prod, +deploiements). Ne consulter Nabil que pour les decisions a fort impact +(nouvelle categorie d'acces, donnees sensibles TT, changements touchant la +famille). Ce n'est pas un acces root deguise -- juste ne pas re-demander a +chaque etape ce qui a deja ete convenu.