Builds a review grid with one row per document and one column per data point, each cell cited to a verbatim quote, built for M&A diligence and other batch reviews.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .claude/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add anthropics/claude-for-legal --skill tabular-review -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .agents/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add anthropics/claude-for-legal --skill tabular-review -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .cursor/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add anthropics/claude-for-legal --skill tabular-review -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .gemini/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add anthropics/claude-for-legal --skill tabular-review -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .github/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add anthropics/claude-for-legal --skill tabular-review -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "tabular-review" agent skill from https://github.com/anthropics/claude-for-legal/tree/main/corporate-legal/skills/tabular-review into .opencode/skills/tabular-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tabular-review", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
tabular-review
GitHub stars
9.6k
Used in
3 other repos
Token cost
~4.3k tokens
SKILL.md length
2,229 words
Files
4 (incl. references)
Skills in repo
147
Repo updated
First seen
Licence
Apache-2.0
At a glance
Builds a review grid with one row per document and one column per data point, each cell cited to a verbatim quote, built for M&A diligence and other batch reviews.
Works in 7 steps: What and where → Build and confirm the schema → Sample run → …
Reviewing a folder of contracts for change-of-control, assignment and MAC clauses
SKILL.md covers Matter context, Purpose, Load context and The column type system, plus 6 more sections
Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
What it does
The workflow starts by loading the house format from the corporate-legal plugin config, then confirming which documents, which columns and where the output goes. The agent writes a typed schema to `.review-schema.yaml` and confirms it with you, runs a sample of 3 to 5 documents, adjusts, and then fans out with one sub-agent per document in parallel. Each cell holds a value, a state, a verbatim quote and a location in the source.
A normalization pass flags outliers and inconsistencies. Output is an `.xlsx` or a Google Sheet, whichever you choose, plus a `.csv`, a `_sources.csv` and a markdown file, with a work-product header. The closing summary counts the not_present, unclear and needs_review cells per column and reminds you that every cell is a lead, not a finding. Options include `--schema`, `--template` (currently `ma-diligence`), `--docs` for a local folder, Drive folder or VDR path, `--output` and `--sample`.
When your agent uses it
Reviewing a folder of contracts for change-of-control, assignment and MAC clauses
Extracting the same fields from every document in a data room
Auditing vendor contracts or a lease portfolio into a spreadsheet
Re-running an existing review schema on new documents
Example prompts
“Review the contracts in ./vdr/02-Contracts for change-of-control and assignment clauses and give me a grid.”
“Build a review grid from these lease documents with rent, term and renewal options as columns.”
“Re-run the review with the saved .review-schema.yaml on the new documents.”
Requirements
The claude-for-legal corporate-legal plugin and its CLAUDE.md configuration
A local folder, Drive folder or VDR path holding the documents
Workflow steps
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4a6c651. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Tabular Document Review loads about 4.3k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 138 tokens; SKILL.md has 2,229 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~138
When it runs· the whole SKILL.md, loaded when a task matches
~4.3k
With references· SKILL.md plus every file in references/, read only if the agent opens them
~7.8k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/tabular-review/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
tabular-review
description
Tabular review — one row per document, one column per data point, every cell cited to source. Built for M&A diligence ("review these 200 target contracts for change-of-control, assignment, and MAC clauses") but works for any batch review that needs a spreadsheet out the other end. Use when user says "tabular review", "review grid", "build a grid", "extract these fields from these contracts", "review these documents for X, Y, Z", "give me a spreadsheet of", "batch review", or points at a folder of documents and asks to compare them.
/tabular-review
Load ~/.claude/plugins/config/claude-for-legal/corporate-legal/CLAUDE.md → diligence structure, thresholds, house format.
Confirm: what documents, what columns, where does the output go.
Build the typed schema. Write .review-schema.yaml. Confirm with the user.
Sample run (3–5 docs). Adjust schema. Confirm.
Fan out — one sub-agent per document, parallel. Each cell: value + state + verbatim quote + location.
Normalization pass. Flag outliers and inconsistencies.
Output: .xlsx or Google Sheets (ask which), plus .csv + _sources.csv + markdown always. Work-product header.
Summary: verification workload (counts of not_present / unclear / needs_review per column), flagged columns, where the files are, reminder that every cell is a lead not a finding.
--schema <path>: Use an existing schema file instead of building one. Useful for re-runs and incremental additions.
--template <name>: Start from a template in references/. Currently: ma-diligence.
--docs <path>: Document source. A local folder, a Drive folder ID, or a VDR path. If omitted, asks.
--output <xlsx|gsheets|csv>: Output format. If omitted, asks.
--sample <n>: Sample size for the schema check. Default 5.
Matter context
Matter context. Check ## Matter workspaces in the practice-level CLAUDE.md. If Enabled is ✗ (the default for in-house users), skip the rest of this paragraph — skills use practice-level context and the matter machinery is invisible. If enabled and there is no active matter, ask: "Which matter is this for? Run /corporate-legal:matter-workspace switch <slug> or say practice-level." Load the active matter's matter.md for matter-specific context and overrides. Write outputs to the matter folder at ~/.claude/plugins/config/claude-for-legal/corporate-legal/matters/<matter-slug>/. Never read another matter's files unless Cross-matter context is on.
Purpose
You have a pile of documents and a list of questions you need answered consistently across every one. A diligence request list. A vendor contract audit. A lease portfolio review. The output is a table: document rows, data-point columns, and every cell traceable to the exact words in the source.
This is not issue spotting. diligence-issue-extraction finds the 30 problems hiding in 2,000 documents. This skill answers the same 15 questions about all 2,000 documents. Both are legitimate; they answer different questions.
This is also not a replacement for a human reading the document. Every cell this skill produces is a lead that needs verification, not a finding. The output is designed to make verification fast, not to skip it.
Load context
~/.claude/plugins/config/claude-for-legal/corporate-legal/CLAUDE.md → diligence structure, materiality thresholds, house format preferences
~/.claude/plugins/config/claude-for-legal/corporate-legal/deals/[code]/deal-context.md if working a specific deal
An existing schema file if the user has one (.review-schema.yaml)
The column type system
The thing that makes a tabular review useful is that Column C means the same thing in row 1 as in row 200. Free text drifts. Types hold.
Every column has a type that constrains the answer format:
Type
What it returns
Use for
verbatim
Exact quote from the document, character-for-character
Defined terms, operative clause language, anything where the words matter
Use sparingly — this is the type that drifts. Only when the others genuinely don't fit.
The verbatim rule: Every non-verbatim column also captures the exact source quote that supports the answer, as a companion field. The answer in the cell is the interpretation; the quote is the evidence. A classify cell that says "consent not unreasonably withheld" is useless without the sentence it came from, because the reviewer's job is to check whether that's the right read.
The three states of "not found"
A blank cell hides information. Force one of three explicit states whenever you can't produce a positive answer:
State
Meaning
When to use
not_present
The document was read and the clause is not there
You are confident the subject matter isn't addressed
unclear
Something is there but you can't classify it confidently
You found something but a human must make the call
Edge case, unusual drafting, the answer depends on a judgment the schema doesn't capture
These are three different pieces of information. A deal team handles "the contract is silent on assignment" very differently from "the assignment clause is ambiguous." Collapsing them into one blank cell loses the distinction.
Workflow
Step 0: What and where
Confirm:
Documents. Where are they? VDR MCP (Box, Datasite, iManage), local folder, Google Drive folder, or a list of files. How many? If >200, warn that this will take a while and offer to start with a materiality-filtered subset.
Schema. What columns? Two paths:
User picks a template from references/ (M&A diligence standard is the default)
User describes columns in natural language and you structure them into the typed schema
Output. Excel (.xlsx) or Google Sheets — ask which the team works in. CSV and markdown always written as fallbacks. Output goes to the deal folder, Drive, or wherever the user says.
Step 1: Build and confirm the schema
Turn the user's column list into a structured schema. For each column: a stable id, a human label, a type, a prompt (the question a reviewer reading the document would ask), and for classify columns an options list.
Write it to .review-schema.yaml next to the output. This file is the reusable artifact — the user can edit it, add a column, re-run against new documents. Show it to the user and confirm before fanning out.
yaml
schema:
name: "M&A Diligence — Project [Code]"
created: 2026-05-07
columns:
- id: counterparty
label: "Counterparty"
type: verbatim
prompt: "Who is the contracting party other than the target?"
- id: effective_date
label: "Effective Date"
type: date
prompt: "When did the agreement become effective?"
- id: change_of_control
label: "Change of Control"
type: classify
options: [silent, consent_required, consent_not_unreasonably_withheld, automatic_termination, notice_only]
prompt: "Does the agreement address a change of control of the target? What does it require?"
- id: assignment
label: "Assignment Restrictions"
type: classify
options: [silent, consent_required, consent_not_unreasonably_withheld, freely_assignable, assignable_to_affiliates]
prompt: "Can the target assign this agreement? What restrictions apply?"
# ... more columns
Step 2: Sample run
Do not fan out to 200 documents on an untested schema. Run 3–5 documents first. Show the user the rows. Look for:
Columns where most answers are unclear — the prompt is ambiguous, rewrite it
classify columns where answers don't fit the options — add options or change to free
verbatim columns returning paraphrases — reinforce that it must be character-for-character
Adjust the schema, re-run the sample, confirm. This saves the user from a full run that has to be thrown out.
Step 3: Fan out
One sub-agent per document, in parallel. Each sub-agent:
Reads the entire document (not a RAG chunk — the whole thing).
For each column, finds the relevant provision.
Returns a structured row: for each column, {value, state, quote, location}.
value is the typed answer (or null if state is not answered)
state is answered | not_present | unclear | needs_review
quote is the verbatim supporting text (exact, no paraphrase, no ellipsis inside a sentence — if you cut, cut at sentence boundaries and mark it)
location is where the quote lives (section number, heading, page — whatever the document gives you)
The quote is not optional, and the verbatim rule is mechanical, not exhortation. Each sub-agent must comply with all of the following before returning a cell with state: answered:
The quote MUST be a character-for-character copy of contiguous text from the source document, retrievable at the location the sub-agent cites. Do NOT compose a quote from a section heading plus standard boilerplate you expect to be there. Do NOT paraphrase and call it verbatim. Do NOT reconstruct a quote from memory of how such clauses "usually" read. Do NOT fill gaps in the source with ellipsis-stitching across non-contiguous text.
The location must be specific enough for the normalization pass to re-open the document and re-read the same span — a section number, heading, or page reference the reviewer can navigate to.
If the sub-agent cannot locate and copy the exact text (source truncated, OCR garbage, provision implied but not written, section heading visible but body not loaded), the cell state is needs_review, the value is null, and notes MUST contain quote_unavailable: <reason>. It is NEVER acceptable to set state: answered with a composed or reconstructed quote.
The same rule applies to verbatim-typed columns AND to the companion source quotes attached to classify / date / duration / currency / number / free cells. The supporting quote carries the same verbatim obligation as the cell value.
The normalization pass in Step 4 spot-checks this by re-reading the source at the cited location and comparing the stored quote character-for-character against the source text. A mismatch downgrades the cell to needs_review, notes quote_mismatch, and flags the whole column for a wider spot-check — if one sub-agent composed a quote, others in the same run may have too.
Show full SKILL.md (855 more words)Show less
Step 4: Normalize
After the fan-out, read the whole table column by column. This is the pass that catches the failure mode of every tabular review tool: the same clause interpreted inconsistently across documents.
For each classify column:
Check that every answered value is in the options list. Outliers get re-classified or bumped to needs_review.
Check for clusters: if 180 documents say consent_required and 20 say consent_not_unreasonably_withheld, that's probably real. If 195 say consent_required and 5 say freely_assignable, look at the 5 — they're either genuinely different or misclassified.
For each date / duration / currency column:
Check format consistency. Normalize.
Flag implausible values (a 99-year term, a $1 cap) as needs_review.
For each verbatim column AND for the companion source quotes on every other column:
Spot-check by re-opening the source document at the cited location for a random sample (at least 3–5 rows per column, or 10% of rows, whichever is larger) and comparing the stored quote character-for-character against the source.
If any quote is composed, paraphrased, reconstructed, or cannot be located at the cited span: downgrade that cell to needs_review with quote_mismatch in notes, and flag the whole column — expand the spot-check to the rest of the column rather than assuming the other rows are clean. One fabricated quote is enough to justify widening the check.
A cell with state: answered and a mismatched quote is a higher-severity failure than an unclear or needs_review cell — it misrepresents the evidence trail. Downgrade aggressively.
CSV (.csv, always):
One file for the values, one companion file for the quotes and locations (_sources.csv). Keeps the main file clean and the evidence trail complete.
Excel (.xlsx) or Google Sheets — whichever the user works in. Ask; don't guess. Both follow the same workbook structure (see references/excel-output.md and references/gsheets-output.md). For Excel: Claude in Excel (Office agent) if available, openpyxl fallback. For Sheets: Sheets MCP if available, Sheets API via ADC, CSV-import fallback. In the spreadsheet output:
Each data column is paired with a hidden source column containing the quote and location. Cell comments (Excel) or notes (Sheets) on the visible column surface the quote on hover.
Color code by state: white = answered, yellow = unclear or needs_review, gray = not_present.
A Verified column per data column, blank by default. The reviewer marks it. This is the verify/flag pattern that makes the table auditable — the deal team can see at a glance what a human has actually checked.
A _schema sheet with the column definitions, so the file is self-documenting.
Prepend the work-product header from the plugin config ## Outputs as a top row. Alongside it, include a distribution note:
This review is derived from source documents that may be privileged, confidential, or both. It inherits the sources' privilege and confidentiality status — distribution beyond the privilege circle can waive privilege. Store with the matter's privileged files and make distribution decisions deliberately.
Step 6: Summary
After the table is written, give the user a one-screen readout:
Document count, column count, rows completed
Count of not_present, unclear, needs_review per column — this is the verification workload
Any columns where the normalization pass flagged >10% of rows
Where the output files are
A reminder: every cell is a lead, not a finding. Verification required before this informs a rep, a schedule, or a memo.
Close with the next-steps decision tree
End with the next-steps decision tree per CLAUDE.md ## Outputs. Customize the options to what this skill just produced — the five default branches (draft the X, escalate, get more facts, watch and wait, something else) are a starting point, not a lock-in. The tree is the output; the lawyer picks.
What this skill does not do
It does not replace reading the documents. It tells you where to look.
It does not produce confidence scores. A 0.73 is not information. The unclear / needs_review states and the verbatim quotes are the confidence signal — if the quote doesn't support the value, flag it.
It does not silently skip documents. Every document the user pointed at gets a row. A document that couldn't be read gets a row of needs_review with a note.
It does not pretend a paraphrase is a quote. The evidence trail is the whole point.
Relationship to other skills
diligence-issue-extraction finds issues; this extracts data points. If an extraction reveals an issue (a MAC clause that references a specific earnings target, a poison pill), note it and suggest running diligence-issue-extraction on that document.
material-contract-schedule builds one specific table (the disclosure schedule). It can consume this skill's output directly — the schedule is a filtered, reformatted view of a tabular review.
ai-tool-handoff hands bulk review to Luminance/Kira when the corpus is too large or the team prefers a dedicated platform. This skill is the in-house option for anything it can handle — run it first, hand off the residue.
Output safeguards
Every output gets the work-product header. Every cell gets a source citation or a flagged state. The summary explicitly says verification is required. The Excel Verified column makes the verification state auditable. This is not a tool that lets you skip reading; it's a tool that makes reading faster.
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in anthropics/claude-for-legal, which our catalogue first saw on October 7, 2026.
Tabular Document Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Tabular Document Review compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Tabular Document Review this skillanthropics/claude-for-legal
Turns a batch of similar documents, or a single one, into a table where every cell cites its source clause and carries a confidence score, with missing data marked as not mentioned.
Structures a legal clinic client intake interview and produces a case summary with cross-area issue spotting, conflict flags and triage classification.
Runs a category-by-category legal review of a product launch from a PRD or tracker ticket, calibrated to your team's framework, and writes a review memo in house format.
Shows which contracts renew soon and when notice must be sent by, working from a maintained renewal register, and warns about missed cancellation windows.
Maintains a register of AI systems under the EU AI Act, recording each system's role and risk tier separately, because both can differ from one system to the next.
Builds a review grid with one row per document and one column per data point, each cell cited to a verbatim quote, built for M&A diligence and other batch reviews. The workflow starts by loading the house format from the corporate-legal plugin config, then confirming which documents, which columns and where the output goes.yaml` and confirms it with you, runs a sample of 3 to 5 documents, adjusts, and then fans out with one sub-agent per document in parallel.
When should I use Tabular Document Review?
Tabular Document Review fits situations like: reviewing a folder of contracts for change-of-control, assignment and MAC clauses; extracting the same fields from every document in a data room; auditing vendor contracts or a lease portfolio into a spreadsheet; re-running an existing review schema on new documents.
How do I install Tabular Document Review in Claude Code?
Run `npx skills add anthropics/claude-for-legal --skill tabular-review -a claude-code`. Or copy the skill folder (corporate-legal/skills/tabular-review in anthropics/claude-for-legal) into .claude/skills/tabular-review in your project. Claude Code loads it when a task matches its description.
How do I install Tabular Document Review in Codex?
Run `npx skills add anthropics/claude-for-legal --skill tabular-review -a codex`. Or copy the skill folder (corporate-legal/skills/tabular-review in anthropics/claude-for-legal) into .agents/skills/tabular-review in your project. Codex loads it when a task matches its description.
Can I use Tabular Document Review in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add anthropics/claude-for-legal --skill tabular-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tabular-review, .gemini/skills/tabular-review, .github/skills/tabular-review and .opencode/skills/tabular-review in your project.
What does Tabular Document Review need to run?
SKILL.md names no scripts, command-line tools or credentials: Tabular Document Review is instructions for the agent only. Our summary lists: The claude-for-legal corporate-legal plugin and its CLAUDE.md configuration; A local folder, Drive folder or VDR path holding the documents.
Does Tabular Document Review access the network?
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Is Tabular Document Review safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Tabular Document Review use?
Tabular Document Review is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Tabular Document Review use?
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.5k tokens, read only when the agent opens those files.
What are the alternatives to Tabular Document Review?
Skills that share tags, products or a category with Tabular Document Review: Source-Cited Document Comparison Tables (akunikkola/claude-for-legal-finland, 109 stars), Contract Review Engine (infometa/workbuddyskills, 346 stars), Markitdown (ImCa0/just-laws, 782 stars) and XLSX (rvdbreemen/OTGW-firmware, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Tabular Document Review?
anthropics (a GitHub organization, an official publisher) maintains it in anthropics/claude-for-legal, which has 9,629 GitHub stars. The repository holds 147 skills in this directory. The repository was last updated on September 29, 2026.
Source: anthropics/claude-for-legal on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.