Dépendances et sources
Le moteur de recherche : sept rangs de sources, six phases, un gabarit unique. Toute question de droit suisse passe par ici.
| Élément | Détail |
|---|---|
| Références | 9 fichiers · audit-repo-legal-assistant.md, checklist-sortie.md, citation-suisse.md, extraction-faits.md, methode-et-structure.md, opencaselaw-mcp.md, questions-de-droit.md, sources-et-outils.md, subsomption.md |
| Gabarits | 4 fichiers · avis-de-droit.md, gabarit-general.md, note-courte.md, plans-analyse.md |
| Scripts | 1 fichiers · ocl.py |
| Serveur MCP | swiss-caselaw · https://mcp.opencaselaw.ch/mcp · lecture seule, sans clé, outils mcp__swiss_caselaw__* |
| Outils appelés | analyze_legal_trendattest_responsecheck_claim_supportcitefind_appeal_chainfind_citationsfind_leading_casesfind_relevant_erwaegungget_article_historyget_article_purposeget_case_briefget_commentaryget_decisionget_decision_structureget_decisionsget_erwaegungget_lawget_legislationget_materialienget_practiceget_regesteget_scholarshipsearch_botschaftsearch_commentariessearch_decisionssearch_lawssearch_legislationsearch_materialiensearch_practicesearch_scholarship |
Sources externes mobilisées
| Source | Ce qu'on y trouve |
|---|---|
| Fedlex | lois fédérales, éditions historiques, DE/FR/IT |
| LexFind | lois cantonales des 26 cantons |
| Jurisprudence TF | ATF publiés, arrêts non publiés, TAF, TPF, COMCO |
| OnlineKommentar / OpenLegalCommentary | 1 796 commentaires open access |
| Bundesblatt | Botschaften dès 1999, Vernehmlassungen dès 1993 |
| Pratique administrative | directives, circulaires, 9 900+ documents |
Index des fichiers
Cliquer pour ouvrir. La touche / met le focus dans la recherche.
- SKILL.md
SKILL.md193 l. - référence
references/audit-repo-legal-assistant.md57 l. - référence
references/checklist-sortie.md29 l. - référence
references/citation-suisse.md135 l. - référence
references/extraction-faits.md90 l. - référence
references/methode-et-structure.md114 l. - référence
references/opencaselaw-mcp.md132 l. - référence
references/questions-de-droit.md58 l. - référence
references/sources-et-outils.md74 l. - référence
references/subsomption.md78 l. - gabarit
templates/avis-de-droit.md68 l. - gabarit
templates/gabarit-general.md141 l. - gabarit
templates/note-courte.md73 l. - gabarit
templates/plans-analyse.md73 l. - script
scripts/ocl.py118 l.
droit-suisse/SKILL.md
9 Ko · 193 lignes
Droit suisse — moteur de fond
Un seul moteur pour toute question de droit suisse, quel que soit le domaine : où chercher (sources), comment chercher (processus), comment rendre (gabarit unique). Le domaine change le contenu, jamais la démarche ni la structure de sortie.
C'est le point d'entrée du fond. recours-tf et contrats-travail-ch traitent la
procédure et la normalisation ; dès qu'une norme doit être interprétée, une clause
validée ou un état de la jurisprudence établi, la réponse se construit ici.
Quand l'utiliser
- Toute question de droit suisse (contrats, bail, travail, famille, successions, RC, pénal, administratif, social, fiscal, construction).
- Cadrer une recherche, structurer un avis, présenter des sources, vérifier une citation.
- Reprendre un dossier existant pour en contrôler la méthode.
- Toute question de fond soulevée par une skill spécialisée : validité d'une clause
(→
contrats-travail-ch), grief au fond (→recours-tf), autorité d'un arrêt.
Hors périmètre : rédiger un recours au TF (→ recours-tf) ; comparer des contrats de
travail (→ contrats-travail-ch) ; droit étranger ou UE pure (sauf droit suisse
d'exécution) ; signature ou dépôt d'un acte (→ avocat).
1. Où chercher — les sources, dans cet ordre
La hiérarchie n'est pas décorative : elle détermine 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 cité | get_erwaegung, find_relevant_erwaegung |
la phrase qu'on cite |
| 5 | Doctrine open access | get_commentary, search_commentaries, get_doctrine, search_scholarship |
interprétation, controverses |
| 6 | Matériaux | get_article_purpose, search_botschaft, get_materialien, get_article_history |
but de la norme, historique |
| 7 | Pratique administrative | search_practice, get_practice |
application par l'administration |
Détail, couverture et limites : references/sources-et-outils.md.
2. Comment chercher — le processus
Six phases, toujours dans cet ordre. Chacune a son fichier.
- Cadrer — branche, date déterminante (le droit applicable est celui en vigueur au moment des faits), canton, destinataire, langue de sortie. Un élément qui change la réponse se demande ; le reste s'assume en hypothèse explicite.
- Faits — chronologie datée, parties qualifiées, tri de ce qui est juridiquement
pertinent, faits manquants signalés. →
references/extraction-faits.md - Questions — « qui veut quoi de qui, sur quelle base », préalables avant fond.
→
references/questions-de-droit.md - Sources — les sept rangs ci-dessus, dans l'ordre ; une requête par question.
→
references/sources-et-outils.md - Analyse — syllogisme et subsomption en 4 temps, canons d'interprétation, charge
de la preuve et délais. →
references/subsomption.md - Vérifier — deux contrôles, dans cet ordre. Voir ci-dessous.
Phase 6 — vérifier l'existence, puis le soutien
- Forme et existence :
cite()sur chaque référence. Il renvoie la chaîne canonique et valide le numéro de considérant. - Soutien :
check_claim_support()sur les 2 à 3 affirmations décisives, celles dont dépend la conclusion. Une référence peut exister et ne pas soutenir la phrase qu'on lui accole ; c'est le seul défaut invisible à la relecture. - Périmètre : ne pas vérifier une par une les affirmations secondaires. Une vérification exhaustive coûte plus que l'analyse et n'améliore pas la conclusion.
- Contrôle final :
attest_response()sur le brouillon, puis la checklist commune (references/checklist-sortie.md).
Méthode universitaire complète (critères d'évaluation, plans académiques FR/DE) :
references/methode-et-structure.md.
Règles de recherche
- Partir de l'article, jamais du thème. Le thème sert à trouver l'article, pas à conclure.
- 3 à 8 termes, une requête par question. Pas de collage de texte.
- Chercher en allemand par défaut (la majorité de la jurisprudence fédérale y est), ne jamais filtrer par langue sans raison.
- Codes de loi en allemand dans les outils :
OR,ZGB,StGB,BV. - Remonter le graphe de citations (
find_citations,find_appeal_chain) avant de conclure qu'un arrêt fait autorité. - Vérifier la date : norme en vigueur et jurisprudence postérieure aux faits.
- Savoir s'arrêter : trois arrêts convergents et une doctrine valent mieux que trente résultats non lus.
3. Comment rendre — le gabarit unique
Toute sortie a la même ossature en six blocs, quelle que soit la longueur :
1. QUESTION la question de droit, reformulée, en une phrase
2. FAITS ce qui est établi + ce qui manque
3. RÈGLES normes applicables (version), jurisprudence, doctrine
4. ANALYSE application aux faits, point par point
5. CONCLUSION réponse directe, risques, prochaines étapes
6. SOURCES références vérifiées (notes ou liste finale)
Trois densités du même gabarit — choisir selon le destinataire, pas selon l'humeur :
| Densité | Volume | Usage | Fichier |
|---|---|---|---|
| Réponse courte | 10-15 lignes | chat, courrier, question ponctuelle | templates/note-courte.md |
| Note d'analyse | 1-2 pages | dossier interne, arbitrage rapide | templates/gabarit-general.md |
| Avis de droit | 5-15 pages | client, assurance, autorité | templates/avis-de-droit.md |
Plans académiques FR/DE : templates/plans-analyse.md.
4. Comment sourcer — l'essentiel
- Une seule source de vérité pour les formes :
references/citation-suisse.md(Zitierregeln du TF). Les autres skills y renvoient ; aucune ne redéfinit un format. - Passer chaque référence par
cite()avant de l'écrire. Une citation composée à la main est une faute qui se voit. pinpoint_status: verifiedprouve que le considérant existe, pas qu'il soutient l'affirmation : le fond se contrôle aveccheck_claim_support().- Citer article + alinéa + chiffre/lettre ; jurisprudence avec son considérant.
- Le contenu de la loi se cite par la loi, pas par un manuel. Pas de citation de deuxième main. Pas de citation non lue.
5. Limites à annoncer, pas à combler
Le corpus open access ne contient pas le Commentaire romand, les BSK/Zürcher/Berner Kommentar, les revues payantes, ni toute la jurisprudence cantonale non publiée. Quand la réponse en dépend, le dire — et proposer ce qu'il faut consulter en plus. Ne jamais inventer le contenu d'une source payante.
6. Pièges
Méthode : 1. Partir de la doctrine ou d'un arrêt « qui ressemble » au lieu de la norme. 2. Répondre avec le droit d'aujourd'hui sur des faits d'il y a trois ans. 3. Mélanger faits et droit dès la deuxième phrase. 4. Traiter à plat : 80 % du texte doit porter sur les 20 % contestés. 5. Confondre existence d'une citation et soutien d'une affirmation.
Outils : references/sources-et-outils.md (codes en allemand, total en borne
inférieure, commentaires manquants, find_relevant_erwaegung sensible aux accents).
Checklist de sortie
Version commune aux trois skills, à passer avant tout livrable :
references/checklist-sortie.md.
- [ ] Question reformulée « qui/quoi/de qui/sur quelle base »
- [ ] Date déterminante fixée, norme lue dans sa version applicable
- [ ] Faits séparés du droit, manques et hypothèses explicites
- [ ] Sources parcourues dans l'ordre (norme → jurisprudence → doctrine → matériaux)
- [ ] Chaque référence vérifiée par
cite(), chaque affirmation décisive parcheck_claim_support() - [ ] Gabarit en six blocs respecté, densité choisie selon le destinataire
- [ ] Limites du corpus annoncées si elles changent la réponse
Ce que contient ce dossier — quoi charger, quand
| Fichier | Charger quand |
|---|---|
references/extraction-faits.md |
phase Faits, dès qu'il y a plus de quelques pièces |
references/questions-de-droit.md |
phase Questions, plusieurs prétentions ou préalables |
references/sources-et-outils.md |
avant la première requête : quel outil pour quelle source |
references/subsomption.md |
phase Analyse, condition contestée |
references/citation-suisse.md |
dès qu'une référence doit être écrite |
references/methode-et-structure.md |
avis long, plan académique FR/DE |
references/opencaselaw-mcp.md |
paramètres des outils, corpus, pièges techniques |
references/audit-repo-legal-assistant.md |
audit d'un dépôt ou d'un assistant juridique |
references/checklist-sortie.md |
avant livraison (commun aux trois skills) |
templates/gabarit-general.md |
structure en six blocs et trois densités |
templates/note-courte.md |
réponse rapide ou courrier |
templates/avis-de-droit.md |
avis de droit 5-15 pages |
templates/plans-analyse.md |
plans académiques FR/DE |
scripts/ocl.py |
fallback CLI quand le serveur MCP n'est pas chargé |
Chaînage
recours-tf: la procédure et la forme du grief. Le fond (interprétation, jurisprudence, subsomption) se cherche ici.contrats-travail-ch: les champs, les conversions et le comparatif. La validité des clauses se contrôle ici.grounded-citations: le ledger de sources pour un livrable hors droit suisse.
droit-suisse/references/audit-repo-legal-assistant.md
5 Ko · 57 lignes
Audit — repo th1zan/legal-assistant (OpenCode) vs stack Hermes + OpenCaseLaw
Constat de base : le repo est un espace OpenCode (.opencode/skills, @skill
mentions, mcp.json avec chemins /Users/thibault/...). Sous Hermes, l'invocation se
fait par skill_view(name) : tout ce qui repose sur @nom-de-skill ou sur les
chemins macOS est mort à la migration. Le fond méthodologique, lui, reste bon.
| Skill | Verdict | Pourquoi | Action |
|---|---|---|---|
mcp/swiss-case-law-research (v1.4) |
Obsolète (technique) | Codé sur l'API entscheidsuche : search_case_law / get_document, params size/from, codes CH_BGer/CH_BGE/CH_BVGE. OpenCaseLaw expose search_decisions / get_decisions, limit/offset, court=bger|bge|bvger, decision_id. Le mapping « ATF publiés → CH_BGE » n'existe plus (bge). |
Réécrit dans droit-suisse. Garder de l'original : la clarification de périmètre obligatoire (Phase 0.5) et l'échelle de volume (>500 → affiner). |
mcp/swiss-legal-commentary (v2.1.0) |
Obsolète (technique) | S'appuie sur un MCP onlinekommentar local (node …/build/index.js) inexistant, et sur une API (search, legislative_act, sort, page, get_commentary_by_id) que le MCP actuel n'a pas. |
Absorbé : get_commentary(abbreviation, article), search_commentaries, search_scholarship. Les garde-fous (pas de commentaire → le dire) sont repris. |
analyse/citation-formatter |
Dangereux | Produit ATF (à publier) 7B_529/2025 — forme qui n'existe pas dans les Zitierregeln du TF (arrêt 7B_529/2025 du …, destiné à la publication). Formate à la main ce que cite() renvoie canoniquement et dont il valide le pinpoint. |
Jeter le script du dépôt (scripts/format_citation.py côté dépôt audité, pas ici) ; remplacer par cite(). Un formateur maison est un générateur de fausses citations. |
analyse/parse-decision |
Obsolète | Parse le HTML du TF pour reconstruire faits / Erwägungen / dispositif. | Remplacé par get_decision_structure, get_case_brief, get_erwaegung (verbatim), get_regeste. |
analyse/extract-facts |
Valable | Pur raisonnement (parties, chronologie, faits pertinents/non pertinents), aucune dépendance API. | Repris dans la phase 1 de droit-suisse. |
analyse/identify-legal-issues |
Valable | Formulation des questions de droit à la suisse. | Repris en phase 2. |
analyse/analyse-cas-juridique |
Valable | Syllogisme, subsomption en 4 temps, distinction UNIL / Gutachtenstil — correct et non dépendant d'un outil. | Repris en phase 4 ; corriger les @extract-facts en renvois internes. |
analyse/recours-tf |
Valable | Structure d'un recours au TF (recevabilité, griefs, conclusions). | À garder comme référence séparée, hors périmètre de droit-suisse (qui ne rédige pas d'acte). |
anthropic/* (doc-coauthoring, mcp-builder, skill-creator) |
Redondant | Copies vendor du dépôt anthropics/skills. | Sans intérêt ici : Hermes a déjà skill_manage et ses propres skills MCP. |
production/docx |
Redondant | Copie vendor ; un skill docx existe déjà dans Hermes. |
Supprimer du repo pour éviter deux sources de vérité. |
.opencode/mcp.json |
Mort | Chemins /Users/thibault/Documents/... ; sur ce VPS rien n'existe. |
Remplacé par mcp_servers.swiss-caselaw (URL distante, sans auth). |
.opencode/instructions/research-persistence.md |
Bon réflexe | Sauver les résultats de recherche sur disque pour survivre à la compaction. | Conservé comme règle : écrire les résultats dans un fichier au fil de l'eau, résumer en contexte. |
Ce qui manquait (et que droit-suisse couvre)
- Méthode d'avis de droit : aucun skill du repo ne décrivait le plan type d'une consultation, les critères d'évaluation des facultés, ni la distinction cas pratique / avis de droit.
- Règles de citation suisses : éparpillées et partiellement fausses
(
citation-formatter), jamais rattachées aux Zitierregeln du TF. - Législation et matériaux : rien sur Fedlex/LexFind,
get_law(as_of=…), Botschaften (get_article_purpose,search_botschaft), pratique administrative. - Doctrine open access ≠ doctrine commerciale : la confusion Onlinekommentar / Commentaire romand n'était pas traitée.
Migration effectuée
Principe retenu : un seul moteur méthodologique, pas un skill par type de contenu. Les
skills du repo qui décrivaient une méthode ont été fusionnés dans droit-suisse ; seul ce
qui constitue un livrable distinct (le recours au TF, soumis à délai et à des verrous
procéduraux) reste une skill à part.
analyse-cas-juridique,extract-facts,identify-legal-issues→ absorbés dansdroit-suisse(references/extraction-faits.md,references/questions-de-droit.md,references/subsomption.md,templates/plans-analyse.md). Trois skills de méthode pour une seule démarche, c'était de la dispersion.recours-tf→ skill Hermeslegal/recours-tf(v3.0), réduite à la procédure : huit verrous de recevabilité posés comme questions à trancher (avec l'article à lire), calcul du délai comme méthode, grief en cinq parties, squelette de mémoire. Aucun chiffre, aucun exemple de droit matériel : ils se lisent avecget_lawle jour du dépôt.citation-formatter: à jeter. Il composait les citations à la main alors quecite()renvoie la chaîne canonique et valide le considérant.parse-decision: à jeter, remplacé parget_decision_structure/get_erwaegung.swiss-case-law-research/swiss-legal-commentary: remplacés pardroit-suisse(references/sources-et-outils.md,references/opencaselaw-mcp.md).
droit-suisse/references/checklist-sortie.md
1 Ko · 29 lignes
Checklist de sortie — commune aux trois skills
À passer avant de livrer, quelle que soit la densité. Les points 1 à 6 valent pour tout livrable juridique ; le point 7 dépend de la skill utilisée.
- [ ] Question reformulée en termes juridiques (« qui veut quoi de qui, sur quelle base »)
- [ ] Date du droit applicable indiquée (norme lue dans sa version en vigueur à la date des faits)
- [ ] Faits : manques signalés, hypothèses écrites explicitement
- [ ] Sources primaires citées et vérifiées par
cite()(forme + existence du considérant) - [ ] Soutien des affirmations décisives contrôlé par
check_claim_support()(2 à 3 points, pas tous) - [ ] Limites du corpus annoncées si elles changent la réponse (pas de Commentaire romand, BSK, revues payantes, jurisprudence cantonale partielle)
- [ ] Structure : six blocs (question, faits, règles, analyse, conclusion, sources), densité adaptée au destinataire
Point 7 — contrainte propre à la skill
| Skill | Vérification supplémentaire |
|---|---|
droit-suisse |
hiérarchie des sources parcourue dans l'ordre (norme → jurisprudence → doctrine → matériaux → pratique) |
recours-tf |
les huit verrous traités explicitement ; griefs en cinq parties ; pas de fait nouveau (art. 99 LTF) ; délai calculé par écrit |
contrats-travail-ch |
les sept paramètres de cadrage figés ; clauses nulles signalées ; package complet valorisé (cash + prévoyance + temps) |
Trois défauts qui échappent à la relecture
- Une référence qui existe mais ne soutient pas la phrase qu'on lui accole.
- Une norme citée dans sa version actuelle sur des faits antérieurs.
- Une conclusion qui répond à une autre question que celle du bloc 1.
droit-suisse/references/citation-suisse.md
6 Ko · 135 lignes
Citer en droit suisse — Zitierregeln du Tribunal fédéral
Source primaire : Zitierregeln, Tribunal fédéral / Bundesgericht (https://www.bger.ch/files/live/sites/tfl/files/pdf/Reglemente/01_Zitierregeln_d.pdf), utilisées par le TF dans ses arrêts et reprises par les facultés (UNIBE, UZH). Compléments : FORSTMOSER/OGOREK/SCHINDLER, Juristisches Arbeiten, 7e éd. 2023 ; RYSER BÜSCHI/SCHLEGEL/PFLAUM/GLATTHARD, Juristische Arbeiten erfolgreich schreiben und präsentieren, 3e éd. 2024.
1. Jurisprudence
Tribunal fédéral — arrêts publiés (ATF/BGE/DTF)
| Cas | DE | FR | IT |
|---|---|---|---|
| Renvoi simple | BGE 133 II 292 |
ATF 133 II 292 |
DTF 133 II 292 |
| Avec considérant | BGE 133 II 292 E. 3.2 |
ATF 133 II 292 consid. 3.2 |
DTF 133 II 292 consid. 3.2 |
| Avec page | BGE 133 II 292 E. 3.2 S. 296 |
ATF 133 II 292 consid. 3.2, p. 296 |
— |
| Sous-considérant | BGE 127 V 219 E. 2b/bb S. 226 |
ATF 127 V 219 consid. 2b/bb, p. 226 |
— |
| Plusieurs arrêts | BGE 132 III 18 E. 4.1; 132 V 321 E. 6.1 |
ATF 132 III 18 consid. 4.1; 132 V 321 consid. 6.1 |
— |
| Même volume, autres pages | répéter le volume : BGE 128 II 145 E. 2.2 S. 151; 121 I 367 E. 3b S. 375 |
idem | — |
| Renvois multiples | … E. 2.3 S. 45; 130 V 163 E. 4.3.1 S. 172; je mit Hinweisen |
… ; chacun avec références |
— |
Tribunal fédéral — arrêts non publiés
Urteil (des Bundesgerichts) 6B_214/2007 vom 13. November 2007 E. 5.10.3
arrêt (du Tribunal fédéral) 6B_214/2007 du 13 novembre 2007 consid. 5.10.3
- Destiné à la publication :
… , zur Publikation vorgesehen/… , destiné à la publication. - Non publié mais cité dans un ATF :
Urteil 2P.318/1997 vom 18. Februar 1999 E. 1, nicht publ. in: BGE 125 I 182. - Publié en revue :
Urteil 1P.440/2000 vom 1. Februar 2001, in: SJ 2001 I S. 221(variante abrégée :SJ 2001 I S. 221, 1P.440/2000). - En note de bas de page, la forme longue se réduit au besoin à
Urteil 6B_214/2007 E. 5.10.3une fois la référence complète donnée.
Autres juridictions
| Juridiction | Forme |
|---|---|
| Tribunal administratif fédéral | BVGE 2007/2 E. 3.2 S. 18 / ATAF 2007/2 consid. 3.2 / Urteil B-2125/2006 vom 26. April 2007 E. 3 |
| Tribunal pénal fédéral | TPF 2005 127 E. 10.3.3 S. 134 / TPF 2005 127 consid. 10.3.3 |
| Tribunal cantonal | Urteil (des Obergerichts des Kantons Zürich) vom 11. April 1967, in: ZR 66/1967 S. 248 / arrêt (de la Cour de justice du canton de Genève) du … , in: SJ 2010 I 1 |
| CEDH | Urteil (des EGMR) Kaiser gegen Schweiz vom 15. März 2007 § 35 / arrêt (de la CourEDH) Kaiser c. Suisse du 15 mars 2007 § 35 |
| CJUE | Urteil vom 25. März 2010 C-278/08 BergSpechte, Randnr. 18 ff. |
Usage pratique : la première mention est complète, les suivantes abrégées
(Urteil 6B_214/2007 E. 5.10.3), avec mit Hinweisen / avec références quand on
renvoie à une jurisprudence abondante.
2. Législation
- Loi fédérale, première mention : titre officiel complet, sigle, numéro SR —
Bundesgesetz vom 30. März 1911 betreffend die Ergänzung des Zivilgesetzbuches (Fünftes Buch: Obligationenrecht) (OR; SR 220)/Loi fédérale du 30 mars 1911 complétant le Code civil suisse (Livre cinquième : droit des obligations) (CO ; RS 220). - Ensuite :
Art. 41 Abs. 1 OR/art. 41 al. 1 CO. Toujours préciser al. / Abs. / lit. / ch. / phrase ; distinguer les variantes. - Dispositions finales :
Art. 2 ÜbBest. BV,Art. 7c SchlT ZGB. - Ancien droit :
aArt. 129 UVV/art. 4 aBV; version donnée :Art. 34a Abs. 1 BVG (in der seit 1. Januar 2005 gültigen Fassung). - Droit cantonal : titre officiel + recueil cantonal (ex.
LS 550.1,RSG K 1 05). - Traités :
FZA; SR 0.142.112.681.
3. Doctrine
Modèle général (monographie) :
MÜLLER GEORG, Elemente einer Rechtssetzungslehre, 2. Aufl., Zürich 2006, S. 69 ff.
AUBERT JEAN-FRANÇOIS, Traité de droit constitutionnel suisse, vol. II, 1967, p. 458 ss
Commentaire (forme la plus utilisée en pratique) :
BAUDENBACHER CARL, in: Basler Kommentar, Obligationenrecht, 2. Aufl. 2002,
N. 16 vor Art. 620 OR, S. 230
HONSELL HEINRICH, in: Basler Kommentar, OR, 4. Aufl. 2007, N. 6 der Vorbemerkungen
zu Art. 197-210 OR
JACQUES CHRISTINE, in: Commentaire romand, Impôt fédéral direct, 2008,
n° 23-25 ad art. 33 LIFD
Règles : auteur en CAPITALES (nom puis prénom), sans titres académiques ; numéro de
marge N. / n° ad/dazu/zu l'article ; abréviation a.a.O. / op. cit. pour
les renvois suivants ; les sous-titres des ouvrages sont supprimés ; les traductions
entre crochets si l'on traduit un titre.
Terminologie romande : ad art. est l'usage du Commentaire romand, n° pour le
numéro de marge. C'est la seule différence structurante avec l'usage alémanique.
4. Périodiques, contributions, thèses
REICH MARKUS, Das Leistungsfähigkeitsprinzip im Einkommenssteuerrecht, ASA 53 S. 16 f.
DE HALLER JEAN-CLAUDE, L'hypothèque légale de l'entrepreneur, ZSR 101/1982 II S. 224
KARIN MÜLLER, Einige Gedanken zum Begriff … , in: Wege zum Bundesgericht, 2007, S. 127 ff.
KLARA REBER, Abgrenzung zwischen Dienstvertrag und Auftrag, Diss. Basel 1972, S. 28
f. = page suivante, ff. = pages suivantes, ss en français.
5. Matériaux
Botschaft vom 8. Juni 2012 zur Änderung … , BBl 2012 6663 (nachfolgend: Botschaft …)
Message du 8 juin 2012 concernant … , FF 2012 6663
Un projet non adopté : Art. 3 des Entwurfs vom 21. Oktober 2005 (E-StPO; BBl 2006 1389).
6. Règles de fond (facultés suisses)
- On cite en note de bas de page, pas dans le corps du texte ; la note se place à la fin de l'idée empruntée.
- On cite le document où l'idée se trouve réellement (pas de citation de deuxième main) ; les sources internet uniquement si l'auteur est identifiable.
- Le contenu de la loi se cite par la loi, pas par un manuel (« Selon Müller, l'art. 41 CO exige… » est une faute).
- La subsomption (application des faits) ne se source pas : aucune jurisprudence n'a déjà tranché votre cas.
- Le texte de loi n'entre pas dans la bibliographie ; la jurisprudence non plus. Bibliographie = doctrine citée, alphabétique, éditions les plus récentes.
- Ne jamais citer un arrêt qui n'a pas été lu dans son texte (via
get_erwaegung). - Auteurs et sources doivent être cités dans leur langue d'origine ; une traduction se signale.
7. Abréviations usuelles
ATF/BGE/DTF · consid./E./consid. · al./Abs. · lit./Bst. · ch./Ziff. ·
ss/ff · RS/SR/AS (Recueil systématique / Amtliche Sammlung) · FF/BBl ·
LTF/BGG · CO/OR · CC/ZGB · CP/StGB · CPC/ZPO · CPP/StPO · LP/SchKG ·
LEF (poursuite) · LAA/UVG · LAI/IVG · LAMal/KVG · LPP/BVG ·
ZC/ZR (Zürcher Zivilrechtspflege) · SJ (Semaine judiciaire) · RSJ ·
ZSR/SJZ · AJP/PJA · RFJ · JdT (Journal des tribunaux).
droit-suisse/references/extraction-faits.md
3 Ko · 90 lignes
Extraction des faits juridiquement pertinents
Principe : da mihi facta, dabo tibi ius. Le tri des faits se fait par rapport aux
normes (Tatbestandsmerkmal), jamais par goût narratif. Va-et-vient constant entre
norme et faits (Engisch) : on lit les faits, on devine la norme, on relit les faits avec
la norme en tête.
Phase 1 — Lecture initiale
Lire l'énoncé entier une fois, sans annoter. Identifier le domaine (civil, pénal, administratif, social), repérer la question apparente et les indicateurs (« peut-il », « est-il en droit de », « quels sont ses droits »).
Phase 2 — Parties
Pour chaque personne : nom + qualification juridique (vendeur/acquéreur, bailleur/locataire, employeur/travailleur, lésé, autorité), statut (personne physique majeure/capable, personne morale avec forme et siège), domicile ou siège (compétence, for).
Une même personne peut cumuler plusieurs qualités (locataire et sous-locataire) : les lister séparément, chacune ouvre un rapport juridique distinct.
Phase 3 — Chronologie
Tableau Date | Événement | Portée juridique | Pièce. Toutes les dates, y compris
celles déductibles. Calculer les intervalles qui portent un délai (notification, mise en
demeure, prescription, résiliation). Identifier la date de référence (aujourd'hui)
car les délais courent vers elle.
Phase 4 — Tri rechtserheblich
Quatre catégories :
- A. Constitutifs — objectifs (qui, quoi, à qui, quand, où, comment, quel résultat) ; subjectifs (intention, négligence, bonne/mauvaise foi, connaissance) ; causalité (naturelle et adéquate).
- B. Extinctifs / modificatifs — paiement, compensation, remise, résiliation, prescription, novation, cession.
- C. Justificatifs — consentement, légitime défense, état de nécessité, mesures autorisées par la loi.
- D. Procéduraux — domicile/siège, valeur litigieuse, conciliation préalable, qualité pour agir, épuisement des instances, délais.
Pour chaque fait, une seule question : « à quel élément de quelle norme ce fait correspond-il ? ». Pas de réponse → le fait sort du dossier analytique.
Phase 5 — Qualification préliminaire
Utiliser le vocabulaire légal, pas celui du client : « acheteur » et non « client », « restitution » et non « rendre », « résiliation » et non « annulation du bail ». Qualifier les actes (contrat de vente, mandat, acte unilatéral) et les choses (mobilière/immobilière, fongible, consomptible).
Phase 6 — Élimination
Écarter : émotions sans portée juridique, détails narratifs, répétitions, hypothèses du client. Conserver ce qui touche à l'intention, la connaissance, la bonne foi, ou à la crédibilité d'une partie — même si cela ressemble à un détail.
Sortie type
PARTIES
A (bailleur, personne physique majeure, domicilié à Delémont)
B (locataire, personne morale SARL, siège à Porrentruy)
CHRONOLOGIE
12.03.2025 | signature du bail | contrat écrit, art. 253 ss CO | annexe 1
01.06.2025 | hausse de loyer notifiée | forme, art. 269d CO | annexe 4
FAITS RECHTSERHEBLICH
A. constitutifs : … B. extinctifs : … C. justificatifs : … D. procéduraux : …
FAITS ÉCARTÉS
« B était contrarié » — sans portée juridique (sauf si lésion, art. 21 CO)
MANQUES À CLARIFIER
la notification de hausse (forme écrite ? motif ?) — décisif pour art. 269d CO
Pièges
- Qualifier trop tôt (mélange fait/droit) et perdre des faits qui contredisaient la qualification.
- Oublier un fait favorable à l'adversaire : il est dans le dossier, il faudra y répondre.
- Combler un trou par une hypothèse (« le bail était probablement écrit »).
- Laisser passer une date : dans beaucoup de cas suisses, le procès se gagne ou se perd sur un délai, pas sur un argument.
droit-suisse/references/methode-et-structure.md
6 Ko · 114 lignes
Méthode et structure — ce que les facultés suisses exigent
Sources utilisées (documents officiels, lus) :
- UZH, RWI, Leitfaden Fallbearbeitung (2017) — https://rwi.uzh.ch/dam/jcr:0cf822da-b39d-4a3d-9178-143d5c4fd8af/2017-Leitfaden%20Fallbearbeitung.pdf
- UZH, Grundregeln für das Verfassen rechtswissenschaftlicher Arbeiten (chaire Thouvenin) — https://www.ius.uzh.ch/dam/jcr:0da657c3-1a3a-45b6-901f-a5ea6f11ca54/UZH_Grundregeln%20f%C3%BCr%20das%20Verfassen%20rechtswissenschaftlicher%20Arbeiten.pdf
- UNIBE, Faculté de droit, Richtlinien über Umfang und Form von Problemlösungen (trad. angl., état 30.04.2020) — structure et citation de référence.
- UNIGE, Rédaction juridique de 3e année de Bachelor — organisation du travail (exemple : droit bancaire, Pr Liégeois) : soit résumé + analyse critique d'un arrêt non traduit, soit petit avis de droit ; évaluation = forme (notes, bibliographie)
- fond (plan, raisonnement, doctrine, jurisprudence).
- UNIFR (lettres/pédagogie) : guide formel APA — utile pour la présentation
matérielle, pas pour la citation juridique (voir
citation-suisse.md). - Manuels de référence : WYSS/KUMMER/HÄCKI, Suchen – Finden – Überzeugen. Arbeitstechniken im juristischen Alltag, 2e éd. Berne 2013 ; FORSTMOSER/OGOREK/ SCHINDLER, Juristisches Arbeiten, 7e éd. 2023 ; RYSER BÜSCHI et al., Juristische Arbeiten erfolgreich schreiben und präsentieren, 3e éd. 2024 ; BETSCHART/HAAS/ THURNHERR, Leitfaden zum Verfassen einer juristischen Arbeit, 5e éd. 2022.
1. Les deux genres
| Genre | But | Style |
|---|---|---|
| Fallbearbeitung / cas pratique | vérifier une qualification sur un état de fait donné | Gutachtenstil strict (X könnte … si) |
| Avis de droit / Rechtsgutachten | répondre à un mandant réel sur une question ouverte | Gutachtenstil pour les points discutés, style assertif pour le reste |
| Mémoire / séminaire | traiter une question de recherche | thèse annoncée, discussion des opinions, position personnelle |
Distinction posée par UZH : dans un avis, on argumente ; on ne remplace jamais un argument par une autorité (« selon le TF… » n'est pas un argument) ni par une affirmation (« de toute évidence… »). Aucune solution alternative présentée sans trancher : on choisit une voie et on la motive.
2. Processus de recherche (l'ordre compte)
- Comprendre la question — lire deux fois, repérer ce qui est demandé (qualification ? chances de succès ? rédaction d'un acte ?).
- Fixer l'état de fait — chronologie, parties, pièces, faits manquants. L'état de fait est « la base d'appréciation gravée dans le marbre » : on n'extrapole pas, on signale les manques.
- Qualifier — branche du droit, puis normes candidates (index du code, art. 1 CC pour les lacunes).
- Rechercher — dans cet ordre : loi en vigueur à la date des faits → jurisprudence (ATF d'abord, puis arrêts non publiés) → doctrine (commentaires, puis articles de revue, qui portent l'état actuel de la discussion) → matériaux si l'interprétation est en jeu.
- Trier et pondérer — hiérarchie : ATF > TF non publié > instance inférieure ; arrêt récent > ancien ; doctrine majoritaire ≠ argument d'autorité.
- Rédiger — plan en entonnoir, une question par chapitre, subsomption visible.
- Vérifier — chaque citation relue dans sa source ; bibliographie = exactement les ouvrages cités.
Erreur classique signalée par l'UZH : chercher un arrêt « qui ressemble » et le recopier. On part du texte de loi et on construit, l'arrêt vient confirmer ou nuancer.
3. Structure d'un avis de droit (format pratique, 5-15 pages)
Page de titre (destinataire, date, auteur, mention « confidentiel »)
I. Mandat et questions de droit (1 page max)
II. État de fait (chronologie datée, sources des faits)
III. Droit applicable (normes, version, canton, voie de droit)
IV. Analyse (une section par question)
1. Question 1 — prétention de X contre Y
1.1 Norme et conditions
1.2 Condition a) : définition + jurisprudence + doctrine → subsomption
1.3 Condition b) : …
1.4 Délais / prescription / preuve
1.5 Résultat pour la question 1
2. Question 2 …
V. Conclusion et recommandations (réponse directe, risques, alternatives,
prochaines étapes concrètes)
VI. Sources (doctrine ; jurisprudence en notes)
Annexes éventuelles (pièces, calculs)
Variante académique (UZH) : titre, tables (romain), texte (arabe), annexe,
déclaration d'authenticité. Plan alphanumérique A./I./1./a)/aa) ou décimal
1/1.1/1.1.1, jamais mixte ; pas de subdivision unique (un 1.1 exige un 1.2).
4. Structure d'une réponse de conseil (courte)
- Réponse en une phrase (oui / non / cela dépend de X).
- Base légale (1-2 références).
- Jurisprudence clé (1-2 arrêts, avec le point jugé).
- Ce qui ferait basculer la réponse (fait manquant, délai, canton).
- Prochaine étape concrète.
5. Critères d'évaluation (facultés suisses, résumé)
- Forme : citation uniforme, notes, bibliographie, orthographe, abréviations, pagination, plan cohérent.
- Fond : identification correcte des problèmes, structuration logique, traitement complet, argumentation autonome, usage à jour de la doctrine et de la jurisprudence, capacité à trancher.
- UZH ajoute : ancrage dans le contexte, question de recherche explicite, discussion des opinions divergentes, position personnelle motivée.
6. Spécificités suisses à ne pas importer d'ailleurs
- Pas de « Obersatz » obligatoire dans une consultation pratique ; le style assertif domine hors des points contestés.
- Pas de distinction cassation/appel française ; on parle de recours (LTF), de recevabilité, de qualité pour recourir.
- La doctrine suisse se cite par numéro de marge dans les commentaires, pas par page.
- Le tribunal de première instance n'est pas « le tribunal » : toujours nommer l'autorité (Préfecture, Tribunal de première instance, Cour civile…).
- L'interprétation se fait selon les canons reconnus (littéral, systématique, téléologique, historique) ; l'art. 1 CC ne fonde pas une « équité » générale.
droit-suisse/references/opencaselaw-mcp.md
7 Ko · 132 lignes
MCP OpenCaseLaw — référence outils (vérifié 11/2026, serveur v1.27.0)
Connexion
- Endpoint :
https://mcp.opencaselaw.ch/mcp— Streamable HTTP (SSE aussi sur/sse). - Aucune authentification, outils lecture seule, 4 workers uvicorn, health
/health. - Déjà enregistré dans Hermes :
mcp_servers.swiss-caselaw→ outilsmcp_swiss_caselaw_*. Activer sans redémarrer :/reload-mcp. Sinon, fallback script :python3 scripts/ocl.py tools | s "…" | law CO 41 --lang fr | do "Art. 41 OR" | cit "BGE 141 III 112" --pin 5.2 - Local (hors ligne, 65 Go, 30-60 min) : voir https://github.com/jonashertner/opencaselaw
Corpus
1 050 000+ décisions (TF publiées et non publiées, TAF, TPF, TF des brevets, COMCO, 26 cantons, CEDH suisse + HUDOC), 5 546 lois fédérales (Fedlex SPARQL, DE/FR/IT), 16 400 lois cantonales (LexFind + scraping 23 cantons), 1 796 commentaires OnlineKommentar.ch + OpenLegalCommentary.ch, ~28 100 documents du Bundesblatt (Botschaften dès 1999, Vernehmlassungen depuis 1993), 9 900+ documents de pratique administrative, jurisprudence CJEU/CIJ/traités ONU.
Trouver une décision
search_decisions — full-text FTS5 + BM25, 1,05 M décisions.
| Param | Notes |
|---|---|
query |
3-8 termes, une requête par question. "phrase", AND/OR/NOT, Kündig*, regeste:mot, docket 6B_1234/2025. >500 chars = auto-condensé. |
court |
bger (TF, tous), bge (ATF publiés), bvger, bstger, bpatger, mkg, bge_egmr, hudoc_ch, cjeu, icj, untb_* |
canton |
CH (fédéral), ZH, VD, GE… |
language |
de/fr/it/rm/en — ne pas filtrer par défaut (70 % des arrêts TF sont en allemand) |
date_from / date_to |
date de l'arrêt |
published_from / published_to |
date de publication (veille) |
marked_for_publication |
true = arrêts signalés « zur Publikation vorgesehen » |
chamber |
sous-chaîne (Zivilrechtliche, Abteilung V) |
limit / offset / sort |
défaut 50 ; relevance, date_desc, date_asc, published_desc |
fields |
compact (id, docket, date, court, langue) pour scanner ; full pour lire |
include_pinpoint |
true : ajoute une E. satisfaisante sur les meilleurs résultats |
Réponse : texte lisible + structuredContent (total, total_is_lower_bound,
results[], result_set_id, has_more, next_offset). total = borne inférieure.
get_case_brief(case) — regeste, faits, 12 Erwägungen clés, dispositif, lois, autorité
citationnelle, arrêts liés. Point d'entrée pour comprendre un arrêt.
get_decisions(decision_ids[1-10], full_text=False) — lot ; préférer à 10 appels.
get_decision(decision_id, full_text=True) — texte intégral (tronqué à 200 000 car.).
Citer juste
cite(reference, pinpoint, language)→citation_string(DE/FR/IT),canonical_url,markdown_link,rule_statementverbatim,pinpoint_status(verified/invalid+valid_pinpoints),close_matchessiexists=false. Toujours passer par là ; ne jamais composer une citation à la main.get_regeste(decision_id)— regeste officiel (≈54 % des arrêts fédéraux).get_decision_structure(decision_id)— faits / Erwägungen numérotées / dispositif (fédéral seulement ; cantonal →get_decision).get_erwaegung(decision_id, e_number)— texte verbatim d'une E. (une E. parente inclut ses sous-E.). C'est l'unité citable en pratique suisse.find_relevant_erwaegung(decision_id, claim)— quelle E. soutient une affirmation ; renvoieconfidence: high|medium|low,no_match,highlighted_snippet. Interdiction de deviner une E. sino_match/low→ ne pas citer.check_claim_support(claim, decision_id, pinpoint)— juge indépendant :supports: yes|partial|no|contradicts|unrelated+ extraits.attest_response— audit final d'un brouillon de réponse (5 contrôles).
Graphe de citations (9,65 M arêtes)
find_citations(decision_id, direction=both|outgoing|incoming)— confiance par arête.find_appeal_chain(decision_id)— chaîne d'instances.find_leading_cases(query?, law_code, article, court?, date_from/to, limit)— classement par autorité citationnelle.law_codeen allemand (OR,ZGB).analyze_legal_trend(...)— évolution d'un thème dans le temps.
Législation
get_law(sr_number|abbreviation, article, language, canton, as_of)— texte autoritatif (Fedlex pour le fédéral, LexFind pour le cantonal).as_of="YYYY-MM-DD"= édition historique fédérale. Résout les abréviations FR/IT et les anciens noms (CO,CC,CP,LTF,OPP 2,OG→BGG). Signalepending_changes.search_laws(query, sr_number?, canton?, jurisdiction, language?, limit)— recherche par article (fédéral + cantonal entrelacés).search_legislation(query, canton, active_only, fetch_top_n_texts)— lois entières par nom (33 000+).get_legislation(lexfind_id|systematic_number, canton)— texte complet.browse_legislation_changes— veille des modifications.
Doctrine
get_commentary(abbreviation, article, language, canton?)— commentaire article par article (OnlineKommentar + OpenLegalCommentary + Kommentar SH VRG).abbreviationobligatoire (OR, pasCO; pas desr_numberseul).search_commentaries(query, abbreviation?, language?)— recherche ancrée article.search_scholarship(query, source?, pub_type?, author?, year_min/max, sort, limit)— articles OA (sui generis…), commentaires OA, thèses (ZORA), rapports. Subsomesearch_commentaries.get_scholarship,get_scholarship_full_text,find_scholarship_citing_statute,find_scholarship_citing_decision,list_scholarship_sources.
Matériaux & pratique
get_article_purpose(sr_number, article, language)— extraits verbatim de la Botschaft expliquant le but de l'article (interprétation historique).search_materialien/search_botschaft(query, doc_type, year_min/max)— Botschaften, rapports, projets, Vernehmlassungen (verbatim, citationBBl).get_article_history(sr_number, article)— arc complet : texte actuel + Botschaften + jurisprudence de principe + doctrine, chronologique. Très utile en une passe.search_practice(query, source?, issuing_authority?, doc_type?, include_superseded)/get_practice(doc_id)— Wegleitungen, Kreisschreiben, Weisungen (BSV, FINMA, ESTV, SECO/ArG, SEM, BAG, BJ/SchKG, WEKO, OAK BV) + recommandations ONU.
Divers
list_courts, get_statistics, draft_mock_decision, generate_exam_question,
search/fetch (alias ChatGPT deep research).
Pièges (constatés en test)
find_leading_cases(law_code="CO", article="41")→ renvoie des arrêts sur art. 41 BGG / CPP (141 IV 1, 144 IV 202, 138 IV 86). Avec"OR"→ 131 III 12, 123 III 110 (RC). Les codes internes sont allemands.get_commentary(sr_number="220", article="41")→ titre « Art. 41 220 », aucun commentaire. Utiliserabbreviation="OR".- Beaucoup d'articles ne sont pas commentés en open access : le message « No open-access commentary on Art. X » est normal.
get_doctrine("Art. 41 OR"):principal_rule= « Zivilklage, Schadenersatzforderung aus Geldwäscherei » (146 IV 211) — dérive vers le pénal. Croiser avecget_regeste.total_is_lower_bound: truedès que le compte dépasse le cap : ne pas annoncer un chiffre exact.cite()sur un pinpoint inexistant renvoiepinpoint_status: invalid+ la listevalid_pinpoints: s'en servir plutôt que de tâtonner.- Les décisions cantonales n'ont pas d'Erwägungen structurées :
get_decision+ citation par page/consid., pasget_erwaegung.
droit-suisse/references/questions-de-droit.md
2 Ko · 58 lignes
Formulation des questions de droit
La question brute du client (« qu'est-ce que je peux faire ? ») n'est jamais une question juridique. On la reformule avant de raisonner.
Formule
Qui veut quoi de qui, sur quelle base ? Wer will was von wem woraus?
- Qui → demandeur avec sa qualité (créancier, locataire, lésé, actionnaire, autorité). Vérifier au passage la qualité pour agir (art. 59 CPC).
- Quoi → prétention en termes juridiques : obtenir le paiement de X, faire constater la nullité, faire annuler, obtenir la restitution, la levée d'une opposition.
- De qui → défendeur, bon défendeur (capacité d'être partie, représentation).
- Sur quelle base → norme pressentie (à confirmer à l'étape 3).
Ordre des questions
- Préalables : qualité pour agir, compétence matérielle et territoriale, délais et prescription, forme (conciliation, écrit), représentation.
- Principales : le fond, une par prétention.
- Subsidiaires : ce qui ne se pose que si la principale échoue.
Une question préalable non résolue rend la principale inutile : elle passe en premier, y compris dans l'ordre de rédaction.
Questions multiples
Déclencheurs : plusieurs demandeurs ou défendeurs ; plusieurs actes juridiques (contrat + délit) ; plusieurs infractions ; plusieurs périodes. Traiter en sections séparées, chacune avec son syllogisme. Ne jamais fusionner deux prétentions dans une seule subsomption.
Actions envisageables en droit civil
- Exécution : paiement, livraison, exécution en nature, accomplissement d'une forme.
- Constatation : existence ou inexistence d'un droit, d'un contrat, d'une qualité.
- Modification / anéantissement : résolution, résiliation, annulation pour vice du consentement, réduction (art. 21 CO), rescision.
- Réparation : dommages-intérêts (art. 41 et 97 CO), tort moral (art. 49 CO), restitution de l'enrichissement (art. 62 CO).
- Conservatoires : mesures provisionnelles (art. 261 ss CPC), séquestre (art. 271 ss LP).
Test de qualité d'une question
Une question est bien formulée si :
- elle nomme les parties et la prétention (« A peut-il exiger de B le paiement de 4 200 fr. sur la base de l'art. 322 CO ? ») ;
- deux juristes la comprendraient de la même manière ;
- elle indique la base légale pressentie, même fausse — elle sera corrigée ;
- elle est répondable avec les faits disponibles, ou signale explicitement le fait manquant.
Contre-exemple : « Quels sont les droits de A ? » — impossible à traiter, à découper.
droit-suisse/references/sources-et-outils.md
4 Ko · 74 lignes
Sources et outils — cartographie de recherche
Ce fichier répond à une seule question : pour ce type d'information, où est-ce que je vais, avec quel outil, et qu'est-ce que je peux en attendre ?
Accès : MCP swiss-caselaw (endpoint https://mcp.opencaselaw.ch/mcp, sans clé, 42
outils, lecture seule). Fallback sans rechargement du gateway :
python3 scripts/ocl.py tools | s "…" | law CO 41 --lang fr | do "Art. 41 OR" | cit "ATF 141 III 112" --pin 5.2
Paramètres détaillés des 42 outils, corpus et pièges techniques :
references/opencaselaw-mcp.md.
1. Quelle source pour quelle question
| Je cherche… | Source | Outil | Signal d'arrêt |
|---|---|---|---|
| le texte d'une disposition | Fedlex / LexFind | get_law, search_laws |
texte obtenu, version datée |
| le texte d'il y a X années | Fedlex (éditions) | get_law(as_of=…) |
snapshot_date |
| la règle de principe sur un article | jurisprudence TF | find_leading_cases(law_code, article) |
regeste lisible |
| un arrêt sur des faits précis | jurisprudence | search_decisions |
3-5 résultats convergents |
| la phrase exacte à citer | arrêt | get_erwaegung(decision_id, e_number) |
texte verbatim |
| quel considérant soutient une thèse | arrêt | find_relevant_erwaegung(decision_id, claim) |
confidence: high |
| l'interprétation doctrinale | OnlineKommentar | get_commentary, search_commentaries |
un commentaire daté |
| la controverse académique | articles OA, thèses | search_scholarship |
2-3 auteurs divergents |
| le but de la norme | Botschaften | get_article_purpose, search_botschaft |
extrait verbatim + BBl |
| l'évolution d'un article | tout combiné | get_article_history |
arc complet en un appel |
| comment l'administration applique | Wegleitungen, circularies | search_practice |
document daté + autorité |
| ce qui cite un arrêt | graphe (9,65 M arêtes) | find_citations, find_appeal_chain |
incoming_citations |
| l'état du droit cantonal | LexFind (26 cantons) | search_legislation, get_legislation |
article + canton + langue |
2. Combien de sources suffisent
Pas de quota, un critère : chaque affirmation décisive a une source, et chaque source a été lue. En pratique :
- question simple et réglée → 1 norme + 1 à 3 arrêts ;
- question contestée → norme + arrêts divergents + 2-3 doctrines ;
- question d'interprétation → ajouter la Botschaft et l'historique ;
- question d'application administrative → ajouter la pratique publiée.
S'arrêter quand une source supplémentaire ne changerait pas la réponse. Continuer à chercher après ce point, c'est du temps perdu ; s'arrêter avant, c'est un avis fragile.
3. Limites du corpus (à annoncer, jamais à combler)
- Doctrine : 1 796 commentaires open access (OnlineKommentar, OpenLegalCommentary). Pas le Commentaire romand, ni les BSK/Zürcher/Berner Kommentar, ni les revues payantes. Beaucoup d'articles ne sont commentés nulle part en accès libre — le message « No open-access commentary » est normal, pas une erreur.
- Jurisprudence : publiée et non publiée fédérale, la plupart des cantons. Certains cantons publient peu, ou avec retard.
- Droit cantonal : 26 cantons via LexFind, mais l'exhaustivité des règlements communaux n'est pas garantie.
- Langues : environ 70 % des arrêts fédéraux en allemand, 25 % en français, 5 % en italien. Une recherche monolingue rate des arrêts.
4. Pièges d'outil (constatés en test)
- Codes internes en allemand.
law_code="CO"renvoie des arrêts sur l'art. 41 BGG/CPP ;law_code="OR"renvoie les bons. IdemCC→ZGB,CP→StGB,Cst→BV. get_commentaryveutabbreviation, passr_numberseul (sinon « Art. 41 220 », introuvable).totalest une borne inférieure (total_is_lower_bound) : « plus de 150 arrêts », pas « 158 ».get_doctrinepeut dériver : croiser sonprincipal_ruleavecget_regeste.find_relevant_erwaegungest sensible aux accents et à la langue. Une claim sans accents tombe enconfidence: lowet rate le bon considérant.cite()valide l'existence, pas le soutien. Deux contrôles distincts :citepour la forme,check_claim_supportpour le fond.- Décisions cantonales : pas d'Erwägungen structurées →
get_decisionet citation par page/consid., pasget_erwaegung. - Lot :
get_decisions([…])pour 10 arrêts d'un coup,fields="compact"pour scanner avant de lire.
droit-suisse/references/subsomption.md
3 Ko · 78 lignes
La subsomption
Subsomption = rattacher un état de fait concret à une catégorie juridique abstraite. C'est l'opération centrale ; tout le reste (style, citations) la sert.
Les 4 temps (pour chaque élément contesté)
- Question — « [Élément] est-il réalisé au sens de l'art. [X] [loi] ? »
- Définition — texte de loi d'abord, puis jurisprudence (
ATF … consid. …), puis doctrine si l'opinion est discutée. La définition doit être opérationnelle : assez précise pour trancher le cas, pas un catalogue. - Subsomption — confronter chaque fait retenu à la définition, séparément, en nommant les pièces. C'est ici qu'on démontre, pas qu'on affirme.
- Conclusion partielle — la condition est réalisée / ne l'est pas, en une phrase.
Problématique ou non
| Type | Traitement | Style |
|---|---|---|
| Élément évident, non contesté | 1-2 phrases | assertif |
| Élément discuté en doctrine/jurisprudence | 4 temps complets | Gutachtenstil |
| Élément décisif mais non discuté | 4 temps allégés, insistance sur les faits | mixte |
Erreur classique : traiter tous les éléments avec la même longueur. Le lecteur doit voir immédiatement où est le problème du cas.
Deux opinions, deux résultats
Fraglich ist, ob … / La question est de savoir si …
Opinion 1 (auteurs, ATF) → appliquée au cas : résultat A
Opinion 2 (auteurs, ATF) → appliquée au cas : résultat B
Arguments pour 1 / contre 1 → prise de position motivée
Résultat retenu : …
Si les deux opinions mènent au même résultat : les exposer sans argumenter, dire que la question peut rester ouverte, et passer. Ne pas fabriquer une controverse.
Canons d'interprétation (ordre admis par le TF)
- Littéral — sens des mots, usage courant et technique, texte dans les trois langues officielles (une divergence est un argument).
- Systématique — place dans la loi, liens avec d'autres dispositions, économie du texte.
- Téléologique — but de la norme, ratio legis (souvent via la Botschaft :
get_article_purpose). - Historique — travaux préparatoires, évolution de la disposition
(
get_article_history).
Aucun canon n'est prioritaire par principe ; le TF pondère. Un argument d'interprétation sans source (ni texte, ni message, ni arrêt) n'est pas un argument.
Lacunes et art. 1 CC
- Lacune proprement dite : le texte ne règle pas le cas → le juge statue comme le ferait le législateur (art. 1 al. 2 CC), en s'appuyant sur la doctrine et la jurisprudence établies (al. 3).
- Lacune improprement dite : le texte règle le cas mais le résultat est choquant → interprétation correctrice, pas création de norme.
- L'art. 1 CC ne fonde pas une équité générale : il faut démontrer le silence du texte.
Fardeau de la preuve et délais
Ce sont deux conditions déguisées qu'on oublie dans 80 % des analyses :
- Qui doit prouver quoi (art. 8 CC ; règles spéciales en procédure). Un droit existant mais improuvable est un droit perdu.
- Prescription (art. 60, 67, 127 ss CO ; délais spéciaux) et péremption : calculer la date, pas seulement citer l'article.
Auto-contrôle avant de livrer
- [ ] Chaque condition de la norme a été passée en revue, même celles qui vont de soi
- [ ] Chaque définition est sourcée, chaque subsomption nomme des faits
- [ ] Chaque conclusion partielle répond à sa question, dans l'ordre
- [ ] Aucune conclusion globale qui ne découle pas des conclusions partielles
droit-suisse/templates/avis-de-droit.md
2 Ko · 68 lignes
Avis de droit — [Intitulé court]
Destinataire : [nom] · Auteur : [nom] · Date : [jj.mm.aaaa] Confidentiel — ne constitue pas une consultation juridique au sens de la LSA
I. Mandat et questions de droit
[Qui demande quoi, dans quel but, sur la base de quelles pièces.]
- [X] peut-il prétendre à [prétention] contre [Y] sur la base de [norme] ?
- [Question subsidiaire : délai, prescription, forme, compétence.]
Réserve : analyse fondée sur les seuls faits communiqués ; tout fait nouveau peut modifier la conclusion.
II. État de fait
| Date | Fait | Source |
|---|---|---|
| [jj.mm.aaaa] | [fait] | [contrat, courrier, témoignage] |
Faits non établis / à clarifier : [liste — ne pas raisonner dessus sans le dire]
III. Droit applicable
- Branche : [civil / pénal / administratif / social]
- Normes : [art. X al. Y LE ; version en vigueur au jj.mm.aaaa]
- Droit cantonal : [loi d'application, procédure]
- Voie de droit et autorité : [compétence, délai]
IV. Analyse
1. [Question 1 — formulation « qui veut quoi de qui, sur quelle base »]
1.1 Norme et conditions. [Texte de l'art. X al. Y LE ; conditions a), b), c).]
1.2 Condition a) — [intitulé]. [Définition, appuyée sur jurisprudence/doctrine.]¹ [Subsomption : les faits A et B remplissent la condition parce que …]
1.3 Condition b) — [intitulé]. [… ; si le point est contesté, exposer la position 1, la position 2, les arguments, puis trancher.]
1.4 Délais et prescription. [Point de départ, interruption, échéance.]
1.5 Résultat. [X dispose / ne dispose pas d'un droit à …]
2. [Question 2]
V. Conclusion et recommandations
- [Réponse directe.]
- [Risques principaux, chances, points à consolider.]
- [Prochaines étapes concrètes, avec délais.]
VI. Sources
Doctrine - AUTEUR PRÉNOM, in : [Commentaire], [éd.], [année], n° [x] ad art. [y] [loi].
Jurisprudence (en notes de bas de page dans le texte) - ATF [vol] [ch.] [page] consid. [x].
¹ ATF 141 III 112 consid. 5.2 ; BGE 131 III 12 E. 4.1 ; AUTEUR, in : Commentaire romand, CO, 2e éd. 2020, n° 12 ad art. 41 CO.
droit-suisse/templates/gabarit-general.md
3 Ko · 141 lignes
Gabarit général — une seule structure, trois densités
Règle : même ossature, même ordre, toujours. Seul le volume change. Tu dois pouvoir ouvrir n'importe quelle sortie juridique et retrouver les six blocs aux mêmes endroits.
Bloc 1 — QUESTION
Une phrase, reformulée en termes juridiques.
« [Qui] peut-il [quoi] à l'encontre de [qui] sur la base de [norme pressentie] ? »
Si plusieurs prétentions : les numéroter ici, et les traiter dans le même ordre au bloc 4.
Bloc 2 — FAITS
Trois sous-ensembles, dans cet ordre :
- Établis — chronologie datée, parties qualifiées (bailleur/locataire, vendeur/acquéreur…).
- Manquants — ce qu'il faut pour trancher et qu'on n'a pas.
- Hypothèses retenues — ce qu'on assume explicitement pour avancer, et pourquoi.
Jamais de fait inventé pour que la solution tienne.
Bloc 3 — RÈGLES
- Norme : article + alinéa + lettre, loi, version applicable et date.
- Jurisprudence : arrêts avec considérant, du plus autorisé au moins autorisé.
- Doctrine : uniquement si elle ajoute (controverse, précision).
- Matériaux / pratique : seulement si l'interprétation ou l'application est en jeu.
Une ligne par source, forme normalisée (voir citation-suisse.md).
Bloc 4 — ANALYSE
Une section par question du bloc 1, dans le même ordre. Pour chaque condition de la norme :
- énoncé de la condition ;
- définition sourcée ;
- confrontation aux faits, point par point ;
- résultat partiel (remplie / non remplie).
Les éléments évidents tiennent en une phrase. Les éléments contestés prennent l'essentiel du texte. Si deux opinions divergent : les exposer, puis trancher.
Ne pas oublier ce qui annule tout le reste : délais, prescription, preuve.
Bloc 5 — CONCLUSION
- Réponse directe à la question du bloc 1 (oui / non / dépend de X).
- Risques et points fragiles.
- Prochaines étapes concrètes, avec les échéances qui courent.
Pas de pourcentage de chances inventé. Pas de « je pense que ».
Bloc 6 — SOURCES
- En note de bas de page pour un document rédigé, en liste finale pour une réponse de chat.
- Uniquement ce qui est cité, tout ce qui est cité.
- Formes exactes :
references/citation-suisse.md. - Chaque référence passée par
cite(); chaque affirmation décisive passée parcheck_claim_support().
Les trois densités
A. Réponse courte (10-15 lignes, chat)
**Réponse.** [une phrase]
**Base.** art. X al. Y LE (+ version)
**Jurisprudence.** ATF … consid. … — [le point jugé, en une ligne]
**Ce qui ferait basculer.** [fait manquant / délai / canton]
**Prochaine étape.** [action concrète, avec échéance]
Les six blocs sont tous là, compressés. On ne saute jamais le bloc 2 : sans faits, il n'y a pas de réponse, seulement une règle générale.
B. Note d'analyse (1-2 pages, dossier interne)
# [Objet]
**Question.** …
**Faits.** (5-10 lignes : établis / manquants)
**Règles.** (liste : norme, arrêts, doctrine)
**Analyse.**
1. [condition a] — définition, subsomption, résultat
2. [condition b] — …
3. Délais / prescription / preuve
**Conclusion.** [réponse + risques + prochaines étapes]
**Sources.** [notes ou liste]
C. Avis de droit (5-15 pages, client)
I. Mandat et questions (1 page)
II. État de fait (chronologie, pièces, manques)
III. Droit applicable (normes, versions, voie de droit)
IV. Analyse (une section par question)
V. Conclusion et recommandations
VI. Sources (doctrine en liste, jurisprudence en notes)
Version développée et remplissable : templates/avis-de-droit.md.
Contrôle de cohérence (30 secondes, avant envoi)
- [ ] Le bloc 5 répond exactement à la phrase du bloc 1
- [ ] Chaque condition du bloc 3 apparaît au bloc 4
- [ ] Aucune source au bloc 6 qui ne soit citée dans le texte, et inversement
- [ ] La densité correspond au destinataire, pas à l'envie de détailler
- [ ] La réserve (délai, conseil juridique) est présente quand elle s'impose
droit-suisse/templates/note-courte.md
2 Ko · 73 lignes
Note courte — réponse rapide ou courrier
Densité la plus compressée du gabarit en six blocs. Pour une question ponctuelle, un courrier, ou une réponse de chat. Les six blocs restent présents : on compresse, on ne supprime pas.
**Question**
[reformulée en termes juridiques, une phrase]
**Réponse**
[directe : oui / non / dépend de X — avec la nuance, pas sans elle]
**Fondement**
- art. X al. Y [loi], version en vigueur au [jj.mm.aaaa]
- [ATF / arrêt] consid. [n] — [le point jugé, en une ligne]
**Réserves**
[faits manquants · limites du corpus · évolution possible · délai qui court]
**Prochaine étape**
[action concrète, avec l'échéance]
**Sources**
[uniquement ce qui est cité ci-dessus]
Quand l'utiliser
- Question ponctuelle dont la réponse tient en dix lignes.
- Courrier : la même structure, en prose continue, sans les intitulés en gras.
- Réponse de chat où l'utilisateur veut le fond, pas un dossier.
Quand ne pas l'utiliser
- Plusieurs prétentions distinctes → note d'analyse (
gabarit-general.md). - Destinataire externe (client, assurance, autorité) → avis de droit (
avis-de-droit.md). - Question dont la réponse dépend d'une pièce non lue → le dire d'abord, répondre ensuite.
Règles
- Ne jamais sauter les réserves. C'est la partie qui protège : faits manquants, corpus incomplet, délai. Une réponse courte sans réserve est un avis tronqué.
- La ligne « Prochaine étape » n'est pas décorative : sans elle, la note est une consultation, pas une réponse.
- Formes de citation :
references/citation-suisse.md. Vérification :cite()puischeck_claim_support()sur l'affirmation décisive.
Exemple
**Question**
Le bailleur peut-il augmenter le loyer en cours de bail pour hausse des charges ?
**Réponse**
Non en cours de bail, sauf clause contractuelle expresse ou réserve de la hausse des
charges dans le contrat ; à défaut, l'adaptation passe par la prochaine échéance légale.
**Fondement**
- art. 269a let. b CO (protection contre les loyers abusifs)
- [arrêt de référence] consid. [n] — [point jugé]
**Réserves**
Contrat non lu : la clause de réserve de charges est décisive. Vérifier aussi le
formulaire officiel cantonal et le délai de contestation.
**Prochaine étape**
Envoyer le contrat pour lecture, puis calculer l'échéance de contestation.
**Sources**
[à compléter après lecture du contrat]
droit-suisse/templates/plans-analyse.md
2 Ko · 73 lignes
Plans d'analyse — FR et DE
A. Structure francophone (UNIL, consultation, brevet)
I. ANALYSE DES FAITS
1. Parties et qualifications juridiques
2. Chronologie
3. Faits juridiquement pertinents (A/B/C/D)
4. Faits manquants / à clarifier
II. QUESTIONS JURIDIQUES
A. Préalables (qualité, compétence, délais, forme)
B. Principales (une par prétention)
C. Subsidiaires
III. RÉPONSE HYPOTHÉTIQUE
« A peut obtenir X de B sur la base de l'art. … si … »
IV. CONDITIONS D'APPLICATION
1. Condition a) — question / définition / subsomption / conclusion partielle
2. Condition b) — …
3. Délais, prescription, preuve
V. CONCLUSION
Réponse directe, portée pratique, risques
VI. RECOMMANDATIONS (si consultation)
Prochaines étapes, preuves à réunir, délais qui courent, chances (qualitatif)
B. Structure germanophone (Gutachtenstil, examen, mémoire)
Titel / Fallfrage
Obersatz
« A könnte gegen B einen Anspruch auf X aus Art. … haben, wenn … »
I. Sachverhalt (nur das Rechtserhebliche)
II. Anspruchsvoraussetzungen
1. Voraussetzung a)
– Fragestellung
– Definition (Gesetz, BGE … E. …)
– Subsumtion
– Zwischenergebnis
2. Voraussetzung b) …
III. Rechtsfolge
IV. Ergebnis / Fazit
En droit pénal, remplacer II par la séquence :
Tatbestand (objektiv → subjektiv) → Rechtswidrigkeit → Schuld → Strafzumessung → Fazit,
une section par infraction, dans l'ordre : infractions les plus graves d'abord, puis
concours (art. 49 CP).
C. Version courte (chat, note interne, réponse au client)
1. Réponse (une phrase : oui / non / dépend de X)
2. Base légale (1-2 références avec alinéa)
3. Jurisprudence clé (1-2 arrêts + le point jugé)
4. Ce qui ferait basculer la réponse (fait manquant, délai, canton)
5. Prochaine étape concrète
Rappels de forme
- Pagination : tables en chiffres romains, corps en arabes.
- Un niveau de subdivision suppose au moins deux sous-points (pas de 1.1 sans 1.2).
- Une idée par paragraphe ; les citations en note, jamais dans le corps.
- Les faits au passé, le raisonnement au conditionnel, la conclusion au présent.
droit-suisse/scripts/ocl.py
3 Ko · 118 lignes
#!/usr/bin/env python3
"""ocl.py - appel direct du MCP OpenCaseLaw (Swiss caselaw) sans client MCP.
Le serveur MCP public expose du JSON-RPC 2.0 en Streamable HTTP, sans auth.
Ce script utilise curl (urllib est bloqué en TLS sortant sur le VPS).
Usage:
ocl.py tools
ocl.py call <tool> '<json-args>'
ocl.py s "requete" [--court bger] [--canton VD] [--limit 5] [--from 2020-01-01]
ocl.py law "CO" 41 [--lang fr]
ocl.py do "Art. 41 OR"
ocl.py cit "BGE 141 III 112" --pin 5.2
ocl.py raw '{"jsonrpc":...}'
"""
import json
import subprocess
import sys
URL = "https://mcp.opencaselaw.ch/mcp"
def rpc(method, params=None, timeout=120):
body = {"jsonrpc": "2.0", "id": 1, "method": method}
if params is not None:
body["params"] = params
out = subprocess.run(
["curl", "-s", "--max-time", str(timeout - 5), "-X", "POST", URL,
"-H", "Content-Type: application/json",
"-H", "Accept: application/json, text/event-stream",
"-d", json.dumps(body)],
capture_output=True, text=True).stdout
for line in out.splitlines():
if line.startswith("data: "):
return json.loads(line[6:])
try:
return json.loads(out)
except Exception:
return {"error": "unparsable response", "raw": out[:500]}
def call(tool, args):
r = rpc("tools/call", {"name": tool, "arguments": args})
if "error" in r:
return r
res = r.get("result", {})
if res.get("structuredContent") is not None:
return res["structuredContent"]
content = res.get("content") or [{}]
txt = content[0].get("text", "")
try:
return json.loads(txt)
except Exception:
return txt
def main(argv):
if len(argv) < 2:
print(__doc__)
return 1
cmd = argv[1]
if cmd == "tools":
r = rpc("tools/list")
for t in r["result"]["tools"]:
print(t["name"], "-", (t.get("description") or "")[:90].replace("\n", " "))
return 0
if cmd == "call":
print(json.dumps(call(argv[2], json.loads(argv[3])), ensure_ascii=False, indent=1))
return 0
args, flags, i = {}, {}, 2
while i < len(argv):
a = argv[i]
if a.startswith("--"):
k = a[2:]
if i + 1 < len(argv) and not argv[i + 1].startswith("--"):
flags[k] = argv[i + 1]
i += 2
else:
flags[k] = True
i += 1
else:
args.setdefault("_pos", []).append(a)
i += 1
pos = args.get("_pos", [])
if cmd == "s":
a = {"query": pos[0], "limit": int(flags.get("limit", 10)), "fields": "compact"}
for k_src, k_dst in (("court", "court"), ("canton", "canton"), ("lang", "language"),
("from", "date_from"), ("to", "date_to"), ("sort", "sort"),
("chamber", "chamber")):
if k_src in flags:
a[k_dst] = flags[k_src]
print(json.dumps(call("search_decisions", a), ensure_ascii=False, indent=1))
return 0
if cmd == "law":
a = {"abbreviation": pos[0], "article": pos[1]}
a["language"] = flags.get("lang", "de")
if "canton" in flags:
a["canton"] = flags["canton"]
print(call("get_law", a))
return 0
if cmd == "do":
print(json.dumps(call("get_doctrine", {"query": pos[0]}), ensure_ascii=False, indent=1))
return 0
if cmd == "cit":
a = {"reference": pos[0], "language": flags.get("lang", "fr")}
if "pin" in flags:
a["pinpoint"] = flags["pin"]
print(json.dumps(call("cite", a), ensure_ascii=False, indent=1))
return 0
print("commande inconnue:", cmd)
return 2
if __name__ == "__main__":
sys.exit(main(sys.argv))