Install
$ agentstack add skill-librejustice-librejustice-recherche-normes ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Statutory research (LibreJustice)
The user is typically a litigator: they need the exact provision, in the version in force at the legally relevant date, linked and quoted verbatim. A paraphrase from memory is not a deliverable — models misremember article numbers and miss amendments; every quoted provision comes from get_legal_text.
The referential goes far beyond French codes: EU law, international treaties (including bilateral accords), the codes of 59 foreign countries, collective agreements, BOFiP. Map and counts: [references/corpus.md](references/corpus.md). Observed failure modes: [references/traps.md](references/traps.md). Foreign and international law: [references/foreign-law.md](references/foreign-law.md).
Iron rules
- Never quote a provision from memory. Fetch it with
get_legal_text, quote verbatim, link the article ([Article 7 bis de l'Accord franco-algérien du 27 décembre 1968](https://librejustice.fr/texte/…) — the url verbatim).
- Date before text. Identify the legally relevant date first —
the attacked decision, the facts, the contract — pass it as date, and say which version you quote (its validity window is in the response). The version in force today is the wrong one for most litigation.
- Name texts by their official name. The
codefilter resolves
slugs and exact official names, not usual names — « CEDH » and « Convention européenne des droits de l'homme » fail where « Convention de sauvegarde des droits de l'homme et des libertés fondamentales » works. When unsure, recover the slug from facets.code or from an inline /texte/ link in a decision.
A get_legal_text response may also carry commentaires — doctrine anchored on the article, served inline (body) or as outbound links (url). Context, never the norm: only the article text quotes as the provision.
Three access paths, cheapest first
- Text and article known — compose the URL directly:
https://librejustice.fr/texte/{code-slug}/{article-key} (code-civil/47, code-de-la-famille-sen/40, accord-franco-algerien-du-27-decembre-1968/7-bis; keys are lowercase, l761-1 for L. 761-1). A wrong slug errors back with the closest ones — guessing then correcting is one call, a search is two.
- Text known, article unknown —
search_legal_textswith the
code filter (slug or exact name) and a descriptive French query on the subject. Within one named text, ranking is reliable.
- Text unknown — descriptive query plus the
jurisdiction
filter (FR, UE, INTL, or an ISO country code SN, DZ, BE…), then read facets.code to see which texts concentrate the matches and re-query with the winner. Ranking is domestic-first: a bare descriptive query ranks French, EU and treaty law above the 59 foreign corpora, and naming the country in the query (« divorce au sénégal ») scopes it to that country's law instead. A query that IS a text's name — official or usual (« code civil du sénégal ») — returns the text itself as a num-less first hit whose url is the /texte/{slug} entry point: the cheapest way to recover a slug. Still don't trust a bare descriptive search beyond its top hits: the corpus is ~2 million articles dominated by circulaires and arrêtés, the total is OR-matched noise, and body-text sources keep crowding treaty searches — the jurisdiction and code filters remain the robust path.
Versions, renumbering, silence
- The response carries the full version timeline. When a text was
recodified or an article renumbered (CESEDA 2021: L. 313-11 → L. 423-23; code du travail 2008), query both numbers — each key has its own timeline and the decisive one depends on your date.
- « Not found » with a
datemeans no version in force at that date
under that key — not that the rule did not exist. Re-fetch without date to see the timeline, then chase the earlier numbering.
- Abrogated texts stay served: the code de la nationalité française
or an old CESEDA article at its date is one date away.
- Hits may repeat one article once per version — deduplicate by URL.
Legal orders and hierarchy
State which legal order a provision belongs to, and flag the hierarchy when orders collide: a bilateral accord is lex specialis (the accord franco-algérien governs Algerian residence permits and derogates from the CESEDA), EU law primes national law in its field, the Convention de sauvegarde primes statute. When the question spans orders, fetch the provisions on each side — never assume the code tells the whole story.
Chain with case law
Both directions, and always both in a dispute:
- Text → decisions:
search_decisionswithlegal_instrument(any
slug: a French code, a treaty, a foreign code) or legal_article (accord-franco-algerien-du-27-decembre-1968|7-bis) finds the decisions applying the provision — then the recherche-jurisprudence skill takes over.
- Decision → texts: decision full texts carry inline
/texte/links on
every cited provision; open them with get_legal_text rather than searching again.
Present each provision
- The linked citation with the official text name and article number,
url verbatim as the link target.
- Which version: validity dates, and why that version governs the
case (rule 2).
- The verbatim excerpt — never truncate a sentence in a way that
drops a condition or a negation.
- For foreign and aggregated sources, the provenance when reliability
matters: each hit carries a source field (official publishers like legifrance, eur-lex, fedlex, dri.gouv.sn vs aggregators like jafbase or archive.org — see corpus.md).
Don't waste calls
- Known article → compose the URL, skip the search.
- The version timeline arrives with every fetch — no second call to
ask « since when ».
- One search with the right filter beats five filterless
reformulations; after two queries with no new candidate, change the filter (code, jurisdiction), not the synonyms.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: librejustice
- Source: librejustice/librejustice
- License: Apache-2.0
- Homepage: https://librejustice.fr
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.