bug-reproduce
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
Use when 把任何批次的改动发到 Prismer 测试环境(test.docbrew.cn / APP_ENV=test),或听到「发测试 / 发 test / 上测试环境 / deploy test / 打 ali-k8s-test tag」。涉及 develop 部署、test 迁移通道、runner 节流时必读。
$ npx -y skills add Prismer-AI/PrismerCloud --skill releasing-test --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/releasing-testContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when 把任何批次的改动发到 Prismer 测试环境(test.docbrew.cn / APP_ENV=test),或听到「发测试 / 发 test / 上测试环境 / deploy test / 打 ali-k8s-test tag」。涉及 develop 部署、test 迁移通道、runner 节流时必读。
name: releasing-test description: Use when 把任何批次的改动发到 Prismer 测试环境(test.docbrew.cn / APP_ENV=test),或听到「发测试 / 发 test / 上测试环境 / deploy test / 打 ali-k8s-test tag」。涉及 develop 部署、test 迁移通道、runner 节流时必读。
**develop 是测试环境的唯一常规通道;`ali-k8s-test-*` tag 是紧急通道。** 违反字面规则就是违反规则本意——不存在「这次情况特殊」。
1. **本地门 = CI check 阶段四件套**(2026-09-04 教训:`npm run check` 只覆盖前两件,本地绿≠CI 绿):
2. **分支纪律硬门(三条断言,逐条贴命令输出,不满足不得进步骤 3)**:
3. **迁移前置**:比对 `src/im/sql/` 与 test 账本。有 pending → 走下方迁移通道,**先迁后发**;无 → 汇报里显式写「本批无迁移」。 4. **MR**:feature → develop。描述必含四件,缺一件不 merge:
5. **merge**:MR 合并 → develop push 自动触发 `ali_k8s_deploy_test`(check 阶段全量跑)。**禁止为快直打 tag**。合并成功后**立即**执行本地 develop 同步(不是下次发版的起点动作):宿主工作树 `/Users/prismer/workspace/pcrefactor/prismercloud` 里 `git fetch origin && git merge --ff-only origin/develop`,贴 `git rev-parse develop origin/develop` 双值相等输出。⚠️ 2026-09-07 违例记录:连续两轮只操作远端 develop、本地 develop 滞后一个 merge 才被发现——本地/远端视图收敛是每次 merge 的收尾义务。 6. **节流**:列全部 running/pending pipelines,只留目标链,其余取消(含 feature push / MR head 派生)。 7. **冒烟 + 留证**:test.docbrew.cn 200 + 本批功能面抽查;raw 证据(管线快照 / 迁移 trace / 保护操作响应)落 `/tmp/<release-name>/` 并在汇报中引用。
**规范最小单元形状**(样例 `9f82c85e3 → 51eeb3ad8`,2026-08-27 merge823 波):
* <merge> Merge branch 'feature/X' into 'develop' |\ | * 7±3 个主题聚焦 commits(test+fix/feat 混排,一波一个主题) |/ * <上一个 merge 节点> ← develop 是一条 merge 直线
仅当 owner 原话授权走紧急通道:tag `ali-k8s-test-YYYYMMDD-v<X.Y.Z>`(X.Y.Z = `cat /VERSION`,同版本重发加 `-rN`),打在 **develop merge 后的 commit** 上。迁移照常前置、节流照常执行、**事后必须补 develop/MR 正规化**。汇报引用 owner 授权原文。 **注意:tag 管线不跑 check 阶段**(`$CI_COMMIT_TAG → when: never`)——紧急通道绕过的不只是可见性,还有 eslint 棘轮/t0/runtime 全部质量门(2026-09-04 实测:tag 通道放行的内容在 develop 通道 check 阶段 6 红 + 14 warnings 超棘轮)。事后正规化 MR 会把这些全数暴露,欠的检查终归要还。
| 借口 | 现实 | |---|---| | 「CLAUDE.md 表里 tag 也是发版路径」 | 表里 tag 行是紧急/受控通道;`ali_k8s_deploy_test` 的 develop 规则才是常规。 | | 「用户说发,我就发」 | 用户授权的是发版动作,不是豁免流程;拿授权当豁免=越权。 | | 「管线绿了=发版成功」 | 管线绿只是构建部署绿;develop/MR/可见性是发版义务的一部分。tag 管线绿更弱——它连 check 阶段都没跑。 | | 「迁移我走了受控通道,流程就没问题」 | 迁移通道与发版通道独立记账,一个合规抵不了另一个越权。 | | 「MR 描述义务太重,先发后补」 | 描述义务是 owner 的审计面;缺了它这次发版不可审计。 | | 「tag 不动共享分支,更轻」 | 「轻」正是它被定为紧急通道的原因——绕过了所有人的可见性。 | | 「本地 npm run check 绿了」 | 本地门 ≠ CI check 门:CI 还跑 sandbox node 套件、acs dry-run、t0 三包、runtime 套件与 warnings 棘轮。本地必须跑等价四件套。 |
波次含 `sdk/prismer/**`(daemon/runtime 源)变更时,**cloud 部署不携带 runtime**——daemon 拉的是签名 bundle(OTA)。两条通道独立记账:
| 通道 | 触发 | 产物 | 覆盖 | |---|---|---|---| | cloud | develop merge → `ali_k8s_deploy_test` | 容器镜像 | Next.js + in-process IM | | runtime | tag `runtime-test-YYYYMMDD-vX.Y.Z` → `pack_runtime_bundle` | 签名 bundle 上传 + `im_runtime_releases` 行(**status=draft**) | daemon/agent pod OTA |
Repo: Prismer-AI/PrismerCloud
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
Review a diff against its acceptance criteria in four segments (convention adherence, bug…
Five-dimension design audit (frontend UI/UX · server data-model & flow · endpoint spec ·…
Before merge, mechanize Documentation-First — derive the code delta from git diff, then…
Diagnose the local dev machine before any APC loop step — run apc env doctor, classify each…
Close out a local coding task on the bound daemon — stage, commit, branch, merge, push via…