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.
npx agentmods add commands/snakeying/textum/story-checkgit clone --depth 1 https://github.com/snakeying/TextumWrote 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.
[](https://agentmods.dev/commands/snakeying/textum/story-check)<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>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.
| Model | Per session | Once 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 |
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.
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-*.md、docs/GLOBAL-CONTEXT.md(只读)、docs/PRD.md(只读) | 写入:无(只输出 FAIL/DECISION/PASS;不修改文件) | 模板:N/A
校验单个 Story 并输出 FAIL/DECISION/PASS 清单;不修改任何文件。
最小读取(必须;避免通读)
只允许引用本节列出的内容范围;其余一律视为不可用。
- 读取 Story:仅解析 YAML front-matter + 定位章节边界(不摘抄正文)
- 读取 GC:仅第 4 节业务规则表(抽取合法
BR-###集合) - 读取 PRD(只读;按索引定向读取):
### 9.2 接口清单(必填):按N/A_STRICT判定PRD_HAS_API;抽取API-###集合(如适用)### 8.0 功能点→落点映射(必填):抽取本 Storyfp_ids对应行(用于 FP 存在性 + 落点闭合)### 8.1 表清单:抽取TBL-###集合- 第 6 节规则表:抽取
BR-###集合 - 若
refs.prd_api非空:按锚点<!-- PRD#API-### -->定向校验 PRD9.3接口详情存在性 - 若
refs.prd_tbl非空:按锚点<!-- PRD#TBL-### -->定向校验 PRD8.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 - 必须存在键:
story、n、slug、title、modules、prereq_stories、fp_ids、refs、artifacts - 一致性(任一不满足即
FAIL):n必须等于$ARGUMENTS,且story必须严格等于"Story {n}"- 文件名必须匹配:
docs/story-{n}-{slug}.md(slug与 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>
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.
- 6d ago First seen · 177 lines · 0 tokens per session scan A 8a861ab5f583
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.
Other commands, from other repositories
planwt
You are the orchestrator for a bounded worktree task.
statuswt
You are checking the status of all active worktree task files in the project.
ask
Math Research OS entry: auto-diagnose user intent, route to thinking lenses, math knowledge base, or design translation layer.
ask
数学研究操作系统入口:自动诊断用户意图,路由到思想透镜、数学知识库或设计翻译层。 English: Math Research OS entry: auto-diagnose user intent, route to thinking lenses, math knowledge base, or design translation layer.
finishwt
You are finishing a worktree task.
checklist
Generate a custom checklist for the current feature based on user requirements.