{"id":"690ba067-9e8a-4e02-849e-e607b044818f","shortId":"6V7qEN","kind":"skill","title":"tabular-review-lawvable","tagline":"Guide to analyze multiple documents (PDF, DOCX) against user-defined columns and produce a structured Excel output with citations. Use when the user wants to: (1) Extract specific information from multiple documents into a table, (2) Compare clauses or provisions across contracts","description":"# Tabular Review\n\nExtract structured data from multiple documents into an Excel matrix with citations.\n\n## Required Skills\n\n- **pdf** - For reading PDF documents\n- **docx** - For reading Word documents\n- **xlsx** - For creating the Excel output\n\n## Workflow\n\n### Step 1: Gather User Requirements\n\nUse `AskUserQuestion` to collect:\n\n1. **Document folder path** - Where are the documents?\n2. **Output filename** - Name for the Excel file\n3. **Columns to extract** - What information to pull from each document\n\nExample column definitions:\n```\n- Parties: Names of all parties to the agreement\n- Effective Date: When the agreement becomes effective\n- Term: Duration of the agreement\n- Governing Law: Jurisdiction for disputes\n```\n\n### Step 2: Discover Documents\n\nUse `Glob` to find all documents:\n\n```\nGlob(pattern: \"**/*.pdf\", path: \"<folder>\")\nGlob(pattern: \"**/*.docx\", path: \"<folder>\")\n```\n\n### Step 3: Process Documents in Parallel\n\nLaunch background agents to process documents concurrently. Each agent:\n- Reads assigned documents using pdf or docx skill\n- Extracts values for each column\n- Captures page/paragraph citations\n- Returns structured JSON\n\n**Launch agents:**\n```\nTask(\n  prompt: \"<agent_prompt>\",\n  subagent_type: \"general-purpose\",\n  run_in_background: true\n)\n```\n\n**Agent prompt template:**\n```\nYou are processing documents for a tabular review.\n\nDOCUMENTS TO PROCESS:\n<list of document paths>\n\nCOLUMNS TO EXTRACT:\n<column definitions>\n\nFor each document:\n1. Read the document using the pdf skill (for .pdf) or docx skill (for .docx)\n2. Extract the requested information for each column\n3. Note the page number (PDF) or section (DOCX) where you found the information\n4. Include a brief quote (30-50 chars) showing the source text\n\nReturn your results as JSON:\n{\n  \"results\": [\n    {\n      \"document\": \"<filename>\",\n      \"path\": \"<absolute_path>\",\n      \"extractions\": [\n        {\n          \"column\": \"<column_name>\",\n          \"value\": \"<extracted_value>\",\n          \"page\": <page_number>,\n          \"quote\": \"<brief_context_quote>\"\n        }\n      ]\n    }\n  ]\n}\n\nIf you cannot find information for a column, set value to \"Not found\" and explain in the quote field.\n```\n\n**Distribution strategy:**\n- For N documents and M agents, each agent processes ceil(N/M) documents\n- Default: 10 agents maximum\n- Adjust based on document count\n\n### Step 4: Collect Results\n\nWait for all background agents to complete:\n\n```\nTaskOutput(task_id: \"<agent_id>\", block: true)\n```\n\nAggregate all results into a single array of document extractions.\n\n### Step 5: Generate Excel Output\n\nInvoke the **xlsx skill** to create the output file:\n\n```\nCreate an Excel workbook at <output_path>:\n\nSHEET 1: \"Document Review\"\n- Header row: Document | <Column1> | <Column2> | ...\n- Data rows: One row per document\n\nFor each extraction cell:\n- Cell value: The extracted text\n- Cell hyperlink: file://<document_path>#page=<N> (for PDFs)\n- Cell comment: \"Page <N>: '<quote>'\"\n\nSHEET 2: \"Summary\"\n- Total documents: <count>\n- Documents processed: <count>\n- Extraction date: <today>\n```\n\n## JSON Schema\n\n**Extraction result format:**\n```json\n{\n  \"document\": \"Contract_ABC.pdf\",\n  \"path\": \"/path/to/Contract_ABC.pdf\",\n  \"extractions\": [\n    {\n      \"column\": \"Parties\",\n      \"value\": \"Acme Corp and Beta Inc\",\n      \"page\": 1,\n      \"quote\": \"entered into between Acme Corp and Beta Inc\"\n    },\n    {\n      \"column\": \"Effective Date\",\n      \"value\": \"January 15, 2025\",\n      \"page\": 1,\n      \"quote\": \"effective as of January 15, 2025\"\n    }\n  ]\n}\n```\n\n## Excel Output Format\n\n**Cell with citation:**\n- Value: \"Acme Corp and Beta Inc\"\n- Hyperlink: `file:///path/to/Contract_ABC.pdf#page=1`\n- Comment: `Page 1: \"entered into between Acme Corp and Beta Inc\"`\n\n**Color coding (optional):**\n- Green: Value found with high confidence\n- Yellow: Value found but uncertain\n- Red: Value not found\n\n## Error Handling\n\n| Scenario | Action |\n|----------|--------|\n| Document unreadable | Log error, mark row as failed, continue |\n| Column not found | Set value to \"Not found\", explain in comment |\n| Agent timeout | Collect partial results, note incomplete |\n| Missing skill | Prompt user to install required skill |\n\n## Example Usage\n\n```\nUser: I want to do a tabular review of my contracts\n\nClaude: [Uses AskUserQuestion]\n  - What folder contains your documents?\n  - What should I name the output Excel file?\n  - What columns do you want to extract?\n\nUser: ~/Contracts, review.xlsx, Parties/Date/Term/Governing Law\n\nClaude: [Discovers 15 documents via Glob]\nClaude: [Launches 5 background agents, 3 docs each]\nClaude: [Collects results via TaskOutput]\nClaude: [Creates review.xlsx via xlsx skill]\n\nOutput: review.xlsx with 15 rows, 4 columns, hyperlinks and citations\n```","tags":["tabular","review","lawvable","awesome","legal","skills","agent-skills","automation","law","legal-work","workflows"],"capabilities":["skill","source-lawvable","skill-tabular-review-lawvable","topic-agent-skills","topic-automation","topic-law","topic-legal-work","topic-workflows"],"categories":["awesome-legal-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lawvable/awesome-legal-skills/tabular-review-lawvable","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lawvable/awesome-legal-skills","source_repo":"https://github.com/lawvable/awesome-legal-skills","install_from":"skills.sh"}},"qualityScore":"0.605","qualityRationale":"deterministic score 0.60 from registry signals: · indexed on github topic:agent-skills · 310 github stars · SKILL.md body (4,744 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:56.916Z","embedding":null,"createdAt":"2026-04-18T22:04:43.907Z","updatedAt":"2026-05-02T18:53:56.916Z","lastSeenAt":"2026-05-02T18:53:56.916Z","tsv":"'-50':273 '/contracts':585 '/path/to/contract_abc.pdf':427,477 '1':31,82,90,230,380,438,456,479,482 '10':326 '15':453,462,591,617 '2':41,98,146,245,410 '2025':454,463 '3':106,164,253,600 '30':272 '4':267,335,619 '5':361,597 'acm':432,443,471,486 'across':46 'action':512 'adjust':329 'agent':171,177,198,210,318,320,327,342,533,599 'aggreg':350 'agreement':127,132,139 'analyz':7 'array':356 'askuserquest':87,563 'assign':179 'background':170,208,341,598 'base':330 'becom':133 'beta':435,446,474,489 'block':348 'brief':270 'cannot':294 'captur':191 'ceil':322 'cell':395,396,401,406,467 'char':274 'citat':24,61,193,469,623 'claud':561,589,595,603,608 'claus':43 'code':492 'collect':89,336,535,604 'color':491 'column':16,107,118,190,224,252,288,299,429,448,522,578,620 'comment':407,480,532 'compar':42 'complet':344 'concurr':175 'confid':499 'contain':566 'continu':521 'contract':47,560 'contract_abc.pdf':425 'corp':433,444,472,487 'count':333 'creat':76,370,374,609 'data':52,386 'date':129,417,450 'default':325 'defin':15 'definit':119 'discov':147,590 'disput':144 'distribut':311 'doc':601 'document':9,37,55,68,73,91,97,116,148,154,166,174,180,216,221,229,233,285,315,324,332,358,381,385,391,413,414,424,513,568,592 'docx':11,69,161,184,241,244,261 'durat':136 'effect':128,134,449,458 'enter':440,483 'error':509,516 'exampl':117,548 'excel':21,58,78,104,363,376,464,575 'explain':306,530 'extract':32,50,109,186,226,246,287,359,394,399,416,420,428,583 'fail':520 'field':310 'file':105,373,576 'filenam':100 'find':152,295 'folder':92,565 'format':422,466 'found':264,304,496,502,508,524,529 'gather':83 'general':204 'general-purpos':203 'generat':362 'glob':150,155,159,594 'govern':140 'green':494 'guid':5 'handl':510 'header':383 'high':498 'hyperlink':402,476,621 'id':347 'inc':436,447,475,490 'includ':268 'incomplet':539 'inform':34,111,249,266,296 'instal':545 'invok':365 'januari':452,461 'json':196,283,418,423 'jurisdict':142 'launch':169,197,596 'law':141,588 'lawvabl':4 'log':515 'm':317 'mark':517 'matrix':59 'maximum':328 'miss':540 'multipl':8,36,54 'n':314 'n/m':323 'name':101,121,572 'note':254,538 'number':257 'one':388 'option':493 'output':22,79,99,364,372,465,574,614 'page':256,290,403,408,437,455,478,481 'page/paragraph':192 'parallel':168 'parti':120,124,430 'partial':536 'parties/date/term/governing':587 'path':93,158,162,286,426 'pattern':156,160 'pdf':10,64,67,157,182,236,239,258 'pdfs':405 'per':390 'process':165,173,215,223,321,415 'produc':18 'prompt':200,211,542 'provis':45 'pull':113 'purpos':205 'quot':271,291,309,439,457 'read':66,71,178,231 'red':505 'request':248 'requir':62,85,546 'result':281,284,337,352,421,537,605 'return':194,279 'review':3,49,220,382,557 'review.xlsx':586,610,615 'row':384,387,389,518,618 'run':206 'scenario':511 'schema':419 'section':260 'set':300,525 'sheet':379,409 'show':275 'singl':355 'skill':63,185,237,242,368,541,547,613 'skill-tabular-review-lawvable' 'sourc':277 'source-lawvable' 'specif':33 'step':81,145,163,334,360 'strategi':312 'structur':20,51,195 'subag':201 'summari':411 'tabl':40 'tabular':2,48,219,556 'tabular-review-lawv':1 'task':199,346 'taskoutput':345,607 'templat':212 'term':135 'text':278,400 'timeout':534 'topic-agent-skills' 'topic-automation' 'topic-law' 'topic-legal-work' 'topic-workflows' 'total':412 'true':209,349 'type':202 'uncertain':504 'unread':514 'usag':549 'use':25,86,149,181,234,562 'user':14,28,84,543,550,584 'user-defin':13 'valu':187,289,301,397,431,451,470,495,501,506,526 'via':593,606,611 'wait':338 'want':29,552,581 'word':72 'workbook':377 'workflow':80 'xlsx':74,367,612 'yellow':500","prices":[{"id":"4ec7bd82-f0e7-49f5-8e79-7a22c4dcd653","listingId":"690ba067-9e8a-4e02-849e-e607b044818f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lawvable","category":"awesome-legal-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:04:43.907Z"}],"sources":[{"listingId":"690ba067-9e8a-4e02-849e-e607b044818f","source":"github","sourceId":"lawvable/awesome-legal-skills/tabular-review-lawvable","sourceUrl":"https://github.com/lawvable/awesome-legal-skills/tree/main/skills/tabular-review-lawvable","isPrimary":false,"firstSeenAt":"2026-04-18T22:04:43.907Z","lastSeenAt":"2026-05-02T18:53:56.916Z"}],"details":{"listingId":"690ba067-9e8a-4e02-849e-e607b044818f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lawvable","slug":"tabular-review-lawvable","github":{"repo":"lawvable/awesome-legal-skills","stars":310,"topics":["agent-skills","automation","law","legal-work","workflows"],"license":"other","html_url":"https://github.com/lawvable/awesome-legal-skills","pushed_at":"2026-03-03T11:25:06Z","description":"A curated list of awesome Agent Skills for automating legal work","skill_md_sha":"b749acfd176068284094a80ce6ebfd44ba9f11da","skill_md_path":"skills/tabular-review-lawvable/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lawvable/awesome-legal-skills/tree/main/skills/tabular-review-lawvable"},"layout":"multi","source":"github","category":"awesome-legal-skills","frontmatter":{"name":"tabular-review-lawvable","description":"Guide to analyze multiple documents (PDF, DOCX) against user-defined columns and produce a structured Excel output with citations. Use when the user wants to: (1) Extract specific information from multiple documents into a table, (2) Compare clauses or provisions across contracts, (3) Create a document review matrix with source citations. Triggers on: 'tabular review', 'document matrix', 'extract from documents', 'compare across documents', 'review multiple contracts'."},"skills_sh_url":"https://skills.sh/lawvable/awesome-legal-skills/tabular-review-lawvable"},"updatedAt":"2026-05-02T18:53:56.916Z"}}