{"id":"658134e6-7872-470a-a7b9-f6093104f41b","shortId":"tqmMac","kind":"skill","title":"legal-matter-tracker","tagline":"Scan local workspace folders by client or case name and assemble a chronological timeline of events with key facts. No external integrations required. Triggers: 'matter tracker', 'case timeline', 'track [client]', 'timeline for [case]', 'client history', 'matter report', 'summari","description":"# Legal Matter Tracker\n\nThis skill scans a local Cowork workspace for files related to a specified client or legal matter, extracts dated events and key facts, and assembles a structured chronological timeline report — entirely from local files, with no external integrations required.\n\n**Input:** Client or case name (required). Optional: folder path to narrow scan scope.\n\n**Output:** Structured markdown timeline report (inline). Optionally saved to `output/matter-timeline-[client]-YYYY-MM-DD.md` on request.\n\n---\n\n## Language Detection\n\nDetect the user's language from their message:\n- If Russian (or contains Cyrillic): respond in Russian\n- If English (or other Latin-script language): respond in English\n- If ambiguous: default to English\n\n---\n\n## Instructions\n\n### Step 1: Parse Input\n\n1. Extract the client or case name from the user's message.\n   - Accepted forms: `\"case timeline for Acme Corp\"`, `\"track Smith matter\"`, `\"хронология по делу Иванов\"`, `\"что было по клиенту Ромашка\"`.\n   - The name may be a company, person, project code, or case identifier.\n\n2. If no name is provided, return:\n   - EN: \"Please provide a client or case name. Example: 'Case timeline for Acme Corp'\"\n   - RU: \"Укажите имя клиента или название дела. Пример: «хронология по делу Ромашка»\"\n   Stop — do not generate output.\n\n3. If the user provided a folder path to narrow the scan scope, note it. Otherwise scan the full workspace.\n\n---\n\n### Step 2: Scan Workspace\n\n1. Search for files that match the client/case name using these criteria:\n   - **Filename match:** filename contains any word from the name (case-insensitive).\n   - **Content match:** file contains the name in a heading (`#`, `##`, `**Name**`) or first 10 lines.\n   - Accepted file types: `.md`, `.txt`.\n   - Search folders: workspace root + `notes/`, `clients/`, `cases/`, `input/`, `output/`, `context/`.\n\n2. If a folder path was provided: scan only that folder (recursive).\n\n3. Count total files scanned and matching files found.\n\n4. If no matching files found, return:\n   - EN: \"No files found matching '[name]'. Try a broader term or check that the relevant files are in your workspace.\"\n   - RU: \"Файлов по запросу «[name]» не найдено. Попробуйте более широкий запрос или проверьте, что нужные файлы есть в воркспейсе.\"\n   Stop — do not generate output.\n\n---\n\n### Step 3: Extract Events\n\nFor each matched file:\n\n1. Extract **dated events**: lines or paragraphs that contain:\n   - An explicit date (ISO: `2025-01-15`, written: `January 15, 2025`, `15 января 2025`, `15.01.2025`, `01/15/2025`)\n   - A fact, decision, event, action item, or key information associated with that date.\n\n2. Extract **key entities** (if detectable):\n   - Party names (people, organisations)\n   - Amounts or values (monetary, percentages, quantities)\n   - Status indicators (`open`, `closed`, `pending`, `active`, `закрыто`, `открыто`)\n   - Action items or open questions\n\n3. For lines with no associated date: collect as **undated entries** — do not discard.\n\n4. If a file yields zero events (file is empty or contains only unstructured text with no extractable facts), note it and skip.\n\n5. If all matched files yield zero events, return:\n   - EN: \"Found [N] file(s) matching '[name]' but could not extract events. Files may be empty or contain only unstructured text.\"\n   - RU: \"Найдено [N] файл(ов) по запросу «[name]», но извлечь события не удалось. Файлы могут быть пустыми или содержать только неструктурированный текст.\"\n   Stop.\n\n---\n\n### Step 4: Assemble Timeline\n\n1. Sort all dated events **chronologically, ascending** (oldest first).\n\n2. Group undated entries separately at the end — ordered by source file.\n\n3. Build the timeline table:\n   - Column 1: **Date** (formatted as `YYYY-MM-DD` for ISO dates; preserve written format for ambiguous dates)\n   - Column 2: **Event** (concise description, max 120 chars; truncate with `…` if needed)\n   - Column 3: **Source** (filename with relative path, in backticks)\n\n4. Build the **Key Facts Summary** using extracted entities:\n   - Parties (if found)\n   - Matter status (open/closed/unknown)\n   - Open items (action items or questions found in files)\n\n5. Build the **Sources** list: each matched file with count of extracted events.\n\n6. Assemble the full report (see Output Format below).\n\n---\n\n### Step 5: Output\n\n1. Display the complete timeline report inline in chat.\n\n2. If the user says \"save\" or \"save to file\" (or RU: \"сохрани\", \"сохрани в файл\"):\n   - Write to `output/matter-timeline-[client-slug]-YYYY-MM-DD.md` where `client-slug` is the client name lowercased with spaces replaced by hyphens.\n   - Confirm: \"Saved to `output/matter-timeline-[client-slug]-YYYY-MM-DD.md`\"\n\n---\n\n## Edge Cases\n\n- **Multiple files match:** Include all matched files; label every event with its source filename. Do not deduplicate events.\n- **No explicit dates in matched files:** Include all entries in the Undated Entries section. Add a note at the top: \"No dated events found — all entries are undated.\"\n- **User provides folder path to narrow scan:** Scan only that folder (recursive); note scan scope in report header.\n- **Conflicting facts across files** (e.g., different amounts for the same event): List both versions in the event table with their respective source references. Do not resolve silently; add a flag `⚠ Conflict` in the Event column.\n- **Very long event descriptions (>120 chars):** Truncate with `…` in the table; include the full text as a footnote below the table.\n- **Date formats in Russian** (e.g., `15 января 2025`): Parse and normalise to `YYYY-MM-DD` for chronological sorting; display original format in the table.\n\n---\n\n## Negative Cases\n\n- **No client/case name provided:** Return usage message (EN/RU). Stop. No partial output.\n- **No matching files found:** Return \"No files found\" message with search guidance. Stop.\n- **Files found but no extractable events:** Return informative message. Stop. Do not generate an empty timeline.\n\n---\n\n## Output Format\n\n```\n# Matter Timeline — [Client/Case Name]\n**Generated:** YYYY-MM-DD\n**Files scanned:** N  |  **Matching files:** M  |  **Events extracted:** K\n**Scan scope:** [workspace root / specified folder path]\n\n---\n\n## Chronological Timeline\n\n| Date | Event | Source |\n|------|-------|--------|\n| 2025-01-15 | Initial consultation. Client presented IP dispute claim. | `notes/acme-notes.md` |\n| 2025-02-03 | Contract signed. Engagement fee: $12,000. | `contracts/acme-contract.md` |\n| 2025-03-10 | Discovery phase completed. 3 key documents identified. | `notes/acme-notes.md` |\n\n---\n\n## Undated Entries\n*(entries without extractable dates — ordered by source file)*\n\n| Entry | Source |\n|-------|--------|\n| Opposing counsel: Smith & Partners LLP | `notes/acme-notes.md` |\n\n---\n\n## Key Facts Summary\n- **Parties:** Acme Corp (client), Smith & Partners LLP (opposing counsel)\n- **Matter status:** Open (last activity: 2025-03-10)\n- **Open items:**\n  - Discovery documents pending review\n  - Fee invoice not yet confirmed\n\n---\n\n## Sources\n- `notes/acme-notes.md` — 3 events extracted\n- `contracts/acme-contract.md` — 1 event extracted\n```","tags":["legal","matter","tracker","claude","skills","kit","kirkruglov","agent-skills","agentic-skills","ai-agents","ai-skills","awesome-list"],"capabilities":["skill","source-kirkruglov","skill-legal-matter-tracker","topic-agent-skills","topic-agentic-skills","topic-ai-agents","topic-ai-skills","topic-awesome-list","topic-claude","topic-claude-ai","topic-claude-ai-skills","topic-claude-code","topic-claude-cowork","topic-claude-memory","topic-claude-skills"],"categories":["claude-skills-kit"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/KirKruglov/claude-skills-kit/legal-matter-tracker","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add KirKruglov/claude-skills-kit","source_repo":"https://github.com/KirKruglov/claude-skills-kit","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (7,108 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-18T19:13:37.518Z","embedding":null,"createdAt":"2026-05-18T13:21:14.921Z","updatedAt":"2026-05-18T19:13:37.518Z","lastSeenAt":"2026-05-18T19:13:37.518Z","tsv":"'-01':403,941 '-02':952 '-03':953,962,1008 '-10':963,1009 '-15':404,942 '000':959 '01/15/2025':413 '1':148,151,256,389,550,577,664,1027 '10':292 '12':958 '120':600,823 '15':407,409,845 '15.01.2025':412 '2':194,253,309,427,559,595,673 '2025':402,408,411,847,940,951,961,1007 '3':232,321,382,456,571,607,967,1023 '4':330,470,547,615 '5':493,639,662 '6':652 'accept':163,294 'acm':168,213,994 'across':786 'action':418,451,632 'activ':448,1006 'add':752,811 'ambigu':142,592 'amount':437,790 'ascend':556 'assembl':15,70,548,653 'associ':423,461 'backtick':614 'broader':345 'build':572,616,640 'case':12,31,37,88,156,165,192,207,210,278,305,719,866 'case-insensit':277 'char':601,824 'chat':672 'check':348 'chronolog':17,73,555,857,935 'claim':949 'client':10,34,38,59,86,108,154,205,304,693,698,702,715,945,996 'client-slug':692,697,714 'client/case':263,868,912 'close':446 'code':190 'collect':463 'column':576,594,606,818 'compani':187 'complet':667,966 'concis':597 'confirm':710,1020 'conflict':784,814 'consult':944 'contain':125,271,283,397,481,519 'content':280 'context':308 'contract':954 'contracts/acme-contract.md':960,1026 'corp':169,214,995 'could':510 'counsel':985,1001 'count':322,648 'cowork':51 'criteria':267 'cyril':126 'date':64,391,400,426,462,553,578,587,593,740,759,840,937,977 'dd':584,855,918 'decis':416 'dedupl':736 'default':143 'descript':598,822 'detect':113,114,432 'differ':789 'discard':469 'discoveri':964,1012 'display':665,859 'disput':948 'document':969,1013 'e.g':788,844 'edg':718 'empti':479,517,906 'en':201,337,502 'en/ru':874 'end':566 'engag':956 'english':131,140,145 'entir':76 'entiti':430,623 'entri':466,562,746,750,763,973,974,982 'event':20,65,384,392,417,476,500,513,554,596,651,729,737,760,794,800,817,821,897,925,938,1024,1028 'everi':728 'exampl':209 'explicit':399,739 'extern':25,82 'extract':63,152,383,390,428,487,512,622,650,896,926,976,1025,1029 'fact':23,68,415,488,619,785,991 'fee':957,1016 'file':54,79,259,282,295,324,328,334,339,352,388,473,477,497,505,514,570,638,646,682,721,726,743,787,881,885,892,919,923,981 'filenam':268,270,609,733 'first':291,558 'flag':813 'folder':8,92,238,300,312,319,768,776,933 'footnot':836 'form':164 'format':579,590,659,841,861,909 'found':329,335,340,503,626,636,761,882,886,893 'full':250,655,832 'generat':230,379,904,914 'group':560 'guidanc':890 'head':288 'header':783 'histori':39 'hyphen':709 'identifi':193,970 'includ':723,744,830 'indic':444 'inform':422,899 'initi':943 'inlin':103,670 'input':85,150,306 'insensit':279 'instruct':146 'integr':26,83 'invoic':1017 'ip':947 'iso':401,586 'item':419,452,631,633,1011 'januari':406 'k':927 'key':22,67,421,429,618,968,990 'label':727 'languag':112,118,137 'last':1005 'latin':135 'latin-script':134 'legal':2,43,61 'legal-matter-track':1 'line':293,393,458 'list':643,795 'llp':988,999 'local':6,50,78 'long':820 'lowercas':704 'm':924 'markdown':100 'match':261,269,281,327,333,341,387,496,507,645,722,725,742,880,922 'matter':3,29,40,44,62,172,627,910,1002 'max':599 'may':184,515 'md':297 'messag':121,162,873,887,900 'mm':583,854,917 'monetari':440 'multipl':720 'n':504,525,921 'name':13,89,157,183,197,208,264,276,285,289,342,361,434,508,530,703,869,913 'narrow':95,241,771 'need':605 'negat':865 'normalis':850 'note':245,303,489,754,778 'notes/acme-notes.md':950,971,989,1022 'oldest':557 'open':445,454,630,1004,1010 'open/closed/unknown':629 'oppos':984,1000 'option':91,104 'order':567,978 'organis':436 'origin':860 'otherwis':247 'output':98,231,307,380,658,663,878,908 'output/matter-timeline-':107,691,713 'paragraph':395 'pars':149,848 'parti':433,624,993 'partial':877 'partner':987,998 'path':93,239,313,612,769,934 'pend':447,1014 'peopl':435 'percentag':441 'person':188 'phase':965 'pleas':202 'present':946 'preserv':588 'project':189 'provid':199,203,236,315,767,870 'quantiti':442 'question':455,635 'recurs':320,777 'refer':806 'relat':55,611 'relev':351 'replac':707 'report':41,75,102,656,669,782 'request':111 'requir':27,84,90 'resolv':809 'respect':804 'respond':127,138 'return':200,336,501,871,883,898 'review':1015 'root':302,931 'ru':215,357,523,684 'russian':123,129,843 'save':105,678,680,711 'say':677 'scan':5,48,96,243,248,254,316,325,772,773,779,920,928 'scope':97,244,780,929 'script':136 'search':257,299,889 'section':751 'see':657 'separ':563 'sign':955 'silent':810 'skill':47 'skill-legal-matter-tracker' 'skip':492 'slug':694,699,716 'smith':171,986,997 'sort':551,858 'sourc':569,608,642,732,805,939,980,983,1021 'source-kirkruglov' 'space':706 'specifi':58,932 'status':443,628,1003 'step':147,252,381,546,661 'stop':227,376,545,875,891,901 'structur':72,99 'summari':42,620,992 'tabl':575,801,829,839,864 'term':346 'text':484,522,833 'timelin':18,32,35,74,101,166,211,549,574,668,907,911,936 'top':757 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agents' 'topic-ai-skills' 'topic-awesome-list' 'topic-claude' 'topic-claude-ai' 'topic-claude-ai-skills' 'topic-claude-code' 'topic-claude-cowork' 'topic-claude-memory' 'topic-claude-skills' 'total':323 'track':33,170 'tracker':4,30,45 'tri':343 'trigger':28 'truncat':602,825 'txt':298 'type':296 'undat':465,561,749,765,972 'unstructur':483,521 'usag':872 'use':265,621 'user':116,160,235,676,766 'valu':439 'version':797 'without':975 'word':273 'workspac':7,52,251,255,301,356,930 'write':689 'written':405,589 'yet':1019 'yield':474,498 'yyyi':582,853,916 'yyyy-mm-dd':581,852,915 'yyyy-mm-dd.md':109,695,717 'zero':475,499 'более':365 'было':178 'быть':538 'в':374,687 'воркспейсе':375 'дела':221 'делу':175,225 'есть':373 'закрыто':449 'запрос':367 'запросу':360,529 'иванов':176 'извлечь':532 'или':219,368,540 'имя':217 'клиента':218 'клиенту':180 'могут':537 'название':220 'найдено':363,524 'не':362,534 'неструктурированный':543 'но':531 'нужные':371 'ов':527 'открыто':450 'по':174,179,224,359,528 'попробуйте':364 'пример':222 'проверьте':369 'пустыми':539 'ромашка':181,226 'события':533 'содержать':541 'сохрани':685,686 'текст':544 'только':542 'удалось':535 'укажите':216 'файл':526,688 'файлов':358 'файлы':372,536 'хронология':173,223 'что':177,370 'широкий':366 'января':410,846","prices":[{"id":"b6bad2c6-469d-4298-96a8-041e0d5005a4","listingId":"658134e6-7872-470a-a7b9-f6093104f41b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"KirKruglov","category":"claude-skills-kit","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:14.921Z"}],"sources":[{"listingId":"658134e6-7872-470a-a7b9-f6093104f41b","source":"github","sourceId":"KirKruglov/claude-skills-kit/legal-matter-tracker","sourceUrl":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/legal-matter-tracker","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:14.921Z","lastSeenAt":"2026-05-18T19:13:37.518Z"}],"details":{"listingId":"658134e6-7872-470a-a7b9-f6093104f41b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"KirKruglov","slug":"legal-matter-tracker","github":{"repo":"KirKruglov/claude-skills-kit","stars":7,"topics":["agent-skills","agentic-skills","ai","ai-agents","ai-skills","awesome-list","claude","claude-ai","claude-ai-skills","claude-code","claude-cowork","claude-memory","claude-skills","memory-management","productivity","productivity-tools","project-management"],"license":"mit","html_url":"https://github.com/KirKruglov/claude-skills-kit","pushed_at":"2026-05-18T04:27:46Z","description":"40+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation","skill_md_sha":"53b0abf1f93bf29edcf5cc50df77e9b6ae78dd65","skill_md_path":"skills/legal-matter-tracker/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/legal-matter-tracker"},"layout":"multi","source":"github","category":"claude-skills-kit","frontmatter":{"name":"legal-matter-tracker","description":"Scan local workspace folders by client or case name and assemble a chronological timeline of events with key facts. No external integrations required. Triggers: 'matter tracker', 'case timeline', 'track [client]', 'timeline for [case]', 'client history', 'matter report', 'summarize [client] matter', 'трекер дела', 'хронология дела', 'история клиента', 'что было по [клиент]', 'отчёт по делу', 'хронология событий по [клиент/дело]'."},"skills_sh_url":"https://skills.sh/KirKruglov/claude-skills-kit/legal-matter-tracker"},"updatedAt":"2026-05-18T19:13:37.518Z"}}