[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FB8ZABDFM3D7V6QAGPRSFZ":3,"skill-same:01M6FB8ZABDFM3D7V6QAGPRSFZ":84},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":32,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6FB8ZABDFM3D7V6QAGPRSFZ","semantic-versioning",null,"Automate versioning and changelog generation using semantic versioning principles.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-semantic-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,43],"semantic","semantic versioning","versioning","environment","2026","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\nFollow the target repository’s release workflow and protected-branch rules before any commit\u002Ftag\u002Fpublish. These configurations are alternatives, not permission to bypass a PR-only branch. A version bump does not authorize registry or GitHub publication. Derive breaking changes from public API compatibility, not commit type alone; refactor\u002Fdocs release rules are configurable. Version scripts below support only plain numeric MAJOR.MINOR.PATCH and simple metadata files; use a SemVer-aware library for prereleases\u002Fbuilds and verify exact file changes before committing. Do not delete or move published tags to resolve duplicates.\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\\s*=\\s*['\\\"]\" + r\"([^'\\\"]+)['\\\"]\", 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'], check=True)\n    subprocess.run(['git', 'commit', '-m', f'chore: bump version to {new}'], check=True)\n    subprocess.run(['git', 'tag', '-a', f'v{new}', '-m', f'Version {new}'], check=True)\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\nFollow the target repository’s release workflow and protected-branch rules before any commit\u002Ftag\u002Fpublish. These configurations are alternatives, not permission to bypass a PR-only branch. A version bump does not authorize registry or GitHub publication. Derive breaking changes from public API compatibility, not commit type alone; refactor\u002Fdocs release rules are configurable. Version scripts below support only plain numeric MAJOR.MINOR.PATCH and simple metadata files; use a SemVer-aware library for prereleases\u002Fbuilds and verify exact file changes before committing. Do not delete or move published tags to resolve duplicates.\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\\s*=\\s*['\\\"]\" + r\"([^'\\\"]+)['\\\"]\", 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'], check=True)\n    subprocess.run(['git', 'commit', '-m', f'chore: bump version to {new}'], check=True)\n    subprocess.run(['git', 'tag', '-a', f'v{new}', '-m', f'Version {new}'], check=True)\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":30,"source":49,"license":14,"category":50,"metadata":51,"date_added":54,"description":7,"source_repo":55,"source_type":33,"compatibility":56,"license_source":57},"https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills","devops",{"author":52,"version":53},"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","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-semantic-versioning",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-12 14:21:24",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add boisenoise\u002Fskills-collections --skill semantic-versioning",{"tool":70,"command":71},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill semantic-versioning",{"tool":73,"command":74},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill semantic-versioning","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-semantic-versioning\u002FSKILL.md",true,[78],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fdetails.md","REFERENCE","参考文档",1699,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-semantic-versioning\u002Freferences\u002Fdetails.md",[85,110,136,162,181,204],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":90,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":44},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[94,37,95,96,97,98,99,100,101,102,103,34,104,105,31,30,106,107,108,109,27],"web","web access","official","development","browser","search","data","Tools","read","fetch","youtube","free tools","free","cover","normal","when",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":114,"sourceHtmlUrl":115,"categories":116,"keywords":120,"publishedAt":44},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[117],{"categoryNo":118,"categoryName":119,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[112,121,122,123,96,97,124,101,125,126,127,128,129,130,131,30,132,133,134,135,27],"MCP","cli","github","license","Budget","credentials","team","catalog","use","call","discover","external tools","with","scoped","blob",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":140,"sourceHtmlUrl":141,"categories":142,"keywords":148,"publishedAt":44},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[138,123,96,124,149,150,151,152,153,154,30,155,156,157,133,158,159,160,161,135,112,27],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":166,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":44},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[170,171,172,123,96,124,173,174,149,175,125,176,177,178,153,30,179,180,135,112,27],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":185,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":44},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[189,190,123,191,96,192,124,193,194,195,196,197,30,198,199,200,201,202,203,135],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":208,"sourceHtmlUrl":209,"categories":210,"keywords":211,"publishedAt":44},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[212,213,214,123,96,124,215,216,152,217,218,30,219,220,221,222,223,224,225,135],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]