Install
openclaw skills install @voronindenis5/contract-red-flag-scannerUse when signing or reviewing any contract you haven't fully read — apartment lease, employment offer, Terms of Service, gym/phone subscription, freelancer agreement — and before paying a lawyer for a first pass: scans plain-text contract text for 20+ high-risk clause patterns (auto-renewal traps, arbitration and class-action waivers, one-sided termination penalties, liability caps, unilateral amendment rights, non-competes, fee schedules), infers the contract type, produces a risk-ranked findings report with plain-language explanations and the exact questions to ask the other side, plus a missing-clause checklist of protections that SHOULD be present but aren't.
openclaw skills install @voronindenis5/contract-red-flag-scannerAlmost nobody reads the contracts they sign. Studies of ToS agreements estimate that actually reading all the agreements an average person clicks through would take 76 work-days a year — so people sign apartment leases with auto-renewal traps, employment offers with hidden non-competes, and subscriptions with one-sided cancellation penalties. The consequences are real money: eviction for breaking a lease early, fees that compound monthly, rights silently signed away to arbitration.
This skill is a first-pass triage layer between you and the fine print. It does not replace a lawyer — it tells you whether you need one, and exactly what to ask. It scans plain contract text (paste, OCR output, or a .txt export) for a curated library of high-risk clause patterns, infers the contract type (lease / employment / ToS / service subscription), and outputs:
Everything runs offline on pure stdlib Python — no contract text ever leaves the machine.
pymupdf, marker). Save as .txt.# Scan a lease (paste or export the text first)
python3 scripts/contract_scanner.py scan references/sample-lease.txt
# JSON output for programmatic use / agent pipelines
python3 scripts/contract_scanner.py scan contract.txt --json
# Force a contract type when detection is wrong
python3 scripts/contract_scanner.py scan offer.txt --type employment
# List all detectors and what they look for
python3 scripts/contract_scanner.py list-detectors
# Exit codes: 0 = clean-ish, 2 = HIGH findings present (usable in CI/hooks)
$ python3 scripts/contract_scanner.py scan references/sample-lease.txt
CONTRACT TYPE: lease (confidence 0.86)
SCRUTINY SCORE: 47/100 — 2 HIGH, 3 MEDIUM, 1 LOW findings
[HIGH] AUTO-RENEWAL WITH STRICT NOTICE WINDOW
Matched: "shall automatically renew for successive twelve (12) month
terms unless Tenant provides written notice not less than sixty (60)
days prior to the end of the term"
Plain language: If you forget to send written notice exactly 60 days
out, you are locked in for another FULL year — not month-to-month.
Ask: "Can we make this renew month-to-month after the first term,
or reduce the notice window to 30 days?"
[HIGH] EARLY TERMINATION PENALTY — ALL REMAINING RENT
...
[MEDIUM] LATE FEE — FLAT PLUS DAILY ACCRETION
...
MISSING-CLAUSE CHECKLIST (lease):
[ ] Habitability / landlord repair obligation — NOT FOUND
[ ] Security deposit return deadline — NOT FOUND
[ ] Entry notice requirement — NOT FOUND
QUESTION LIST FOR THE OTHER SIDE:
1. Can renewal go month-to-month, or notice drop to 30 days?
...
| Category | Detectors | Typical severity |
|---|---|---|
| Renewal & exit traps | auto-renewal notice windows, early-termination rent acceleration, cancellation fees, non-refundable prepayment | HIGH / MEDIUM |
| Rights waivers | binding arbitration, class-action waiver, jury trial waiver, severability of those waivers | HIGH |
| One-sided economics | late fees + daily accretion, unilateral price change, one-sided attorney fees, indemnification of the other party | MEDIUM |
| Scope creep | non-compete, non-solicit, broad IP assignment, unilateral amendment ("we may change these terms") | HIGH / MEDIUM |
| Operational | entry without notice, as-is condition, governing law far from you, assignment of the agreement without your consent | LOW / MEDIUM |
Full list: python3 scripts/contract_scanner.py list-detectors, documented in references/clause-guide.md.
scan <file>. If type detection looks wrong, re-run with --type..txt for completeness first.--type.scan ran without errors and detected the right contract type