본문으로 건너뛰기
cccskills
무료GitHub에 공개

versioning-policy

Semver versioning rules for Squad SDK and CLI — prevents prerelease version incidents

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md6.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Context

Squad is a monorepo with two publishable npm packages (@bradygaster/squad-sdk and @bradygaster/squad-cli) managed via npm workspaces. Version mismatches and prerelease leaks have caused production incidents — most notably PR #640, where a -build.N prerelease version silently broke workspace dependency resolution.

This skill codifies the versioning rules every agent must follow.

1. Version Format

All packages use strict semver: MAJOR.MINOR.PATCH

  • ✅ 0.9.1, 1.0.0, 0.10.0
  • ❌ 0.9.1-build.4, 0.9.1-preview.1, 0.8.6.1-preview

No prerelease suffixes on dev or main branches — ever.

2. Prerelease Versions Are Ephemeral

The scripts/bump-build.mjs script creates -build.N versions (e.g., 0.9.1-build.4) for local development testing only.

Rules:

  • -build.N versions are created automatically during local npm run build
  • They are never committed to dev or main
  • The script skips itself in CI (CI=true or SKIP_BUILD_BUMP=1)
  • If you see a -build.N version in a PR diff, it is a bug — reject the PR

3. SDK and CLI Version Sync

Both @bradygaster/squad-sdk and @bradygaster/squad-cli MUST have the same version at all times. The root package.json version must also match.

bump-build.mjs enforces this by updating all three package.json files in lockstep (root + packages/squad-sdk + packages/squad-cli).

If versions diverge, workspace resolution silently breaks (see §4).

4. npm Workspace Semver Footgun

The CLI depends on the SDK via a workspace dependency with a semver range:

"@bradygaster/squad-sdk": ">=0.9.0"

Critical: Per the semver specification, >=0.9.0 does NOT match 0.9.1-build.4.

Semver prerelease versions (anything with a - suffix) are only matched by ranges that explicitly reference the same MAJOR.MINOR.PATCH base with a prerelease comparator. A bare >=0.9.0 range skips all prerelease versions.

What happens: When the local SDK has version 0.9.1-build.4, npm's workspace resolution fails to match the >=0.9.0 range. npm then silently installs a stale published version from the npm registry instead of using the local workspace link. The build succeeds but runs against old SDK code.

This is the root cause of the PR #640 incident, where workspace packages appeared linked but were actually running against stale registry versions.

5. Who Bumps Versions

Surgeon (Release Manager) owns all version bumps.

AgentMay modify version in package.json?
Surgeon✅ Yes — sole owner of version bumps
Any other agent❌ No — unless explicitly fixing a prerelease leak

If you discover a prerelease version committed to dev or main, you may fix it (revert to the clean release version) without Surgeon's approval. This is a safety escape hatch, not a license to manage versions.

6. Version Bump Lifecycle

┌─────────────────────────────────────────────────────────┐
│  Development phase                                      │
│  Versions stay at current release: 0.9.1                │
│  bump-build.mjs creates -build.N locally (not committed)│
├─────────────────────────────────────────────────────────┤
│  Pre-release testing                                    │
│  bump-build.mjs → 0.9.1-build.1, -build.2, ...         │
│  Local only. Never committed. Never pushed.             │
├─────────────────────────────────────────────────────────┤
│  Release                                                │
│  Surgeon bumps to next version (e.g., 0.9.2 or 0.10.0) │
│  Tags, publishes to npm registry                        │
├─────────────────────────────────────────────────────────┤
│  Post-release                                           │
│  Versions stay at the new release version (e.g., 0.9.2) │
│  Development continues on clean version                 │
└─────────────────────────────────────────────────────────┘

7. CI Enforcement

The prerelease-version-guard CI gate blocks any PR to dev or main that contains prerelease version strings in package.json files.

  • The gate scans all three package.json files for - in the version field
  • PRs with prerelease versions cannot merge until the version is cleaned
  • The skip-version-check label bypasses the gate — use only for the bump-build script's own PR (if applicable), and only with Surgeon's approval

8. Incident Reference — PR #640

PR #640 is the cautionary tale for this entire policy.

What happened: Prerelease versions (0.9.1-build.4) were committed to a branch. The workspace dependency >=0.9.0 failed to match the prerelease version per semver spec. npm silently installed a stale published SDK from the registry instead of linking the local workspace copy. Four PRs (#637–#640) attempted iterative patches before the root cause was identified.

Root cause: No versioning policy existed. Agents didn't know that prerelease versions break workspace resolution, or that only Surgeon should modify versions.

Resolution: This skill, the prerelease-version-guard CI gate, and the team decision to centralize version ownership under Surgeon.

Quick Reference

RuleSummary
FormatMAJOR.MINOR.PATCH — no prerelease on dev/main
Prerelease-build.N is local-only, never committed
SyncSDK + CLI + root must have identical versions
OwnershipSurgeon bumps versions; others don't touch them
CI gateprerelease-version-guard blocks prerelease PRs
Escape hatchAny agent may revert a prerelease leak to clean version
Footgun>=0.9.0 does NOT match 0.9.1-build.4 per semver

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Standard collaboration patterns for all squad agents — worktree awareness, decisions, cross-agent communication

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

Shared hard rules enforced across all squad agents

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

Route gh-aw design, creation, diagnosis, patching, active debugging, and upgrade requests to the right strategies.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

How to write comprehensive architectural proposals that drive alignment before code is written

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

Upgrade gh-aw to latest gh-aw-firewall release and identify follow-up spec tasks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

Review code that performs git or gh operations against repository checkouts in gh-aw, checking that the right credentials are available at the right time and that sparseness, shallowness and credential-free factors are properly considered.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 18일 업데이트

github의 스킬 모두 보기

이 스킬의 문제 신고