[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FE1BA88VC6XFAF27BWFQJX":3,"skill-same:01M6FE1BA88VC6XFAF27BWFQJX":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6FE1BA88VC6XFAF27BWFQJX","release-changelog",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fpaperclipai\u002Fpaperclip\u002Frelease-changelog\u002FSKILL.md",[],[18,19,20],"release","release changelog","changelog","2026-11-10 10:12:30",false,"# Release Changelog Skill\n\nGenerate the user-facing changelog for the **stable** Paperclip release.\n\nOutput:\n\n- `releases\u002Fv{version}.md`\n\nImportant rule:\n\n- even if there are canary releases such as `1.2.3-canary.0`, the changelog file stays `releases\u002Fv1.2.3.md`\n\n## Step 0 — Idempotency Check\n\nBefore generating anything, check whether the file already exists:\n\n```bash\nls releases\u002Fv{version}.md 2>\u002Fdev\u002Fnull\n```\n\nIf it exists:\n\n1. read it first\n2. present it to the reviewer\n3. ask whether to keep it, regenerate it, or update specific sections\n4. never overwrite it silently\n\n## Step 1 — Determine the Stable Range\n\nFind the last stable tag:\n\n```bash\ngit tag --list 'v*' --sort=-version:refname | head -1\ngit log v{last}..HEAD --oneline --no-merges\n```\n\nThe planned stable version comes from one of:\n\n- an explicit maintainer request\n- the chosen bump type applied to the last stable tag\n- the release plan already agreed in `doc\u002FRELEASING.md`\n\nDo not derive the changelog version from a canary tag or prerelease suffix.\n\n## Step 2 — Gather the Raw Inputs\n\nCollect release data from:\n\n1. git commits since the last stable tag\n2. `.changeset\u002F*.md` files\n3. merged PRs via `gh` when available\n\nUseful commands:\n\n```bash\ngit log v{last}..HEAD --oneline --no-merges\ngit log v{last}..HEAD --format=\"%H %s\" --no-merges\nls .changeset\u002F*.md | grep -v README.md\ngh pr list --state merged --search \"merged:>={last-tag-date}\" --json number,title,body,labels\n```\n\n## Step 3 — Detect Breaking Changes\n\nLook for:\n\n- destructive migrations\n- removed or changed API fields\u002Fendpoints\n- renamed or removed config keys\n- `major` changesets\n- `BREAKING:` or `BREAKING CHANGE:` commit signals\n\nKey commands:\n\n```bash\ngit diff --name-only v{last}..HEAD -- packages\u002Fdb\u002Fsrc\u002Fmigrations\u002F\ngit diff v{last}..HEAD -- packages\u002Fdb\u002Fsrc\u002Fschema\u002F\ngit diff v{last}..HEAD -- server\u002Fsrc\u002Froutes\u002F server\u002Fsrc\u002Fapi\u002F\ngit log v{last}..HEAD --format=\"%s\" | rg -n 'BREAKING CHANGE|BREAKING:|^[a-z]+!:' || true\n```\n\nIf the requested bump is lower than the minimum required bump, flag that before the release proceeds.\n\n## Step 4 — Categorize for Users\n\nUse these stable changelog sections:\n\n- `Breaking Changes`\n- `Highlights`\n- `Improvements`\n- `Fixes`\n- `Upgrade Guide` when needed\n\nExclude purely internal refactors, CI changes, and docs-only work unless they materially affect users.\n\nGuidelines:\n\n- group related commits into one user-facing entry\n- write from the user perspective\n- keep highlights short and concrete\n- spell out upgrade actions for breaking changes\n\n### Inline PR and contributor attribution\n\nWhen a bullet item clearly maps to a merged pull request, add inline attribution at the\nend of the entry in this format:\n\n```\n- **Feature name** — Description. ([#123](https:\u002F\u002Fgithub.com\u002Fpaperclipai\u002Fpaperclip\u002Fpull\u002F123), @contributor1, @contributor2)\n```\n\nRules:\n\n- Only add a PR link when you can confidently trace the bullet to a specific merged PR.\n  Use merge commit messages (`Merge pull request #N from user\u002Fbranch`) to map PRs.\n- List the contributor(s) who authored the PR. Use GitHub usernames, not real names or emails.\n- If multiple PRs contributed to a single bullet, list them all: `([#10](url), [#12](url), @user1, @user2)`.\n- If you cannot determine the PR number or contributor with confidence, omit the attribution\n  parenthetical — do not guess.\n- Core maintainer commits that don't have an external PR can omit the parenthetical.\n\n## Step 5 — Write the File\n\nTemplate:\n\n```markdown\n# v{version}\n\n> Released: {YYYY-MM-DD}\n\n## Breaking Changes\n\n## Highlights\n\n## Improvements\n\n## Fixes\n\n## Upgrade Guide\n\n## Contributors\n\nThank you to everyone who contributed to this release!\n\n@username1, @username2, @username3\n```\n\nOmit empty sections except `Highlights`, `Improvements`, and `Fixes`, which should usually exist.\n\nThe `Contributors` section should always be included. List every person who authored\ncommits in the release range, @-mentioning them by their **GitHub username** (not their\nreal name or email). To find GitHub usernames:\n\n1. Extract usernames from merge commit messages: `git log v{last}..HEAD --oneline --merges` — the branch prefix (e.g. `from username\u002Fbranch`) gives the GitHub username.\n2. For noreply emails like `user@users.noreply.github.com`, the username is the part before `@`.\n3. For contributors whose username is ambiguous, check `gh api users\u002F{guess}` or the PR page.\n\n**Never expose contributor email addresses.** Use `@username` only.\n\nExclude bot accounts (e.g. `lockfile-bot`, `dependabot`) from the list. List contributors\nin alphabetical order by GitHub username (case-insensitive).\n\n## Step 6 — Review Before Release\n\nBefore handing it off:\n\n1. confirm the heading is the stable version only\n2. confirm there is no `-canary` language in the title or filename\n3. confirm any breaking changes have an upgrade path\n4. present the draft for human sign-off\n\nThis skill never publishes anything. It only prepares the stable changelog artifact.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fpaperclipai\u002Fpaperclip\u002Frelease-changelog",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill release-changelog",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill release-changelog",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill release-changelog","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fpaperclipai\u002Fpaperclip\u002Frelease-changelog\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]