story
Skill1 starsChanged 8 months agoMITView on GitHub
Code Cannon: Walk the open sub-issues of a story ticket within one session
- Deletes or force-pushes
- Commits and pushes
13 other projects use a version of this.
Adopted by
Most recently taken up by
- cjh-solver/MathModeling-Skills-Arsenaltheir own version, first seen Nov 8, 2026
- zenstory-ai/oh-story-claudecodetheir own version, first seen Nov 8, 2026
- hua695/MathModeling-Skills-Arsenaltheir own version, first seen Oct 25, 2026
- nschurmann/hola-aitheir own version, first seen Oct 25, 2026
- ES-92/esctheir own version, first seen Oct 20, 2026
- LightbridgeLab/CodeCannonword for word, first seen Oct 13, 2026
Used with
Projects with it also use story-deslop, story-long-write and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
XiaoyangySkillstory-deslop
网文去AI味。检测并清除文本中的AI写作痕迹,让文字回归自然、非模板化。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。
Also in 5 projects that use this
XiaoyangySkillstory-long-write
长篇网文写作方法论与 novel-studio pipeline 适配器。用于把长篇开书、大纲、日更、续写、重写等需求整理为 pipeline 输入;在 novel-studio 内禁止直接生成正文。触发方式:/story-long-write、/写长篇、「帮我开书」「写大纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。
Also in 5 projects that use this
worldwondererSkillstory-cover
小说封面生成与提示词设计。根据书名、作者名和题材构建封面提示词;用户只要提示词时不生图,要求封面图时调用 GPT-Image-2,Codex CLI 优先使用内置 ImageGen。触发方式:/story-cover、/封面、「帮我做个封面」「生成封面图」「封面提示词」「封面设计」。
Also in 4 projects that use this
worldwondererSkillstory-import
逆向导入已有小说。将已写好的小说(半成品或完本)反向解析为标准项目目录结构,兼容 story-long-write / story-short-write 后续写作流程;内部复用 story-long-analyze / story-short-analyze 的拆解管道,按篇幅自动分流。触发方式:/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。
Also in 4 projects that use this
marketcallsSkillstory-setup
Set up the story-telling environment. Checks Node, installs dependencies, creates .env from the template, verifies the Sarvam, fal and OpenAI keys, and confirms all Remotion packages are on one version.
Also in 5 projects that use this
badgidsSkillstory-review
Diagnose existing prose at a chosen editorial level, from whole-story and developmental problems through scene, line, copy, and proof passes, without rewriting until the diagnosis is accepted.
Also in 5 projects that use this
- +2 more from Xiaoyangy
- +3 more from worldwonderer
Other versions13 projects use a version of this.
Word for word · 1
- LightbridgeLab/CodeCannon★ 1100% same
Edited · 0
None found.
Wrote their own version · 12
- worldwonderer/oh-story-claudecode★ 8.4ksame name
- zenstory-ai/oh-story-claudecode★ 8.4ksame name
- receptron/mulmocast-cli★ 476same name
- Xiaoyangy/novel-studio★ 122same name
- nschurmann/hola-ai★ 101same name
- cjh-solver/MathModeling-Skills-Arsenal★ 14same name
- hua695/MathModeling-Skills-Arsenal★ 12same name
- Storybloq/plugin-archive★ 8same name
- ByronFinn/dev-skills★ 4same name
- nicodiansk/turbocharge★ 3same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- checkpointSkill
- delegateSkill
- deploySkill
- qaSkill
- reviewSkill
- setupSkill
- startSkill
- statusSkill
- storySkill
- submit-for-reviewSkill
- checkpointSkill
- delegateSkill
- deploySkill
- qaSkill
- reviewSkill
- setupSkill
- startSkill
- statusSkill
- storySkill
- submit-for-reviewSkill
- checkpointSkill
- delegateSkill
- deploySkill
- qaSkill
- review-agentSkill
- reviewSkill
- setupSkill
- startSkill
- statusSkill
- submit-for-reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 7 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 34
Verify the parent and fetch its sub-issues:
- Distinctive: line 41
Stop immediately if any of these hold:
- Distinctive: line 45
All sub-issues are closed → "All sub-issues of #<parent#> are closed.
- Very specific: line 62
Wait for the operator. Proceed only on unconditional go.
- Very specific: line 72
Read the sub-issue body (already fetched, or re-fetch via gh issue view <sub#> if needed).
- Distinctive: line 78
If any trigger fires:
- Distinctive: line 86
Wait for the operator. Honor the choice exactly.
- Distinctive: line 110
Attempt cap of 2: if a sub-issue would require a third pass, stop and ask:
- Very specific: line 112
No-progress guard: before each attempt past the first, capture git diff origin/dev on the feature branch.
- Very specific: line 127
When the loop exits (all open sub-issues processed, or operator chose stop), post a session summary as a comment on the parent issue.
- Distinctive: line 129
Create a temp directory if not already created:
- Very specific: line 135
Use the file-writing tool to create <tmpdir>/story_summary.md:
- Very specific: line 175
If the driver itself is interrupted (operator switches tasks, session ends), no state needs to be saved.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
What /story does
/story <parent#> walks the open sub-issues of a parent ("story") ticket in their GitHub-defined order, threading /start and /submit-for-review for each one into a single interactive session. It removes a few routine per-ticket prompts (/start's plan-confirm gate and verified-locally prompt) — the operator already approved the whole story plan at story start.
What /story deliberately does not do: it does not auto-decide on /submit-for-review's needs-attention warnings or must-address blockers. Those remain human-judgment moments. When the review stops, the driver pauses and waits — when the operator finishes, the driver resumes with the next sub-issue.
/story is intentionally a thin coordinator. See #167 for the design discussion and #177 for the deferred path that would automate judgment moments based on observed usage.
Step 1 — Argument check
Required: a single integer (the parent issue number). If missing or non-numeric, abort:
"/story requires a parent issue number. Usage: /story <parent#>"
Step 2 — Fetch and echo the story plan
Find owner/repo if not already known:
gh repo view --json owner,nameVerify the parent and fetch its sub-issues:
gh issue view <parent#> --json number,title,state
python3 CodeCannon/skills/github-agile/scripts/list-sub-issues.py <parent#>Stop immediately if any of these hold:
- Parent issue is closed → "Issue #<parent#> is closed. /story requires an open parent."
- Sub-issue list is empty → "Issue #<parent#> has no sub-issues. /story requires a parent with linked sub-issues."
- All sub-issues are closed → "All sub-issues of #<parent#> are closed. Story is complete."
Otherwise, echo the plan (filter to state == "open" for the work list; show closed ones for context):
Story #<parent#>:
<title>Open sub-issues (worked in this order):
- #
<Na><title>- #
<Nb><title>...Closed sub-issues (already complete): <"none" or list>
Routine per-ticket prompts (plan-confirm at
/startand verified-locally at end of/start) are auto-passed under the driver. Review-stage prompts (needs-attentionwarnings,must-addressblockers) still stop and ask — they are the human-judgment moments.Type
goto start, or share concerns first.
Wait for the operator. Proceed only on unconditional go. Treat any other response as discussion — address concerns and re-ask. If the operator abandons, stop with nothing to clean up.
Step 3 — Ticket loop
For each open sub-issue, in the order returned by the API:
3a — Pre-flight escalation check
Read the sub-issue body (already fetched, or re-fetch via gh issue view <sub#> if needed). Stop and ask before invoking /start if any of these triggers fire:
- The acceptance criteria contain phrases like "TBD", "decide later", "?", or otherwise indicate unresolved scope.
- The body mentions a sensitive surface: authentication, authorization, payments, billing, secrets, credentials, production configuration, destructive operations (
DROP TABLE,rm -rf,git push --force, mass deletes, schema drops). - The body or any project-level guidance (e.g.
CLAUDE.md) names a domain the operator has flagged for explicit review.
If any trigger fires:
"Sub-issue #<sub#> triggered escalation:
<reason>.
proceed— invoke/startfor this sub-issue anyway (operator confirms they want it under the driver).defer— skip this sub-issue for now and move on to the next.stop— exit the driver with a partial summary."
Wait for the operator. Honor the choice exactly.
3b — Invoke /start <sub#> under the driver
Print this preamble line immediately before invoking the skill (this is the signal /start recognizes):
[story-driver: parent=<parent#> ticket=<index> of <open-count>]Then invoke /start <sub#>. /start recognizes the preamble (see Case B in /start) and auto-passes its plan-confirm gate and verified-locally prompt. All other /start behavior is unchanged — including writing the code.
3c — /submit-for-review runs from /start's auto-proceed
/start under the driver auto-fires /submit-for-review itself (because its verified-locally prompt is auto-approved). The driver does not invoke /submit-for-review separately — it observes the outcome and routes accordingly. The tier routing applies as today:
cleanorinformational→ auto-merge. The driver continues to the next sub-issue.needs-attention→/submit-for-reviewitself stops and asks the operator (address now / follow up later / accept as-is). The driver waits for the operator to respond through/submit-for-review. When/submit-for-reviewcompletes (either by merging or by routing back to coding), the driver resumes — either with the next sub-issue (on merge) or by re-running/submit-for-reviewafter the operator fixes things.must-address→/submit-for-reviewitself stops; the operator fixes the blocker; the driver resumes on the next/submit-for-reviewinvocation.
3d — Per-ticket safety
Track an attempt counter per sub-issue (start at 1; increment on each /start → /submit-for-review pass for the same sub-issue):
- Attempt cap of 2: if a sub-issue would require a third pass, stop and ask:
"Sub-issue #<sub#> has hit the attempt cap (2). Continue manually or stop the story?"
- No-progress guard: before each attempt past the first, capture
git diff origin/devon the feature branch. After the attempt, if the new diff is byte-identical to the previous attempt's diff, the iteration made no code change. Stop and ask:"Sub-issue #<sub#> made no code progress on this attempt. Stop the story or take over manually?"
Both guards exist to prevent unbounded retry loops; neither tries to be clever.
Step 4 — Track follow-up tickets created during the story
During each /submit-for-review run, follow-up tickets may be created (the needs-attention "follow up later" branch and the Step 9 selective branch both do this). Keep a running list of those follow-up issue numbers and their titles for the story summary in Step 5. The list is purely informational — sub-issue closure status is still the source of truth for "what got done."
Step 5 — Story session end
When the loop exits (all open sub-issues processed, or operator chose stop), post a session summary as a comment on the parent issue. Skip the comment silently if nothing actually merged in this session.
Create a temp directory if not already created:
python3 CodeCannon/skills/github-agile/scripts/make-workdir.pyUse the file-writing tool to create <tmpdir>/story_summary.md:
## /story session summary
Worked by the /story driver in one interactive session.
**Merged:**
- #<sub#> <title> → PR #<pr#>
- ...
**Deferred or not addressed:**
- #<sub#> <title> (reason: <escalation / cap / no-progress / operator-stop>)
- ... (or "none")
**Follow-up tickets created during the story:**
- #<f#> <title>
- ... (or "none")Post via the comment-posting script:
python3 CodeCannon/skills/github-agile/scripts/post-issue-comment.py <parent#> <tmpdir>/story_summary.mdThen close out to the operator:
Story #<parent#> session done. Merged: N. Deferred: M. Open sub-issues remaining: K. If K > 0, run
/story <parent#>again to resume from the next open sub-issue.
Hard rules
/storyruns entirely inside the current interactive session. Noclaude -p, no headless subprocesses, no daemons./storydoes not write or edit code itself — it sequences/startand/submit-for-review. The code is written inside/startas it normally would be./storydoes not auto-decide on/submit-for-review'sneeds-attentionormust-addresstiers. Those remain human-judgment moments.- Sub-issue state is the source of truth. The Step 5 session summary is informational — deleting or editing it must not affect resumption. A fresh
/story <parent#>invocation always re-derives state from open sub-issues. - Attempt cap and no-progress guards stop the story rather than retry past the limit.
- If the driver itself is interrupted (operator switches tasks, session ends), no state needs to be saved. The next
/story <parent#>resumes by picking up the next open sub-issue.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

