Get the standard clauses out of a contract or a whole folder of them without reading legalese yourself. I extract liability caps, termination terms, auto-renewal, payment terms, IP, data handling, uptime commitments, and exclusivity, each with the verbatim quote, a plain-language summary, and a flag on anything unfavorable for your vendor posture. The renewal calendar updates automatically.
Installs into .claude/skills of the current project.
Are you the author of Read A Contract?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/thomasmoreai-read-a-contract)
---
name: read-a-contract
title: Read A Contract
description: Get the standard clauses out of a contract or a whole folder of them without reading legalese yourself. I extract liability caps, termination terms, auto-renewal, payment terms, IP, data handling, uptime commitments, and exclusivity, each with the verbatim quote, a plain-language summary, and a flag on anything unfavorable for your vendor posture. The renewal calendar updates automatically.
author: gethouston
author_url: https://github.com/gethouston/houston/tree/main/store/agents/operations/.agents/skills/read-a-contract
license: MIT
version: 0.1.0
execution_mode: open
jurisdiction: general
practice: contracts
language: en
---
# Read A Contract
## When to use
- "pull the {clause} from this contract" (single doc).
- "what are the auto-renew terms in every contract in this folder" (batch).
- "extract the liability cap and termination language from {vendor}'s master service agreement".
## Connections I need
I run external work through Composio. Before this skill runs I check the categories below are linked. Missing → I name the category, ask you to connect it from the Integrations tab, stop.
- **Files** (Google Drive) - Required for batch runs and named-vendor lookups. I scan folders or named contracts here.
- **Document processing** (OCR or PDF text extraction) - Required. Pulls the actual text out of scanned or native PDFs so I can extract clauses verbatim.
If no files provider is connected and you haven't pasted the contract, I stop and ask you to connect Google Drive or paste the document.
## Information I need
I read your operations context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > file drop > URL > paste) and wait.
- **The contract itself** - Required. Why I need it: I can't extract from nothing. If missing I ask: "Drop the contract or point me at the folder. PDF, Word, or a Google Doc all work."
- **Vendor posture** - Required. Why I need it: tells me which terms count as a flag. A conservative posture flags more aggressively than fast-risk. If missing I ask: "How do you approach vendor terms - conservative, balanced, or move fast?"
- **Operating context doc** - Required. Why I need it: anchors hard nos so I flag clauses that would violate them. If missing I ask: "Want me to set up your operating context first? Helps me catch unfavorable terms more reliably."
## Steps
1. **Read `context/operations-context.md`.** If missing: stop, ask user run `set-up-my-ops-info` skill first. Vendor posture + hard nos anchor "unfavorable terms" flags.
2. **Read `config/procurement.json`** - approval posture decide which terms count as "flag worthy" (conservative founder flag more; fast-risk founder flag only truly egregious).
3. **Identify target contract(s).**
- Single file: user paste text, share URL, or point at file in connected drive.
- Batch (folder): `composio search drive` → list files in specified folder → filter to contract-flavored (PDF/DOCX/DOC).
- Named vendor: look in `contracts/` first; if absent, search drive via `composio search drive`.
4. **Parse each contract.** Use `composio search doc-processing` to find best doc-processing tool for format (OCR for scanned PDFs, text extractor for native PDFs, DOCX reader). Execute by slug, pull full text.
5. **Extract standard clauses.** Per contract, locate + extract:
- **Liability cap** - quote + cap amount + carve-outs.
- **Termination** - for-cause terms, for-convenience terms, notice windows.
- **Auto-renewal** - presence, term length, notice-to-not-renew window.
- **Payment terms** - amount, frequency, true-up / overage, late fees.
- **IP ownership** - who own work product, background IP rules.
- **Data handling / data processing agreement** - data processing agreement presence, data residency, breach notification response-time commitment.
- **Uptime commitment** - uptime commitment, remedies.
- **Exclusivity / non-compete** - presence + scope.
Per clause: **verbatim quote** + **1-line plain-language summary** + **1-line flag** if unusual or unfavorable per vendor posture. If clause absent, mark `ABSENT` explicit - never omit.
6. **Write** to `contracts/{vendor-slug}-{YYYY-MM-DD}.md` with full extraction. Batch runs: one file per contract + `contracts/batch-{YYYY-MM-DD}-summary.md` rolling up flags across batch.
7. **Update renewal calendar.** If contract has renewal date, call `track-my-renewals` skill internally (or note `track-my-renewals` should re-run) and add/update entry in `renewals/calendar.md`.
8. **Atomic writes** - `*.tmp` → rename.
9. **Append to `outputs.json`** with `type: "contract"`, status "ready" per contract. Batch: single `contract` entry for summary + one per contract processed.
10. **Summarize to user** - #1 flag that most warrant founder attention (e.g. "auto-renew is in 11 days and notice window is 30 days - already too late to stop this one"). Path to file(s).
## Outputs
- `contracts/{vendor-slug}-{YYYY-MM-DD}.md` (one per contract)
- Optional `contracts/batch-{YYYY-MM-DD}-summary.md` (batch runs)
- Updates to `renewals/calendar.md`
- Appends to `outputs.json` with `type: "contract"`.
## What I never do
- **Sign** or accept any contract.
- **Invent** clause. If contract has no liability cap, mark `ABSENT`.
- **Interpret legally.** Flag for founder attention; founder consult legal.