docs: ajouter la documentation globale pour OBITools v4

- Ajout de prompt_documentation_globale.md décrivant les trois phases d'écriture de la documentation (fichier → package → outil)
- Présence de fichiers .DS_Store non significatifs (à ignorer)
This commit is contained in:
Eric Coissac
2026-03-31 19:02:37 +02:00
parent f92f285417
commit 670edc1958
3 changed files with 167 additions and 0 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+167
View File
@@ -0,0 +1,167 @@
# Objectif
Documenter intégralement l'application OBITools (version 4, écrit en Go) en trois phases incrémentales, en utilisant les outils MCP fournis par cclsp.
# Contexte
- Le code source est organisé en packages Go, chaque outil étant un exécutable avec un `main.go`.
- Vous avez accès à un serveur MCP (cclsp) qui expose les outils suivants (liste non exhaustive) :
- `find_definition(file, line, character)` : retourne la définition dun symbole.
- `find_references(file, line, character)` : retourne toutes les références dun symbole.
- `get_diagnostics(file)` : retourne les erreurs/warnings.
- `rename_symbol(file, line, character, new_name)` : permet de renommer (optionnel).
- Vous pouvez également exécuter des commandes shell pour lister les fichiers, lire/écrire des fichiers.
- Tous les fichiers de documentation seront stockés dans un répertoire `docs/` à la racine du projet, avec la structure suivante :
```
docs/
phase1/
<package>/
<fichier>.md
phase2/
<package>.md
phase3/
<outil>.md
```
# Instructions générales
- Avant de commencer, vérifiez que le répertoire `docs/phase1`, `docs/phase2`, `docs/phase3` existe (créez-les si nécessaire).
- Pour chaque phase, respectez le format Markdown demandé.
- Nhésitez pas à utiliser les outils MCP pour obtenir des informations précises sur les symboles (signatures, commentaires, types).
- Si un outil MCP nécessite des coordonnées (ligne, caractère), vous pouvez extraire ces informations en lisant le fichier source.
- Soyez méthodique : traitez un fichier/package/outil à la fois et sauvegardez immédiatement le résultat.
---
## Phase 1 : Documentation par fichier Go (sauf `main.go`)
**Objectif** : Pour chaque fichier `.go` qui nest pas un `main.go` doutil, générer un document Markdown décrivant son rôle, ses structures, ses fonctions principales et ses dépendances.
**Étapes** :
1. Listez tous les fichiers `.go` du projet, en excluant ceux nommés `main.go` (ils seront traités en phase 3). Utilisez par exemple `find . -name "*.go" -not -name "main.go"`.
2. Pour chaque fichier :
a. Lisez son contenu (vous pouvez le faire via shell ou en utilisant loutil `read_file` si disponible).
b. Utilisez les outils MCP pour extraire les informations suivantes :
- Pour chaque fonction publique (commençant par une majuscule) : appelez `find_definition` avec la ligne approximative où se trouve la fonction. Récupérez la signature et les commentaires associés.
- Pour les types (structs, interfaces) : faites de même.
c. Générez un document Markdown avec les sections :
```markdown
# Fichier : `chemin/vers/fichier.go`
## Rôle
(une phrase ou deux)
## Structures
- `NomStruct` : description, champs principaux
## Fonctions principales
- `NomFonction(paramètres) (retours)` : description
## Dépendances notables
- packages importés (externes ou internes) significatifs
```
d. Sauvegardez dans `docs/phase1/<package>/<fichier>.md` (où `<package>` est le nom du répertoire parent contenant le fichier, et `<fichier>` le nom sans extension).
**Exemple dutilisation doutil MCP** :
```
# Pour obtenir la définition de la fonction `Align` dans `align/align.go`
# On suppose quelle se trouve approximativement ligne 120, colonne 1.
find_definition(file="align/align.go", line=120, character=1)
```
**Conseil** : Vous pouvez dabord lister tous les symboles exportés dun fichier en utilisant `go list` ou en analysant le code. Mais les outils MCP peuvent aussi vous aider.
---
## Phase 2 : Agrégation par package
**Objectif** : Pour chaque package (répertoire contenant au moins un fichier `.go` sauf `main.go`), créer un document Markdown qui synthétise lensemble des fichiers du package.
**Étapes** :
1. Identifiez tous les packages (répertoires) qui contiennent des fichiers `.go` traités en phase 1.
2. Pour chaque package :
a. Lisez tous les fichiers `.md` de `docs/phase1/<package>/`.
b. Utilisez les outils MCP pour obtenir une vue densemble des symboles exportés du package (par exemple, en interrogeant `find_references` sur un symbole clé ou en parcourant les définitions).
c. Générez un document Markdown avec :
```markdown
# Package : `<nom>`
## Présentation
Description générale du package, son rôle dans OBITools (traitement de séquences, alignement, etc.)
## Structure interne
- Liste des fichiers principaux et leurs responsabilités (liens vers docs phase1)
- Flux de données ou interactions entre fichiers
## API publique
- **Types** : liste des types exportés avec brève description
- **Fonctions** : liste des fonctions exportées avec signature et rôle
- **Constantes/Variables** si pertinentes
## Exemple dutilisation
(si possible, un extrait de code illustrant comment ce package est utilisé ailleurs)
```
d. Sauvegardez dans `docs/phase2/<package>.md`.
**Conseil** : Pour lAPI publique, vous pouvez invoquer `find_definition` sur chaque symbole exporté (en vous basant sur les fichiers sources) pour obtenir les signatures exactes et les commentaires.
---
## Phase 3 : Documentation des outils (exécutables)
**Objectif** : Pour chaque outil (répertoire contenant un `main.go`), générer une documentation utilisateur complète, en utilisant les informations des packages documentés en phase 2.
**Étapes** :
1. Trouvez tous les `main.go` du projet. Pour chacun, identifiez le nom de loutil (généralement le nom du répertoire parent).
2. Pour chaque outil :
a. Lisez le `main.go` pour comprendre la logique globale et les options de ligne de commande (flags, cobra, etc.).
b. Identifiez tous les packages Go importés par loutil (en analysant les imports du fichier).
c. Récupérez les documents `docs/phase2/<package>.md` correspondants.
d. Utilisez les outils MCP pour explorer les fonctions appelées dans le `main.go` et comprendre leur rôle.
e. Générez un document Markdown :
```markdown
# Outil : `<nom_outil>`
## Résumé
Une ligne de description.
## Description
Explication détaillée de ce que fait loutil, dans quel contexte lutiliser, comment il traite les données (séquences, fichiers, etc.).
## Options
| Option | Type | Défaut | Description |
|--------|------|--------|-------------|
| `--flag` | string | "" | description extraite du code |
## Exemples
```bash
# Exemple 1 : utilisation simple
outil -i input.fasta -o output.fasta
# Exemple 2 : avec options avancées
outil --flag value ...
```
## Voir aussi
- [Package `<package1>`](../phase2/<package1>.md)
- [Package `<package2>`](../phase2/<package2>.md)
- Autres outils connexes
```
f. Sauvegardez dans `docs/phase3/<outil>.md`.
**Conseil** : Pour extraire les options, examinez le code qui utilise `flag` ou `cobra`. Vous pouvez aussi utiliser `go doc` sur le package principal, mais les outils MCP vous permettront de suivre les références aux symboles.
---
# Validation et finalisation
- Après avoir généré tous les documents, vérifiez que la documentation phase3 inclut bien des liens fonctionnels vers les documents phase2.
- Si certains packages ne sont pas documentés (parce que leurs fichiers nont pas été traités en phase1), repérez les oublis et corrigez.
- Vous pouvez générer un index global dans `docs/README.md` listant tous les packages et outils avec leurs descriptions.
---
# Consignes dexécution
- Travaillez de manière séquentielle : terminez une phase avant de passer à la suivante.
- Pour chaque fichier/package/outil, utilisez les outils MCP de manière parcimonieuse mais exhaustive.
- Si un outil MCP échoue (par exemple, coordonnées incorrectes), ajustez en relisant le fichier source pour trouver la bonne ligne/colonne.
- Enregistrez les résultats immédiatement après génération pour éviter les pertes.
Maintenant, commencez par la phase 1. Listez tous les fichiers `.go` (hors main.go) et générez la documentation pour le premier fichier.