120 lines
4.9 KiB
Markdown
120 lines
4.9 KiB
Markdown
# 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/<dossier-modifie>
|
|
git add .
|
|
git commit -m "deploy: <description courte>"
|
|
git push http://bolbol:2L2u519wgitea@172.17.0.1:3232/bolbol/<repo>.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 <container>`, 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=<mot-cle>
|
|
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="<nom-repo>")` — appeler EN DEBUT de
|
|
tache de code substantielle sur un repo donne. Omettre `project` pour les
|
|
entrees transverses.
|
|
- `record_lesson(scope="coding", project="<nom-repo>", 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.
|