import json, os from trilium_api import create_note, get_note_id, set_label, find_note_by_title, update_note_content with open(os.path.expanduser('~/App/Context_continuity/trilium_ids.json')) as f: ids = json.load(f) skills_id = find_note_by_title('Skills', ids['root']) if not skills_id: res = create_note(ids['root'], 'Skills', note_type='book') skills_id = get_note_id(res) set_label(skills_id, 'type', 'container') res = create_note(skills_id, 'Skill - Structure Context Continuity') nid = get_note_id(res) set_label(nid, 'type', 'skill') set_label(nid, 'domaine', 'context-continuity') set_label(nid, 'version', '1.0') content = ( '

Skill - Structure Context Continuity dans Trilium

' '

Ce skill decrit comment un LLM doit interagir avec la base Trilium ' 'du systeme Context Continuity. A lire avant toute session de travail ' 'sur un projet suivi.

' '

Architecture generale

' '

Trilium est organise sous une note racine Context Continuity ' 'avec 8 sous-dossiers :

' '' '' '' '' '' '' '' '' '' '' '
DossierContenuCle trilium_ids.json
ProjetsUne note par projet suiviProjets
ConversationsUne note par session LLMConversations
BacklogTaches a developperBacklog
DecisionsDecisions actives du projetDecisions
HistoriqueFaits etablis, tests effectues, contraintesHistorique
GlossaireVocabulaire specifique au projetGlossaire
Contextes RepriseBriefings generes pour bascule LLMContextesReprise
SkillsDocumentation technique pour LLMsSkills
' '

Types de notes et leurs labels obligatoires

' '

Note Projet

' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typeprojetoui
projetNomSansEspaces ex: SlidingAutomationoui
statutactif | en-pause | archiveoui
' '

Contenu HTML : objectif, stack technique, repartition LLMs.

' '

Note Conversation

' '' '' '' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typeconversationoui
projetNomSansEspacesoui
llmClaude Sonnet | Claude Opus | Le Chat Large | Le Chat Mediumoui
statuten-cours | closoui
dateYYYY-MM-DD HH:MMoui
syntheseCloturetexte libre 200 mots maxnon - rempli a la cloture
' '

Creee via : python trilium_context.py new-conversation

' '

Note Backlog Item

' '' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typebacklogItemoui
projetNomSansEspacesoui
statuta faire | en cours | bloque | fait | abandonneoui
prioritehaute | moyenne | basseoui
' '

Creee via : python trilium_context.py add-backlog (a implementer) ' 'ou manuellement dans Trilium.
' 'ATTENTION : list-backlog filtre sur statut != "fait" et != "abandonne". ' 'Utiliser exactement ces valeurs.

' '

Note Decision

' '' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typedecisionoui
projetNomSansEspacesoui
statutactive | revisee | annuleeoui
llmnom du LLM ayant aidenon
' '

Creee via : python trilium_context.py add-decision --projet X --enonce "..." --justification "..."
' 'generate-context inclut uniquement les decisions avec statut=active.
' 'Pour annuler une decision, changer son label statut en "annulee" dans Trilium.

' '

Note Historique

' '' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typehistoriqueItemoui
projetNomSansEspacesoui
typeHistoriqueFait etabli | Test effectue | Hypothese invalidee | Contrainte decouverteoui
encoreValidetrue | falseoui
' '

Creee via : python trilium_context.py add-history --projet X --type "..." --enonce "..." --detail "..."
' 'generate-context inclut uniquement les entrees avec encoreValide=true.
' 'Pour invalider une entree obsolete, changer encoreValide en "false" dans Trilium.

' '

Note Terme Glossaire

' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typetermeGlossaireoui
projetNomSansEspacesoui
definitiontexte court - definition operationnelleoui
' '

ATTENTION : le label definition est lu par generate-context ' 'pour afficher le glossaire dans le briefing. Sans ce label, la note affiche "(voir note)".
' 'Creer manuellement dans Trilium ou via script avec set_label(nid, "definition", "...").

' '

Note Contexte Reprise

' '' '' '' '' '' '' '' '' '
LabelValeurs possiblesObligatoire
typecontexteRepriseoui
projetNomSansEspacesoui
llmCiblenom du LLM destinataireoui
versionentier incremente a chaque repriseoui
tokensestimation tokens du briefingnon
conversationSourcenoteId de la conversation clĂ´tureenon
' '

Creee automatiquement par generate-context. Ne pas creer manuellement.

' '

Ce qu un LLM doit faire pendant une session

' '

Capitaliser une decision

' '

Des qu une decision technique ou architecturale est prise, demander a l utilisateur :

' '
Lance cette commande pour enregistrer la decision :\n'
    'python trilium_context.py add-decision \\\n'
    '  --projet NomProjet \\\n'
    '  --enonce "Enonce court et actionnable" \\\n'
    '  --justification "Pourquoi cette decision"
' '

Capitaliser un test ou une contrainte

' '

Des qu un test est effectue ou une contrainte decouverte :

' '
python trilium_context.py add-history \\\n'
    '  --projet NomProjet \\\n'
    '  --type "Test effectue" \\\n'
    '  --enonce "Ce qui a ete teste en une ligne" \\\n'
    '  --detail "Resultat observe"
' '

Generer la synthese de cloture

' '

Quand l utilisateur signale que la limite approche, produire :

' '
Synthese de cloture :\n'
    '- Objectif de la session : [ce qu on voulait faire]\n'
    '- Accompli : [ce qui a ete fait]\n'
    '- En cours : [ce qui est a moitie fait]\n'
    '- Bloque : [blocages eventuels]\n'
    '- Prochaine action : [premiere chose a faire a la reprise]
' '

Format concis, 150-200 mots max, sans markdown complexe ' '(sera colle en argument --summary).

' '

Erreurs frequentes a eviter

' '' '' '' '' '' '' '' '
ErreurConsequenceFix
Valeur statut avec majuscule ex: "Actif"Filtre ne trouve pas la noteToujours minuscules : "actif"
Nom projet avec espaces ex: "Sliding Automation"search_by_label echoueSans espaces : "SlidingAutomation"
Label definition absent sur termeGlossaireBriefing affiche "(voir note)"Ajouter set_label(nid, "definition", "...")
encoreValide="True" avec majusculeFiltre cherche "true" et ne trouve pasToujours "true" ou "false" minuscules
typeHistorique hors listeAffichage incoherent dans briefingUtiliser exactement : Fait etabli | Test effectue | Hypothese invalidee | Contrainte decouverte
' '

Commande pour recuperer ce skill

' '
python3 -c "\n'
    'from trilium_api import find_note_by_title, get_note_content\n'
    'nid = find_note_by_title(\'Skill - Structure Context Continuity\')\n'
    'print(get_note_content(nid))\n'
    '"
' ) update_note_content(nid, content) print('Skill structure cree:', nid)