~/.hermes/skills/.Un moteur de recherche (sept rangs de sources), une procédure (recours au TF), un calcul (contrats de travail). Le domaine change le contenu, jamais la démarche.
Creuser un sujet, cartographier un domaine, lire le signal social, surveiller des sources. Le point commun : prouver la couverture, pas seulement produire une synthèse.
Transformer une source brute en chose réutilisable : article, conversation, PDF, corpus Readwise. Sans cette étape, la recherche ne laisse rien derrière elle.
| Règle | Pourquoi |
|---|---|
| Partir de la source primaire, jamais du commentaire | La hiérarchie des sources détermine l'ordre des requêtes. Commencer par la doctrine trouve des opinions. |
| Déclarer les trous de couverture | Un corpus incomplet annoncé vaut mieux qu'une synthèse propre sur deux plateformes sur cinq. C'est la donnée la plus utile du rapport. |
| Vérifier la citation, puis le fond | Une référence qui existe ne prouve pas l'affirmation. Existence et soutien sont deux contrôles distincts. |
| Ne pas déduire une décision d'un texte libre | Un regex sur de la prose rate les négations. Les colonnes qui pilotent un choix se curent à la main. |
Point d'entrée : trouver la ligne, charger la skill avec skill_view(name=…) avant d'agir. Les skills ne s'invoquent pas de mémoire.
| Demande | Skill | Sortie |
|---|---|---|
| Question de droit suisse, tous domaines | droit-suisse | Avis en six blocs, sources vérifiées |
| Rédiger ou auditer un recours au TF | recours-tf | Recevabilité + squelette de mémoire |
| Comparer deux contrats de travail | contrats-travail-ch | Comparatif CHF/an normalisé |
| Creuser un sujet, enquêter | readwise-wiki-research | Raw + fiche vault |
| Question large, plusieurs angles | deep-researcher | 6 lentilles + contradictions |
| Comprendre la structure d'un domaine | knowledge-map | Carte mentale + Mermaid |
| Ce que les gens disent maintenant | social-signal-research | Badge + citations + couverture |
| Veille blog / RSS | blogwatcher | Flux lu/non-lu en CLI |
| Veille concurrentielle | competitor-news-monitor | Digest d'événements matériels |
| Probabilités d'un événement | polymarket | Prix = probabilité |
| Tout livrable sourcé | grounded-citations | Ledger url → [n] + vérification |
| Wiki / base de connaissances durable | llm-wiki | Markdown interrelié, 3 couches |
| Fiche ressource depuis un repo | external-source-analysis | Page wiki structurée |
| Papier de conférence | research-paper-writing | Pipeline jusqu'à soumission |
| Article ou conversation à archiver | article-to-vault / grok-to-vault | Note vault + HTML |
| PDF, scan, devis à extraire | ocr-and-documents | Texte propre, chiffres recoupés |
Trois skills, un seul serveur MCP. La méthode est identique partout : la norme d'abord, la jurisprudence ensuite, la doctrine en dernier. Ce qui change, c'est le livrable.
La hiérarchie des sources n'est pas décorative : elle fixe l'ordre des requêtes. Une recherche qui commence par la doctrine trouve des opinions, une recherche qui commence par la norme trouve le droit.
| Rang | Source | Outil | Ce qu'on en tire |
|---|---|---|---|
| 1 | Norme en vigueur à la date des faits | get_law avec as_of, search_laws | conditions d'application, texte exact |
| 2 | Jurisprudence de principe | find_leading_cases, get_regeste | règle posée, autorité |
| 3 | Jurisprudence d'application | search_decisions, get_case_brief | application aux faits, évolutions |
| 4 | Texte exact du considérant | get_erwaegung, find_relevant_erwaegung | la phrase qu'on cite |
| 5 | Doctrine open access | get_commentary, search_scholarship | interprétation, controverses |
| 6 | Matériaux | get_article_purpose, search_botschaft | but de la norme, historique |
| 7 | Pratique administrative | search_practice, get_practice | application par l'administration |
Cadrer (branche, date déterminante, canton, destinataire) → Faits (chronologie datée, manques signalés) → Questions (« qui veut quoi de qui, sur quelle base ») → Sources (les sept rangs) → Analyse (syllogisme, subsomption, charge de la preuve) → Vérifier (cite() sur chaque référence, check_claim_support() sur chaque affirmation décisive).
pinpoint_status: verified prouve que le considérant existe, pas qu'il soutient l'affirmation. Le fond se contrôle avec check_claim_support(). Une citation composée à la main est une faute qui se voit.Art. 42 al. 2 LTF : les motifs doivent exposer en quoi l'acte viole le droit. Un grief qui énonce une violation sans démonstration est irrecevable, et c'est la cause d'irrecevabilité la plus fréquente.
| Verrou | Question à trancher | Article |
|---|---|---|
| Voie de recours | de quelle matière relève la décision ? | 72, 78, 82, 113 |
| Décision attaquable | fin de procédure, ou incidente avec préjudice irréparable ? | 90, 93 |
| Instance précédente | est-ce bien la dernière instance ? | 75 |
| Qualité pour recourir | participation + atteinte + intérêt digne de protection ? | 76 |
| Délai | quel délai, à partir de quand, quelles suspensions ? | 100, 44-47 |
| Valeur litigieuse | un seuil s'applique-t-il, quelles exceptions ? | 74, 85 |
| Mandataire | qui peut représenter, faut-il une procuration ? | 40 |
| Forme | langue, conclusions, motifs, preuves, signature | 42 |
Un seul « non » = recours irrecevable, quel que soit le fond. Le calcul de délai s'écrit dans le mémoire : lendemain de la notification (art. 44), féries retranchées (art. 46, liste à revérifier chaque année), report au premier jour ouvrable (art. 45), aucune prolongation (art. 47).
Hors périmètre : les voies cantonales non épuisées. Le TF n'est ni une instance d'appel ni une première instance.
Un 8'500 × 13 à 42 h avec 4 semaines de vacances peut valoir moins qu'un 7'800 × 12 à 40 h avec 5 semaines et une meilleure caisse de pension.
Sept paramètres à figer avant de lire les contrats : année de référence (seuils LPP, plafond AC, taux AVS), canton, âge (bonifications 7/10/15/18 %), taux d'activité, CCT applicable, statut de séjour, horizon 1 an ou 10 ans. Un seul non fixé et le comparatif est faux.
pypdf renvoie 0 caractère, ce n'est pas un PDF vide. Rendu 300 dpi avec PyMuPDF puis tesseract page.png - -l fra --psm 6. vision_analyze en dernier recours seulement, et jamais un montant lu par vision sans recoupement avec un décompte de salaire.droit-suisse : 1,05 M de décisions, 5 546 lois fédérales, 16 400 lois cantonales, 1 796 commentaires open access.
Endpoint https://mcp.opencaselaw.ch/mcp, Streamable HTTP. Aucune authentification. Outils mcp__swiss_caselaw__*, chargés à la demande via tool_search puis tool_call.
| Outil | Ce qu'il fait |
|---|---|
cite(ref, pinpoint) | Chaîne de citation canonique + URL + statut du pinpoint. Ne jamais composer une citation à la main. |
find_relevant_erwaegung(decision_id, claim) | Quel considérant soutient une thèse, avec un niveau de confiance. Si no_match ou low : ne pas citer. |
check_claim_support(claim, decision_id, pinpoint) | Juge indépendant : supports: yes|partial|no|contradicts|unrelated. C'est le contrôle de fond. |
get_law(sr, art, as_of=…) | Texte autoritatif, édition historique incluse, changements en cours signalés. |
OR, ZGB, StGB, BV) : law_code="CO" renvoie des arrêts sur l'art. 41 BGG. Le champ total est une borne inférieure, pas un compte. Ne pas filtrer par langue : 70 % des arrêts fédéraux sont en allemand, une recherche monolingue rate les arrêts.Creuser, cartographier, sourcer, compiler. Ce sont les skills qui décident comment chercher ; le corpus, lui, vient des MCP et du vault.
La routine « creuser un sujet » : domaine → sources pertinentes → Readwise d'abord → synthèse → vault.
{topic}-raw.md dans 0-Inbox/Resources/, puis fiche. Table domaine → sources (crypto, ML, géopolitique, investissement, réglementation suisse, documents).4-Ressources/Wiki a été supprimé le 02.11.2026 : les sections batch-processing, process_wiki.py, venv du wiki et build Quartz sont mortes. Bannière d'avertissement posée dans le SKILL.md le 07.11 ; la recherche brute va dans 0-Inbox/Resources, la fiche dans 4-Ressources/<domaine>/.Six lentilles d'analyse sur une même question, puis détection des contradictions entre lentilles.
Cartographie d'apprentissage façon NotebookLM : structure d'un domaine, pas ses détails.
0-Inbox/Resources/knowledge-maps/ : squeeze en 3 phrases, arbre Mermaid, principes, architecture, désaccords d'experts, angles morts. Prêt pour podcast et page web.Citations numérotées inline + bloc Sources, avec un ledger qui possède la correspondance url → [n].
scripts/sources.py : reset, add, list, render, verify. Mode fact-check : citations verbatim par source, claims de mémoire marqués [unverified].verify --evidence échoue tout brouillon dont les sources citées ne portent aucune preuve.Base de connaissances markdown interreliée (pattern Karpathy) : compile une fois, garde à jour, au lieu de re-découvrir à chaque requête.
raw/ immuable, pages entités/concepts/comparaisons maintenues par l'agent, SCHEMA.md pour les conventions. Configuré par WIKI_PATH.4-Ressources/Wiki. La skill reste valable pour tout autre wiki explicite.Fiche ressource depuis un repo GitHub, une doc ou un article de fond : architecture, stack, patterns, pitfalls, liens.
Pipeline complet d'un papier ML/AI jusqu'à la soumission : lit review, design d'expérience, rédaction, self-review, soumission.
semanticscholar, habanero et matplotlib/SciencePlots ne sont pas installés sur ce host. À installer avant de lancer la phase 1.Surveiller ce qui bouge : réseaux, flux, concurrents, marchés de prédiction. Le piège commun est de confondre « rien n'est remonté » avec « il n'y a rien ».
Le contrat de fiabilité au-dessus du moteur : qualifier la requête, lire la couverture, combler les jambes mortes.
Le moteur sous les deux skills précédentes : Reddit, X, YouTube, TikTok, HN, Polymarket, GitHub, Bluesky, Truth Social.
social-signal-research. Ne pas éditer : paquet externe, contrat de sortie défini par son auteur.~/Documents/Last30Days/<slug>-raw-<suffix>.md. 1 à 3 minutes par run.Veille RSS/Atom en CLI : découverte de flux, fallback scraping HTML, import OPML, lu/non-lu.
blogwatcher-cli add|scan|articles|read, base dans ~/.blogwatcher-cli/.blogwatcher-cli n'est pas présent sur ce host (which vide). Installer via le binaire de release ou go install avant de promettre une veille.Veille concurrentielle : watchlist figée, hiérarchie de sources, déduplication par événement, seuil de matérialité.
~/.hermes/competitor-watches/<slug>.json, tick en cronjob.Marchés de prédiction : le prix EST la probabilité. Trois API publiques, zéro authentification.
outcomePrices, outcomes et clobTokenIds sont doublement encodés : json.loads() obligatoire. Aucune exécution d'ordre dans cette skill.Une recherche qui ne laisse pas de trace est à refaire. Ces skills transforment une source en artefact : note vault, page HTML, base markdown.
Article web ou X/Twitter → contenu propre, traduction FR, note vault + version HTML.
x.com/i/article/...), blog derrière paywall, série multi-parties à concaténer.Conversation partagée Grok → rapport structuré ou concept wiki.
grok.com/share/... à capitaliser : sortie avec résumé exécutif, contexte, décisions, prochaines étapes, sources.browser_exec + document.body.innerText d'abord, Playwright en dernier recours. Une conversation IA n'est pas une source : le cadre s'importe, les chiffres se re-vérifient.Texte depuis PDF et scans : pymupdf pour la couche texte, marker-pdf pour l'OCR lourd.
pymupdf n'est pas dans le python système : disponible dans ~/venvs/pdf2 (v2.0). Tesseract installé avec eng + fra. Sur un document technique, la couche texte est la seule source publiable, la lecture vision invente des cotes plausibles.Le corpus personnel : recherche vectorielle dans Reader, recherche d'highlights, inbox, tags, sauvegarde.
readwise_* disponibles (list, search, topic_search, save, daily_review). Le corpus local en markdown est plus rapide pour un grep exact : ~/data/reader-review/vault/Documents/*_fulltext.md.Obligations, délais et tâches extraits d'un document, chacun avec sa citation.
253 outils répartis sur six serveurs. Ils ne sont pas dans la liste de base : on les découvre avec tool_search, on lit le schéma avec tool_describe, puis on appelle avec tool_call.
| Serveur | Outils | Usage | Origine |
|---|---|---|---|
swiss-caselaw | 44 | Droit suisse : décisions, lois, doctrine OA, matériaux, pratique. Lecture seule, sans clé. | mcp.opencaselaw.ch/mcp |
readwise | 13 | Corpus personnel : documents, highlights, recherche par sujet, sauvegarde. | config.yaml |
vibe-trading | 78 | Marchés, fondamentaux, backtests, facteurs, news financières. | config.yaml |
x-api | 101 | Posts, recherche, listes, bookmarks, news sur X. | config.yaml |
yt-dlp | 10 | Métadonnées, transcripts, sous-titres, commentaires YouTube. | config.yaml |
fast-whisper | 7 | Audio → texte : interviews, podcasts, mémos vocaux. | config.yaml |
web_search et web_extract sont natifs. Sur le VPS, urllib et httpx sont bloqués au TLS : utiliser curl, ou curl_cffi avec impersonate="chrome". Pour un 403 ou un paywall, la skill blocked-page-recovery donne l'échelle de replis et la discipline de provenance.Vérifié sur le host le 07.11.2026, pas recopié de la documentation des skills.
| Skill | Constat | Correctif |
|---|---|---|
readwise-wiki-research | sections batch-processing / Quartz encore écrites pour 4-Ressources/Wiki, supprimé le 02.11.2026 | bannière posée dans le SKILL.md le 07.11 ; reste à supprimer les sections mortes |
blogwatcher | blogwatcher-cli absent du host | installer le binaire de release, ou assumer que la veille RSS passe par blogwatcher MCP/Reader |
research-paper-writing | semanticscholar, habanero, matplotlib absents | installer avant toute phase 1, sinon la lit review échoue |
droit-suisse / sources-et-outils.md | annonce 42 outils MCP, le serveur en expose 44 | corriger le décompte, ou l'omettre : le nombre ne sert à rien |
droit-suisse, recours-tf, contrats-travail-ch, grounded-citations, social-signal-research, competitor-news-monitor et polymarket ont tout ce qu'il faut sous la main : serveur MCP joignable, python3.12 présent, tesseract avec fra, pymupdf dans ~/venvs/pdf2.
social-signal-research v1.0.0 opérationnelle Ce que les gens disent maintenant, avec chiffres et citations vérifiables, sur Reddit / X / YouTube / HN.
Ce que les gens disent maintenant, avec chiffres et citations vérifiables, sur Reddit / X / YouTube / HN.
python3.12obligatoire (le moteur refuse 3.11). Écrire le plan dans un fichier JSON et passer le chemin, jamais le JSON inline. Un 0 item n'est pas une absence de signal : lire le stderr source par source.