| name | sync-external |
| description | Sync bidirectionnel Notion ↔ vault (import/export pages) + génération comms/changelog depuis commits et specs vault. Deux modes : --sync-notion et --publish-comms. |
| version | 1.1.0 |
| platforms | ["linux","macos"] |
| metadata | {"hermes":{"tags":["sync","notion","comms","changelog","release-notes","email"],"related_skills":["note-taking","github","email"],"model":"deepseek-v4-full","cron":"0 7 * * *"}} |
sync-external
Adaptation de bifrost (21) + brigitte (24) — ULK → Hermes. Carte :
docs/backlog/2026-06-28-SPEC-HERMES-SYNC-EXTERNAL/CARD.md (P3, GitHub #245).
Fusion de bifrost (sync Notion ↔ vault) et brigitte (comms/changelog). Deux modes activables
séparément ou enchaînés : --sync-notion (import/export pages) et --publish-comms
(changelog/release notes/announcements depuis commits + specs). Vault = source de vérité.
Runtime & modèles
- DeepSeek V4 full : sync mécanique Notion (tier ULK haiku) + rédaction des comms (tier
ULK sonnet) → un seul moteur DeepSeek full, effort de raisonnement relevé sur la rédaction.
- Pas de délégation coding : la skill lit des commits/notes et écrit du Markdown (changelog,
pages Notion, notes vault). Aucune écriture de code source → tout reste DeepSeek.
- delegate_task (raisonnement, pas coding) : parallélise la génération de chaque type de comm
(changelog / announcement / release notes).
- cron : sync Notion quotidien 07h (
0 7 * * *, frontmatter) + génération changelog hebdo
vendredi 17h (0 17 * * 5) — le second cron est déclaré séparément côté planificateur Hermes.
Vault
- lecture de
Projects/*/ et Areas/*/ pour l'export Notion ; écriture des pages importées dans Resources/notion-import/.
- comms générées dans
Resources/comms/ (ou affichées telles quelles pour copier-coller — plus pratique).
Procédure
--sync-notion : lister pages Notion via API → convertir en Markdown → écrire dans le vault (et inversement). Écriture par lots (≤ 20 pages/appel), aperçu + confirmation avant tout écrasement (Notion comme vault). notion-id en frontmatter = clé d'idempotence : relancer ne duplique jamais. Option --qa : à l'export, enrichir en fiche recettage (titre user-friendly + User Story « En tant que X, je veux Y pour Z »).
- Conflit bidirectionnel (les deux côtés modifiés depuis le dernier sync) : présenter le diff et demander — ne pas trancher en silence ; le vault n'écrase d'office que sur
notion-locked: true.
--publish-comms : choisir d'abord le registre — interne (traduction tech→non-tech, mot d'équipe) ou externe (release notes / annonce / post). Lire commits via github + specs vault → générer le changelog/comm Markdown (sections feat/fix/chore en interne). Source = réalité : ne jamais annoncer une capacité absente des commits/CHANGELOG.
--publish-email (optionnel) : passer la comm à la skill email (résumé hebdo / broadcast).
- Configurer les deux crons Hermes (sync daily + changelog hebdo).
- Tester le roundtrip Notion → vault → Notion sur une page réelle + le changelog sur un dépôt à commits conventionnels.
Critères d'acceptation
Pièges
- Notion API : rate limit 3 req/s (throttle) + lots de ≤ 20 pages par appel — pas de sync massif d'un bloc.
- Conflit bidirectionnel : demander avant de trancher ;
notion-locked: true est le seul cas où le vault écrase d'office (jamais de « vault gagne » silencieux).
- Ton du changelog : exposer
--tone technical|marketing (brigitte ULK est marketing ; Hermes peut vouloir un format technique pur).
- Suivi d'issues (Linear côté ULK) hors périmètre : déléguer à la skill
github, ne pas réimplémenter un 2ᵉ tracker ici.