From bb-spec-core
Dependency-introduction and version-selection policy to follow before adding or upgrading any external dependency — language packages (npm/Go/PyPI/Cargo/Maven), runtimes, toolchains, GitHub/GitLab CI Actions, container images, IaC providers, Helm charts, CLI tools. Standard/official libraries first (e.g. Go's database/sql and net/http); importing a NEW third-party library requires asking the user and getting explicit consent BEFORE writing any import or dependency-file change. Always check the official latest version before writing a version number; never rely on training memory. TRIGGER when editing package.json / go.mod / requirements.txt / Cargo.toml / pom.xml / Dockerfile / docker-compose.yaml / .github/workflows/*.yaml / Terraform / Helm chart / .nvmrc / .tool-versions, adding any import that pulls a new package, or the user asks to upgrade a dependency / add a library / bump a version / update Actions. | 引入或升级任何外部依赖前必须遵守的依赖引入与版本选择策略——覆盖语言包(npm/Go/PyPI/Cargo/Maven)、运行时与工具链、GitHub/GitLab CI Actions、容器镜像、IaC provider、Helm chart、CLI 工具。强制"官方库 / 标准库优先"(如 Go 的 database/sql、net/http);新增第三方库必须先询问用户并获明确同意,才能写入 import 或依赖文件。强制要求"写入版本号前先用官方渠道查最新版本",禁止凭训练记忆或既往项目经验填写版本号。TRIGGER when:编辑 package.json / go.mod / requirements.txt / Cargo.toml / pom.xml / Dockerfile / docker-compose.yaml / .github/workflows/*.yaml / .gitlab-ci.yaml / Terraform / Helm chart / .nvmrc / .tool-versions 等任何会钉死外部资产版本号的文件、新增会拉入新包的 import;或用户要求 "升级依赖" / "加个 xxx 库" / "bump 版本" / "更新 Actions" 等。
How this skill is triggered — by the user, by Claude, or both
Slash command
/bb-spec-core:version-policyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
适用于:**一切会被钉死到项目文件里的外部资产版本号 / tag / digest 的引入与升级**。
适用于:一切会被钉死到项目文件里的外部资产版本号 / tag / digest 的引入与升级。
核心理念:先问"该不该引入",再问"引入哪个版本"。 官方库 / 标准库优先,新增第三方库须经用户同意;任何版本号在写入文件前都必须经官方渠道验证(训练数据有截止时间,凭记忆填写的"最新版本号"几乎总是过时的)。
TRIGGER(命中任一即应应用本策略):
package.json、bun.lockb、go.mod、go.sum、requirements.txt、pyproject.toml、Cargo.toml、pom.xml、build.gradle(.kts).nvmrc、.tool-versions、.python-version、Dockerfile 中的 FROM 行、go.mod 中的 toolchain 指令.github/workflows/*.yaml(uses: actions/*@vX)、.gitlab-ci.yaml(include 与 components)Dockerfile 的 FROM、docker-compose.yaml / Helm chart / K8s manifest 中的 image: tagrequired_providers、Pulumi 包、Helm chart versionbrew install <pkg>@<version> / apt install <pkg>=<version> / curl ... | sh 等SKIP(以下情况本策略不适用):
不限于包管理器声明。本策略覆盖以下所有类型:
| 类别 | 典型文件 / 位置 | 查询命令示例 |
|---|---|---|
| npm 生态 | package.json | npm view <pkg> version / bun pm view <pkg> |
| Go 模块 | go.mod | go list -m -versions <module> |
| Python | requirements.txt、pyproject.toml | pip index versions <pkg> |
| Rust crate | Cargo.toml | cargo search <crate> |
| Java | pom.xml、build.gradle | Maven Central 搜索 |
| 运行时 | .nvmrc、.tool-versions | 官方发布渠道 |
| GitHub Actions | .github/workflows/*.yaml | gh api /repos/<owner>/<repo>/releases/latest --jq .tag_name |
| 容器镜像 | Dockerfile、docker-compose.yaml | Docker Hub / GHCR tags 页 / crane ls <image> |
| Helm chart | Chart.yaml | helm search repo <chart> --versions |
| Terraform provider | *.tf | https://registry.terraform.io/providers/<ns>/<name> |
本节是版本选择的前置门——先通过这道门,才进入后续"查版本、选版本"流程。
实现任何功能时,按以下优先级选取依赖来源:
database/sql、net/http,Python 的 json、http.server)go.mod / package.json / lockfile 中的库,继续使用不算新增)在写入任何 import 语句或依赖文件之前,必须先向用户说明并获得明确同意:
用户同意后才能导入;用户拒绝则改用标准库或现有依赖实现。
/plan 的 ExitPlanMode 批准)→ 批准即同意,不需重复询问(版本仍按 §3 查最新)import 新第三方库,再事后告知net/http 而未经用户同意)在写入版本号之前,Agent 必须先通过官方渠道查询当前最新版本。
actions/checkout 实际 v6 却写 v4)WebSearch 搜索结果中的版本号,未访问官方源确认npm 生态:
npm view <pkg> version # 单一最新版本
bun pm view <pkg> # bun 方式
# 或访问 https://www.npmjs.com/package/<pkg>
Go 模块:
go list -m -versions <module> # 列出所有版本
# 或访问 https://pkg.go.dev/<module>
Python:
pip index versions <pkg>
# 或访问 https://pypi.org/project/<pkg>
Rust:
cargo search <crate>
# 或访问 https://crates.io/crates/<crate>
GitHub Actions:
gh api /repos/<owner>/<repo>/releases/latest --jq .tag_name
# 或访问 https://github.com/<owner>/<repo>/releases
容器镜像:
docker run --rm quay.io/skopeo/stable list-tags docker://<image>
crane ls <image>
# 或访问 Docker Hub / GHCR 的 tags 页面
Helm chart:
helm search repo <chart> --versions
# 或访问 ArtifactHub
Terraform / OpenTofu provider:
https://registry.terraform.io/providers/<ns>/<name>运行时与工具链(Node.js、Java、Python、Go、Bun、Ubuntu 等):
兜底:以上命令不可用时,用 WebFetch / WebSearch 访问官方 release 页或 changelog;不可直接输出搜索结果摘要中的版本号,必须打开官方页面确认。
除用户特殊声明外,按以下顺序选取版本:
有 LTS 概念的依赖(Node.js、Java、Python、Ubuntu、Spring Boot、Angular 等):
无 LTS 概念的普通库(绝大多数 npm / Go / Python / Rust 包、GitHub Actions、容器镜像、Terraform provider 等):
禁止直接选用以下版本:
如确需锁定到非最新版本,必须在 PR 描述或 commit message 中写明:
不写明原因的"莫名锁旧版"应在 review 中被拦回。
为已有项目升级依赖时同样适用本策略,不因"只是升级"而豁免查询:
bun update <pkg> / go get -u <module> / cargo update -p <crate> 等命令执行前应先确认目标版本bun(详见前端规范),不在本 skill 范围内import 变更后必须 go mod tidy(详见 Go 项目规范)在保存任何含版本号的文件前,逐项确认:
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub 0xbb2b/bb-spec --plugin bb-spec-core