package-publish
Use when 发布或准备发布 retikz npm 包、核对发布版本与 git tag,或执行 alpha、beta、rc、stable 发版
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when 发布或准备发布 retikz npm 包、核对发布版本与 git tag,或执行 alpha、beta、rc、stable 发版
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when changing any retikz apps/docs content, route data, i18n, demo, SourceLinks, or schema reference before loading the matching page-type skill.
Use when retikz needs multiple independent LLMs to review the same fixed code, ADR, implementation plan, test contract, commit, or working-tree snapshot before a gate or delivery decision.
Use when an Alpha ADR needs a pre-implementation capability gate, or a Beta milestone needs code-based completeness and package-boundary auditing.
Use when planning a retikz architecture direction, version roadmap, or alpha feature that may need a long-lived ADR before implementation.
Use when retikz work is primarily refactoring, reorganization, renaming cleanup, modularization, or internal simplification and should start from a reviewed implementation plan before code changes.
Use when retikz implementation, adversarial testing, and docs are complete, and an ADR or beta TODO needs changelog, contract consistency review, roadmap status updates, or final human acknowledgement.
| name | package-publish |
| description | Use when 发布或准备发布 retikz npm 包、核对发布版本与 git tag,或执行 alpha、beta、rc、stable 发版 |
本 skill 用于 npm 发版。风险点是版本号、git tag、npm artifact、docs changelog、roadmap 必须可追溯一致。
AGENTS.md。commit、tag、push、npm publish 都必须拿到当前对话明确授权。npm view / login / dry-run / publish,以及验证真实用户依赖闭包的 pnpm install,都显式使用 --registry https://registry.npmjs.org/;不得继承用户级镜像 registry。发布组真源是 scripts/release-groups.config.mjs。每个可发布包的 package.json 必须声明 retikz.domain、retikz.releaseGroup、retikz.layer、retikz.publishable。若下表、skill 文本与配置或 manifest 不一致,先修配置 / manifest / skill 并运行 pnpm run check:release-groups。
| 组 | 包 | 发布顺序 | tag |
|---|---|---|---|
| kernel | @retikz/math, @retikz/runtime, @retikz/core, @retikz/render, @retikz/react, @retikz/vanilla, @retikz/tex | math -> runtime -> core -> render -> react -> vanilla -> tex | kernel-v<version> |
| data | @retikz/data | data | data-v<version> |
| plot | @retikz/plot, @retikz/plot-react, @retikz/plot-vanilla | plot -> plot-react -> plot-vanilla | plot-v<version> |
| table | @retikz/table, @retikz/table-react, @retikz/table-vanilla | table -> table-react -> table-vanilla | table-v<version> |
| standard | @retikz/standard, @retikz/standard-react, @retikz/standard-vanilla | standard -> standard-react -> standard-vanilla | standard-v<version> |
不发布:@retikz/docs、@retikz/eval 是 private app。
同组 lockstep:同组所有 publishable package 必须写同一个 version 并同次发布。不同发布组版本线独立。目录只表达 domain,不表达发布组;例如 packages/viz/data 与 packages/viz/plot 同属 viz 领域,但发布组独立。
<release-group>-v<version>,其中 release group 必须是 scripts/release-groups.config.mjs 的键;tag 与 npm 发布组一一对应,不用 domain、目录名或单个包名代替。kernel-v<version>、plot-v<version>。chart-v<version> 只有在配置中正式新增 chart 发布组且 pnpm run check:release-groups 通过后才能启用;当前不得先创建 chart tag。v<version> tag 保持原样,不得迁移或补打同版本前缀 tag;新版本从本规范生效后改用 kernel-v<version>。git tag -a <release-group>-v<version> -m "<release-group> <version>",不得创建 lightweight tag。依赖范围表达版本耦合:
workspace:*,发布时应解析为同组目标版本。workspace:^,发布时应解析为兼容范围;只有依赖组发生不兼容变化且当前组需要适配时,才同时发布消费组。@retikz/data、@retikz/core 或 @retikz/math。改文件前先向用户确认:
kernel / data / plot / table / standard;<release-group>-v<version> 推导的 git tag;old -> target;apps/docs/src/modules/docs/data/changelog/*.ts 中对应 release 文件的 note 范围;定版本前查锚点包:
npm view @retikz/core versions --registry=https://registry.npmjs.org/
npm view @retikz/core dist-tags --registry=https://registry.npmjs.org/
npm view @retikz/data versions --registry=https://registry.npmjs.org/
npm view @retikz/data dist-tags --registry=https://registry.npmjs.org/
npm view @retikz/plot versions --registry=https://registry.npmjs.org/
npm view @retikz/plot dist-tags --registry=https://registry.npmjs.org/
npm view @retikz/table versions --registry=https://registry.npmjs.org/
npm view @retikz/table dist-tags --registry=https://registry.npmjs.org/
npm view @retikz/standard versions --registry=https://registry.npmjs.org/
npm view @retikz/standard dist-tags --registry=https://registry.npmjs.org/
规则:
alpha.N -> alpha.(N+1) 这样递增 1。.1 开始:alpha.N -> beta.1、beta.N -> rc.1、rc.N -> stable。--tag alpha;beta 用 --tag beta;rc 用 --tag next;stable 不带 prerelease dist-tag。只做发布准备相关改动:
apps/docs/src/modules/docs/data/changelog/*.ts 中对应 release 文件,结构以 apps/docs/src/modules/docs/data/types.ts 为准;不要改旧 changelog MDX。apps/docs/src/modules/docs/data/module.ts,例如 minor / major 切档或 alpha -> beta -> rc -> stable。develop-wrapup 修正。pnpm install。全仓验证和 dry-run 前必须完成,适用于 kernel / data / plot / table / standard 全部发布组:
develop-wrapup 的“ADR 长期一致性”标准检查:ADR 从 Proposed 起只保留核心决策、基础数据结构 / 公开契约、行为与兼容性、功能边界、架构验证、被否决方案、测试策略摘要和最终结果;不得只检查状态、文件长度、roadmap 或提交说明。Accepted;被替代记录必须为 Superseded,并明确链接替代 ADR 与被替代原因。Changelog 规则:
PackageBlock.pkg 必须来自 PACKAGE_IDS。发版验证比日常局部改动更宽;任一步失败就停。
给用户申请授权前至少跑:
pnpm run check:full
pnpm run check:release-groups
pnpm run test:full
pnpm run build
pnpm run test:publish-artifacts
然后按发布顺序 dry-run 发布组内每个包:
pnpm --filter @retikz/core publish --dry-run --no-git-checks --access public --tag <tag> --registry https://registry.npmjs.org/
冻结目标 tarball 后,必须额外验证真实用户依赖闭包:只把本次目标包 override 到 frozen exact tarball,其余 @retikz/* 禁止使用 workspace 或本地 support tarball;在全新 consumer 中运行 pnpm install --registry=https://registry.npmjs.org/,保存 lockfile 并核对解析版本,再对全部公开 export 执行 ESM import 与严格 TypeScript smoke。若另有全 workspace tarball fixture,两者必须都通过;本地闭包通过不能替代官方 registry 闭包。
逐包检查 dry-run 输出:
dist/、LICENSE、README.md、package.json;dist/**/*.js,declarations 只位于 dist/types/**/*.d.ts / *.d.ts.map;dist/es、dist/lib 或 .cjs,全部 package exports 与公开 subpath 已通过 packed ESM import;workspace:* 依赖已解析为确切版本,workspace:^ 依赖已解析为兼容范围;"private": true;.js、.d.ts、.d.ts.map 泄漏到 packages/*/*/src。辅助检查:
rg '"private": true' packages/*/*/package.json
rg --files packages | rg 'packages/.*/src/.*\.(d\.ts|d\.ts\.map|js)$'
若公开模块正常增长导致 artifact limits 需要调整,先完成构建,再显式运行 pnpm run update:publish-artifact-limits;逐包核对生成的文件数与 tarball bytes diff 后,重新运行普通 pnpm run test:publish-artifacts。普通验证命令不得改写 limits。
验证后必须停下,向用户展示:
没有当前对话明确授权,不继续执行。
获得授权后:
🔖 <scope>: 发布 <version> 或 🔖 <scope>: 准备发布 <version>。git status --short 没有意外发布文件改动。git tag -a <release-group>-v<version> -m "<release-group> <version>"。npm whoami --registry=https://registry.npmjs.org/。pnpm --filter @retikz/<pkg> publish --access public --tag <tag> --no-git-checks --registry https://registry.npmjs.org/
若 npm 要 OTP,加 --otp=<code>。OTP 时效短;遇到 EOTP 就停下要新码。部分包已发成功后,重试前先 npm view <pkg>@<version>,跳过已发布包。
不要手动合并 branch-sync PR;分支同步由 GitHub Actions 处理。
发布成功后:
<release-group>-v<version> git tag 已确认。scripts/release-groups.config.mjs;未配置的 chart 等组没有提前创建 tag。scripts/release-groups.config.mjs、package.json 的 retikz 元信息和目标发布组一致。module.ts。Accepted;被替代 ADR 为 Superseded,且替代关系明确。pnpm install。pnpm run check:full 通过。pnpm run check:release-groups 通过。pnpm run test:full 通过。pnpm run build 通过。workspace:* 精确版本解析和 workspace:^ 兼容范围解析。