---
tags: [OpenCode, Processus, IA]
---

# PROCESS — OpenCode & Workflows

Pense-bête pour automatiser la gestion des données (second cerveau) et de l'infrastructure avec OpenCode (agents `pkm-manager` + `vps-admin`, skills, MCP).

> **Principe central : SilverBullet = source de vérité.** Les skills et agents s'éditent directement dans SilverBullet, puis sont synchronisés vers OpenCode avec la commande `/sync-silverbullet`.

## 1. Architecture en bref

| Côté SilverBullet (édition) | Côté OpenCode (exécution) | Rôle |
|---|---|---|
| `80_CONFIG/IA_SKILLS/<Nom>` | `.opencode/skills/<id>/SKILL.md` | Skill chargé à la demande |
| `80_CONFIG/IA_AGENTS/Pkm-Manager` | `.opencode/agents/pkm-manager.md` | Agent Connaissances & Données |
| `80_CONFIG/IA_AGENTS/Vps-Admin` | `.opencode/agents/vps-admin.md` | Agent Administrateur (infra/OpenCode) |
| — | MCP `silverbullet-ai`, `grist`, `excalidraw`, `excalidraw-maaker` | Ponts entre OpenCode et les données |

- Instance : YunoHost multi-espaces, accès local `127.0.0.1:3000`, espace monté en `/shizendo/`.
- Modèle des agents : `openrouter/deepseek/deepseek-v4-flash-0731`.

## 2. Agents dans OpenCode

Les agents sont les **prompts système** (**toujours en contexte → les garder légers**). Le détail des connaissances vit dans les **skills**, chargés **à la demande** (le modèle ne voit que l'ID + la description tant que le skill n'est pas pertinent → économie de tokens).

### 2.1 `pkm-manager` — Agent Connaissances & Données
- Gestion globale des données personnelles / second cerveau : **SilverBullet** (notes, wiki), **Grist** (bases, suivi), **Excalidraw** (diagrammes) + applications futures.
- Maîtrise l'interaction entre ces outils et peut **rédiger des scripts** (bash/Python/Lua) pour automatiser des flux (ex. cron qui synchronise des métadonnées).

