contract-review

Category: Coding Risk: High risk ★ 4.2 · Rating 4.2/5 (86) TerminalSkills/skills Apache-2.0

Rating is derived from the repo's GitHub stars and shown for reference.

shell_executionnetwork_access

name: contract-review
description: >-
Analyze contracts for risks, check completeness, and provide actionable
recommendations. Use when a user asks to review a contract, check an agreement
for red flags, analyze contract terms, find risky clauses, review an NDA,
evaluate a service agreement, or audit employment contract terms. Supports
employment contracts, NDAs, service agreements, and vendor contracts.
license: Apache-2.0
compatibility: "Requires Python 3.9+ with pdfplumber or PyMuPDF for PDF contracts"
metadata:
author: terminal-skills
version: "1.0.0"
category: documents
tags: ["contract", "legal", "review", "risk-analysis", "compliance"]
use-cases:
- "Review employment contracts before signing to identify unfavorable terms"
- "Audit vendor agreements for missing clauses and liability risks"
- "Compare contract versions to detect changes in key terms"
agents: [claude-code, openai-codex, gemini-cli, cursor]

Contract Review

Overview

Analyze legal contracts and agreements to identify risks, missing clauses, unfavorable terms, and compliance issues. This skill reads contract documents, categorizes clauses, flags potential problems, and produces a structured risk report with actionable recommendations.

Instructions

When a user asks you to review, analyze, or check a contract, follow these steps:

Step 1: Load and parse the contract

Read the contract file. Supported formats include PDF, DOCX, TXT, and Markdown.

For PDF files, extract text using pdfplumber:

import pdfplumber

def load_contract(pdf_path):
    full_text = ""
    with pdfplumber.open(pdf_path) as pdf:
        for page in pdf.pages:
            text = page.extract_text()
            if text:
                full_text += text + "\n\n"
    return full_text

For DOCX files, use python-docx:

from docx import Document

def load_docx(docx_path):
    doc = Document(docx_path)
    return "\n\n".join([p.text for p in doc.paragraphs if p.text.strip()])

Step 2: Identify the contract type

Determine the contract type from the content:

  • Employment contract: Look for salary, benefits, termination, non-compete clauses
  • NDA / Confidentiality agreement: Look for confidential information definitions, duration, exceptions
  • Service agreement / SaaS: Look for SLA, liability caps, data handling, termination for convenience
  • Vendor / Supplier agreement: Look for delivery terms, payment terms, warranties, indemnification

Step 3: Extract and categorize key clauses

Identify and extract these critical sections:

  1. Parties: Who is involved, are they correctly identified
  2. Term and termination: Duration, renewal terms, termination conditions, notice periods
  3. Payment terms: Amounts, schedule, late payment penalties, currency
  4. Liability and indemnification: Liability caps, mutual vs one-sided indemnification
  5. Confidentiality: Scope of confidential information, duration, exceptions
  6. Non-compete / Non-solicitation: Geographic scope, duration, reasonableness
  7. Intellectual property: Ownership, assignment, licensing rights
  8. Dispute resolution: Jurisdiction, arbitration vs litigation, governing law
  9. Force majeure: Events covered, notice requirements
  10. Data protection: GDPR compliance, data processing terms, breach notification

Step 4: Perform risk analysis

For each clause, assess:

  • Risk level: High, Medium, or Low
  • Issue: What is problematic or missing
  • Recommendation: Specific change or addition to suggest

Flag these common red flags:

  • One-sided indemnification without caps
  • Automatic renewal without opt-out notice period
  • Non-compete clauses exceeding 12 months or unreasonable geographic scope
  • Missing limitation of liability
  • Vague termination conditions
  • No data protection or breach notification terms
  • Missing force majeure clause
  • Unclear IP ownership assignment

Step 5: Generate the review report

Produce a structured report with:

  1. Contract summary (type, parties, effective date, term)
  2. Clause-by-clause analysis with risk ratings
  3. Missing clauses that should be added
  4. Top recommendations ranked by priority
  5. Overall risk score (Low / Medium / High / Critical)

Examples

Example 1: Review an employment contract

User request: "Review my employment contract at ~/contracts/offer.pdf for any red flags"

Actions taken:

  1. Extract text from offer.pdf
  2. Identify as employment contract
  3. Analyze each clause for risks
  4. Flag issues found

Output:

CONTRACT REVIEW REPORT
======================
Type: Employment Contract
Parties: Jane Doe (Employee) <-> Acme Corp (Employer)
Term: Indefinite, starting March 1, 2025

RISK ANALYSIS:
-------------------------------------------------
| Clause              | Risk   | Issue                                    |
|---------------------|--------|------------------------------------------|
| Non-compete         | HIGH   | 24-month duration, nationwide scope       |
| Termination         | MEDIUM | No severance terms specified              |
| IP Assignment       | HIGH   | Covers all work, including personal projects |
| Benefits            | LOW    | Standard package, clearly defined         |
| Confidentiality     | LOW    | Reasonable scope and 2-year duration      |

MISSING CLAUSES:
- No remote work policy or location flexibility terms
- No bonus or equity vesting schedule details

TOP RECOMMENDATIONS:
1. Negotiate non-compete down to 6-12 months with limited geography
2. Add carve-out for personal projects in IP assignment clause
3. Request explicit severance terms (e.g., 2 weeks per year of service)

OVERALL RISK: HIGH - Address non-compete and IP clauses before signing

Example 2: Audit a SaaS service agreement

User request: "Check this vendor agreement for our SaaS tool. Flag anything we should push back on."

Actions taken:

  1. Parse the service agreement
  2. Check for standard SaaS contract terms
  3. Compare against best practices for data protection and SLAs

Output:

CONTRACT REVIEW REPORT
======================
Type: SaaS Service Agreement
Parties: Your Company <-> CloudTool Inc.
Term: 12 months, auto-renews

RISK ANALYSIS:
-------------------------------------------------
| Clause              | Risk     | Issue                                  |
|---------------------|----------|----------------------------------------|
| SLA / Uptime        | HIGH     | No uptime guarantee or credits defined |
| Data Processing     | HIGH     | No DPA or GDPR compliance language     |
| Liability Cap       | MEDIUM   | Capped at 1 month of fees (very low)   |
| Termination         | MEDIUM   | 90-day notice required to cancel        |
| Auto-renewal        | LOW      | 30-day opt-out window before renewal    |

TOP RECOMMENDATIONS:
1. Require a 99.9% uptime SLA with service credits
2. Add a Data Processing Agreement as an appendix
3. Negotiate liability cap to at least 12 months of fees
4. Reduce cancellation notice to 30 days

Guidelines

  • Always specify that this is an AI-assisted review and not legal advice. Recommend the user consult a lawyer for final decisions.
  • Present risks in order of severity (High first) so the most important issues are seen immediately.
  • When clauses are ambiguous, flag them as risks rather than assuming favorable interpretation.
  • For multi-party contracts, analyze obligations and risks from the perspective of the user's party.
  • If the contract references external documents (exhibits, schedules, addenda), note which ones are missing from the review.
  • Compare terms against standard market practices for the contract type when assessing reasonableness.
  • Keep the report concise. Use tables for clause analysis and bullet points for recommendations.