story-splitting — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited story-splitting (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
每个故事过这 6 项:
| 字母 | 含义 | 通过标准 |
|---|---|---|
| Independent | 独立 | 可以脱离其他故事单独 ship 上线 |
| Negotiable | 可商量 | 内容、UI、实现可在 dev 中协商,不是死的 |
| Valuable | 有价值 | 上线后用户 / 业务能感受到具体价值 |
| Estimable | 可估算 | 团队能给出 ≤ 3 天的合理估算 |
| Small | 小 | 1-3 天可完成(≤ 1 个 sprint) |
| Testable | 可测 | 有明确的"做完了"判断标准 |
任何一项不通过 → 必须拆。
| 路径 | 何时用 | 例子 |
|---|---|---|
| Spike | 技术不确定,先 spike 验证可行性 | "新支付方式接入"先做 1 天技术 spike |
| Path | 一个故事多个用户路径 → 按路径拆 | 注册流程 = 邮箱注册 / 手机注册 / 第三方登录 三个故事 |
| Interface | UI 多端 → 按端拆 | 桌面 / 移动 / API 三个故事 |
| Data | 数据多类型 → 按类型拆 | 单一货币先做 → 多货币扩展 |
| Rules | 业务规则复杂 → 先做主流程,规则后续加 | 主流程不含权限 → 加权限 → 加白名单 |
❌ 水平切片:DB 层 → Backend API 层 → Frontend 层(每层一个故事)
✅ 垂直切片:完整功能但范围小(一个最小用户场景的 DB+Backend+Frontend 端到端)
Given <初始状态 / 前置条件>
When <用户动作 / 触发事件>
Then <预期结果>
And <附加预期结果>每个故事至少 3 条 AC,覆盖:
对每个故事过这 4 个轴,每轴至少列 3 个 case:
每轴至少列 3 个 case → 4 × 3 = 12 个 edge case 起步。
## Story: <故事标题>
### INVEST 自检
- [x] Independent
- [x] Negotiable
- [x] Valuable
- [x] Estimable(估算 2 天)
- [x] Small
- [x] Testable
### Acceptance Criteria
**AC1(Happy)**:
Given <前置>
When <动作>
Then <结果>
**AC2(Sad)**:
...
**AC3(Edge)**:
...
### Edge Cases
**Input 轴**:
- 空 / null / 长度 0
- 单字符
- 1000 字符(上限)
- 特殊字符 emoji + SQL keyword
- 阿拉伯语 RTL
**State 轴**:
...
**Boundary 轴**:
...
**Failure 轴**:
...
### 拆分历史
- 原 epic: <epic 名>
- 拆分路径: SPIDR-<P/I/D/R> + Workflow steps
- 兄弟故事: <story 2>, <story 3>| 逃逸路径 | 为什么不行 |
|---|---|
| "故事太多了 INVEST 走不完" | 走不完说明你应该拆,正是 INVEST 要解决的 |
| "AC 写一条 happy path 够了" | 三条最少:happy / sad / edge。少一条 = 故事不完整定义 = 测试漏洞 |
| "Edge case 太多写不完" | 4 轴 × 3 个 = 12 个起步线。写不完说明你需要再拆一次故事 |
| "水平切片更省事一层一层来" | 水平切片每层完成都没价值,要全部完成才能上线 = 一次性大爆炸 |
| "技术 spike 也算一个故事吧" | Spike 是 INVEST 失败的应急路径,不是常规故事。Spike 必须有时间 box(≤ 1 天)+ 明确产出(学到 X / 排除 Y) |
| "拆这么细 stand-up 时间不够" | 拆细的成本在 PM 端(一次性);不拆细的成本在团队全程(估算偏差 + 测试漏 + 上线返工) |
| "acceptance criteria 测试时再补" | AC 是"做完了"的定义。事后补 = 开发期间没有目标 = 做出来不一定符合期望 |
| "INVEST 太理论了,跳过" | INVEST 不是理论,是预防核武器:没 Independent → 上线被卡 / 没 Valuable → 团队做了没价值的工作 / 没 Testable → 不知道做完没 |
rice-prioritization 先排pre-mortem 跑风险product-management:sprint-planningv1.0 — 2026-05-08 product-thinking plugin v0.1.0 首发。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.