### 2.2 `vps-admin` — Agent Administrateur
- Gestion de l'infrastructure VPS et d'OpenCode : statut des services, logs, installation de MCP/Skills, dépannage.
- **Exécute des commandes système** et assure le **monitoring** (disque, RAM, services — dont OpenCode et MCP —, logs d'erreurs) via le skill `sysview`.
- Gère la création de skills/agents et accède au script de synchro `~/.opencode/bin/sync-silverbullet.sh` et à l'API `/.fs` **sans passer par le MCP** (skill `silverbullet`).

## 3. Skills disponibles

| Skill | Quand l'utiliser |
|---|---|
| `synthese-reunion` | Générer la synthèse d'une réunion (note `_Synthese`, 4 points) |
| `week-to-days` | Transférer les événements semaine → pages du jour + requête dynamique |
| `silverbullet-conventions` | Rappel arborescence, journal, événements, EVENTS, frontmatter |
| `silverbullet-api` | Accès technique / MCP / runtime SilverBullet |
| `excalidraw` | Créer des diagrammes via MCP (génération maaker / canvas live sentinel) |
| `silverbullet` | Accès API `/.fs` SilverBullet (sans MCP) — pour vps-admin |
| `sysview` | Monitoring serveur (CPU, RAM, disque, processus, réseau) — pour vps-admin |
| `opencode` | Gestion d'OpenCode (agents, skills, MCP, config) — pour vps-admin |

## 4. Synchronisation SilverBullet → OpenCode

**Commande : `/sync-silverbullet`** (ou script `~/.opencode/bin/sync-silverbullet.sh`).

- Lit **tous** les `.md` de `80_CONFIG/IA_SKILLS/` (→ skills) et `80_CONFIG/IA_AGENTS/` (→ agents).
- Token API lu dans `~/.silverbullet-token` (chmod 600).
- Après la sync d'un **agent**, redémarrer la session OpenCode pour le recharger (les skills se rechargent plus vite).

**Pour ajouter / mettre à jour** : éditer le fichier dans SilverBullet → `/sync-silverbullet` → (restart si agent). Pas besoin de passer par l'IA.

## 5. Workflows

### 5.1 Synthèse de réunion
1. La note de réunion existe (ex. `01_JOURNAL/Meetings/2026/YYYYMMDD_HHhMM_PROJET_Sujet`).
2. Skill `synthese-reunion` → génère une note `_Synthese` organisée en 4 points : **Sujets discutés · Informations importantes · Décisions · Actions**.
3. Testé sur 2 réunions (2 pages `_Synthese` générées).

### 5.2 Préparation de la semaine (transfert semaine → jours)
1. Commande `/week-to-days NN` (skill `week-to-days`) — NN = numéro de semaine ISO.
2. Transfère les événements `#event` de `01_JOURNAL/Weekly/YYYY-WNN` vers les pages du jour `01_JOURNAL/YYYY/YYYY-MM-DD`.
3. Crée les pages du jour manquantes depuis le modèle `80_CONFIG/Slash/day-template`.
4. Remplace la liste d'événements de la page hebdo par une **requête `{query}` dynamique** (filtre sur `t.date`, ordre par `t.hour`).

Exemple réalisé : semaine **2026-W41** → journées 10-05 → 10-09 (page 10-08 créée depuis le modèle).

### 5.3 Schéma Excalidraw (génération + archivage)
1. Générer depuis une description → MCP `excalidraw-maaker` (layout auto) ou canvas live `excalidraw` (sentinel).
2. Enregistrer le fichier `.excalidraw` dans SilverBullet (source unique de vérité).
3. Référencer dans une note (plug Excalidraw) — voir [[04_NOTES/VPS-IA_Utilisation-Excalidraw-MCP|Utilisation des MCP Excalidraw]].

### 5.4 Page du jour (modèle)
Modèle `80_CONFIG/Slash/day-template` — sections :
`**1. Evenements**` · `**2. The Big One**` · `**3. Tâches Secondaires**` · `**4. Autres Échéances / Routines du jour**` · `📥 Parking du jour` · `🌙 Bilan d'exécution & Mémoire`.

## 6. Conventions à retenir

- Journal jour : `01_JOURNAL/YYYY/YYYY-MM-DD` ; hebdo : `01_JOURNAL/Weekly/YYYY-WNN`.
- Événements : tâches `#event` + `[date: YYYY-MM-DD]` + `[hour: HHhMM]`, liées à `03_PROJETS/...`.
- Comptes-rendus : `01_JOURNAL/Meetings/YYYY/YYYYMMDD_HHhMM_PROJET_Sujet`.
- Noms de pages **sans extension** `.md` dans les outils MCP.

## 7. Rappels MCP / exploitation

- MCP `silverbullet-ai` : `read_note`, `list_pages`, `create_note`, `update_note`, `search_replace`, `rename_note`, `update_frontmatter`, `view_file`, `get_page_info`, `eval_lua`, `refresh_tools`.
- MCP `grist` : tables, documents, webhooks.
- MCP `excalidraw` (sentinel) : canvas live sur `127.0.0.1:3001`, accès web `https://excalidraw-mcp.datagrandest.net/`.
- MCP `excalidraw-maaker` : génération de diagrammes (fichiers `.excalidraw`, layout auto).
- Runtime API : Chrome headless (~300 Mo), premiers appels 20-60 s, puis rapides.
- Écritures MCP **sans confirmation** (appels directs).
- Index SilverBullet : quelques secondes à se rafraîchir après modification.
- Vérifications possibles via `eval_lua` (requêtes SLIQ, ex. `index.tasks('event')`).
