prd-plan

A guided process for turning product requirements into a YAML plan file. YAML is a human-readable text format commonly used for configuration and structured project data.

In plain words
What is it for?
Use it to clarify a project, record goals and scope in docs/prd-plan-pack.yaml, identify blockers, and signal when the plan is ready for the next PRD step.
Why use it?
It keeps confirmed requirements in one file and highlights missing decisions before development begins. It also prevents unconfirmed details from being treated as settled.

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/prd-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,114 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.01114
Opus 5 $0.00000 $0.00557
Sonnet 5 $0.00000 $0.00223
Haiku 4.5 $0.00000 $0.00111

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

Security

Grade A, and why

prd-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 3d 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/prd-plan.md · 69 lines

How it starts

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

阶段1a: 需求澄清(写入 YAML plan-pack)

读取:docs/prd-plan-pack.yaml(如存在) | 写入:docs/prd-plan-pack.yaml(每轮更新;纯 YAML;不包含 ```) | 模板:.claude/textum/prd-plan-pack-template.yaml

目标:把已确认事实持续写入 docs/prd-plan-pack.yaml(唯一事实来源),直到满足 READY 门禁。

输出规则(必须遵守)

输出必须二选一(除此之外不要输出任何解释/复述):

  1. IN_PROGRESS
    • 只输出两块内容:
      1. 本轮问题(≤4;只问 blockers)或 本轮变更摘要(YAML 路径列表)
      2. 剩余 blockers(≤8;按优先级)
  2. READY
    • 只输出三行纯文本:
      • READY
      • 已写入:docs/prd-plan-pack.yaml
      • 下一步:/prd
  • 不输出 YAML 正文(包括 docs/prd-plan-pack.yamlPRD_PLAN_CLARIFY_PACK

写入规则(必须遵守)

  • 未确认信息不得写入;未知保持为空/空数组
  • 仅当用户明确说“无/不适用/没有”时才写 N/ANone
  • 不改写用户给出的 token(尤其 modules[].feature_points[].landing

PRD_PLAN_CLARIFY_PACK 处理(必须)

当用户粘贴 PRD_PLAN_CLARIFY_PACK 时:

  1. 只围绕 blockers 提问(≤4)
  2. 收集答案后,按 blockers[].path 回填到 docs/prd-plan-pack.yaml(保留其它已确认字段)
  3. 输出「本轮变更摘要(路径列表)」+「剩余 blockers」

READY 门禁(必填路径清单)

  • project.nameproject.one_liner 非空
  • goals[0+]non_goals[0+]:每条非空
  • scope.in[0+]scope.out[0+]:每条非空
  • roles[0+]:每个 role 的 role/description 非空;typical_scenarios[0+] 且每条非空
  • permission_matrix.operations[0+]:每行 op 非空;per_role 至少 1 个 key(key 必须是 roles[].role 子集;value 只能是 A/D/O);note 可为 N/A
  • modules[0+]:每个模块 id/name/summary/priority 非空;且至少 1 个模块 priority = P0
  • modules[].feature_points[0+]:每条 fp/desc/landing 非空(landing 允许 N/A
  • modules[].scenarios[0+]:每条 actor/given/when/then 非空(fail_or_edge/note 可为 N/A
  • business_rules[0+]:每条 id/desc/scope 非空(exception_or_note 可为 N/A
  • 稳定 ID:
    • modules[].id 必须唯一且符合 M-01 格式
    • modules[].feature_points[].fp 必须全局唯一且符合 FP-001 格式
    • business_rules[].id 必须唯一且符合 BR-001 格式
  • api.has_api 必须为布尔值:
    • falseapi.endpoints=[]api.base_url/auth/... 可为 N/A
    • trueapi.base_url 非空且不为 N/Aapi.auth 非空且不为 N/A(无认证写 None);api.endpoints[0+] 且每条 method/path/permission/summary 非空
  • modules[].feature_points[].landing 合法性(不改写 token):
    • 允许:N/A 或逗号分隔多项集合
    • 每项必须以 DB: / FILE: / CFG: / EXT: 之一开头
    • 若出现 DB:<table>:该 <table> 必须能在 data_model.tables[].table 中找到

Read the full file on GitHub · 69 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. 3d ago First seen · 69 lines · 0 tokens per session scan A bbb26774f420

Subscribe to this mod's changes

prd-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,114 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.