A suite of plugins for legal workflows
This report summarizes scanner evidence for anthropics/claude-for-legal, a Python project with 9,640 GitHub stars. SynthScan examined 49,436 lines of code across 298 source files, recording 390 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 13.5 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 382 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 6 finding(s).
Which changes need focused human review? 390 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 390 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | law-student/skills/exam-forecast/SKILL.md | 47 | ### Step 1: Intake | COMMENT |
| LOW | law-student/skills/exam-forecast/SKILL.md | 58 | ### Step 2: Read each past exam | COMMENT |
| LOW | law-student/skills/exam-forecast/SKILL.md | 70 | ### Step 3: Cross-exam pattern analysis | COMMENT |
| LOW | law-student/skills/exam-forecast/SKILL.md | 88 | ### Step 4: Forecast for the upcoming exam | COMMENT |
| LOW | law-student/skills/exam-forecast/SKILL.md | 144 | ### Step 5: Output location | COMMENT |
| LOW⚡ | law-student/skills/legal-writing/SKILL.md | 49 | ### Step 1: Read the whole draft | COMMENT |
| LOW⚡ | law-student/skills/legal-writing/SKILL.md | 53 | ### Step 2: Identify the structural type | COMMENT |
| LOW⚡ | law-student/skills/legal-writing/SKILL.md | 62 | ### Step 3: Structured feedback (no rewriting) | COMMENT |
| LOW | law-student/skills/legal-writing/SKILL.md | 125 | ### Step 4: If the student asks you to rewrite | COMMENT |
| LOW | law-student/skills/legal-writing/SKILL.md | 136 | ### Step 5: Track patterns | COMMENT |
| LOW⚡ | law-student/skills/irac-practice/SKILL.md | 51 | ### Step 1: Establish what we're grading | COMMENT |
| LOW⚡ | law-student/skills/irac-practice/SKILL.md | 60 | ### Step 2: Read the answer closely | COMMENT |
| LOW⚡ | law-student/skills/irac-practice/SKILL.md | 70 | ### Step 3: Structured feedback | COMMENT |
| LOW | law-student/skills/irac-practice/SKILL.md | 142 | ### Step 4: Track patterns | COMMENT |
| LOW⚡ | law-student/skills/socratic-drill/SKILL.md | 40 | ### Step 1: Pick the topic | COMMENT |
| LOW⚡ | law-student/skills/socratic-drill/SKILL.md | 44 | ### Step 2: Ask | COMMENT |
| LOW⚡ | law-student/skills/socratic-drill/SKILL.md | 50 | ### Step 3: Listen and push back | COMMENT |
| LOW | law-student/skills/socratic-drill/SKILL.md | 75 | ### Step 4: Only after they get there | COMMENT |
| LOW⚡ | law-student/skills/outline-builder/SKILL.md | 80 | ### Step 1: Inputs | COMMENT |
| LOW⚡ | law-student/skills/outline-builder/SKILL.md | 89 | ### Step 2: Structure | COMMENT |
| LOW⚡ | law-student/skills/outline-builder/SKILL.md | 95 | ### Step 3: Build — scaffold first, content from sources | COMMENT |
| LOW | law-student/skills/outline-builder/SKILL.md | 133 | ### Step 4: Gaps | COMMENT |
| LOW | law-student/skills/study-plan/SKILL.md | 53 | ### Step 1: What are we planning for | COMMENT |
| LOW | law-student/skills/study-plan/SKILL.md | 65 | ### Step 2: Inputs — one at a time, wait for each | COMMENT |
| LOW | law-student/skills/study-plan/SKILL.md | 109 | ### Step 3: Build the schedule | COMMENT |
| LOW | law-student/skills/study-plan/SKILL.md | 127 | ### Step 4: Write it | COMMENT |
| LOW | law-student/skills/study-plan/SKILL.md | 189 | ### Step 5: Confirm with the student | COMMENT |
| LOW | law-student/skills/cold-call-prep/SKILL.md | 49 | ### Step 1: Identify the reading + professor | COMMENT |
| LOW | law-student/skills/cold-call-prep/SKILL.md | 56 | ### Step 2: Predict the questions | COMMENT |
| LOW | law-student/skills/cold-call-prep/SKILL.md | 91 | ### Step 3: Drill | COMMENT |
| LOW | law-student/skills/cold-call-prep/SKILL.md | 102 | ### Step 4: Post-drill summary | COMMENT |
| LOW | employment-legal/skills/termination-review/SKILL.md | 46 | ### Step 1: The basic facts | COMMENT |
| LOW | employment-legal/skills/termination-review/SKILL.md | 57 | ### Step 2: High-risk flag scan | COMMENT |
| LOW | employment-legal/skills/termination-review/SKILL.md | 116 | ### Step 3: Jurisdiction-specific requirements | COMMENT |
| LOW | employment-legal/skills/termination-review/SKILL.md | 139 | ### Step 4: Severance and release | COMMENT |
| LOW | employment-legal/skills/termination-review/SKILL.md | 166 | ### Step 5: Documentation check | COMMENT |
| LOW | employment-legal/skills/wage-hour-qa/SKILL.md | 44 | ### Step 1: Jurisdiction | COMMENT |
| LOW | employment-legal/skills/wage-hour-qa/SKILL.md | 52 | ### Step 2: Research the rule, then state it | COMMENT |
| LOW | employment-legal/skills/wage-hour-qa/SKILL.md | 166 | ### Step 3: The flag | COMMENT |
| LOW⚡ | employment-legal/skills/handbook-updates/SKILL.md | 28 | ### Step 1: Get the change | COMMENT |
| LOW⚡ | employment-legal/skills/handbook-updates/SKILL.md | 34 | ### Step 2: Diff against current | COMMENT |
| LOW⚡ | employment-legal/skills/handbook-updates/SKILL.md | 43 | ### Step 3: Find cross-references | COMMENT |
| LOW⚡ | employment-legal/skills/handbook-updates/SKILL.md | 53 | ### Step 4: State supplement impact | COMMENT |
| LOW⚡ | employment-legal/skills/handbook-updates/SKILL.md | 61 | ### Step 5: Promise check | COMMENT |
| LOW | employment-legal/skills/policy-drafting/SKILL.md | 36 | ### Step 1: Scope the policy | COMMENT |
| LOW | employment-legal/skills/policy-drafting/SKILL.md | 42 | ### Step 2: Jurisdictional scan | COMMENT |
| LOW | employment-legal/skills/policy-drafting/SKILL.md | 60 | ### Step 3: Draft the core policy | COMMENT |
| LOW | employment-legal/skills/policy-drafting/SKILL.md | 73 | ### Step 4: State supplements | COMMENT |
| LOW | employment-legal/skills/policy-drafting/SKILL.md | 88 | ### Step 5: Cross-check | COMMENT |
| LOW | employment-legal/skills/hiring-review/SKILL.md | 46 | ### Step 1: Jurisdiction | COMMENT |
| LOW | employment-legal/skills/hiring-review/SKILL.md | 58 | ### Step 2: Classification | COMMENT |
| LOW | employment-legal/skills/hiring-review/SKILL.md | 76 | ### Step 3: Restrictive covenants | COMMENT |
| LOW | employment-legal/skills/hiring-review/SKILL.md | 104 | ### Step 4: Jurisdiction-specific requirements | COMMENT |
| LOW | employment-legal/skills/hiring-review/SKILL.md | 123 | ### Step 5: Offer letter content | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 81 | ### Step 1: Identify the copyrighted work | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 92 | ### Step 2: Identify the infringing material and its location | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 103 | ### Step 3: Fair-use gate | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 120 | ### Step 4: Good-faith belief | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 133 | ### Step 5: Accuracy and agent authority | COMMENT |
| LOW | ip-legal/skills/takedown/SKILL.md | 141 | ### Step 6: Draft the notice | COMMENT |
| 276 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 153 | scripts/ # deploy-managed-agent.sh · validate.py · orchestrate.py · lint-tool-scope.py · test-cookbooks | CODE |
| MEDIUM | README.md | 202 | **Start by connecting a research tool.** Everything else is better with one, and citations are unverified without one. S | CODE |
| MEDIUM | CONTRIBUTING.md | 14 | ## Design principle: SKILL.md encodes the right behavior; CLAUDE.md guardrails | COMMENT |
| MEDIUM | CLAUDE.md | 23 | scripts/ # validate.py, lint-tool-scope.py, orchestrate.py, | CODE |
| MEDIUM | law-student/CLAUDE.md | 116 | ## Shared guardrails | COMMENT |
| MEDIUM | law-student/skills/case-brief/SKILL.md | 64 | ## The brief — scaffold, then the student fills | COMMENT |
| MEDIUM⚡ | law-student/skills/outline-builder/SKILL.md | 95 | ### Step 3: Build — scaffold first, content from sources | COMMENT |
| MEDIUM | employment-legal/CLAUDE.md | 141 | ## Shared guardrails | COMMENT |
| MEDIUM | ip-legal/CLAUDE.md | 152 | ## Shared guardrails | COMMENT |
| MEDIUM | commercial-legal/CLAUDE.md | 317 | ## Shared guardrails | COMMENT |
| MEDIUM | commercial-legal/skills/nda-review/SKILL.md | 20 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | commercial-legal/skills/stakeholder-summary/SKILL.md | 21 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | …mmercial-legal/skills/vendor-agreement-review/SKILL.md | 21 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | product-legal/CLAUDE.md | 152 | ## Shared guardrails | COMMENT |
| MEDIUM | product-legal/skills/launch-review/SKILL.md | 34 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | product-legal/skills/is-this-a-problem/SKILL.md | 33 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | legal-builder-hub/CLAUDE.md | 93 | ## Shared guardrails | COMMENT |
| MEDIUM | litigation-legal/CLAUDE.md | 180 | ## Shared guardrails | COMMENT |
| MEDIUM | litigation-legal/CLAUDE.md | 368 | The canonical column maps to the cross-plugin severity floor described in `## Shared guardrails` below. | CODE |
| MEDIUM | litigation-legal/skills/deposition-prep/SKILL.md | 30 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | litigation-legal/skills/claim-chart/SKILL.md | 239 | ## Patent-mode guardrails (in addition to shared guardrails) | COMMENT |
| MEDIUM | litigation-legal/skills/claim-chart/SKILL.md | 335 | ## Civil-mode guardrails (in addition to shared guardrails) | COMMENT |
| MEDIUM | litigation-legal/skills/claim-chart/SKILL.md | 441 | ## Shared guardrails — checklist | COMMENT |
| MEDIUM | corporate-legal/CLAUDE.md | 146 | ## Shared guardrails | COMMENT |
| MEDIUM | ai-governance-legal/CLAUDE.md | 303 | ## Shared guardrails | COMMENT |
| MEDIUM | privacy-legal/CLAUDE.md | 236 | ## Shared guardrails | COMMENT |
| MEDIUM | privacy-legal/skills/use-case-triage/SKILL.md | 36 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | privacy-legal/skills/pia-generation/SKILL.md | 42 | Before producing output, check where it's going. If the user has named a destination (a channel, a distribution list, a | CODE |
| MEDIUM | privacy-legal/skills/pia-generation/SKILL.md | 67 | **Carry severity from upstream as a floor** per the cross-skill severity floor rule in `~/.claude/plugins/config/claude- | CODE |
| MEDIUM | privacy-legal/skills/dpa-review/SKILL.md | 63 | **Carry severity from the upstream output as a floor** per the cross-skill severity floor rule in `~/.claude/plugins/con | CODE |
| MEDIUM | legal-clinic/CLAUDE.md | 239 | ## Shared guardrails | COMMENT |
| MEDIUM | legal-clinic/skills/client-intake/SKILL.md | 174 | *Every statutory, ordinance, regulatory, rule, or case citation in this section carries a provenance tag (see plugin CLA | COMMENT |
| MEDIUM | regulatory-legal/CLAUDE.md | 173 | ## Shared guardrails | COMMENT |
| MEDIUM | regulatory-legal/skills/policy-redraft/SKILL.md | 31 | ## Hard guardrails — read these first | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | litigation-legal/matters/_log.yaml | 9 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | litigation-legal/matters/_log.yaml | 11 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | litigation-legal/matters/_log.yaml | 62 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | legal-clinic/deadlines.yaml | 10 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | legal-clinic/deadlines.yaml | 12 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | legal-clinic/deadlines.yaml | 30 | # ────────────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …kills/renewal-tracker/references/renewal-register.yaml | 1 | # Renewal Register | COMMENT |
| LOW | …kills/renewal-tracker/references/renewal-register.yaml | 21 | # business_owner: "jane@company.com" | COMMENT |
| LOW | legal-builder-hub/references/allowlist-default.yaml | 1 | # Default allowlist for legal-builder-hub | COMMENT |
| LOW | litigation-legal/matters/_log.yaml | 1 | # Portfolio Ledger — litigation-legal | COMMENT |
| LOW | litigation-legal/matters/_log.yaml | 21 | # stage: string — free-text substage (e.g., "pleadings", "fact discovery") | COMMENT |
| LOW | litigation-legal/matters/_log.yaml | 41 | # business_lead: string | null | COMMENT |
| LOW | scripts/deploy-managed-agent.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/workflows/cla.yaml | 21 | if: github.event_name == 'pull_request_target' || contains(github.event.comment.body, 'recheck') || contains(git | COMMENT |
| LOW | legal-clinic/deadlines.yaml | 1 | # Clinic deadline ledger — legal-clinic | COMMENT |
| LOW | legal-clinic/deadlines.yaml | 21 | # timezone: string (optional; default from CLAUDE.md jurisdiction) | COMMENT |
| LOW | …-legal/skills/gap-surfacer/references/gap-tracker.yaml | 1 | # Gap Tracker | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ai-governance-legal/skills/use-case-triage/SKILL.md | 148 | The APPROVED / CONDITIONAL / NOT APPROVED buckets, the red-line definitions, and the CONDITIONAL required-controls list | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | litigation-legal/skills/matter-intake/SKILL.md | 251 | counterparty: "Acme Corp" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/lint-tool-scope.py | 20 | CODE |