[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5SHEHME23TMKGHPTZG0MH":3,"skill-same:01M6C5SHEHME23TMKGHPTZG0MH":90},{"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":23,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":65,"updatedAt":66,"install":67,"resources":79},"01M6C5SHEHME23TMKGHPTZG0MH","deploy-release",null,"Create and publish releases via release-please or manual GitHub releases. Use when cutting a release, tagging a version, or setting up release-please config.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fcontainer-plugin\u002Fskills\u002Fdeploy-release\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"deploy","release","deploy release","write","2026","tagging","when","2025","please","releases","up","version","use","edit","github","read","gh","gh pr","Bash","publish","git","create","pr","config","2026-11-10 10:12:30",false,"---\ncreated: 2025-12-16\nmodified: 2026-10-09\nreviewed: 2026-04-25\nallowed-tools: Read, Write, Edit, Bash(git *), Bash(gh release *), Bash(gh pr *), TodoWrite\nargs: \u003Cversion> [--draft] [--prerelease]\nargument-hint: \u003Cversion> [--draft] [--prerelease]\ndisable-model-invocation: true\ndescription: \"Create and publish releases via release-please or manual GitHub releases. Use when cutting a release, tagging a version, or setting up release-please config.\"\nname: deploy-release\n---\n\n# Release Creation Command\n\nCreate GitHub releases using release-please automation or manual release workflows for containerized applications.\n\n## When to Use This Skill\n\n| Use this skill when... | Use `deploy-handoff` instead when... |\n|---|---|\n| Cutting a new release from `main` and tagging a version | Documenting an already-deployed service for another developer or client |\n| Setting up or auditing release-please automation and manifests | Generating access URLs, monitoring links, and onboarding checklists for a deployed resource |\n| Publishing a manual GitHub release, draft, or pre-release | Producing handoff prose for a ticket rather than cutting a version |\n| Driving the version-tag side of a containerized release pipeline | Building or hardening container images themselves (use `container-development`) |\n\n## Context\n\n- Git remotes: !`git remote -v`\n- Branch: !`git branch --show-current`\n- Recent tags: !`git tag --sort=-v:refname -l 'v*' --format='%(refname:short)' -n5`\n- Last release commit: !`git log --oneline --max-count=5`\n- Release config: !`find . -maxdepth 1 -name 'release-please-config.json'`\n- Manifest: !`find . -maxdepth 1 -name '.release-please-manifest.json'`\n- Changelog: !`find . -maxdepth 1 -name 'CHANGELOG.md'`\n\n## Parameters\n\nParse from `$ARGUMENTS`:\n\n- `$1` (VERSION): Semantic version string (e.g., `1.2.0`, `v2.0.0-rc.1`)\n- `--draft`: Create release as draft (not published)\n- `--prerelease`: Mark as pre-release\n\n## Execution\n\nExecute this release workflow:\n\n### Step 1: Determine release strategy\n\nCheck whether the project uses release-please or manual releases:\n\n1. If `release-please-config.json` exists, use the **release-please workflow**\n2. If no release-please config exists, use the **manual release workflow**\n\n### Step 2a: Release-please workflow\n\nIf release-please is configured:\n\n1. Verify conventional commits exist since last release tag\n2. Check for an open release PR: `gh pr list --label \"autorelease: pending\" --json number,title,url`\n3. If a release PR exists, report its status and URL\n4. If no release PR exists, explain that release-please creates PRs automatically from conventional commits\n5. Provide guidance on merging the release PR to trigger the release\n\n### Step 2b: Manual release workflow\n\nIf no release-please config:\n\n1. Validate the VERSION argument follows semver format\n2. Check that the working tree is clean: `git status --porcelain`\n3. Confirm the branch is main or master\n4. Create the release with:\n   ```\n   gh release create v\u003CVERSION> --title \"v\u003CVERSION>\" --generate-notes\n   ```\n5. Add `--draft` flag if `--draft` was passed\n6. Add `--prerelease` flag if `--prerelease` was passed\n\n### Step 3: Set up release-please (if requested)\n\nIf the user asks to set up release-please automation:\n\n1. Create `release-please-config.json` with manifest release type:\n   ```json\n   {\n     \"$schema\": \"https:\u002F\u002Fraw.githubusercontent.com\u002Fgoogleapis\u002Frelease-please\u002Fmain\u002Fschemas\u002Fconfig.json\",\n     \"release-type\": \"simple\",\n     \"packages\": {\n       \".\": {\n         \"component\": \"\u003Cproject-name>\",\n         \"extra-files\": [\n           {\"type\": \"json\", \"path\": \"package.json\", \"jsonpath\": \"$.version\"}\n         ],\n         \"changelog-sections\": [\n           {\"type\": \"feat\", \"section\": \"Features\"},\n           {\"type\": \"fix\", \"section\": \"Bug Fixes\"},\n           {\"type\": \"perf\", \"section\": \"Performance\"},\n           {\"type\": \"refactor\", \"section\": \"Code Refactoring\"},\n           {\"type\": \"docs\", \"section\": \"Documentation\"}\n         ]\n       }\n     }\n   }\n   ```\n2. Create `.release-please-manifest.json` with current version:\n   ```json\n   {\n     \".\": \"0.0.0\"\n   }\n   ```\n3. Recommend adding the release-please GitHub Action workflow\n\n### Step 4: Report results\n\nPrint a summary including:\n- Release version and URL (if created)\n- Release PR status (if release-please)\n- Next steps for the user\n\n## Release-Please GitHub Action\n\nRecommended workflow for automation:\n\n```yaml\nname: Release\non:\n  push:\n    branches: [main]\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: googleapis\u002Frelease-please-action@v5\n        with:\n          config-file: release-please-config.json\n          manifest-file: .release-please-manifest.json\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| List recent tags | `git tag --sort=-v:refname -l 'v*' -n5` |\n| Check release PRs | `gh pr list --label \"autorelease: pending\" --json number,title,url` |\n| Latest release | `gh release view --json tagName,publishedAt,url` |\n| Create release | `gh release create v1.0.0 --generate-notes` |\n| Create draft | `gh release create v1.0.0 --draft --generate-notes` |\n| Create prerelease | `gh release create v1.0.0-rc.1 --prerelease --generate-notes` |\n| List all releases | `gh release list --json tagName,isLatest,isDraft,isPrerelease` |\n| Commits since tag | `git log v1.0.0..HEAD --oneline` |\n\n## Quick Reference\n\n| Flag | Description |\n|------|-------------|\n| `--draft` | Create as draft release (not visible publicly) |\n| `--prerelease` | Mark as pre-release version |\n| `--generate-notes` | Auto-generate release notes from commits |\n| `--notes-file FILE` | Use file contents as release notes |\n| `--target BRANCH` | Target branch for the release tag |\n\n## Related Skills\n\n- `deploy-handoff` - Generate deployment handoff documentation\n- `container-development` - Container image construction and optimization\n","# Release Creation Command\n\nCreate GitHub releases using release-please automation or manual release workflows for containerized applications.\n\n## When to Use This Skill\n\n| Use this skill when... | Use `deploy-handoff` instead when... |\n|---|---|\n| Cutting a new release from `main` and tagging a version | Documenting an already-deployed service for another developer or client |\n| Setting up or auditing release-please automation and manifests | Generating access URLs, monitoring links, and onboarding checklists for a deployed resource |\n| Publishing a manual GitHub release, draft, or pre-release | Producing handoff prose for a ticket rather than cutting a version |\n| Driving the version-tag side of a containerized release pipeline | Building or hardening container images themselves (use `container-development`) |\n\n## Context\n\n- Git remotes: !`git remote -v`\n- Branch: !`git branch --show-current`\n- Recent tags: !`git tag --sort=-v:refname -l 'v*' --format='%(refname:short)' -n5`\n- Last release commit: !`git log --oneline --max-count=5`\n- Release config: !`find . -maxdepth 1 -name 'release-please-config.json'`\n- Manifest: !`find . -maxdepth 1 -name '.release-please-manifest.json'`\n- Changelog: !`find . -maxdepth 1 -name 'CHANGELOG.md'`\n\n## Parameters\n\nParse from `$ARGUMENTS`:\n\n- `$1` (VERSION): Semantic version string (e.g., `1.2.0`, `v2.0.0-rc.1`)\n- `--draft`: Create release as draft (not published)\n- `--prerelease`: Mark as pre-release\n\n## Execution\n\nExecute this release workflow:\n\n### Step 1: Determine release strategy\n\nCheck whether the project uses release-please or manual releases:\n\n1. If `release-please-config.json` exists, use the **release-please workflow**\n2. If no release-please config exists, use the **manual release workflow**\n\n### Step 2a: Release-please workflow\n\nIf release-please is configured:\n\n1. Verify conventional commits exist since last release tag\n2. Check for an open release PR: `gh pr list --label \"autorelease: pending\" --json number,title,url`\n3. If a release PR exists, report its status and URL\n4. If no release PR exists, explain that release-please creates PRs automatically from conventional commits\n5. Provide guidance on merging the release PR to trigger the release\n\n### Step 2b: Manual release workflow\n\nIf no release-please config:\n\n1. Validate the VERSION argument follows semver format\n2. Check that the working tree is clean: `git status --porcelain`\n3. Confirm the branch is main or master\n4. Create the release with:\n   ```\n   gh release create v\u003CVERSION> --title \"v\u003CVERSION>\" --generate-notes\n   ```\n5. Add `--draft` flag if `--draft` was passed\n6. Add `--prerelease` flag if `--prerelease` was passed\n\n### Step 3: Set up release-please (if requested)\n\nIf the user asks to set up release-please automation:\n\n1. Create `release-please-config.json` with manifest release type:\n   ```json\n   {\n     \"$schema\": \"https:\u002F\u002Fraw.githubusercontent.com\u002Fgoogleapis\u002Frelease-please\u002Fmain\u002Fschemas\u002Fconfig.json\",\n     \"release-type\": \"simple\",\n     \"packages\": {\n       \".\": {\n         \"component\": \"\u003Cproject-name>\",\n         \"extra-files\": [\n           {\"type\": \"json\", \"path\": \"package.json\", \"jsonpath\": \"$.version\"}\n         ],\n         \"changelog-sections\": [\n           {\"type\": \"feat\", \"section\": \"Features\"},\n           {\"type\": \"fix\", \"section\": \"Bug Fixes\"},\n           {\"type\": \"perf\", \"section\": \"Performance\"},\n           {\"type\": \"refactor\", \"section\": \"Code Refactoring\"},\n           {\"type\": \"docs\", \"section\": \"Documentation\"}\n         ]\n       }\n     }\n   }\n   ```\n2. Create `.release-please-manifest.json` with current version:\n   ```json\n   {\n     \".\": \"0.0.0\"\n   }\n   ```\n3. Recommend adding the release-please GitHub Action workflow\n\n### Step 4: Report results\n\nPrint a summary including:\n- Release version and URL (if created)\n- Release PR status (if release-please)\n- Next steps for the user\n\n## Release-Please GitHub Action\n\nRecommended workflow for automation:\n\n```yaml\nname: Release\non:\n  push:\n    branches: [main]\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: googleapis\u002Frelease-please-action@v5\n        with:\n          config-file: release-please-config.json\n          manifest-file: .release-please-manifest.json\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| List recent tags | `git tag --sort=-v:refname -l 'v*' -n5` |\n| Check release PRs | `gh pr list --label \"autorelease: pending\" --json number,title,url` |\n| Latest release | `gh release view --json tagName,publishedAt,url` |\n| Create release | `gh release create v1.0.0 --generate-notes` |\n| Create draft | `gh release create v1.0.0 --draft --generate-notes` |\n| Create prerelease | `gh release create v1.0.0-rc.1 --prerelease --generate-notes` |\n| List all releases | `gh release list --json tagName,isLatest,isDraft,isPrerelease` |\n| Commits since tag | `git log v1.0.0..HEAD --oneline` |\n\n## Quick Reference\n\n| Flag | Description |\n|------|-------------|\n| `--draft` | Create as draft release (not visible publicly) |\n| `--prerelease` | Mark as pre-release version |\n| `--generate-notes` | Auto-generate release notes from commits |\n| `--notes-file FILE` | Use file contents as release notes |\n| `--target BRANCH` | Target branch for the release tag |\n\n## Related Skills\n\n- `deploy-handoff` - Generate deployment handoff documentation\n- `container-development` - Container image construction and optimization\n",{"args":53,"name":5,"created":54,"modified":55,"reviewed":56,"description":7,"allowed-tools":57,"argument-hint":53,"disable-model-invocation":58},"\u003Cversion> [--draft] [--prerelease]",1765843200000,1791504000000,1777075200000,"Read, Write, Edit, Bash(git *), Bash(gh release *), Bash(gh pr *), TodoWrite",true,"main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","container-plugin\u002Fskills\u002Fdeploy-release",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-15 03:36:11",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":58},[69,72,75],{"tool":70,"command":71},"npx","npx skills add laurigates\u002Fclaude-plugins --skill deploy-release",{"tool":73,"command":74},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill deploy-release",{"tool":76,"command":77},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill deploy-release","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fcontainer-plugin\u002Fskills\u002Fdeploy-release\u002FSKILL.md",[80,86],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fagent-and-judge-contracts.md","REFERENCE","参考文档",4736,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-spec-driven-loop\u002Freferences\u002Fagent-and-judge-contracts.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fdocument-templates.md",4708,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-spec-driven-loop\u002Freferences\u002Fdocument-templates.md",[91,116,135,151,174,204],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":48},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[101,102,103,104,105,106,107,108,109,110,36,30,42,111,112,113,114,115,28,39],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","with","xdg","via",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":48},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[104,123,124,125,126,127,30,42,128,129,130,28,39,27,37,131,132,133,134,36],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","snapshot","macos","sessions","restore",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":48},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[142,143,104,144,145,106,146,147,107,148,149,36,30,150,42,112,113,130,28,39],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":48},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[158,159,160,161,162,163,164,165,166,167,36,30,42,168,111,169,170,171,172,173],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":189,"publishedAt":48},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[180,183,184],{"categoryNo":181,"categoryName":182,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":185,"categoryName":186,"taxonomyType":187,"taxonomyTypeDesc":188},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[190,191,192,193,164,194,39,195,37,196,197,198,36,42,111,199,200,30,201,202,203,115,28],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":213,"publishedAt":48},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[214,215,216,217,192,193,218,219,220,221,222,39,223,224,225,226,36,227,30,113,228,28],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]