[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AMF4WTDZXZP15JFPP43DV":3,"skill-same:01M71AMF4WTDZXZP15JFPP43DV":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":68},"01M71AMF4WTDZXZP15JFPP43DV","mkdocs-changelog",null,"Analyse doc changes since the last CHANGELOG.md update and draft a major-change entry if the changes qualify.","jeckyl2010\u002Fmkdocs2confluence","jeckyl2010","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10536856?v=4","01M71AMB9980D4VC6M08Z3WVC1","Anders Hybertz","01M71AMBA1XFEQ87KC22YF5B2V",10,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftooling\u002Fmkdocs-changelog\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"mkdocs","changelog","mkdocs changelog","confluence","context","doc","git","entry","update","analyse","changes","change","last","documentation","draft","true","qualify","2026-11-10 10:12:30",false,"---\nname: mkdocs-changelog\ndescription: Analyse doc changes since the last CHANGELOG.md update and draft a major-change entry if the changes qualify.\nversion: \"1.4.0\"\ntags: [documentation, git, changelog, mkdocs, confluence]\nspecificity: context-specific\ntool_agnostic: true\nauthors: [Anders Hybertz]\ntested_on: []\n---\n\n# MkDocs Changelog Entry\n\nAnalyse git changes to the docs directory since the last `CHANGELOG.md` commit. If any changes qualify as **MAJOR**, draft a dated changelog entry in the collapsible format and prepend it to `CHANGELOG.md`. If not, explain why and exit without modifying any file.\n\n## When to Use\n\n- After making one or more documentation changes and before running `mk2conf publish`\n- Any point in the writing flow when you want to assess whether a \"What's New\" entry is warranted\n\n## Steps\n\n1. **Extract git data** — run the bundled data script to get structured, deterministic input:\n\n   Normal update (since last CHANGELOG.md commit):\n   ```\n   python .mk2conf\u002Fscripts\u002Fchangelog_data.py --docs-dir \u003Cdocs_dir>\n   ```\n\n   Initial changelog (from a specific date):\n   ```\n   python .mk2conf\u002Fscripts\u002Fchangelog_data.py --docs-dir \u003Cdocs_dir> --since YYYY-MM-DD\n   ```\n\n   The script prints a JSON object to stdout. Use this as your sole source of truth for\n   commits, changed files, and contributors. Do not run git commands yourself.\n\n   If the script is missing, tell the user to run `mk2conf install-skill` first.\n\n   When `--since` is used, the JSON will contain `\"mode\": \"since_date\"`. Use this to\n   trigger the initial changelog flow described below.\n\n2. **Read the existing changelog** — read `\u003Cdocs_dir>\u002FCHANGELOG.md` for context on what\n   was previously recorded.\n\n3. **Decide: is this MAJOR?**\n\n   **MAJOR criteria — any one of these qualifies:**\n   - A new top-level documentation area or section added (a new folder or nav section that didn't exist before)\n   - A significant area deleted or substantially restructured (not just moved or renamed)\n   - A fundamental definition, concept, or policy changed in a way that affects how readers understand the subject\n\n   **NOT major — do not draft an entry for:**\n   - Typo fixes, grammar corrections, spelling\n   - Formatting, diagram adjustments, image swaps\n   - Small additions (a paragraph, a note, a clarification) that do not change the substance\n   - Rewordings that preserve the original meaning\n   - Internal restructuring with no reader-facing impact\n\n4. **If NOT MAJOR** — report what was found, explain in one sentence why it did not qualify,\n   and stop. Do not modify any file.\n\n5. **If MAJOR** — draft an entry using the collapsible format below and prepend it to\n   `CHANGELOG.md`. The previous latest entry (if any) must be converted from `???+` to `???`\n   so only the new entry is expanded by default.\n\n## Linking to changed pages\n\nThe `changes` object in the script JSON now includes `{\"path\": \"...\", \"title\": \"...\"}` for\neach file. Use this to link readers directly to the most relevant pages — but only where\nit adds value and reads naturally.\n\nRules:\n\n- **Select, don't list.** Pick at most two or three files per entry — the ones a reader\n  would actually want to visit. Omit files that are supporting material (images, assets,\n  index stubs, nav-only pages).\n- **Weave into prose**, not as a separate list. Example:\n\n  Good: `Updated the [Configuration reference](configuration\u002Findex.md) to cover the new auth options.`\n  Bad: `Updated configuration\u002Findex.md. See also: getting-started.md, reference.md.`\n\n- **Use `title` as link text** when it reads naturally. Fall back to a short descriptive\n  phrase if the title is too long or too generic (e.g. \"Overview\", \"Index\").\n- **Paths are relative to `docs_dir`**, and `CHANGELOG.md` lives at the root of `docs_dir`.\n  A file at `docs\u002Fconfiguration\u002Findex.md` links as `configuration\u002Findex.md`.\n- **Deleted pages** — do not link to them. Name them in prose without a link.\n- **Skip linking entirely** if the change is a typo fix, formatting pass, or other\n  non-substantive update — linking draws attention and signals importance.\n\n## Entry format\n\nThe latest entry uses `???+` (expanded by default on Material, always visible on Confluence).\nAll older entries use `???` (collapsed, showing only the date and title as the trigger).\n\n```markdown\n???+ note \"YYYY-MM-DD — Brief title describing the major change\"\n\n    ### Added\n    - …\n\n    ### Changed\n    - …\n\n    ### Deprecated\n    - …\n\n    ### Removed\n    - …\n\n    ### Fixed\n    - …\n\n    ### Security\n    - …\n\n    Contributors: Name One, Name Two\n```\n\nRules for the entry:\n\n- Date is the `date` field from the script output (`YYYY-MM-DD`)\n- Title is a brief, reader-facing description — not a git commit message\n- No version numbers — dates only\n- **Include only sections that have actual content** — omit any empty section entirely\n- Section meanings: `Added` (new content), `Changed` (updated content), `Deprecated`\n  (content being phased out), `Removed` (deleted content), `Fixed` (corrected errors or\n  misleading information), `Security` (security-related documentation updates)\n- `Contributors:` line — include when the `contributors` array from the script output has\n  **more than one name**. Omit when there is only one contributor.\n- Content inside the admonition block must be indented with **4 spaces**\n- When prepending, convert the previous `???+` opener to `???` first\n\n## CHANGELOG.md structure\n\nIf `CHANGELOG.md` does not exist yet, create it with this header before the first entry:\n\n```markdown\n# Changelog\n\nAll notable changes to this documentation are recorded here.\nThe format is inspired by [Keep a Changelog](https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.1.0\u002F).\n```\n\n## Initial changelog (--since DATE)\n\nWhen the script is run with `--since` and the JSON contains `\"mode\": \"since_date\"`,\nthe user wants to bootstrap a CHANGELOG.md from scratch for a given time window.\n\nDifferent rules apply:\n\n- **Always draft** — the MAJOR threshold does not apply. This is a retrospective\n  summary, not an incremental gate.\n- **Group by theme**, not by individual commit. Synthesise the changed files and\n  commit subjects into meaningful categories.\n- **Date range in the title** — use the `since` value from the JSON as the start\n  and `date` as the end, e.g. `2026-05-01 → 2026-05-27`.\n- **If CHANGELOG.md already exists**, stop and ask the user whether they want to\n  prepend, append, or replace. Do not overwrite silently.\n- **If CHANGELOG.md does not exist**, create it with the standard header and the\n  entry as `???+`.\n\nExample title: `2026-05-01 → 2026-05-27 — Initial documentation release`\n\n## Pitfalls\n\n- **Do not draft an entry for every change.** The changelog is for readers who want to know\n  what fundamentally changed — not a git log. When in doubt, do not draft.\n- **Do not commit.** Always leave the file for the user to review. The user runs `git add`\n  and `git commit` themselves before publishing.\n- **The script is the only source of git data.** Do not interpret commit messages or diffs\n  yourself — the script output is deterministic and already scoped to the docs directory.\n- **4-space indent is required** inside the admonition block. 2-space or tab indent will\n  break both Material rendering and the Confluence compile step.\n\n## Verification\n\nAfter drafting, show the user the proposed entry in the terminal and remind them to review\n`CHANGELOG.md` before committing and running `mk2conf publish`.\n","# MkDocs Changelog Entry\n\nAnalyse git changes to the docs directory since the last `CHANGELOG.md` commit. If any changes qualify as **MAJOR**, draft a dated changelog entry in the collapsible format and prepend it to `CHANGELOG.md`. If not, explain why and exit without modifying any file.\n\n## When to Use\n\n- After making one or more documentation changes and before running `mk2conf publish`\n- Any point in the writing flow when you want to assess whether a \"What's New\" entry is warranted\n\n## Steps\n\n1. **Extract git data** — run the bundled data script to get structured, deterministic input:\n\n   Normal update (since last CHANGELOG.md commit):\n   ```\n   python .mk2conf\u002Fscripts\u002Fchangelog_data.py --docs-dir \u003Cdocs_dir>\n   ```\n\n   Initial changelog (from a specific date):\n   ```\n   python .mk2conf\u002Fscripts\u002Fchangelog_data.py --docs-dir \u003Cdocs_dir> --since YYYY-MM-DD\n   ```\n\n   The script prints a JSON object to stdout. Use this as your sole source of truth for\n   commits, changed files, and contributors. Do not run git commands yourself.\n\n   If the script is missing, tell the user to run `mk2conf install-skill` first.\n\n   When `--since` is used, the JSON will contain `\"mode\": \"since_date\"`. Use this to\n   trigger the initial changelog flow described below.\n\n2. **Read the existing changelog** — read `\u003Cdocs_dir>\u002FCHANGELOG.md` for context on what\n   was previously recorded.\n\n3. **Decide: is this MAJOR?**\n\n   **MAJOR criteria — any one of these qualifies:**\n   - A new top-level documentation area or section added (a new folder or nav section that didn't exist before)\n   - A significant area deleted or substantially restructured (not just moved or renamed)\n   - A fundamental definition, concept, or policy changed in a way that affects how readers understand the subject\n\n   **NOT major — do not draft an entry for:**\n   - Typo fixes, grammar corrections, spelling\n   - Formatting, diagram adjustments, image swaps\n   - Small additions (a paragraph, a note, a clarification) that do not change the substance\n   - Rewordings that preserve the original meaning\n   - Internal restructuring with no reader-facing impact\n\n4. **If NOT MAJOR** — report what was found, explain in one sentence why it did not qualify,\n   and stop. Do not modify any file.\n\n5. **If MAJOR** — draft an entry using the collapsible format below and prepend it to\n   `CHANGELOG.md`. The previous latest entry (if any) must be converted from `???+` to `???`\n   so only the new entry is expanded by default.\n\n## Linking to changed pages\n\nThe `changes` object in the script JSON now includes `{\"path\": \"...\", \"title\": \"...\"}` for\neach file. Use this to link readers directly to the most relevant pages — but only where\nit adds value and reads naturally.\n\nRules:\n\n- **Select, don't list.** Pick at most two or three files per entry — the ones a reader\n  would actually want to visit. Omit files that are supporting material (images, assets,\n  index stubs, nav-only pages).\n- **Weave into prose**, not as a separate list. Example:\n\n  Good: `Updated the [Configuration reference](configuration\u002Findex.md) to cover the new auth options.`\n  Bad: `Updated configuration\u002Findex.md. See also: getting-started.md, reference.md.`\n\n- **Use `title` as link text** when it reads naturally. Fall back to a short descriptive\n  phrase if the title is too long or too generic (e.g. \"Overview\", \"Index\").\n- **Paths are relative to `docs_dir`**, and `CHANGELOG.md` lives at the root of `docs_dir`.\n  A file at `docs\u002Fconfiguration\u002Findex.md` links as `configuration\u002Findex.md`.\n- **Deleted pages** — do not link to them. Name them in prose without a link.\n- **Skip linking entirely** if the change is a typo fix, formatting pass, or other\n  non-substantive update — linking draws attention and signals importance.\n\n## Entry format\n\nThe latest entry uses `???+` (expanded by default on Material, always visible on Confluence).\nAll older entries use `???` (collapsed, showing only the date and title as the trigger).\n\n```markdown\n???+ note \"YYYY-MM-DD — Brief title describing the major change\"\n\n    ### Added\n    - …\n\n    ### Changed\n    - …\n\n    ### Deprecated\n    - …\n\n    ### Removed\n    - …\n\n    ### Fixed\n    - …\n\n    ### Security\n    - …\n\n    Contributors: Name One, Name Two\n```\n\nRules for the entry:\n\n- Date is the `date` field from the script output (`YYYY-MM-DD`)\n- Title is a brief, reader-facing description — not a git commit message\n- No version numbers — dates only\n- **Include only sections that have actual content** — omit any empty section entirely\n- Section meanings: `Added` (new content), `Changed` (updated content), `Deprecated`\n  (content being phased out), `Removed` (deleted content), `Fixed` (corrected errors or\n  misleading information), `Security` (security-related documentation updates)\n- `Contributors:` line — include when the `contributors` array from the script output has\n  **more than one name**. Omit when there is only one contributor.\n- Content inside the admonition block must be indented with **4 spaces**\n- When prepending, convert the previous `???+` opener to `???` first\n\n## CHANGELOG.md structure\n\nIf `CHANGELOG.md` does not exist yet, create it with this header before the first entry:\n\n```markdown\n# Changelog\n\nAll notable changes to this documentation are recorded here.\nThe format is inspired by [Keep a Changelog](https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.1.0\u002F).\n```\n\n## Initial changelog (--since DATE)\n\nWhen the script is run with `--since` and the JSON contains `\"mode\": \"since_date\"`,\nthe user wants to bootstrap a CHANGELOG.md from scratch for a given time window.\n\nDifferent rules apply:\n\n- **Always draft** — the MAJOR threshold does not apply. This is a retrospective\n  summary, not an incremental gate.\n- **Group by theme**, not by individual commit. Synthesise the changed files and\n  commit subjects into meaningful categories.\n- **Date range in the title** — use the `since` value from the JSON as the start\n  and `date` as the end, e.g. `2026-05-01 → 2026-05-27`.\n- **If CHANGELOG.md already exists**, stop and ask the user whether they want to\n  prepend, append, or replace. Do not overwrite silently.\n- **If CHANGELOG.md does not exist**, create it with the standard header and the\n  entry as `???+`.\n\nExample title: `2026-05-01 → 2026-05-27 — Initial documentation release`\n\n## Pitfalls\n\n- **Do not draft an entry for every change.** The changelog is for readers who want to know\n  what fundamentally changed — not a git log. When in doubt, do not draft.\n- **Do not commit.** Always leave the file for the user to review. The user runs `git add`\n  and `git commit` themselves before publishing.\n- **The script is the only source of git data.** Do not interpret commit messages or diffs\n  yourself — the script output is deterministic and already scoped to the docs directory.\n- **4-space indent is required** inside the admonition block. 2-space or tab indent will\n  break both Material rendering and the Confluence compile step.\n\n## Verification\n\nAfter drafting, show the user the proposed entry in the terminal and remind them to review\n`CHANGELOG.md` before committing and running `mk2conf publish`.\n",{"name":5,"tags":41,"authors":42,"version":43,"tested_on":44,"description":7,"specificity":45,"tool_agnostic":46},[32,25,20,19,22],[12],"1.4.0",[],"context-specific",true,"main","12f3b074d6c160fc35b0c6e19ea4cea667670ead",".github\u002Fskills\u002Ftooling\u002Fmkdocs-changelog",0,"https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence","https:\u002F\u002Fgithub.com\u002Fjeckyl2010","www.comtechconsulting.dk","Software Ranger","2026-11-11 04:10:53",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":46},[58,61,64],{"tool":59,"command":60},"npx","npx skills add jeckyl2010\u002Fmkdocs2confluence --skill mkdocs-changelog",{"tool":62,"command":63},"bunx","bunx skills add jeckyl2010\u002Fmkdocs2confluence --skill mkdocs-changelog",{"tool":65,"command":66},"pnpm","pnpm dlx skills add jeckyl2010\u002Fmkdocs2confluence --skill mkdocs-changelog","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftooling\u002Fmkdocs-changelog\u002FSKILL.md",[],[70,75,81],{"skillNo":71,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":36},"01M71AMGXM1SAD2KGWNMXJ5E14","https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence\u002Fblob\u002Fmain\u002Fsrc\u002Fmkdocs_to_confluence\u002Fskills\u002Fmkdocs-changelog\u002FSKILL.md",[],[21,19,20,34,22,23,24,25,26,27,28,29,30,31,32,33,35],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":36},"01M71AME63W720YNYP6QAZ25E2","release","https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Frelease\u002FSKILL.md",[],[77],{"skillNo":82,"name":77,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":36},"01M71AMCZN3WEJY405Z3HH611G","Run pre-release quality checks and cut a tagged GitHub release for mkdocs2confluence.","https:\u002F\u002Fgithub.com\u002Fjeckyl2010\u002Fmkdocs2confluence\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease\u002FSKILL.md",[],[77,87,88,89,90,91,92,93],"github release","tagged","quality","cut","run","github","for"]