{"id":"f005e52a-8f47-43de-b02c-01a65e64fbf6","shortId":"Crq2pa","kind":"skill","title":"changelog-narrator","tagline":"Compare two document versions and produce a structured changelog — no git needed. Use for PRDs, SOPs, contracts, strategy docs. Triggers: 'compare these two documents', 'what changed between versions', 'generate a changelog', 'сравни две версии документа', 'что изменилось', 'сдел","description":"# Changelog Narrator\n\nThis skill compares two versions of a business document and produces a structured, human-readable changelog — without git, CLI, or \"Track Changes\". Designed for non-technical users who receive updated drafts and need to understand what changed at a glance.\n\n**Input:**\n- Two local files (`.md` or `.txt`) in the Cowork workspace — old version (v1) and new version (v2)\n- Optional: version labels if filenames are ambiguous; optional focus area (e.g., \"only compare Section 3\")\n\n**Output:**\n- Markdown changelog: Summary → Added → Removed → Modified → Notes\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: respond in the language of the trigger phrase used\n\n---\n\n## Instructions\n\n### Step 1: Identify and Validate Files\n\n1. Check that exactly two files are provided\n   - If only one file is given: stop — \"Two documents are required. Please provide both the old version (v1) and the new version (v2).\"\n   - If no files are given: scan the Cowork workspace for `.md` and `.txt` files; list them and ask the user to specify which two to compare\n\n2. Read both files\n   - If a file is unreadable (binary, corrupted, unsupported format): stop — \"Could not read [filename]. changelog-narrator works with .md and .txt files only.\"\n\n3. Determine version order (which is v1, which is v2)\n   - Infer from filename markers: `v1`/`v2`, `old`/`new`, `draft`/`final`, date suffixes (earlier date = v1)\n   - If version order is ambiguous (e.g., `strategy-a.md` vs `strategy-b.md`): ask — \"Which file is the older version?\" — do not guess\n\n### Step 2: Split Documents into Comparable Units\n\n1. Segment each document into logical units:\n   - H1/H2/H3 headings → use as section labels\n   - Paragraphs under each heading → compare as blocks\n   - Numbered or bulleted list items → compare as individual items\n   - Table rows → compare row by row\n\n2. Build a section map for each document:\n   - Key: section heading (or \"Intro\" for content before the first heading)\n   - Value: list of content units under that heading\n\n3. If user specified a focus area (e.g., \"only Section 3\" or \"only the Risks section\"):\n   - Filter both maps to matching section only\n   - Note in output: \"Comparison limited to: [Section Name]\"\n\n### Step 3: Compare and Classify Changes\n\n1. Align sections by heading label across v1 and v2\n2. For each content unit, classify:\n   - **Added**: present in v2 but absent in v1\n   - **Removed**: present in v1 but absent in v2\n   - **Modified**: present in both, but content differs\n   - **Unchanged**: identical in both → do NOT include in output\n\n3. For **Modified** items:\n   - Describe the change briefly: what was the key shift? (e.g., \"Timeline changed from Q2 to Q3\", \"Metric updated from 10% to 15%\", \"Scope narrowed from 5 to 3 segments\")\n   - Do NOT reprint full paragraphs from both versions\n   - If the change is structural (section renamed, split, merged): flag as Modified with note \"Section restructured\"\n\n4. For tables:\n   - Compare rows as discrete units — flag each added/removed/modified row individually\n   - Do not collapse entire table into a single \"Modified\" entry\n\n**Edge Cases:**\n- Files are identical: output \"No changes detected between [v1] and [v2].\" Do not produce an empty changelog.\n- Section exists in v2 but not in v1 → entire section is Added\n- Section exists in v1 but not in v2 → entire section is Removed\n\n### Step 4: Write Summary\n\nWrite 2–3 sentences capturing:\n- Overall scope of changes (how many sections affected, what type of changes dominate)\n- The apparent intent behind the changes (e.g., \"Scope was narrowed\", \"Risks section significantly expanded\", \"Timelines shifted across the board\")\n- Avoid generic statements — reference specific sections or patterns\n\n### Step 5: Format and Output Changelog\n\n1. Assemble the changelog using the Output Format structure below\n2. Populate each section: Added, Removed, Modified — each with N (count)\n3. Skip any section with 0 entries (e.g., if nothing was removed, omit \"Removed\")\n4. Add Notes section for all assumptions about version order, skipped content, focus-area limitations, table handling\n\n---\n\n## Negative Cases\n\n- **Only one file provided:** Stop — \"Two documents are required. Please provide both the old version (v1) and the new version (v2).\"\n- **No files found in workspace:** Stop — \"No files found. Please upload your document versions or confirm they're in the selected Cowork folder, then try again.\"\n- **File is binary/unreadable:** Stop — \"Could not read [filename]. changelog-narrator works with .md and .txt files only.\"\n- **More than two files provided:** Clarify — \"I can compare two versions at a time. Please specify which two to compare first. You can run the skill again for additional pairs.\"\n- **User asks for visual/side-by-side diff:** Explain — \"I produce a structured text changelog. For a visual side-by-side diff, paste both files into a tool like Diffchecker.com.\"\n\n---\n\n## Output Format\n\n```markdown\n## Changelog: [Document Title] — [v1 filename] → [v2 filename]\n\n**Compared:** `[filename-v1]` vs `[filename-v2]`\n**Date:** [YYYY-MM-DD]\n\n### Summary\n[2–3 sentences: overall scope and intent of changes — specific sections and patterns, not generic phrasing]\n\n---\n\n### Added (N)\n\n- **[Section / Heading]:** [Brief description of what was added]\n- **[Section / Heading]:** [Brief description of what was added]\n\n### Removed (N)\n\n- **[Section / Heading]:** [Brief description of what was removed]\n\n### Modified (N)\n\n- **[Section / Heading]:** [Key change — e.g., \"Timeline extended from Q2 to Q3\"; \"Success metric changed from 10% to 15% retention\"]\n- **[Section / Heading → Sub-item]:** [Brief description]\n\n---\n\n### Notes\n- [Assumption: e.g., \"Treated `strategy-a.md` as v1 based on earlier file modification date\"]\n- [Flag: e.g., \"Table in Section 4 had 3 rows added — listed under Added separately\"]\n- [Scope note: e.g., \"Comparison limited to Section 3 as requested\"]\n```","tags":["changelog","narrator","claude","skills","kit","kirkruglov","agent-skills","agentic-skills","ai-agents","ai-skills","awesome-list","claude-ai"],"capabilities":["skill","source-kirkruglov","skill-changelog-narrator","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/changelog-narrator","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 (6,083 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:36.239Z","embedding":null,"createdAt":"2026-05-18T13:21:13.392Z","updatedAt":"2026-05-18T19:13:36.239Z","lastSeenAt":"2026-05-18T19:13:36.239Z","tsv":"'0':661 '1':169,174,310,409,635 '10':480,898 '15':482,900 '2':231,304,345,419,585,645,837 '3':118,259,372,382,404,457,488,586,656,838,929,943 '4':514,581,670,927 '5':486,630 'absent':430,438 'across':415,618 'ad':123,425,567,649,853,862,870,931,934 'add':671 'added/removed/modified':524 'addit':783 'affect':596 'align':410 'ambigu':110,157,288 'appar':603 'area':113,378,684 'ask':222,293,786 'assembl':636 'assumpt':676,910 'avoid':621 'base':916 'behind':605 'binari':240 'binary/unreadable':739 'block':329 'board':620 'brief':857,865,875,907 'briefli':464 'build':346 'bullet':332 'busi':51 'captur':588 'case':538,689 'chang':29,66,82,408,463,472,500,544,592,600,607,845,886,896 'changelog':2,12,34,42,60,121,250,555,634,638,746,796,816 'changelog-narr':1,249,745 'check':175 'clarifi':760 'classifi':407,424 'cli':63 'collaps':529 'compar':4,24,46,116,230,308,327,335,341,405,517,763,774,823 'comparison':398,939 'confirm':726 'contain':140 'content':359,367,422,446,681 'contract':20 'corrupt':241 'could':245,741 'count':655 'cowork':95,212,732 'cyril':141 'date':279,282,831,921 'dd':835 'describ':461 'descript':858,866,876,908 'design':67 'detect':128,129,545 'determin':260 'diff':789,804 'diffchecker.com':812 'differ':447 'discret':520 'doc':22 'document':6,27,52,190,306,313,352,696,723,817 'domin':601 'draft':76,277 'e.g':114,289,379,470,608,663,887,911,923,938 'earlier':281,918 'edg':537 'empti':554 'english':146,155 'entir':530,564,576 'entri':536,662 'exact':177 'exist':557,569 'expand':615 'explain':790 'extend':889 'file':89,173,179,185,207,218,234,237,257,295,539,692,712,718,737,753,758,807,919 'filenam':108,248,271,744,820,822,825,829 'filename-v1':824 'filename-v2':828 'filter':388 'final':278 'first':362,775 'flag':507,522,922 'focus':112,377,683 'focus-area':682 'folder':733 'format':243,631,642,814 'found':713,719 'full':493 'generat':32 'generic':622,851 'git':14,62 'given':187,209 'glanc':85 'guess':302 'h1/h2/h3':317 'handl':687 'head':318,326,355,363,371,413,856,864,874,884,903 'human':58 'human-read':57 'ident':449,541 'identifi':170 'includ':454 'individu':337,526 'infer':269 'input':86 'instruct':167 'intent':604,843 'intro':357 'item':334,338,460,906 'key':353,468,885 'label':106,322,414 'languag':127,133,152,161 'latin':150 'latin-script':149 'like':811 'limit':399,685,940 'list':219,333,365,932 'local':88 'logic':315 'mani':594 'map':349,390 'markdown':120,815 'marker':272 'match':392 'md':90,215,254,750 'merg':506 'messag':136 'metric':477,895 'mm':834 'modif':920 'modifi':125,441,459,509,535,651,881 'n':654,854,872,882 'name':402 'narrat':3,43,251,747 'narrow':484,611 'need':15,78 'negat':688 'new':101,202,276,708 'non':70 'non-techn':69 'note':126,395,511,672,909,937 'noth':665 'number':330 'old':97,197,275,703 'older':298 'omit':668 'one':184,691 'option':104,111 'order':262,286,679 'output':119,397,456,542,633,641,813 'overal':589,840 'pair':784 'paragraph':323,494 'past':805 'pattern':628,849 'phrase':165,852 'pleas':193,699,720,769 'popul':646 'prds':18 'present':426,434,442 'produc':9,54,552,792 'provid':181,194,693,700,759 'q2':474,891 'q3':476,893 're':728 'read':232,247,743 'readabl':59 'receiv':74 'refer':624 'remov':124,433,579,650,667,669,871,880 'renam':504 'reprint':492 'request':945 'requir':192,698 'respond':142,153,158 'restructur':513 'retent':901 'risk':386,612 'row':340,342,344,518,525,930 'run':778 'russian':138,144 'scan':210 'scope':483,590,609,841,936 'script':151 'section':117,321,348,354,381,387,393,401,411,503,512,556,565,568,577,595,613,626,648,659,673,847,855,863,873,883,902,926,942 'segment':311,489 'select':731 'sentenc':587,839 'separ':935 'shift':469,617 'side':801,803 'side-by-sid':800 'signific':614 'singl':534 'skill':45,780 'skill-changelog-narrator' 'skip':657,680 'sop':19 'source-kirkruglov' 'specif':625,846 'specifi':226,375,770 'split':305,505 'statement':623 'step':168,303,403,580,629 'stop':188,244,694,716,740 'strategi':21 'strategy-a.md':290,913 'strategy-b.md':292 'structur':11,56,502,643,794 'sub':905 'sub-item':904 'success':894 'suffix':280 'summari':122,583,836 'tabl':339,516,531,686,924 'technic':71 'text':795 'time':768 'timelin':471,616,888 'titl':818 'tool':810 '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' 'track':65 'treat':912 'tri':735 'trigger':23,164 'two':5,26,47,87,178,189,228,695,757,764,772 'txt':92,217,256,752 'type':598 'unchang':448 'understand':80 'unit':309,316,368,423,521 'unread':239 'unsupport':242 'updat':75,478 'upload':721 'use':16,166,319,639 'user':72,131,224,374,785 'v1':99,199,265,273,283,416,432,436,547,563,571,705,819,826,915 'v2':103,204,268,274,418,428,440,549,559,575,710,821,830 'valid':172 'valu':364 'version':7,31,48,98,102,105,198,203,261,285,299,497,678,704,709,724,765 'visual':799 'visual/side-by-side':788 'vs':291,827 'without':61 'work':252,748 'workspac':96,213,715 'write':582,584 'yyyi':833 'yyyy-mm-dd':832 'версии':37 'две':36 'документа':38 'изменилось':40 'сдел':41 'сравни':35 'что':39","prices":[{"id":"6406cf95-eb04-4b8e-87c9-9b494ca2fa8a","listingId":"f005e52a-8f47-43de-b02c-01a65e64fbf6","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:13.392Z"}],"sources":[{"listingId":"f005e52a-8f47-43de-b02c-01a65e64fbf6","source":"github","sourceId":"KirKruglov/claude-skills-kit/changelog-narrator","sourceUrl":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/changelog-narrator","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:13.392Z","lastSeenAt":"2026-05-18T19:13:36.239Z"}],"details":{"listingId":"f005e52a-8f47-43de-b02c-01a65e64fbf6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"KirKruglov","slug":"changelog-narrator","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":"8c8c0e73623e3a8aadb3fed02a05151e70d5b418","skill_md_path":"skills/changelog-narrator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/changelog-narrator"},"layout":"multi","source":"github","category":"claude-skills-kit","frontmatter":{"name":"changelog-narrator","description":"Compare two document versions and produce a structured changelog — no git needed. Use for PRDs, SOPs, contracts, strategy docs. Triggers: 'compare these two documents', 'what changed between versions', 'generate a changelog', 'сравни две версии документа', 'что изменилось', 'сделай changelog'."},"skills_sh_url":"https://skills.sh/KirKruglov/claude-skills-kit/changelog-narrator"},"updatedAt":"2026-05-18T19:13:36.239Z"}}