Chapter 08 · StoryCam Development Process
Agent Skills、gstack 与 PR Gate 工作流建设
本章记录一次从“要不要安装更多 skills”开始,逐步演化为 StoryCam 自己的 CI、PR 审查、发布和上线后验证流程的工程协作 session。
TL;DR
- 本 session 的主线是:从外部 agent skills 的能力盘点,收敛到 StoryCam 自己的 PR、CI、review、release 工作流。
- 先后全局安装了多组 addyosmani/agent-skills:spec/plan/build/test/API/source/docs,以及 Review、Verify、Ship 相关的 6 个技能。
- 关键判断是:skills 不是越多越好。真正生效的是项目内可执行、可审查、可留证据的流程。
- Codex 不能依赖本地 git hook 自动唤起 AI subagent;更稳的设计是 hook 只跑确定性检查,AI review 由用户显式触发。
- StoryCam 形成了三层 PR Gate:本地 `scripts/pr-ready.sh`、GitHub CI、Codex 三角色审查。
- 新增了 CI workflow、PR template、可选 pre-push hook、`docs/PR_REVIEW.md`,并更新了 `AGENTS.md` 和质量文档。
- 本地验证发现:lint 和 build 可通过,但 `pnpm test` 仍有 4 个既有测试失败,这是当前分支合并前必须处理的工程事实。
- 最终流程把 addy 的“工程纪律”与 gstack 的“执行型发布/QA/Canary”组合起来,而不是二选一。
本章学习目标
识别 skill 的真实价值
学会判断一个 skill 是流程制度、执行工具、参考手册,还是与项目现有机制重叠。
设计 PR 前质量门
理解为什么确定性检查适合 hook/CI,而 AI review 更适合显式触发并留下审查报告。
组合 gstack 与 Codex
把 gstack 的 ship、land-and-deploy、canary 与 Codex 的 code-reviewer/security-auditor/test-engineer 思路分层使用。
从讨论落到项目文件
把抽象流程变成 `.github/workflows`、PR 模板、脚本、docs 和 AGENTS 规则。
让验证结果诚实暴露风险
掌握“流程落地后第一件事就是跑它”,并接受它揭示已有测试失败的事实。
避免过度自动化
理解 commit、push、PR、merge、deploy 这类外部可见动作为什么需要显式确认。
工具、参考图和可视化证据
本章没有围绕一个产品截图调试,而是围绕“工程流程如何被产品化”展开。可视化证据主要是流程图、项目已有 UI flow reference,以及实际新增的质量门文件。
https://github.com/addyosmani/agent-skillsship、land-and-deploy、canary、qa、benchmark、checkpoint。
沿时间排列的原始 Prompt
1. 研究 agent-skills 与 gstack 的互补关系
https://github.com/addyosmani/agent-skills
仔细研究下这个 skills 里的技能都是做什么的,和 gstack 有什么可以互补的?
2. 聚焦 implementation 与 TDD 的必要性
incremental-implementation + test-driven-development,这两个一定要都用么?主要功能都是什么?
3. 全局安装 spec 与 plan 阶段 skills
先全局帮我安装spec-driven-development 和planning-and-task-breakdown
4. 从 planning 进入实现阶段技能选择
现在我已经做完了planning-and-task-breakdown,那还需要安装哪些 skills 比较适合?
好的,那全局安装在 -> incremental-implementation
-> test-driven-development
-> api-and-interface-design
-> source-driven-development
-> documentation-and-adrs
5. 进入 Review / Verify / Ship 阶段
https://github.com/addyosmani/agent-skills里Review 类和Verify 类和 ship 类有哪些比较适合安装的,现在项目开发已经到了这些阶段
好的,可以将推荐的 6 个skills 全局安装。同时看看这些 skills (https://github.com/addyosmani/agent-skills )是不是有对应的 subagent 和 hooks 设计来保证执行效果
6. 把 subagent 思想转成 StoryCam PR 流程
现在已经将项目上传到了 github,每次提交pr 还是希望有code-reviewer 等环节,但我用的 codex,看看有什么设计理念可以结合到现在这个项目,比如每次 pr 前是要有 hook 调起code-reviewer
好的,按照这个设计理念迭代下
7. 理解 gstack 的发布链路能力
ci-cd-and-automation和shipping-and-launch 这两个 skill 主要做什么的,是否适合融入到我们现在的开发流程中,gstack 里是不是也有类似的技能
那有没有集合 commit-push-pr-更新本地-分辨 worktree 相关的 skills
那我感觉现在的流程也可以,好像安不安装这几个 skills 都没关系?
8. 询问 gstack ship / land / canary 的边界
gstack ship 统一 commit/push/PR,这个 skill 具体是什么功能
gstack-land-and-deploy 这个 skill 主要什么功能
gstack-canary呢
时间线
/Users/vc3vc3/.codex/skills/。/ship 会并行 fan-out 三者并合并为 GO/NO-GO。hooks 主要包括 session-start、source-driven-development cache、code-simplify ignore。scripts/pr-ready.sh、可选 .githooks/pre-push、docs/PR_REVIEW.md,并更新 AGENTS.md、docs/README.md、docs/QUALITY_SCORE.md。关键时刻
转折点:从“装哪些 skills”到“如何保证执行效果”
问题不是缺少知识,而是缺少可重复执行的质量门。用户追问 subagent 和 hooks 后,讨论从技能清单转向机制设计。
关键发现:addy 与 gstack 的分工不同
addy/agent-skills 更像工程纪律手册;gstack 更像执行系统。最好的组合是:addy 定义流程,gstack 执行 QA、ship、deploy、canary。
风险判断:AI review 不适合藏进 git hook
AI 审查慢、可能波动、需要上下文,也不适合在 commit/push 这类外部可见动作中悄悄触发。最终选择是显式 Codex PR Gate。
工程现实:流程落地后会暴露已有债务
scripts/pr-ready.sh 一跑就暴露了 4 个单元测试失败。这是好事:质量门的价值就是让“还不能合并”的事实尽早出现。
关键决策表
| 方案 | 当时看起来的好处 | 为什么放弃或保留 | 最终选择 |
|---|---|---|---|
| 全量安装 addy/agent-skills | 似乎可以覆盖完整软件生命周期。 | 很多能力与 gstack 或 StoryCam 项目流程重叠;安装本身不能保证执行。 | 只安装阶段相关 skills,并把关键思想写入项目流程。 |
| pre-push hook 自动调用 code-reviewer | 每次 PR 前看似都能强制 AI review。 | AI review 不确定、慢、依赖上下文,不适合隐藏在 git hook;本地 hook 也不能代表团队/CI。 | hook 只跑确定性检查;Codex 三角色 review 由用户显式触发。 |
| 只依赖 GitHub CI | 稳定、可强制、所有 PR 一致。 | CI 能抓 lint/test/build,但不擅长产品方向、安全边界、可靠性语义和测试覆盖判断。 | CI 作为机械门禁,Codex PR Gate 作为语义审查。 |
| 用 gstack 完全替代 addy skills | gstack 有 ship、qa、canary、land-and-deploy 等执行能力。 | gstack 很强在执行,但 addy skills 的工程纪律和 review persona 仍适合做流程参考。 | addy 做制度语言,gstack 做执行动作。 |
| 让 StoryCam 自己沉淀 PR_REVIEW 文档 | 项目规则可被人和 agent 共同遵守,且能与 StoryCam 安全/可靠性约束绑定。 | 需要额外维护,但比只依赖全局 skill 更稳定。 | 保留并新增 docs/PR_REVIEW.md。 |
可复用方法
1. Skills 三问法
评估一个 skill 前先问:它是制度、执行器还是参考手册?项目里是否已经有等价机制?它能否留下可验证证据?
2. PR Gate 分层法
把 PR 前检查拆成三层:本地快速检查、CI 强制检查、AI 语义审查。不要把三者混成一个不可解释的大按钮。
3. AI Review 显式触发法
AI review 适合由人发起,并要求输出 GO/NO-GO、blockers、accepted risks、verification evidence 和 rollback plan。
4. 发布链路拆段法
把发布拆成准备 PR、合并部署、上线后 canary。每段有不同风险和工具,不要让一个命令承担全部责任。
5. 项目地基优先法
全局 skills 会提醒 agent,但真正可靠的是项目内的 docs、scripts、CI、PR template 和 AGENTS 触发规则。
6. 质量门反向验收法
新增 gate 后立刻运行。若暴露失败,不要视为流程失败,而是说明流程开始承担“揭示风险”的职责。
工程证据
当前分支曾显示为 dev...origin/dev;远端为 https://github.com/nlp-zn/storycam.git。
注意 本章没有记录 PR 编号、commit hash 或部署结果。
已安装:spec-driven-development、planning-and-task-breakdown、incremental-implementation、test-driven-development、api-and-interface-design、source-driven-development、documentation-and-adrs。
Review/Verify/Ship 阶段安装:code-review-and-quality、security-and-hardening、debugging-and-error-recovery、performance-optimization、shipping-and-launch、ci-cd-and-automation。
.github/workflows/ci.yml:GitHub CI。.github/pull_request_template.md:PR 模板。scripts/pr-ready.sh:本地 PR 前 deterministic gate。.githooks/pre-push:可选 pre-push hook。docs/PR_REVIEW.md:StoryCam PR Gate 规则。
AGENTS.md:新增 PR Gate 触发规则。docs/README.md:把PR_REVIEW.md纳入文档索引。docs/QUALITY_SCORE.md:新增 PR Gate 最低质量要求。
passed bash -n scripts/pr-ready.sh .githooks/pre-push
passed git diff --check
passed pnpm lint,但仍有 2 个 warning。
passed pnpm typecheck
passed pnpm build
failed pnpm test:4 个单元测试失败。
src/server/storycam/metadataRepositories.test.ts:generation job insert 断言与当前字段不一致。src/server/storycam/storyWorldAssetImageService.test.ts:placeholder image 响应新增/包含reason字段,测试预期未同步。src/lib/providers/openrouter/imageProvider.test.ts:representative image provider 的 ready/placeholder 结果与测试预期不一致。
scripts/pr-ready.sh
PR_READY_E2E=1 scripts/pr-ready.sh
git config core.hooksPath .githooks
pnpm lint
pnpm typecheck
pnpm test
pnpm build
后续事项
已完成
- 完成 addy/agent-skills 与 gstack 的互补分析。
- 安装开发、review、verify、ship 阶段相关全局 skills。
- 建立 StoryCam PR Gate 文档与触发规则。
- 新增 CI、PR template、本地 pr-ready 脚本和可选 pre-push hook。
- 修复
StoryWorldReview.tsx中阻塞 lint 的 error。
待确认
- 是否启用本地 hook:
git config core.hooksPath .githooks。 - GitHub CI 是否需要把 E2E 设为必须检查,或先作为非阻塞观察项。
- 是否需要把 Codex PR Gate 输出模板进一步写入 PR template。
- 是否需要安装或定制本地 code-reviewer/security-auditor/test-engineer persona。
后续开发
- 修复当前 4 个单元测试失败。
- 处理剩余 2 个 ESLint warning。
- 为 release 阶段补充
docs/RELEASE.md或在docs/PR_REVIEW.md增加发布 checklist。 - 在首个正式 PR 中实测:CI → Codex PR Gate → gstack ship → land-and-deploy → canary。