[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PD9DY16K48NC7EEDM529SY":3,"skill-same:01M6PD9DY16K48NC7EEDM529SY":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":31,"commitSha":57,"skillDirectory":58,"forksCount":13,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6PD9DY16K48NC7EEDM529SY","semantic-versioning",null,"Automate versioning and changelog generation using semantic versioning principles.","duc-duy-1612\u002FOnline-Delivery-Systems-Web","duc-duy-1612","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F192231384?v=4","01M6NSDKQQDKVTHZ8DZMZ1VYY6","01M6NSDKW8DDVTQHBT1HBDDJPT",0,"MIT","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fsemantic-versioning\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"semantic","semantic versioning","versioning","environment","relevant","scripts","critical","platform","main","community","only","security","automate","access","devops-security","kubectl","ci","runners","changelog","git","2026-11-10 10:12:30",false,"---\nname: semantic-versioning\ndescription: Automate versioning and changelog generation using semantic versioning\n  principles.\ncategory: devops\nrisk: critical\nsource: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\nsource_repo: BagelHole\u002FDevOps-Security-Agent-Skills\nsource_type: community\ndate_added: '2026-09-20'\nlicense: MIT\nlicense_source: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE\ncompatibility: Requires the relevant platform CLIs (kubectl, helm, terraform, git,\n  CI runners) and authorized access to the target environment. Docs-only; helper scripts\n  and templates not bundled.\nmetadata:\n  author: devops-skills\n  version: '1.0'\n---\n\n# Semantic Versioning\n\nAutomate version management and changelog generation following SemVer principles.\n\n## Prerequisites\n\n- Git repository with commit history\n- Node.js (for most tools)\n- Conventional commits (recommended)\n\n## Semantic Versioning Basics\n\n### Version Format\n\n```\nMAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]\n\nExamples:\n1.0.0\n2.1.3\n1.0.0-alpha.1\n1.0.0-beta.2+build.123\n```\n\n### Version Components\n\n| Component | When to Increment |\n|-----------|-------------------|\n| MAJOR | Breaking changes (incompatible API changes) |\n| MINOR | New features (backward compatible) |\n| PATCH | Bug fixes (backward compatible) |\n| PRERELEASE | Pre-release versions (alpha, beta, rc) |\n| BUILD | Build metadata (ignored in precedence) |\n\n### Version Precedence\n\n```\n1.0.0-alpha \u003C 1.0.0-alpha.1 \u003C 1.0.0-alpha.beta\n\u003C 1.0.0-beta \u003C 1.0.0-beta.2 \u003C 1.0.0-beta.11\n\u003C 1.0.0-rc.1 \u003C 1.0.0 \u003C 2.0.0\n```\n\n## Conventional Commits to Version\n\n```yaml\nCommit Type → Version Bump:\n  feat:     → MINOR\n  fix:      → PATCH\n  docs:     → PATCH (or no release)\n  style:    → PATCH (or no release)\n  refactor: → PATCH\n  perf:     → PATCH\n  test:     → No release\n  chore:    → No release\n  \n  BREAKING CHANGE: → MAJOR\n  feat!:   → MAJOR\n  fix!:    → MAJOR\n```\n\n## semantic-release\n\n### Installation\n\n```bash\nnpm install --save-dev semantic-release \\\n  @semantic-release\u002Fchangelog \\\n  @semantic-release\u002Fgit\n```\n\n### Configuration\n\n```json\n\u002F\u002F .releaserc.json\n{\n  \"branches\": [\"main\"],\n  \"plugins\": [\n    \"@semantic-release\u002Fcommit-analyzer\",\n    \"@semantic-release\u002Frelease-notes-generator\",\n    [\"@semantic-release\u002Fchangelog\", {\n      \"changelogFile\": \"CHANGELOG.md\"\n    }],\n    [\"@semantic-release\u002Fnpm\", {\n      \"npmPublish\": true\n    }],\n    [\"@semantic-release\u002Fgit\", {\n      \"assets\": [\"CHANGELOG.md\", \"package.json\", \"package-lock.json\"],\n      \"message\": \"chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}\"\n    }],\n    \"@semantic-release\u002Fgithub\"\n  ]\n}\n```\n\n### Advanced Configuration\n\n```javascript\n\u002F\u002F release.config.js\nmodule.exports = {\n  branches: [\n    'main',\n    { name: 'beta', prerelease: true },\n    { name: 'alpha', prerelease: true }\n  ],\n  plugins: [\n    ['@semantic-release\u002Fcommit-analyzer', {\n      preset: 'angular',\n      releaseRules: [\n        { type: 'docs', release: 'patch' },\n        { type: 'refactor', release: 'patch' },\n        { type: 'style', release: 'patch' },\n        { type: 'perf', release: 'patch' },\n        { breaking: true, release: 'major' }\n      ]\n    }],\n    ['@semantic-release\u002Frelease-notes-generator', {\n      preset: 'angular',\n      writerOpts: {\n        commitsSort: ['subject', 'scope']\n      }\n    }],\n    '@semantic-release\u002Fchangelog',\n    '@semantic-release\u002Fnpm',\n    '@semantic-release\u002Fgit',\n    '@semantic-release\u002Fgithub'\n  ]\n};\n```\n\n### GitHub Actions Integration\n\n```yaml\n# .github\u002Fworkflows\u002Frelease.yml\nname: Release\n\non:\n  push:\n    branches: [main]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0\n          persist-credentials: false\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: '20'\n\n      - run: npm ci\n\n      - name: Release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n        run: npx semantic-release\n```\n\n## standard-version\n\n### Installation\n\n```bash\nnpm install --save-dev standard-version\n```\n\n### Configuration\n\n```json\n\u002F\u002F .versionrc.json\n{\n  \"types\": [\n    { \"type\": \"feat\", \"section\": \"Features\" },\n    { \"type\": \"fix\", \"section\": \"Bug Fixes\" },\n    { \"type\": \"docs\", \"section\": \"Documentation\" },\n    { \"type\": \"style\", \"section\": \"Styling\" },\n    { \"type\": \"refactor\", \"section\": \"Code Refactoring\" },\n    { \"type\": \"perf\", \"section\": \"Performance\" },\n    { \"type\": \"test\", \"section\": \"Tests\" },\n    { \"type\": \"chore\", \"section\": \"Maintenance\" }\n  ],\n  \"skip\": {\n    \"bump\": false,\n    \"changelog\": false,\n    \"commit\": false,\n    \"tag\": false\n  },\n  \"commitUrlFormat\": \"https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fcommit\u002F{{hash}}\",\n  \"compareUrlFormat\": \"https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fcompare\u002F{{previousTag}}...{{currentTag}}\"\n}\n```\n\n### Usage\n\n```bash\n# First release\nnpx standard-version --first-release\n\n# Regular release (auto-detect version bump)\nnpx standard-version\n\n# Specific version bump\nnpx standard-version --release-as minor\nnpx standard-version --release-as 1.1.0\n\n# Pre-release\nnpx standard-version --prerelease alpha\nnpx standard-version --prerelease beta\n\n# Dry run\nnpx standard-version --dry-run\n\n# Skip specific steps\nnpx standard-version --skip.changelog\n```\n\n### NPM Scripts\n\n```json\n\u002F\u002F package.json\n{\n  \"scripts\": {\n    \"release\": \"standard-version\",\n    \"release:minor\": \"standard-version --release-as minor\",\n    \"release:major\": \"standard-version --release-as major\",\n    \"release:alpha\": \"standard-version --prerelease alpha\",\n    \"release:beta\": \"standard-version --prerelease beta\",\n    \"release:dry\": \"standard-version --dry-run\"\n  }\n}\n```\n\n## Changelog Generation\n\n### conventional-changelog\n\n```bash\n# Install\nnpm install -g conventional-changelog-cli\n\n# Generate changelog\nconventional-changelog -p angular -i CHANGELOG.md -s\n\n# Generate all history\nconventional-changelog -p angular -i CHANGELOG.md -s -r 0\n```\n\n### git-cliff\n\n```bash\n# Install\ncargo install git-cliff\n\n# Generate changelog\ngit cliff -o CHANGELOG.md\n```\n\n```toml\n# cliff.toml\n[changelog]\nheader = \"# Changelog\\n\\n\"\nbody = \"\"\"\n{% for group, commits in commits | group_by(attribute=\"group\") %}\n## {{ group | upper_first }}\n{% for commit in commits %}\n- {{ commit.message | upper_first }}\\\n{% endfor %}\n{% endfor %}\n\"\"\"\ntrim = true\n\n[git]\nconventional_commits = true\nfilter_unconventional = true\ncommit_preprocessors = [\n    { pattern = '\\((\\w+)\\s#([0-9]+)\\)', replace = \"([#${2}](https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fissues\u002F${2}))\" },\n]\ncommit_parsers = [\n    { message = \"^feat\", group = \"Features\" },\n    { message = \"^fix\", group = \"Bug Fixes\" },\n    { message = \"^doc\", group = \"Documentation\" },\n    { message = \"^perf\", group = \"Performance\" },\n    { message = \"^refactor\", group = \"Refactoring\" },\n    { message = \"^style\", group = \"Styling\" },\n    { message = \"^test\", group = \"Testing\" },\n    { message = \"^chore\", group = \"Miscellaneous\" },\n]\nfilter_commits = true\ntag_pattern = \"v[0-9]*\"\n```\n\n## Version Bumping Scripts\n\n### Bash Script\n\n```bash\n#!\u002Fbin\u002Fbash\n# bump-version.sh\n\nCURRENT_VERSION=$(cat package.json | jq -r '.version')\necho \"Current version: $CURRENT_VERSION\"\n\nIFS='.' read -r MAJOR MINOR PATCH \u003C\u003C\u003C \"$CURRENT_VERSION\"\n\ncase $1 in\n  major)\n    NEW_VERSION=\"$((MAJOR + 1)).0.0\"\n    ;;\n  minor)\n    NEW_VERSION=\"$MAJOR.$((MINOR + 1)).0\"\n    ;;\n  patch)\n    NEW_VERSION=\"$MAJOR.$MINOR.$((PATCH + 1))\"\n    ;;\n  *)\n    echo \"Usage: $0 {major|minor|patch}\"\n    exit 1\n    ;;\nesac\n\necho \"New version: $NEW_VERSION\"\n\n# Update package.json\nnpm version $NEW_VERSION --no-git-tag-version\n\n# Create git tag\ngit add package.json package-lock.json\ngit commit -m \"chore: bump version to $NEW_VERSION\"\ngit tag -a \"v$NEW_VERSION\" -m \"Version $NEW_VERSION\"\n```\n\n### Python Script\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\n# bump_version.py\n\nimport re\nimport sys\nimport subprocess\n\ndef get_current_version():\n    with open('setup.py', 'r') as f:\n        content = f.read()\n        match = re.search(r\"version=['\\\"] ([^'\\\"]+)['\\\"]\", content)\n        return match.group(1) if match else None\n\ndef bump_version(current, bump_type):\n    major, minor, patch = map(int, current.split('.'))\n    \n    if bump_type == 'major':\n        return f'{major + 1}.0.0'\n    elif bump_type == 'minor':\n        return f'{major}.{minor + 1}.0'\n    elif bump_type == 'patch':\n        return f'{major}.{minor}.{patch + 1}'\n    else:\n        raise ValueError(f'Invalid bump type: {bump_type}')\n\ndef update_version(old_version, new_version):\n    with open('setup.py', 'r') as f:\n        content = f.read()\n    \n    content = content.replace(f\"version='{old_version}'\", f\"version='{new_version}'\")\n    \n    with open('setup.py', 'w') as f:\n        f.write(content)\n\nif __name__ == '__main__':\n    bump_type = sys.argv[1] if len(sys.argv) > 1 else 'patch'\n    current = get_current_version()\n    new = bump_version(current, bump_type)\n    \n    print(f'Bumping version: {current} → {new}')\n    update_version(current, new)\n    \n    subprocess.run(['git', 'add', 'setup.py'])\n    subprocess.run(['git', 'commit', '-m', f'chore: bump version to {new}'])\n    subprocess.run(['git', 'tag', '-a', f'v{new}', '-m', f'Version {new}'])\n```\n\n\n## Contents\n\n- [Multi-Package Versioning](references\u002Fdetails.md)\n- [Common Issues](references\u002Fdetails.md)\n- [Best Practices](references\u002Fdetails.md)\n- [Related Skills](references\u002Fdetails.md)\n\n## When to Use This Skill\n\nUse this skill when:\n- Implementing version numbering standards\n- Automating release versioning\n- Generating changelogs automatically\n- Setting up release pipelines\n- Managing package versions\n\n## Limitations\n\n- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.\n- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.\n\n### Example\n\n```bash\ngit status && git diff --stat\nkubectl diff -f manifest.yaml\n```\n\n> Adapted from [BagelHole\u002FDevOps-Security-Agent-Skills](https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use\u002FLimitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.\n","# Semantic Versioning\n\nAutomate version management and changelog generation following SemVer principles.\n\n## Prerequisites\n\n- Git repository with commit history\n- Node.js (for most tools)\n- Conventional commits (recommended)\n\n## Semantic Versioning Basics\n\n### Version Format\n\n```\nMAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]\n\nExamples:\n1.0.0\n2.1.3\n1.0.0-alpha.1\n1.0.0-beta.2+build.123\n```\n\n### Version Components\n\n| Component | When to Increment |\n|-----------|-------------------|\n| MAJOR | Breaking changes (incompatible API changes) |\n| MINOR | New features (backward compatible) |\n| PATCH | Bug fixes (backward compatible) |\n| PRERELEASE | Pre-release versions (alpha, beta, rc) |\n| BUILD | Build metadata (ignored in precedence) |\n\n### Version Precedence\n\n```\n1.0.0-alpha \u003C 1.0.0-alpha.1 \u003C 1.0.0-alpha.beta\n\u003C 1.0.0-beta \u003C 1.0.0-beta.2 \u003C 1.0.0-beta.11\n\u003C 1.0.0-rc.1 \u003C 1.0.0 \u003C 2.0.0\n```\n\n## Conventional Commits to Version\n\n```yaml\nCommit Type → Version Bump:\n  feat:     → MINOR\n  fix:      → PATCH\n  docs:     → PATCH (or no release)\n  style:    → PATCH (or no release)\n  refactor: → PATCH\n  perf:     → PATCH\n  test:     → No release\n  chore:    → No release\n  \n  BREAKING CHANGE: → MAJOR\n  feat!:   → MAJOR\n  fix!:    → MAJOR\n```\n\n## semantic-release\n\n### Installation\n\n```bash\nnpm install --save-dev semantic-release \\\n  @semantic-release\u002Fchangelog \\\n  @semantic-release\u002Fgit\n```\n\n### Configuration\n\n```json\n\u002F\u002F .releaserc.json\n{\n  \"branches\": [\"main\"],\n  \"plugins\": [\n    \"@semantic-release\u002Fcommit-analyzer\",\n    \"@semantic-release\u002Frelease-notes-generator\",\n    [\"@semantic-release\u002Fchangelog\", {\n      \"changelogFile\": \"CHANGELOG.md\"\n    }],\n    [\"@semantic-release\u002Fnpm\", {\n      \"npmPublish\": true\n    }],\n    [\"@semantic-release\u002Fgit\", {\n      \"assets\": [\"CHANGELOG.md\", \"package.json\", \"package-lock.json\"],\n      \"message\": \"chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}\"\n    }],\n    \"@semantic-release\u002Fgithub\"\n  ]\n}\n```\n\n### Advanced Configuration\n\n```javascript\n\u002F\u002F release.config.js\nmodule.exports = {\n  branches: [\n    'main',\n    { name: 'beta', prerelease: true },\n    { name: 'alpha', prerelease: true }\n  ],\n  plugins: [\n    ['@semantic-release\u002Fcommit-analyzer', {\n      preset: 'angular',\n      releaseRules: [\n        { type: 'docs', release: 'patch' },\n        { type: 'refactor', release: 'patch' },\n        { type: 'style', release: 'patch' },\n        { type: 'perf', release: 'patch' },\n        { breaking: true, release: 'major' }\n      ]\n    }],\n    ['@semantic-release\u002Frelease-notes-generator', {\n      preset: 'angular',\n      writerOpts: {\n        commitsSort: ['subject', 'scope']\n      }\n    }],\n    '@semantic-release\u002Fchangelog',\n    '@semantic-release\u002Fnpm',\n    '@semantic-release\u002Fgit',\n    '@semantic-release\u002Fgithub'\n  ]\n};\n```\n\n### GitHub Actions Integration\n\n```yaml\n# .github\u002Fworkflows\u002Frelease.yml\nname: Release\n\non:\n  push:\n    branches: [main]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0\n          persist-credentials: false\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: '20'\n\n      - run: npm ci\n\n      - name: Release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n        run: npx semantic-release\n```\n\n## standard-version\n\n### Installation\n\n```bash\nnpm install --save-dev standard-version\n```\n\n### Configuration\n\n```json\n\u002F\u002F .versionrc.json\n{\n  \"types\": [\n    { \"type\": \"feat\", \"section\": \"Features\" },\n    { \"type\": \"fix\", \"section\": \"Bug Fixes\" },\n    { \"type\": \"docs\", \"section\": \"Documentation\" },\n    { \"type\": \"style\", \"section\": \"Styling\" },\n    { \"type\": \"refactor\", \"section\": \"Code Refactoring\" },\n    { \"type\": \"perf\", \"section\": \"Performance\" },\n    { \"type\": \"test\", \"section\": \"Tests\" },\n    { \"type\": \"chore\", \"section\": \"Maintenance\" }\n  ],\n  \"skip\": {\n    \"bump\": false,\n    \"changelog\": false,\n    \"commit\": false,\n    \"tag\": false\n  },\n  \"commitUrlFormat\": \"https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fcommit\u002F{{hash}}\",\n  \"compareUrlFormat\": \"https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fcompare\u002F{{previousTag}}...{{currentTag}}\"\n}\n```\n\n### Usage\n\n```bash\n# First release\nnpx standard-version --first-release\n\n# Regular release (auto-detect version bump)\nnpx standard-version\n\n# Specific version bump\nnpx standard-version --release-as minor\nnpx standard-version --release-as 1.1.0\n\n# Pre-release\nnpx standard-version --prerelease alpha\nnpx standard-version --prerelease beta\n\n# Dry run\nnpx standard-version --dry-run\n\n# Skip specific steps\nnpx standard-version --skip.changelog\n```\n\n### NPM Scripts\n\n```json\n\u002F\u002F package.json\n{\n  \"scripts\": {\n    \"release\": \"standard-version\",\n    \"release:minor\": \"standard-version --release-as minor\",\n    \"release:major\": \"standard-version --release-as major\",\n    \"release:alpha\": \"standard-version --prerelease alpha\",\n    \"release:beta\": \"standard-version --prerelease beta\",\n    \"release:dry\": \"standard-version --dry-run\"\n  }\n}\n```\n\n## Changelog Generation\n\n### conventional-changelog\n\n```bash\n# Install\nnpm install -g conventional-changelog-cli\n\n# Generate changelog\nconventional-changelog -p angular -i CHANGELOG.md -s\n\n# Generate all history\nconventional-changelog -p angular -i CHANGELOG.md -s -r 0\n```\n\n### git-cliff\n\n```bash\n# Install\ncargo install git-cliff\n\n# Generate changelog\ngit cliff -o CHANGELOG.md\n```\n\n```toml\n# cliff.toml\n[changelog]\nheader = \"# Changelog\\n\\n\"\nbody = \"\"\"\n{% for group, commits in commits | group_by(attribute=\"group\") %}\n## {{ group | upper_first }}\n{% for commit in commits %}\n- {{ commit.message | upper_first }}\\\n{% endfor %}\n{% endfor %}\n\"\"\"\ntrim = true\n\n[git]\nconventional_commits = true\nfilter_unconventional = true\ncommit_preprocessors = [\n    { pattern = '\\((\\w+)\\s#([0-9]+)\\)', replace = \"([#${2}](https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fissues\u002F${2}))\" },\n]\ncommit_parsers = [\n    { message = \"^feat\", group = \"Features\" },\n    { message = \"^fix\", group = \"Bug Fixes\" },\n    { message = \"^doc\", group = \"Documentation\" },\n    { message = \"^perf\", group = \"Performance\" },\n    { message = \"^refactor\", group = \"Refactoring\" },\n    { message = \"^style\", group = \"Styling\" },\n    { message = \"^test\", group = \"Testing\" },\n    { message = \"^chore\", group = \"Miscellaneous\" },\n]\nfilter_commits = true\ntag_pattern = \"v[0-9]*\"\n```\n\n## Version Bumping Scripts\n\n### Bash Script\n\n```bash\n#!\u002Fbin\u002Fbash\n# bump-version.sh\n\nCURRENT_VERSION=$(cat package.json | jq -r '.version')\necho \"Current version: $CURRENT_VERSION\"\n\nIFS='.' read -r MAJOR MINOR PATCH \u003C\u003C\u003C \"$CURRENT_VERSION\"\n\ncase $1 in\n  major)\n    NEW_VERSION=\"$((MAJOR + 1)).0.0\"\n    ;;\n  minor)\n    NEW_VERSION=\"$MAJOR.$((MINOR + 1)).0\"\n    ;;\n  patch)\n    NEW_VERSION=\"$MAJOR.$MINOR.$((PATCH + 1))\"\n    ;;\n  *)\n    echo \"Usage: $0 {major|minor|patch}\"\n    exit 1\n    ;;\nesac\n\necho \"New version: $NEW_VERSION\"\n\n# Update package.json\nnpm version $NEW_VERSION --no-git-tag-version\n\n# Create git tag\ngit add package.json package-lock.json\ngit commit -m \"chore: bump version to $NEW_VERSION\"\ngit tag -a \"v$NEW_VERSION\" -m \"Version $NEW_VERSION\"\n```\n\n### Python Script\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\n# bump_version.py\n\nimport re\nimport sys\nimport subprocess\n\ndef get_current_version():\n    with open('setup.py', 'r') as f:\n        content = f.read()\n        match = re.search(r\"version=['\\\"] ([^'\\\"]+)['\\\"]\", content)\n        return match.group(1) if match else None\n\ndef bump_version(current, bump_type):\n    major, minor, patch = map(int, current.split('.'))\n    \n    if bump_type == 'major':\n        return f'{major + 1}.0.0'\n    elif bump_type == 'minor':\n        return f'{major}.{minor + 1}.0'\n    elif bump_type == 'patch':\n        return f'{major}.{minor}.{patch + 1}'\n    else:\n        raise ValueError(f'Invalid bump type: {bump_type}')\n\ndef update_version(old_version, new_version):\n    with open('setup.py', 'r') as f:\n        content = f.read()\n    \n    content = content.replace(f\"version='{old_version}'\", f\"version='{new_version}'\")\n    \n    with open('setup.py', 'w') as f:\n        f.write(content)\n\nif __name__ == '__main__':\n    bump_type = sys.argv[1] if len(sys.argv) > 1 else 'patch'\n    current = get_current_version()\n    new = bump_version(current, bump_type)\n    \n    print(f'Bumping version: {current} → {new}')\n    update_version(current, new)\n    \n    subprocess.run(['git', 'add', 'setup.py'])\n    subprocess.run(['git', 'commit', '-m', f'chore: bump version to {new}'])\n    subprocess.run(['git', 'tag', '-a', f'v{new}', '-m', f'Version {new}'])\n```\n\n\n## Contents\n\n- [Multi-Package Versioning](references\u002Fdetails.md)\n- [Common Issues](references\u002Fdetails.md)\n- [Best Practices](references\u002Fdetails.md)\n- [Related Skills](references\u002Fdetails.md)\n\n## When to Use This Skill\n\nUse this skill when:\n- Implementing version numbering standards\n- Automating release versioning\n- Generating changelogs automatically\n- Setting up release pipelines\n- Managing package versions\n\n## Limitations\n\n- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.\n- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.\n\n### Example\n\n```bash\ngit status && git diff --stat\nkubectl diff -f manifest.yaml\n```\n\n> Adapted from [BagelHole\u002FDevOps-Security-Agent-Skills](https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use\u002FLimitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.\n",{"name":5,"risk":29,"source":48,"license":14,"category":49,"metadata":50,"date_added":53,"description":7,"source_repo":54,"source_type":32,"compatibility":55,"license_source":56},"https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills","devops",{"author":51,"version":52},"devops-skills","1.0","2026-09-20","BagelHole\u002FDevOps-Security-Agent-Skills","Requires the relevant platform CLIs (kubectl, helm, terraform, git, CI runners) and authorized access to the target environment. Docs-only; helper scripts and templates not bundled.","https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE","f3312ba749561b6159f477dbfc9313c875d40a56",".agents\u002Fskills_archive\u002Fsemantic-versioning","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612","2026-10-25 23:50:58",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill semantic-versioning",{"tool":68,"command":69},"bunx","bunx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill semantic-versioning",{"tool":71,"command":72},"pnpm","pnpm dlx skills add duc-duy-1612\u002FOnline-Delivery-Systems-Web --skill semantic-versioning","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fsemantic-versioning\u002FSKILL.md",true,[76],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fdetails.md","REFERENCE","参考文档",1699,"https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fsemantic-versioning\u002Freferences\u002Fdetails.md",[83,102,126,151,179,203],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":43},"01M6Q0FA5FZ410Z33Z3TFQ4DBA","zero-trust","Implement zero-trust network architecture. Configure identity-based access, micro-segmentation, and continuous verification. Use when implementing modern security architectures.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fzero-trust\u002FSKILL.md",[89],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[91,92,93,94,95,96,85,97,37,36,98,33,32,31,99,29,100,28,27,101],"ZeRO","trust","zero trust","architecture","assessment","verification","segmentation","configure","active","scope","implementing",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":43},"01M6Q0F1YZJW3KX5FBKEVZ8CV4","zcode-delegate","Delegate coding tasks to the Z.AI ZCode CLI only when the user explicitly requests it, while the orchestrator retains review and landing responsibility.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fzcode-delegate\u002FSKILL.md",[],[109,110,111,112,113,114,115,116,117,118,119,120,121,33,122,32,123,124,29,125],"delegate","zcode","zcode delegate","review","cli","orchestration","tasks","run","Bash","model","node","read","orchestrator","files","desktop app","app","agent-orchestration",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":43},"01M6Q0ETK41VGNMYEXW0T00AJN","youtube-transcript","Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-transcript\u002FSKILL.md",[],[133,134,135,136,137,138,139,140,141,142,143,144,145,32,31,146,147,148,149,150],"transcript","youtube transcript","youtube","safe","github","codex","research","license","https","text","fetch","tooling","clean","local","output","deepapi","youtube transcripts","blob",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":168,"publishedAt":43},"01M6Q0EPPH2PVMDW40017F8WX0","youtube-transcript-skills","Fetch YouTube video transcripts, search videos\u002Fchannels, browse channels, and extract playlists via the getyoutubetranscript.com API - free tier, no card required.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-transcript-skills\u002FSKILL.md",[157,160,163],{"categoryNo":158,"categoryName":159,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":161,"categoryName":162,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":164,"categoryName":165,"taxonomyType":166,"taxonomyTypeDesc":167},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[133,134,135,169,136,170,137,138,140,171,172,173,174,143,175,32,31,176,177,178],"youtube transcript skills","gemini","search","api","Video","browse","api-integration","free","card","channels",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":189,"publishedAt":43},"01M6Q0EAB96PX83W5PTE8A0R8D","youtube-notetaker","Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-notetaker\u002FSKILL.md",[185,188],{"categoryNo":186,"categoryName":187,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":161,"categoryName":162,"taxonomyType":20,"taxonomyTypeDesc":21},[135,190,191,113,136,192,193,194,195,140,173,196,197,198,199,31,200,146,201,202],"youtube notetaker","notetaker","workflow","official","notes","code","markdown","slides","annotations","README","study","dair-academy","viewer",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":210,"publishedAt":43},"01M6Q0E55F0GW5MX48V8HXS8B5","youtube-full","Fetch YouTube transcripts, search videos, browse channels, and extract playlists via TranscriptAPI — no yt-dlp, no Google API key, works from any cloud server.","https:\u002F\u002Fgithub.com\u002Fduc-duy-1612\u002FOnline-Delivery-Systems-Web\u002Fblob\u002Fmain\u002F.agents\u002Fskills_archive\u002Fyoutube-full\u002FSKILL.md",[209],{"categoryNo":158,"categoryName":159,"taxonomyType":20,"taxonomyTypeDesc":21},[211,135,212,213,136,170,171,214,215,172,173,174,143,216,175,32,31,176,217,149],"youtube full","full","google","server","dlp","credits","automatic"]