split-plan

A command that turns a product requirements document into a YAML plan for splitting the work into numbered Stories. A Story is one small, implementable unit of a larger software project.

In plain words
What is it for?
Use it to plan project work, assign features to Stories, record which Stories depend on earlier ones, and produce a structured file for later execution.
Why use it?
It creates an ordered implementation plan with module coverage and dependencies while keeping the original requirements document unchanged.

Command for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/snakeying/textum/split-plan
Clone the repo
git clone --depth 1 https://github.com/snakeying/Textum

Made for: Claude Code.

Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,295 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01295
Opus 5 $0.00000 $0.00647
Sonnet 5 $0.00000 $0.00259
Haiku 4.5 $0.00000 $0.00129

Measured 2d ago against content hash 14add513a9a4, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

split-plan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

outdated/.claude_outdated/commands/split-plan.md · 82 lines

How it starts

The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.

阶段3a: Story 拆分规划(/split-plan)

读取:docs/PRD.md(只读) | 写入:docs/split-plan.yaml(纯 YAML;不包含 ```) | 模板:.claude/textum/split-plan-template.yaml | 可选输入:SPLIT_REPLAN_PACK

生成 split-plan 规划 pack;不生成 Story 文件。

最小读取范围(必须;避免通读)

  • PRD:5.1 功能清单9.2 接口清单(必填)

硬约束(必须遵守)

N/A_STRICT 判定口径(权威;逐字一致;禁止改写):

  • 定位 PRD 小节 ### 9.2 接口清单(必填) 的正文(标题行之后到下一同级小节标题之前)

  • 判定 N/A_STRICT = true 当且仅当:正文去掉空行并 Trim 后仅剩 1 行且该行严格等于 N/A

  • 只做规划:不生成任何 Story 文件(不写入 docs/story-*-*.md

  • 输出必须严格按 .claude/textum/split-plan-template.yaml 的 YAML 结构(字段齐全;不得额外加 Markdown 文本;不得额外加键)

  • docs/split-plan.yaml 中不得出现 TBD

  • 编号必须为 Story 1..N 连续:

    • stories[].n 连续,且 stories[].story == "Story {n}"
    • stories[].slug 必须唯一且符合 kebab-case
  • stories[].modules 必须为 M-xx 数组;不得写模块名

  • stories[].prereq_stories 必须为 ["Story 1", ...] 数组(无依赖则空数组);且必须可执行(仅允许依赖更小编号)

  • stories[].goal 必须非空(不得为 TBD

模块有效性与 P0 覆盖(本阶段必须做)

从 PRD 5.1 功能清单 抽取:

  • P0_modules = 所有 priority == P0M-xx 集合
  • All_modules = PRD 中出现的全部 M-xx 集合

校验(任一不满足即必须在本命令内修正后再写文件):

  • 对每个 Story 的 modules[]:每个 M-xx 必须属于 All_modules
  • All_modules 中每个 M-xx:必须至少出现在 1 个 Story 的 modules[]
  • P0_modules 中每个 M-xx:必须至少出现在 1 个 Story 的 modules[]

API 分配(如适用)

先按 N/A_STRICT 判断 PRD 是否无 API:

  • N/A_STRICT = truePRD_HAS_API = false
  • 否则:PRD_HAS_API = true,并从 PRD 9.2 抽取 P_api = {API-###} 集合

PRD_HAS_API = false

  • api_assignments 必须为空数组

PRD_HAS_API = true

  • 覆盖 + 唯一归属:
    • P_api 中每个 API-###:必须在 api_assignments[].api 中出现且仅出现 1 次
    • api_assignments[].story 必须引用 stories[].story 中存在的 Story

阈值预检(仅确定信号;减少重规划)

仅对“每个 Story 分配了多少 API”做预检(按 api_assignments 计数;不预测 TBL/验收/功能点数量):

  • api_assigned(Story N) = api_assignmentsstory == "Story N" 的行数
  • 目标:尽量让每个 api_assigned ≤ 3
  • 若出现 api_assigned = 4–5:允许写入,但输出 DECISION 清单(见“输出规则”)
  • 若出现 api_assigned ≥ 6:不得写入;必须先拆分/重分配(增加 Story 或调整边界)直到消除

重规划模式(当提供 SPLIT_REPLAN_PACK

目标:把 pack 标记的过大 Story 拆成更小的 Story,并更新 docs/split-plan.yaml 重新满足门禁。

Read the full file on GitHub · 82 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 82 lines · 0 tokens per session scan A 14add513a9a4

Subscribe to this mod's changes

split-plan is a command published in the GitHub repository snakeying/Textum (41 stars, last pushed 7mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,295 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.