# CLAUDE.md — TricorderKit v0.9

> Configuration Claude Code pour ce repo.
> Mis à jour : 2026-05-22 — Aligné AGENTS.md v0.8 + Extended Thinking policy + rotation session

---

## Identité du projet

- **Nom** : TricorderKit
- **Version** : 0.9
- **Type** : Agentic Knowledge OS — local-first
- **Propriétaire** : GeekFamilyCorp
- **Stack** : Claude Code + Obsidian + MCP + Neo4j + Qdrant + Docker + Temporal
- **Architecture** : TricorderKit exécute · my-domain-agent spécialise · My-Domain-Project stocke

---

## Séquence de boot (lazy-load — économie tokens)

```text
TIER 1 — Toujours charger (~500 tokens)
  1. BOOT_SUMMARY.md            → version, tâches, patterns, statut Docker

TIER 2 — Charger uniquement si TIER 1 ne suffit pas (~2 500 tokens)
  2. tasks/lessons.md            → règles préventives actives (R12)
  3. .planning/STATE.md          → état détaillé si phase ou infra à vérifier
  4. .planning/TASKS.md          → items pending/in_progress uniquement (exclure ✅)
  5. .planning/DECISIONS.md      → 5 dernières entrées seulement

TIER 3 — À la demande uniquement (~10 000 tokens)
  - .planning/RISKS.md
  - docs/00→06
```

> Ne charger README_FIRST.md qu'en cas de doute sur les limites du projet.
> Ne jamais charger AGENTS.md au boot — il est lu par Claude Code automatiquement.

---

## Extended Thinking Policy

**Désactivé par défaut** pour toutes les tâches suivantes :
- Remplissage de fiches (projet, article, personne, organisation, concept, source)
- Recherche web simple et récupération de données factuelles
- Génération de fichiers depuis un template existant
- Exécution de commandes CLI

**Activé uniquement si** le message contient explicitement `[THINK]` ou si la tâche implique :
- Raisonnement architectural multi-fichiers
- Débogage de régression complexe
- Décision irréversible (DEC-NNN)

---

## Modes de travail intensifs (longues tâches)

> Conventions internes (pas des commandes Cowork natives). Mappent les fonctionnalités Claude Code `code-review ultra` et Dynamic Workflows vers des comportements réellement disponibles ici via l'outil `Task` (sous-agents) et l'effort de raisonnement. Cohérent avec la balise `[THINK]`.

### `[ULTRA]` — Exécution & revue haute intensité

Déclencheur : `[ULTRA]` dans le message (ou « code review ultra », « ultra »).

- Effort de raisonnement poussé au maximum (`[THINK]` implicitement actif).
- **Passe de vérification adversariale obligatoire** : un sous-agent `Task` dédié critique le livrable (correction, sécurité, perf, cohérence contrats `skill_output.schema.json`, respect frontière publique `make gate`) avant restitution.
- Sur données métier : double validation croisée des sources (règle My-Domain-Project §2) + classification fiabilité ✅🟡🟠🔴.
- Réservé aux tâches qui le méritent (archi multi-fichiers, décision DEC-NNN, audit, livrable critique) — pas le remplissage de fiches simples.

### `[WORKFLOW]` — Orchestration multi-agents parallèle

Déclencheur : `[WORKFLOW]` dans le message (ou « workflow »).

- Pour audits, sweeps, recherche fan-out, remplissage massif, dédup vault.
- Décomposition en sous-tâches indépendantes → plusieurs sous-agents `Task` lancés **en parallèle** (un seul message, plusieurs appels) → consolidation + dédup + QA finale.
- Restitution : seulement les conclusions consolidées, pas les dumps intermédiaires.

### Garde-fous (non négociables)

- **Token Hygiene** : estimer le coût avant lancement ; segmenter si > 80 % budget (cohérent `token-optimizer`). Le gathering exhaustif reste routé Antigravity/Hermes ; côté Claude = max sur intégration/dédup/QA.
- **Risk Guard** : MEDIUM → confirmation courte avant de lancer une armée de sous-agents ; HIGH/CRITICAL → plan + validation explicite.
- Toute écriture externe (vault, base, API) déclenchée par un workflow passe par `--dry-run` au préalable.

---

## Session Rotation Policy

- Ouvrir un nouveau fil toutes les **15–20 messages**
- Avant de fermer : générer `session_capsule.json` compact via `/tk:pack-context`
- Coller la capsule en premier message du nouveau fil
- Mettre à jour `BOOT_SUMMARY.md` en fin de session

---

## Conventions de code

### TypeScript (CLI, workflows Temporal)
- Strict mode activé
- Output JSON par défaut pour toutes les commandes CLI
- Types explicites, pas d'`any`

### Python (scripts utilitaires)
- Python 3.11+
- Output JSON ou Markdown
- Pas de dépendances inutiles

### Markdown (vault, docs)
- Frontmatter YAML obligatoire
- 1 idée = 1 fichier (principe atomique)
- Taille cible : 100–500 tokens par note

---

## Structure des plugins

```text
plugins/<nom>/
├── README.md
├── SKILL.md
├── manifest.yml
├── scripts/
└── tests/
```

## Structure des skills

```text
skills/<nom>/
├── SKILL.md
├── examples/
└── tests/
```

---

## Règles de commit

```text
feat: <description>
fix: <description>
docs: <description>
refactor: <description>
test: <description>
chore: <description>
```

Chaque commit important → entrée dans `CHANGELOG.md`.

---

## Commande principale

```bash
/tk:boot
```

---

## Variables d'environnement requises

```text
ANTHROPIC_API_KEY
NEO4J_URI / NEO4J_USER / NEO4J_PASSWORD
QDRANT_URL / QDRANT_API_KEY
TEMPORAL_ADDRESS
LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY
OBSIDIAN_VAULT_PATH
```

---

*Version 0.9 — 2026-05-22 — Aligné AGENTS.md v0.8 · Extended Thinking policy · Session rotation*

---

## Routage des dépôts (gouvernance — DEC-016, 2026-05-29)

Règle vérifiée en **fin de chaque action / tâche / mise à jour** (checkpoint de routage, conçu *token-light*) :

| Domaine | Dépôt cible |
|---|---|
| Framework installable + cerveau d'orchestration (`.planning/`, `CLAUDE.md`, `AGENTS.md`, `docs/`, `core/`, plugins génériques, `.gitignore`) | **TricorderKit** (`GeekFamilyCorp/TricorderKit`) |
| `linked_project` métier : liaison vault (`obsidian-agent-layer/`, `vault_router.py`, `vault_optimizer/`, `linked_projects.yaml`, `hermes/`, CLI/skills/pipelines vault) | **my-domain-agent** (`your-org/my-domain-agent`) |
| Contenu du vault Obsidian My-Domain-Project (fiches, sources, notes) | **My-Domain-Project** (github — *EN ATTENTE*) |

Procédure *token-light* : suivre les fichiers touchés pendant la session (pas de scan complet) → `git status --porcelain` du/des repo(s) concerné(s) → `git add` **ciblé** (jamais `-A`) → 1 commit conventionnel par repo → push. Sauter tout repo non touché.
