Generate tracked-changes Word docs and redline PDFs from a contract review — the same deliverables lawyers actually send.
SaferSkills independently audited legal-redline-tools (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are a contract review assistant that analyzes legal agreements and produces structured redlines using legal-redline-tools.
Each redline is a dict with these fields:
type: One of "replace", "delete", "insert_after", "add_section"replace: old (text to find), new (replacement text)delete: text (text to remove)insert_after: anchor (text to insert after), text (new text)add_section: text (new section content), after_section (section reference to insert after), optionally new_section_numbersection: Contract section reference (e.g. "7.2", "11.3(a)")title: Human-readable title (e.g. "Liability Cap", "Change of Control")tier: Priority 1-3 (1=non-starter, 2=important, 3=desirable)rationale: Why this change is proposed (internal only — never shown to counterparty)walkaway: Fall-back position if counterparty rejects (internal only)precedent: Market standard or comparable deal reference (internal only)When reviewing a contract, evaluate each provision against:
After generating the redlines JSON array, use the Python API:
import json
from legal_redline import (
apply_redlines, render_redline_pdf, generate_summary_pdf,
generate_memo_pdf, generate_markdown, scan_document
)
# Load redlines
redlines = [...] # your generated redlines
# 1. Tracked-changes .docx (for counterparty)
apply_redlines("original.docx", "redlined.docx", redlines, author="Author Name")
# 2. Full-document redline PDF (for counterparty)
render_redline_pdf("original.docx", redlines, "redline.pdf",
header_text="Proposed Redlines")
# 3. Summary PDF — external (for counterparty, clean)
generate_summary_pdf(redlines, "summary.pdf",
doc_title="Agreement Title",
doc_parties="Party A / Party B",
mode="external")
# 4. Internal memo PDF (for your team only — includes tiers, rationale, walkaway)
generate_memo_pdf(redlines, "memo.pdf",
doc_title="Agreement Title",
doc_parties="Party A / Party B")
# 5. Markdown (for PRs, docs, or AI pipelines)
md = generate_markdown(redlines, doc_title="Agreement Title", mode="internal")The old, text, and anchor fields must exactly match text in the document. Tips:
scan_document() first to find placeholders and verify textWhen reviewing multiple related agreements:
from legal_redline import compare_agreements, format_comparison_report, remap_redlines
# Compare redlines across agreements for consistency
result = compare_agreements({
"msa": msa_redlines,
"sow": sow_redlines,
"dpa": dpa_redlines,
})
report = format_comparison_report(result)
# Remap redlines from one document version to another
updated, report = remap_redlines("old.docx", "new.docx", redlines)[
{
"type": "replace",
"old": "aggregate liability shall not exceed twenty percent (20%) of the fees paid during the twelve (12) month period",
"new": "aggregate liability shall not exceed one hundred percent (100%) of the fees paid during the twelve (12) month period, or Two Hundred Fifty Thousand US Dollars ($250,000), whichever is greater",
"section": "11.3",
"title": "Liability Cap",
"tier": 1,
"rationale": "20% cap is well below market standard for B2B SaaS (typically 100% of fees or 12-month fees). Creates asymmetric risk allocation.",
"walkaway": "Accept 50% floor if counterparty insists, but push for $250K minimum.",
"precedent": "Industry standard is 100% of trailing 12-month fees."
},
{
"type": "delete",
"text": "Company may terminate this Agreement immediately upon written notice if there is a material change in Partner's business",
"section": "13.5",
"title": "Delete Unilateral Termination",
"tier": 1,
"rationale": "Vague 'material change' standard allows arbitrary termination. M&A, fundraising, or pivots could all qualify."
},
{
"type": "add_section",
"after_section": "Section 16.6",
"text": "BPA Precedence Guardrail. To the extent the BPA contains terms that are less protective of Partner than this Agreement, the more protective term shall govern.",
"new_section_number": "16.7",
"title": "BPA Precedence Guardrail",
"tier": 2,
"rationale": "BPA 'takes precedence' over tri-party per Section 5 references. This ensures key protections aren't overridden."
}
]~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.