story-check

story-check is a command for Claude Code from snakeying/Textum. It costs 0 tokens per session (3,061 once invoked), scanned A, original, MIT.

A read-only validation command for checking one numbered software work item, called a Story, against project rules and requirements.

In plain words
What is it for?
Use it to produce a PASS, DECISION, or detailed FAIL list before generating the Story’s execution pack.
Why use it?
It finds missing references, invalid identifiers, and incomplete links to features, APIs, tables, and business rules without changing files.

Command for Claude Code

Written for Claude Code: $ARGUMENTS substitution.

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/story-check
Clone the repo
git clone --depth 1 https://github.com/snakeying/Textum

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for story-check

README.md
[![agentmods](https://agentmods.dev/badge/commands/snakeying/textum/story-check.svg)](https://agentmods.dev/commands/snakeying/textum/story-check)
Your own site
<a href="https://agentmods.dev/commands/snakeying/textum/story-check"><img src="https://agentmods.dev/badge/commands/snakeying/textum/story-check.svg" alt="Measured on agentmods" height="20"></a>
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 3,061 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.1 $0.00000 $0.03061
Opus 5 $0.00000 $0.01530
Sonnet 5 $0.00000 $0.00612
Haiku 4.5 $0.00000 $0.00306

Measured 6d ago against content hash 8a861ab5f583, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

story-check 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 6d 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/story-check.md · 177 lines

How it starts

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

阶段6a: Story 校验

  • $ARGUMENTS: Story 编号(如: 1)

读取:docs/story-$ARGUMENTS-*.mddocs/GLOBAL-CONTEXT.md(只读)、docs/PRD.md(只读) | 写入:无(只输出 FAIL/DECISION/PASS;不修改文件) | 模板:N/A

校验单个 Story 并输出 FAIL/DECISION/PASS 清单;不修改任何文件。

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

只允许引用本节列出的内容范围;其余一律视为不可用。

  1. 读取 Story:仅解析 YAML front-matter + 定位章节边界(不摘抄正文)
  2. 读取 GC:仅第 4 节业务规则表(抽取合法 BR-### 集合)
  3. 读取 PRD(只读;按索引定向读取):
    • ### 9.2 接口清单(必填):按 N/A_STRICT 判定 PRD_HAS_API;抽取 API-### 集合(如适用)
    • ### 8.0 功能点→落点映射(必填):抽取本 Story fp_ids 对应行(用于 FP 存在性 + 落点闭合)
    • ### 8.1 表清单:抽取 TBL-### 集合
    • 第 6 节规则表:抽取 BR-### 集合
    • refs.prd_api 非空:按锚点 <!-- PRD#API-### --> 定向校验 PRD 9.3 接口详情存在性
    • refs.prd_tbl 非空:按锚点 <!-- PRD#TBL-### --> 定向校验 PRD 8.2 表定义存在性

输出规则(只读)

  • 不输出任何原文(只输出清单)
  • 若存在任何 FAIL
    • 输出 FAIL 清单(F-001 起编号;每条必须包含以下字段):
      • 定位:目标 Story 文件(docs/story-N-<slug>.md)+ YAML front-matter key / Markdown 章节名 / 门禁项;避免行号
      • 问题:1 句
      • 期望:可机械执行的“替换目标/格式”(能推导就写出来)
      • 影响:H/M/L
      • 修复:只给 1 个动作(通常是“按定位修正 docs/story-$ARGUMENTS-*.md”)
    • 末尾追加:
      • 修正:按 FAIL 清单逐条修复 docs/story-$ARGUMENTS-*.md 后重跑 /story-check $ARGUMENTS
      • 重跑:/story-check $ARGUMENTS
    • 然后结束
  • 仅当无 FAIL
    • 若存在任何 DECISION:输出 DECISION 清单(D-001 起编号;每条必须包含:定位 / 问题 / 影响 / 建议动作),并在末尾追加:下一步:/story-pack $ARGUMENTS
    • 否则:输出 PASS,并在末尾追加:下一步:/story-pack $ARGUMENTS

FAIL 校验项(严格拦截)

0) 基础门禁

  • docs/PRD.md 必须存在
  • docs/GLOBAL-CONTEXT.md 必须存在
  • docs/story-$ARGUMENTS-*.md 必须存在且仅匹配 1 个

1) YAML front-matter(必须可解析且字段齐全)

对 Story 文件首部 --- ... ---

  • 必须存在且可解析为 YAML
  • 根键必须为 STORY: v1
  • 必须存在键:storynslugtitlemodulesprereq_storiesfp_idsrefsartifacts
  • 一致性(任一不满足即 FAIL):
    • n 必须等于 $ARGUMENTS,且 story 必须严格等于 "Story {n}"
    • 文件名必须匹配:docs/story-{n}-{slug}.mdslug 与 front-matter 一致)
    • slug 必须为 kebab-case
  • modules
    • 必须为非空数组;每项必须为 M-01(2 位数字)形式;不得出现 M-xx/模块名
    • 去重后不得为空;不得重复
  • prereq_stories
    • 必须为数组;每项必须严格匹配 Story <number>;不得重复
    • 不得包含自身;每个 <number> 必须 < n
  • fp_ids
    • 必须为非空数组;每项必须为 FP-001(3 位数字)形式;不得重复;不得出现 FP-###
  • title
    • 必须为非空字符串;不得为 TBD / 功能名称
  • refs 必须存在且包含 4 个键,且每个都必须为数组:
    • refs.gc_br[]:每项必须为 BR-001(3 位数字)形式;不得包含 GC# 前缀
    • refs.prd_br[]:每项必须为 BR-001(3 位数字)形式;不得包含 PRD# 前缀
    • refs.prd_tbl[]:每项必须为 TBL-001(3 位数字)形式;不得包含 PRD# 前缀
    • refs.prd_api[]:每项必须为 API-001(3 位数字)形式;不得包含 PRD# 前缀
  • artifacts 必须存在且包含 3 个键,且每个都必须为数组:
    • artifacts.file[]:每项必须匹配 ART:FILE:<path>
    • artifacts.cfg[]:每项必须匹配 ART:CFG:<key>
    • artifacts.ext[]:每项必须匹配 ART:EXT:<system>

Read the full file on GitHub · 177 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. 6d ago First seen · 177 lines · 0 tokens per session scan A 8a861ab5f583

Subscribe to this mod's changes

story-check 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 3,061 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.