Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Agent skills collection for legal research and automation
.claude/skills/brycewang-stanford-legal-agent-skills-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -51% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -40% | 0% |
A curated collection of agent skills for legal research and automation — contract analysis, case law search, regulatory compliance checking, legal document drafting, and citation verification. Each skill provides structured capabilities that AI agents can use to assist with legal workflows. Designed for legal researchers, law firms, and compliance teams.
Legal Agent Skills
├── Research Skills
│ ├── Case law search (by jurisdiction, topic)
│ ├── Statute lookup (federal, state, international)
│ ├── Legal commentary search
│ └── Regulatory tracking
├── Analysis Skills
│ ├── Contract clause extraction
│ ├── Risk assessment
│ ├── Compliance checking
│ └── Legal argument analysis
├── Drafting Skills
│ ├── Contract drafting
│ ├── Legal memo writing
│ ├── Motion drafting
│ └── Compliance reports
├── Citation Skills
│ ├── Bluebook formatting
│ ├── Citation verification
│ ├── Shepard's-style validation
│ └── Cross-reference linking
└── Practice Management
├── Case timeline construction
├── Discovery document review
├── Deposition summary
└── Billing narrative generationpython# Search case law databases from legal_skills import CaseLawSearch search = CaseLawSearch(jurisdictions=["federal", "california"]) cases = search.find( query="AI liability product defect", date_range=("2020-01-01", "2025-12-31"), court_level="appellate", max_results=20, ) for case in cases: print(f"{case.name} ({case.year})") print(f" Court: {case.court}") print(f" Key holding: {case.holding[:100]}...") print(f" Citation: {case.citation}")
pythonfrom legal_skills import ContractAnalyzer analyzer = ContractAnalyzer() # Analyze contract analysis = analyzer.analyze("contract.pdf") print("Risk Assessment:") for risk in analysis.risks: print(f" [{risk.severity}] {risk.clause}: {risk.description}") print("\nKey Terms:") for term in analysis.key_terms: print(f" {term.name}: {term.value}") print("\nMissing Clauses:") for missing in analysis.missing_clauses: print(f" - {missing}")
pythonfrom legal_skills import BluebookFormatter formatter = BluebookFormatter() # Format citation citation = formatter.format( case_name="Brown v. Board of Education", volume=347, reporter="U.S.", page=483, year=1954, ) print(citation) # Brown v. Board of Education, 347 U.S. 483 (1954). # Verify citation valid = formatter.verify("347 U.S. 483") print(f"Valid: {valid.is_valid}, Case: {valid.case_name}")
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 13,562 | 24,297 | +79% | 1 | 1 | 0% | 2,060 | 3,581 | +74% | 0 | 0 | — |
case-02 | fail→pass | 25,723 | 6,882 | -73% | 1 | 1 | 0% | 4,671 | 2,270 | -51% | 0 | 0 | — |
case-03 | fail→pass | 18,079 | 4,725 | -74% | 1 | 1 | 0% | 2,721 | 1,743 | -36% | 0 | 0 | — |
case-04 | fail→pass | 14,066 | 10,714 | -24% | 1 | 1 | 0% | 2,980 | 2,848 | -4% | 0 | 0 | — |
case-05 | pass→pass | 16,857 | 3,930 | -77% | 1 | 1 | 0% | 2,641 | 1,573 | -40% | 0 | 0 | — |
case-06 | fail→pass | 17,369 | 11,989 | -31% | 1 | 1 | 0% | 2,527 | 2,833 | +12% | 0 | 0 | — |
case-07 | fail→pass | 15,557 | 2,786 | -82% | 1 | 1 | 0% | 2,180 | 1,311 | -40% | 0 | 0 | — |
case-08 | pass→pass | 15,178 | 14,401 | -5% | 1 | 1 | 0% | 2,251 | 2,963 | +32% | 0 | 0 | — |
case-09 | fail→pass | 17,124 | 15,803 | -8% | 1 | 1 | 0% | 2,365 | 3,054 | +29% | 0 | 0 | — |
case-10 | fail→pass | 15,062 | 3,577 | -76% | 1 | 1 | 0% | 2,491 | 1,468 | -41% | 0 | 0 | — |
case-11 | pass→pass | 10,382 | 3,089 | -70% | 1 | 1 | 0% | 1,544 | 1,364 | -12% | 0 | 0 | — |
case-12 | fail→pass | 14,509 | 9,686 | -33% | 1 | 1 | 0% | 2,633 | 2,737 | +4% | 0 | 0 | — |
case-13 | pass→pass | 2,921 | 1,954 | -33% | 1 | 1 | 0% | 398 | 1,177 | +196% | 0 | 0 | — |
case-14 | pass→pass | 3,037 | 2,529 | -17% | 1 | 1 | 0% | 443 | 1,167 | +163% | 0 | 0 | — |
case-15 | fail→pass | 10,602 | 5,906 | -44% | 1 | 1 | 0% | 1,932 | 1,958 | +1% | 0 | 0 | — |
case-16 | fail→pass | 8,471 | 2,637 | -69% | 1 | 1 | 0% | 1,432 | 1,277 | -11% | 0 | 0 | — |
case-17 | fail→pass | 13,856 | 3,172 | -77% | 1 | 1 | 0% | 2,047 | 1,447 | -29% | 0 | 0 | — |
case-18 | pass→pass | 6,008 | 1,857 | -69% | 1 | 1 | 0% | 914 | 1,104 | +21% | 0 | 0 | — |
case-19 | fail→pass | 9,382 | 2,721 | -71% | 1 | 1 | 0% | 1,302 | 1,291 | -1% | 0 | 0 | — |
case-20 | pass→fail | 17,666 | 18,752 | +6% | 1 | 1 | 0% | 2,649 | 3,652 | +38% | 0 | 0 | — |
case-21 | pass→fail | 20,573 | 19,271 | -6% | 1 | 1 | 0% | 2,890 | 4,410 | +53% | 0 | 0 | — |
case-22 | fail→pass | 22,766 | 19,694 | -13% | 1 | 1 | 0% | 2,399 | 4,062 | +69% | 0 | 0 | — |
case-23 | fail→fail | 22,909 | 15,819 | -31% | 1 | 1 | 0% | 3,306 | 3,522 | +7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +48 percentage points is the difference between those two pass rates over the 23 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.