Awesome-Agent-Skills-for-Empirical-Research opencontracts-guide
Legal document annotation, versioning, and analysis platform
install
source · Clone the upstream repo
git clone https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/43-wentorai-research-plugins/skills/domains/law/opencontracts-guide" ~/.claude/skills/brycewang-stanford-awesome-agent-skills-for-empirical-research-opencontracts-gui && rm -rf "$T"
manifest:
skills/43-wentorai-research-plugins/skills/domains/law/opencontracts-guide/SKILL.mdsource content
OpenContracts Guide
Overview
OpenContracts is an open-source platform for legal document annotation, versioning, and analysis. It provides collaborative annotation tools for legal text, version tracking across document drafts, NLP-powered clause extraction, and integration with AI agents via MCP. Designed for legal researchers, law firms, and teams managing large document collections that need structured annotation and analysis.
Installation
# Docker deployment git clone https://github.com/Open-Source-Legal/OpenContracts.git cd OpenContracts docker-compose up -d # Access at http://localhost:3000
Core Features
Document Management
from opencontracts import Client client = Client("http://localhost:3000") # Upload documents doc = client.upload( file="contract.pdf", metadata={ "type": "NDA", "parties": ["Company A", "Company B"], "date": "2025-01-15", "jurisdiction": "Delaware", }, ) # Version tracking versions = client.get_versions(doc.id) for v in versions: print(f"v{v.number}: {v.date} — {v.changes_summary}") # Compare versions diff = client.compare_versions(doc.id, v1=1, v2=3) for change in diff.changes: print(f"[{change.type}] Section {change.section}: " f"{change.description}")
Annotation
# Create annotation project project = client.create_project( name="NDA Clause Analysis", documents=[doc.id], label_set=[ "confidentiality_scope", "term_duration", "exclusions", "remedies", "governing_law", "dispute_resolution", ], ) # Add annotations client.annotate( document_id=doc.id, annotations=[ { "start": 1250, "end": 1480, "label": "confidentiality_scope", "note": "Broad definition including derivatives", }, { "start": 2100, "end": 2250, "label": "term_duration", "note": "5-year term with auto-renewal", }, ], )
NLP Analysis
# Automated clause extraction clauses = client.extract_clauses( doc.id, clause_types=[ "indemnification", "limitation_of_liability", "termination", "force_majeure", "assignment", ], ) for clause in clauses: print(f"\n[{clause.type}] (confidence: {clause.confidence:.2f})") print(f" Location: p.{clause.page}, para {clause.paragraph}") print(f" Text: {clause.text[:100]}...") # Risk assessment risks = client.assess_risks(doc.id) for risk in risks: print(f"[{risk.severity}] {risk.clause}: {risk.description}")
MCP Integration
{ "mcpServers": { "opencontracts": { "command": "npx", "args": ["@opencontracts/mcp-server"], "env": { "OPENCONTRACTS_URL": "http://localhost:3000" } } } }
Search and Analytics
# Full-text search across documents results = client.search( query="indemnification unlimited liability", document_types=["NDA", "MSA"], date_range=("2024-01-01", "2025-12-31"), ) # Analytics stats = client.analytics(project_id=project.id) print(f"Documents annotated: {stats.docs_complete}") print(f"Total annotations: {stats.total_annotations}") print(f"Inter-annotator agreement: {stats.agreement:.2f}") print(f"Most common clause: {stats.top_clauses[0]}")
Use Cases
- Contract review: Systematic clause analysis and risk assessment
- Legal research: Annotate case law and legislation
- Compliance: Track regulatory document requirements
- Training data: Build labeled datasets for legal NLP
- Due diligence: Structured review of deal documents