skill-lawyer-matter — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-lawyer-matter (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Three flows a lawyer or paralegal actually runs across the working day: pull a brief on a single matter from what the cognitive graph already knows, surface deadlines within a forward window, and read the literal subtext of an incoming email. The trigger phrases are unambiguous on purpose — they will not steal activation from adhd-daily-planner, audhd-context-recovery, or any other general planning skill.
This is not a legal-advice tool. It does not interpret statute, predict litigation outcomes, draft pleadings, or render any opinion on the merits. It surfaces what the user has already recorded, in the structure a senior lawyer expects. Every output is the user's own facts re-presented — never the skill's analysis of those facts.
Activate when the user's message contains one of the trigger phrases verbatim. The trigger phrase determines which of the three flows runs:
matter brief: <name> / matter brief on <name> / brief me on the matter <name> → Flow A: matter brief.deadline check for the next <N> days / deadlines for the next <N> days / deadline check next <N> days → Flow B: deadline check.translate this email for me / translate this email / translate this correspondence → Flow C: email translation.Do not activate on partial matches ("what's the deadline?"), past tense ("the matter closed last week"), or third-person reports about matters the user is not running. Do not activate if a separate skill — for example audhd-context-recovery or adhd-daily-planner — is already running its flow in this turn; let the more general skill finish.
The user says some variant of matter brief: Acme v Beta. Goal: a structured brief in the format a senior lawyer expects — deadlines, opposing counsel, latest filing, outstanding tasks — built from what the graph already knows.
matter brief: variant) or after on / the matter (for the verbose variants) is the matter name. Trim. Treat the parsed string verbatim — do not normalise capitalisation, do not abbreviate Acme Corp v Beta Holdings to Acme v Beta.recall_entity({ "name_or_alias": "<parsed matter name>" }). The matter is expected to exist in the graph as an entity of type project (matters map to the project type in the v0.1.0 entity taxonomy).resolution.method is alias, fuzzy, or embedding, surface the resolved entity name and the resolution score before continuing. Ask one question: I read "<parsed name>" as the matter "<resolved>" (<method> match, score <score>). Continue? Wait for confirmation. Do not assume.No matter in the graph matches "<parsed name>". Confirm the matter name, or record one with: record_fact predicate=mentioned_in subject=<matter>. Stop and wait for the user.facts[] to entries whose object.literal starts with deadline: (case-insensitive). Parse the ISO date that follows the prefix. Each deadline becomes a line in the Deadlines section with days-remaining computed against today. If a deadline date is in the past, emit `PAST DEADLINE` in capitals on that line. See Flow B for the exact rendering — Flow A uses the same conventions.facts[] to entries with predicate mentioned_in whose object.literal contains opposing counsel: (case-insensitive). Surface verbatim.facts[] to entries with predicate decided_in OR predicate mentioned_in whose object.literal contains filed: (case-insensitive). Take the most recent by recorded_at. Surface verbatim.facts[] to entries with predicate blocked_by OR predicate depends_on. Surface verbatim, one per line.neighbours[] for related parties, sub-matters, related decisions.The user says some variant of deadline check for the next 14 days.
N from the trigger phrase. Treat as days. Reject zero and negatives — one sentence: N must be a positive integer. Try: deadline check for the next 7 days. Stop.recall_decisions for every matter the user has on file is not practical at scale; instead, the implementation issues a single recall_entity against the literal sentinel name "deadline-index" IF the user maintains a deadline-index project entity in their graph, OR more commonly, queries the most recently active matter entities and aggregates their facts[] entries tagged deadline:. In v0.1.0 the simplest path is: the skill expects the user to record deadline facts under each matter entity with object.literal beginning deadline:<ISO date>:<description>. The skill calls recall_entity on each matter the user has touched in the last 90 days (via recall_entity with a name the user supplies for indexing) and collects deadline: facts. If the user has not provided an index name in the trigger phrase, ask once: Which matter or matter-set should I scan? (Use "all" to scan every project entity touched in the last 90 days.) Wait. Do not invent matters to scan.object.literal prefix. Compute days-remaining = (deadline_date - today). Today is local-date; deadlines are stored as ISO calendar dates with no time component.PAST DEADLINE is non-negotiable.The user says translate this email for me and either pastes the email in the same turn or says they will paste it.
Paste the email. I'll surface literal subtext and classify the register. Wait.mcp-translation reporting domain: legal as a supported translation domain AND the pack being listed in the substrate's installed-plugin registry. (In the v0.1.0 reference implementation, this is checked via the runtime's plugin-availability table that the substrate populates at init.)translate_incoming({ "text": "<the pasted email, verbatim>", "domain": "legal" }). The pack's literal-meaning, subtext, and tone prompts apply on top of the base translation server. Render the response in the structure under "Output format — Flow C (with translation-legal)" below.translate_incoming({ "text": "<the pasted email, verbatim>" }) without a domain hint. Surface the response, then add a one-line note: Note: translation-legal pack not installed. Output is a generic literal translation; install translation-legal for legal-idiom subtext and register classification.Strict "Answer First". First sentence ≤ 120 characters.
Matter brief — <matter name>. Last activity: <relative timestamp, e.g. "3 days ago, 2026-05-18">.
### Deadlines
- <ISO date> — <description> — <N> days remaining
- <ISO date> — <description> — PAST DEADLINE (<N> days overdue)
### Opposing counsel
- <verbatim fact text>
### Latest filing
- <verbatim fact text> (<recorded_at date>)
### Outstanding
- <verbatim fact text>
- <verbatim fact text>
### Connected
- <neighbour name> (<relationship>)Rules:
### Deadlines header if no deadline facts on file).PAST DEADLINE in capitals.recall_entity's object.literal field. Do not paraphrase. Do not summarise. Do not soften.due today.Deadline check — next <N> days. <M> deadline(s) on file.
- <ISO date> — <matter name> — <description> — PAST DEADLINE (<K> days overdue)
- <ISO date> — <matter name> — <description> — due today
- <ISO date> — <matter name> — <description> — <K> days remainingRules:
PAST DEADLINE is rendered in capitals, verbatim. Never softened, never paraphrased.0 deadlines on file in the next <N> days. is the only acceptable empty-list rendering. No "great, you have a clear week" or similar.Surface translate_incoming's response as:
Email translation — <inferred sender role, e.g. "outside counsel" or "unknown">.
### Explicit ask
<explicit_ask field, verbatim>
### Literal subtext
- <ambiguity span 1> — <note>
- <ambiguity span 2> — <note>
### Terms of art
- "<term 1>" — <effect, ending with "typically">
- "<term 2>" — <effect, ending with "typically">
### Register
<tone classification: e.g. "British-firm formal — hedged but courteous; close-of-play deadline is real">
### Recommended next action
<recommended_next_action.action> — <reason>Rules:
explicit_ask, legal_terms_of_art, and ambiguity.spans verbatim from the translation-legal pack output. Do not paraphrase.typically (the pack enforces this; the skill preserves it).tone prompt output. No editorial framing.When mcp-translation is unavailable, run the literal-translation pass inline using these prompts:
without prejudice, subject to contract, time of the essence) explicitly; describe their typical operational effect and end the description with the word typically. Do NOT assert binding legal effect.British-firm formal, US BigLaw transactional, in-house collegial, litigation adversarial). One sentence on whether deadlines or asks are real-with-etiquette-softening or genuinely soft.Render as:
Email translation — in-skill fallback (translation-legal pack not installed).
### Literal subtext
- "<phrase from email>" — <literal meaning>
- "<phrase from email>" — <literal meaning>
### Terms of art
- "<term>" — <typical operational effect, ending with "typically">
### Register
<one-sentence classification>
Note: translation-legal pack would give you the structured ambiguity spans, confidence scores, and recommended-next-action surface. Install with: cp -r plugins/translation-legal <neurodock-plugins-dir>/.Rules:
typically. The skill MUST NOT assert that any phrase definitively creates or extinguishes a legal right.PAST DEADLINE. Not in Flow A, not in Flow B. The literal string PAST DEADLINE appears in capitals.recall_entity. Quote the literal text.typically.record_fact without explicit user opt-in. The cognitive graph is the user's notebook.should, must, obligated, liable, entitled, actionable, or merits in any skill-generated commentary outside of verbatim quotes of user-recorded facts.See tests/:
tests/01-matter-brief.md — Flow A with a populated matter entity.tests/02-deadline-check-past-deadline.md — Flow B asserting PAST DEADLINE appears verbatim, no softening.tests/03-translate-email.md — Flow C calling through translation-legal.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.