qiaomu-novel-generator: an agent skill that plans Chinese short fiction before it writes
Generate complete, gripping original Chinese short fiction from story ideas with reusable narrative craft hooks.
At a glance
- What is it?
- It is an MIT-licensed agent skill for turning a rough Chinese story idea into a chosen plot strategy, then into a complete short story. The design bet is that planning the hook first beats prompting for prose.
- Who is it for?
- Adopt qiaomu-novel-generator if you already run an agent that supports local skills and you want Chinese short fiction drafted from a chosen strategy rather than a single prose prompt. Skip it if you need English output, a hosted service, or a guarantee that a web-searched reference will not echo the original; the README sets a no-copy boundary but the enforcement is a prompt-level instruction.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 96 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem: a prompt for a Chinese short story usually returns an outline wearing a story costume
The README opens by naming the failure directly: ask an AI for a Chinese short story and you often get something that reads like an outline, a manual, or a collage of familiar beats. The listed symptoms are concrete. No hook in the opening, so a reader leaves after two paragraphs. A protagonist with no desire, pushed around by events. A payoff that arrives too cheaply to feel earned. Attempts to "reference a certain work" that slide into copying, and attempts to "write like a certain author" that capture only surface tone.
The target user is the person writing Chinese genre fiction: 爽文, 武侠, 修仙, 悬疑, or modern workplace infighting. This is not a general text tool. It assumes you want Chinese output, that you have a story premise already, and that you care about the difference between a plot that pulls a reader forward and a plot that merely continues. The skill's stated inversion is the whole thesis: discuss why the plot attracts readers first, write the prose second.
The plot engine: options first, prose second
The mechanism visible in the README is a staged conversation, not a single generation. Your input is decomposed into a chain the README renders as: emotional promise, high-pressure relationship, conflict arena, classic-beat reconstruction, escalation rhythm, ending aftertaste. The skill then presents numbered choices. The README's own example offers three axes: main emotion (A 逆袭爽 / B 悬疑惊 / C 黑色反转), high-pressure relationship (A 外来者/上位者 / B 仇人/合作者 / C 救命恩人/错认者), and conflict arena (A 公开审查 / B 地下拍卖 / C 家宴质证).
You answer in shorthand. The README accepts `按默认`, `更爽一点`, `更悬疑`, or a coordinate string like `1B 2A 3C`. Only after that does drafting begin. A flowchart in the repository traces the same path: user gives a theme, work signal, or fragment; the skill identifies the reader promise; it surfaces classic-beat inspiration; it combines plot engines; it explains how the novel will attract readers; it confirms an outline; it writes the full text; then it runs de-AI phrasing, opening clarity, and quality self-checks.
The engine table is the most concrete artifact in the repository. Eight named engines map to specific payoffs: 隐藏身份 for being underestimated then publicly reversing it, 地下拍卖/鉴宝 for value misjudgment and counter-exposure, 宗门试炼/公开审查 for rule loopholes and witness reactions, 杀人夺宝/禁忌交易 for opportunity that creates danger, 双强博弈 for mutual probing, 组织内斗 for credit-grabbing and document evidence, 悬疑线索链 for answers that open worse questions, and 追妻/错认/迟来承认 for emotional pull and dignity. That table is what makes the planning step inspectable rather than mysterious: you pick an engine, and you know which payoff you bought.
Installing the skill and getting a first story out of it
The README gives a one-line install through the skills CLI. Node.js and npm/npx are prerequisites, checked with `node -v` and `npx --version`; Node.js bundles npx in the usual case.
npx skills add joeseesun/qiaomu-novel-generatorConfirm the skill is discoverable before assuming anything about your agent's behavior:
npx skills add joeseesun/qiaomu-novel-generator --listThe README also offers a presence check that looks for the skill file in either a project-local or a home-directory install path:
test -f .agents/skills/qiaomu-novel-generator/SKILL.md || test -f ~/.agents/skills/qiaomu-novel-generator/SKILL.mdIf that test returns nothing, the skill is not where the agent will look. The README's troubleshooting table names the usual causes: a stale GitHub repo, invalid `SKILL.md` frontmatter, or the wrong install path for the current directory. The first remedy it lists is re-running the `--list` command.
For a first real use, the README's phrasing examples are the safest starting prompts because they match the trigger words the skill expects. One example asks for a complete short story about a scholar who cannot fight, wandering into a dead-end situation in the martial world. Another asks for several directions to choose from before anything is written. A third asks the skill to research a work's public material online and then recast it as a modern workplace infighting story. If the skill is installed but never fires on its own, the README says to name it explicitly: 用 qiaomu-novel-generator 写……. The repository ships two worked outputs you can read before spending a prompt: examples/sample-01-wuxia-suspense.md and examples/sample-02-sci-fi-memory.md.
The anti-AI-flavor pass is the most opinionated part, and the most fragile
Most of this skill's value sits in a negative space: removing the constructions that mark text as machine-written. The README lists a banned set that includes `不是X,而是Y`, `关键在于`, `值得注意的是`, summary-style endings, decorative dashes, and openings that mislead about genre for the sake of poetry. The worked example is the clearest thing in the repository. An opening line, 死人走进了酒肆, is rejected because it reads as supernatural when the story is not. The replacement keeps the danger but anchors it: 一个快死的人走进了酒肆,胸口的血已经在狐裘上结成冰.
That is a real editorial judgment, and it is the reason this skill exists in the form it does. But notice what enforces it. There is no linter in the loop. The check is a set of instructions the agent is asked to apply to its own output, which means compliance depends on the model and the prompt. The repository does ship scripts, including `scripts/evaluate_story.py`, and the README's development section runs it against both example files with a `--fail-on-warning` flag. What that script checks is not documented in the README, so treat the automated gate as unverified until you read the script yourself. The anti-AI rules are best understood as strong defaults, not guarantees.
Borrowing structure from existing works: a stated boundary with prompt-level enforcement
The skill explicitly supports borrowing structure and explicitly refuses to copy works. The permitted list covers suspense, negative space, fate pressure, genre payoffs, and structural reversal, plus decomposing classic beats into generic functions and translating an author or work signal into generalizable technique. The prohibited list covers reproducing copyrighted text, transplanting famous scenes, characters, place names, moves, or signature lines, replicating a recognizable continuous plot chain, and directly imitating a living author's distinctive personal style.
The mechanical part of this is the beat-card system. The README names cards including falling from grace and publicly rising again, underground auction or appraisal reversal, courtroom or public cross-examination, hidden identity with delayed recognition, back-office project perspective with organizational satire, and sect trials with rule loopholes and public humiliation. You can ask for the structure of a specific film and get the function back rather than the scene. There is also a named `source-research-remix` path for the case where you want the skill to search a book online first; the README says it extracts stable public facts, reader payoffs, narrative functions, and non-copyable boundaries before proposing combinations.
This is the right posture, but be clear-eyed about the enforcement layer. The boundary lives in instructions to a model, and the README itself flags the risk in its troubleshooting table: borrowing a classic plot "easily becomes copying." If you are publishing commercially, the boundary is a starting constraint, not a clearance.
Where it breaks: wrong tool, thin docs, and a Python entry point that is not the product
The most obvious limitation is language. Everything described is Chinese short fiction, and the README's examples, engine names, and quality criteria are in Chinese. If you need English prose, this is the wrong skill.
The second is the dependency on the host agent. The skill assumes a tool that supports local agent skills, such as Codex, Claude Code, or another compatible agent, and it assumes browsing or search is available if you want the online research path. Install it into an environment that does not support implicit invocation and you must name the skill in every prompt. The README's own troubleshooting row says exactly that.
The third is that the repository is Python-flavored while the product is a prompt bundle. The primary language is Python and the layout includes `scripts/`, but the user-facing surface is `SKILL.md` plus references and examples. The validation commands in the README reference an absolute path under a specific user's Codex installation, `python3 /Users/joe/.codex/skills/.system/skill-creator/scripts/quick_validate.py .`, which will not exist on your machine. The portable check is `python3 scripts/validate_skill.py` run from the skill directory. Anyone expecting a pip-installable library or a CLI that takes a prompt and returns a story has misread the shape of the project.
Finally, the maintenance signal is mixed. The repository is not archived, and the last push was on 2026-06-14. There are no releases listed, so there is no versioned upgrade path to follow; you track the default branch or pin a commit yourself.
The alternative: a general writing assistant, and where the difference actually lands
The realistic alternative is a general-purpose chat assistant with a long system prompt describing your house style, or a dedicated long-form fiction tool. The difference is where the structure lives. With a general assistant, you carry the plot framework in your own prompt every session, and the model decides how much of it to honor. With qiaomu-novel-generator, the framework is a file in your skills directory: the engine table, the beat cards, the quality checklist, and the anti-AI rules are all part of the installed artifact, and the same version applies to every prompt until you change it.
The second difference is the interaction shape. A general assistant tends to answer a story request with a story. This skill answers with choices first, and the README treats that pause as the point: you pick the emotion, the relationship, and the arena before a word of prose exists. If you find that pause annoying, a general assistant is genuinely better for you. If your drafts keep coming back competent but flat, the forced choice is the feature.
The third difference is the copyright posture. A general assistant will happily write you a scene set in a named fictional world. This skill's README refuses that and substitutes a beat-function decomposition. That is a narrower capability, deliberately.
Licence, upgrade cost, and what the repository actually commits to
The project is MIT licensed, with a LICENSE file at the repository root. For practical purposes that means you can use, modify, and redistribute it, including commercially, provided the licence notice travels with it. That is the general shape of MIT and not legal advice; read the LICENSE file for the terms that bind you.
Upgrade cost is low but unmanaged. There are no releases, so there is no changelog to diff and no version number to pin against. Updating means pulling the current default branch and re-reading `SKILL.md` and the references, because those files are the behavior. If you have customized the skill for your own genre or house style, an update can overwrite that work; keep your edits in a separate copy rather than in the installed directory.
The other ongoing cost is the one the README does not price: your own review pass. The quality checklist is a self-check the agent performs, and the bundled `scripts/evaluate_story.py` is the only automated signal the repository offers. Whether that script catches what you care about is something you determine by running it, not by reading the README.
Editorial conclusion
Adopt qiaomu-novel-generator if you already run an agent that supports local skills and you want Chinese short fiction drafted from a chosen strategy rather than a single prose prompt. Skip it if you need English output, a hosted service, or a guarantee that a web-searched reference will not echo the original; the README sets a no-copy boundary but the enforcement is a prompt-level instruction. Verify two things before relying on it: that `npx skills add joeseesun/qiaomu-novel-generator --list` finds the skill in your environment, and that `python3 scripts/evaluate_story.py examples/sample-01-wuxia-suspense.md --fail-on-warning` runs clean on your machine, since the bundled scripts are the only automated quality gate the repository ships.
Frequently asked questions
How do I install qiaomu-novel-generator?
Run `npx skills add joeseesun/qiaomu-novel-generator`. Node.js and npm/npx are prerequisites, and the README suggests confirming discovery with the same command plus `--list`.
Which tools can run qiaomu-novel-generator?
The README says it needs a tool that supports agent skills, naming Codex, Claude Code, or another agent compatible with local skills. If the skill does not trigger on its own, the README says to invoke it by name in the prompt.
Does qiaomu-novel-generator copy the novels or films I ask it to reference?
The README states it borrows structure and refuses to reproduce copyrighted text, famous scenes, characters, signature lines, or a recognizable continuous plot chain. It decomposes classic beats into generic functions instead. The enforcement is instruction-level, so the README's own troubleshooting notes that borrowing a classic plot can slide into copying.
Community notes