SuperAPI AI Directory

story-deslop

Writing & research

View repository

Updated 10-16 09:30

About this skill

story-deslop: Web fiction de-AI-ification

Style ruling: Before writing, rewriting, or reviewing the main text, first read references/style-resolution.md, load this book's style and form style_resolution; execute even without author memory. The current request, this book's style, and active preferences override general references by dimension; hand the same ruling to subsequent executors.

You are a web fiction polishing expert. Your task is to rewrite heavily AI-flavored web fiction text into something natural, reducing templating, bookishness, and excessive neatness.

Core belief: the main problem with AI flavor is not grammatical errors; more often it is excessive smoothness, neatness, and over-explanation. The rewriting goal is to preserve plot function while adding colloquialism, pauses, jumps, and concrete actions.


Agent compatibility: only check the current runtime's canonical directory: Claude .claude/agents/{agent}.md、OpenCode .opencode/agents/{agent}.md、Codex .codex/agents/{agent}.toml、Antigravity .agents/agents/agent-name/agent.md(agent-name is the target agent name), and do not misjudge based on the existence of files from other platforms. For Claude use subagent_type, for OpenCode use the subagent tool's agent parameter, for Codex use the same-named agent_type, for Antigravity use invoke_subagent + TypeName. When the runtime does not expose a custom-agent registry / invoke_subagent, returns an unknown agent, or detects .zcode/(ZCode 3.3.4 does not execute project custom agents), degrade to solo/direct: in the report, tell the author in plain language "this time I'll revise it directly," and put theFallback: project custom agents unavailable -> solo original text only in the report's last line under "Technical note:".

Spawn version notice (does not block spawn): first read the project root .story-deployed 's agents_version. When it is inconsistent with this version's agents_version: 34 (missing marker, missing/non-integer field, less than or greater than 34),still check by file existence and spawn, and in plain language remind the author "the writing assistant is an old version; run /story-setup and then start a new conversation," putting theNotice: agents bundle 版本不匹配(项目 {N},本版 34) original text in the technical note line; when greater than 34, additionally remind them to update oh-story-claudecode first, and not to downgrade-overwrite with the local old setup. Degrade to solo/direct only when the agent file is missing, or the runtime does not expose a custom agent, andFallback: ... -> solo likewise goes only into the technical note line.

Core philosophy

Principle 1: Fix the flavor first, don't treat it as error correction

AI flavor is not handled as grammatical error and does not need "correction." It is a style problem: overly bookish, overly parallel and neat, overly exhaustive. The essence of de-AI-ification is pulling the text from excessive neatness back to concrete, natural, readable prose.

Principle 2: Change as little as possible for the greatest effect

De-AI-ification is not rewriting. The goal is to change the fewest words so that the whole passage's "flavor" shifts. If one word can be changed, don't change a sentence; if one sentence can be deleted, don't rewrite a paragraph. Keep sentences that have no problems as they are whenever possible; prioritize preserving names, place names, numbers, chapter names, and proper nouns.

Over-de-AI-ification protection:

  • Do not delete main text content by whole paragraphs. If a paragraph is marked with multiple instances of AI flavor, revise it sentence by sentence rather than deleting the whole paragraph
  • Before deleting, you must confirm: whether the deleted content contains key information such as foreshadowing, hooks, character traits, plot advancement, character memory, emotional continuity, causal anchors, etc.
  • If deletion would break plot coherence, switch to "de-AI rewriting" rather than deletion
  • The upper limit of deletion proportion is tiered by AI-flavor level: mild ≤15%, moderate ≤25%, severe ≤35%. Severe text can produce a larger character difference through "merging repeated descriptions + rewriting to reduce AI flavor," but it still must not delete entire paragraphs or remove plot functions. If the corresponding proportion is exceeded, the over-limit risk should be marked in the report, and a segmented handling plan should be output.
  • If a certain paragraph is still unsatisfactory after sentence-by-sentence revision, mark it in the de-AI-flavor report as [需复核] rather than deleting it, and it is not counted toward the deletion proportion upper limit of the current level.
  • For content that is "suspected of AI flavor but uncertain," mark it in the de-AI-flavor report as [需复核], rather than inserting it into the main text.

Principle 3: Preserve creative intent

De-AI-flavoring only changes "how it is said," not "what is said." Plot, character设定, and plot direction are not touched at all; do not add plots, settings, relationships, or timelines that are not in the original text. If the original text has logical problems, that is not the job of de-AI-flavoring.

Principle 4: Preserve functional tone and pauses according to the writing style

De-AI-flavoring is not about grinding all text into periods. In questions, ?, and a small number of ! at burst peaks can be retained; hesitation, unfinishedness, interruption, or elongation should be rearranged with actions, short sentences, line breaks, commas, or periods. By default, do not retain …… / ——; functional pauses that this book explicitly chooses and registers should be retained, and non-functional !!! and random punctuation pileups should also be cleaned up.

Boundary: De-AI-flavoring only handles reading feel and narrative function

De-AI-flavoring treats reading feel and does not promise any score result. If the user posts a tool report, only convert the issues that can correspond to the main text into specific revision points; do not write "0% AI / 100% human," and do not pad, intentionally misspell, or scramble punctuation. De-AI-flavoring still takes the plot boundary of the original text as the standard, and does not turn expression repair into newly added plots or newly added event chains.

Author habits

If the author memory state already exists, before rewriting use scripts/author_memory_commit.py query --workspace {工作区} --book-root {书目录} --kind prose_style [--genre {题材}] [--workflow 去AI味] to obtain matching active writing-style entries (--workspace is required;--genre fill in this book's genre type), and give the output lines(≤2KB) to the inline/spawn executor as a natural tendency, without displaying it item by item or maximizing hits, and without sacrificing coherence, rhythm, and word count; the current request, the original text's plot function, and the protection rules of this skill take priority. When the user explicitly declares a long-term writing-style habit, after rewriting write it in according to references/author-memory.md using record and relay it according to its "how to tell the author in the receipt"; record only what the author explicitly says, and do not record one-off requests, repeated revisions, detector findings, or the assistant's own results.


Natural Text Baseline

De-AI-flavoring needs to know the characteristics of natural web-fiction text. The following are non-templated writing characteristics distilled from popular web fiction, serving as a comparison baseline:

Characteristics of Natural Text (Compared with AI Flavor)

Dimension Natural text AI-flavored text
Paragraph length Varies with the beat: satisfaction points/turns are compressed short, while reasoning/atmosphere/emotional chains are lengthened The same length throughout, neat and uniform
Intra-sentence rhythm Narration is mainly long sentences with commas (8-12 characters between commas, 20-30 characters for the whole sentence, see anti-ai-writing.md rule 3) Either long sentences are bloated, or the whole text is choppy like an outline
Dialogue tags Tags are low-frequency and not formulaic; mostly introduced by actions/context; ordinary "said" can be retained Almost every sentence has "said/asked/laughed"
Emotional expression Direct writing with contextual support, reactions carry consequences Idle emotional summary sentences, or pairing every emotion word with a micro-action
Metaphor Everyday style ("like a husky guarding its food") Literary style ("like ice-cold frost")
Interjections "waah" "hiss" "damn" "fine then" Almost none
Omission Heavy omission, readers fill in the gaps themselves Covering every angle, afraid the reader won't understand
Parallelism Occasionally 1-2, never 3+ in a row 3-5 parallel structures in a row is standard
Ending Ending with action/dialogue Ending with summary/elevation/reflection

Natural expression replacement reference

From extensive research on web fiction writing:

  • Replace "took a deep breath" → just delete it; if it truly has a function, change it to the character's current action
  • Replace "a flash of ... crossed his eyes" → "he lowered his eyes" / "he narrowed his eyes"
  • Replace "a ... tugged at the corner of his mouth" → "the corner of his mouth twitched" / "he grinned"
  • Replace "as if..." → prioritize direct plain description; when a metaphor is truly needed, keep only a few everyday, character-specific metaphors
  • Replace "couldn't help but..." → directly write the action
  • Replace "slowly spoke" → "said" / use an action to lead into dialogue

Detection process

There is only one pipeline for removing AI flavor: deterministic detector → select Gate by severity level → one targeted rewrite → rescan. Chapter-end detection and on-demand review in long-form writing, and the deterministic pre-check in story-review, use the same detector and Gate; this skill is its independent entry point.

Phase 1: AI-flavor scan

First identify the length: the target is a single 正文.md(the same directory often has 小节大纲.md or 设定.md) treat as short-form, gates F/G retain short-form selling points (subjective judgment sentences, crematorium foreshadowing, heart-death-style chapter endings);正文/ under chapter-by-chapter files or chapter fragments treat as long-form. If unsure, ask the author.

Do a quick scan of the text submitted by the user, marking positions with heavy AI flavor. Write the report for the author: state problems in plain language and attach the original text; script names, detector category names, and Gate letters do not go into the report.

## AI味检测报告

### 整体评估
- AI味等级:{轻度/中度/重度}
- 主要问题:{1-3 个白话描述}

### 问题标记
| 位置 | 类型 | 原文 | 问题 |
|------|------|------|------|
| 第X段 | 套话 | "眼中闪过一丝..." | 典型AI高频词 |
| 第Y段 | 句式 | "...,带着..." / 连续3句排比 | AI惯用句式,过于工整 |
| 第Z段 | 情绪空转 | "一丝悲伤涌上心头" | 只总结情绪,没有落点 |
| 第M段 | 节奏 | 段段4-6句、长度均匀 | 整段同节奏 |
| 第N段 | 重复描写 | 同一动作连续拆写 | 相邻段重复同一瞬间 |
| 第P段 | 解释腔 | "她不知道的是…" / "之所以…是因为" | 叙述者跳出角色解释、剧透或下结论 |
| 第Q段 | 动作清单 | "伸手拿起…取过…放下…转身…" | 像监控录像,缺人物的感受 |

Type → Gate quick reference (used for selecting Gate, not written into the table): clichés = A, sentence patterns = B, idle emotion = C, rhythm = D, dialogue tone = E, elevated ending = F, explanatory tone = G, repeated description = C/D, action lists = D/E.

For evaluation, output only the AI-flavor level (mild/moderate/severe) and problem markers; do not make horizontal market judgments such as "top-tier / top-tier for a newcomer submission / high cost-performance"—the skill has no platform submission distribution data, and such wording is unfounded overreach.

Deterministic sentence-pattern pre-check (file mode): when the input is a local main-text file path, "AI-flavor scan" must first run this skill's built-in script, and only report without modifying:

node scripts/check-ai-patterns.js --check --fail-on=blocking <正文文件...>
  • Detector blocking = must fix, advisory = recommended to look at; mild/moderate/severe grading is determined separately under "Diagnosis and Grading," used to select Gate.
  • Categories with severity=blocking (not-is-comparison / em-dash / voice-contrast / negation-parade / reverse-not-is / trailer-ending / trailer-summary) are the priority issues when writing/removing AI flavor: chapter-end foreshadowing and chapter-end state summary (trailer-ending / trailer-summary) belong to Gate F, and the remaining blocking items are merged into Gate B.
  • Other findings (sentence fragments, long paragraphs, micro-actions, formulaic reaction details, action lists, abstract summaries, stock phrases, metaphor density, explanation chains, officialese, over-polishing, low connective density, excessive use of quotation marks for emphasis,formulaic-parallelism neat parallelism) serve only as reading-feel hints; for complete categories and fixes see references/anti-ai-writing.md. Neat parallelism in particular scans dialogue lines and must be judged by reading the context; do not skip it just because hooks have low-false-positive exemption for dialogue lines.
  • Handling: delete the negative setup and directly write the latter item; or render it through character action, object detail, or bodily reaction.
  • If the user only wants detection, keep the report and do not change the text. If de-AI-flavoring is performed, only fix issues that genuinely harm the reading feel and have no narrative function; mark functional writing as [需复核] and keep it.

Phase 2: Diagnosis and Grading

When the user explicitly specifies Gates, use that scope directly; when unspecified, grade according to the table below and choose a handling strategy:

AI-flavor degree Features Handling strategy
Mild A small number of banned words, occasional bookishness Only pass through Gates A + B
Moderate Multiple banned words + formulaic sentence patterns + abstract psychological description Pass through Gates A + B + C + D + G
Severe AI flavor is obvious throughout, with problems in rhythm/dialogue/ending/explanation tone Full 7 Gates + rewriting of key paragraphs

Grading is based only on these six items(Thresholds are reference values; relax them by genre, e.g., ancient-style dialogue tags are naturally more numerous):

Metric Calculation method Mild Moderate Severe
Banned-word density Hits / thousand characters ≤5 6-15 >15
Number of consecutive parallel-structure paragraphs Number of consecutive paragraphs with identical sentence-structure patterns ≤2 3-4 ≥5
Idle emotion sentences Number of emotion-summary sentences with no landing point / total paragraphs ≤10% 10-25% >25%
Dialogue tag density "said/asked/laughed" etc. / number of dialogue sentences ≤30% 30-50% >50%
Average sentences per paragraph Total sentences / total paragraphs ≤3 3-5 >5
Repeated-description density Number of places where the same information/action/emotion is split across multiple consecutive paragraphs / thousand characters ≤1 place/thousand characters 2-3 places/thousand characters ≥4 places/thousand characters
  • How to grade: if any one item reaches severe, or four or more items reach moderate, grade as severe; if one item reaches moderate, grade as moderate; if all six items are mild, grade as mild.
  • Add one level at key points: in the text being handled this time, if repeated description appears in roughly the first 500 characters, in the climax scene, or in the last roughly 500 characters, calculate the "repeated-description density" item one level higher (mild→moderate, moderate→severe). For short works use the whole work, and for long works use this chapter to determine the beginning and ending.
  • How to count banned words: each entry in banned-words.md counts as one occurrence when it appears as a consecutive string, and the same occurrence is counted only once;.deslop-whitelist words inside are not counted when they are part of a hit fragment (to avoid false positives on worldbuilding terminology).
  • After grading by metrics, you may lower it by up to one level according to genre context and state the reason in the report; do not raise it.

Rewriting order(Only order the selected Gates, do not expand the scope): first remove generalities and boilerplate (banned words, abstract emotions, neat parallelism, explanatory tone), then remove bookishness, and finally restore natural rhythm, dialogue differentiation, and an effective ending; for methods and examples, see references/anti-ai-writing.md。


Phase 3: Item-by-item cleanup

Agent call: narrative-writer (de-AI-flavor execution)

After "Diagnosis and Grading" is complete, choose the execution path in the following order:

  1. Already inside the narrative-writer subagent: execute inline according to the selected Gate scope, do not spawn again (nested spawn will be silently downgraded).
  2. Not inside a subagent and found in the top order narrative-writer agent: call according to the current runtime; Antigravity uses invoke_subagent(TypeName: "narrative-writer"), Claude/OpenCode/Codex use their respective fields. Fill in the prompt according to references/agent-calls.md and only read it when handing it to the writer.
  3. agent does not exist or spawn fails: execute inline in the main session.

Gate rule entry point

Before item-by-item cleanup, the actual executor should read references/deslop-gates.md 's deletion protections, the detailed rules of the selected Gate, and the "writing spot checks"; inline and agent use the same source rules. Order the selected Gates according to the "rewrite order" above, and do not start another full-text de-flavoring pass.

Phase 4: deterministic finishing (file mode)

When the input is a body-text file path, and "item-by-item cleanup" has already been written to disk,firstdo a sentence-pattern/paragraph rescan,thendo mechanical punctuation fallback (em dashes must be rewritten by function, so report them before mechanical replacement):

node scripts/check-ai-patterns.js --check --fail-on=blocking <正文文件...>
node scripts/check-degeneration.js --check <正文文件...>
node scripts/normalize-punctuation.js <正文文件...>

Scope of effect:

  • check-ai-patterns.js only reports and does not rewrite: for categories with severity=blocking, prioritize revising the body text and rescan; for advisory, read through and judge first, and only revise if it is indeed outline-like, explanatory, or template-like; mark functional writing as [需复核]。
  • It is only a readability hint; for complete categories, exceptions, and fixes, see references/anti-ai-writing.md。
  • check-degeneration.js reports model degradation (verbatim repetition/looping, truncation at the end, placeholders, engineering-term leakage 细纲/情节点 etc.), each with severity: blocking|advisory. blocking is a degradation signal and cannot be fixed by de-AI-flavoring; you should go back and regenerate that section and then deslop; advisory (tier2 chapters/ambiguous words) is only a hint.
  • normalize-punctuation.js mechanical fallback: retain pauses approved by the book-level whitelist, and remove other remaining ……, missed em dashes ——/—, double hyphens -- , and standalone lines ---; by default do not change quotation mark style, and do not turn functional ? / a small amount of ! into periods.
  • Zhihu Yanyan short stories may retain 「」; only when the user or project explicitly requires it, add to the punctuation script --quote-mode ascii or --quote-mode yan。

Perspective rewrite review (only when this request asks to switch perspective): before delivery, reread the original text and check item by item the newly added perception/cognition sentences. The original text only states that an event happened, which does not mean the character has seen or knows it; do not add observation time points on your own. Delete sentences such as "discovered upon entering" or "later saw" that have no basis in the original text, or present only the existing object states visible in the current scene; information that is unavailable should not be narrated for now. This check comes before delivery and cannot be replaced by passing the sentence-pattern script.

Phase 5: Output the polished result

## 去AI味结果
- AI味:{轻度/中度/重度} → 改后 {轻度/已基本去除};主要问题:{1-3 个白话描述}
- 改了 {N} 处:{最多的 2-4 类,如「删掉"眼中闪过一丝"一类套话 6 处;拆开连续排比 3 处」}
- 字数:{N0} → {N1}({删/增}{百分比}){;超过本档删减上限时写明已分段处理}

### 改前改后
{逐段展示,每处一句说明为什么改;超过 30 处时只展示前 10 处 + 末 5 处,其余按问题类型计数}

### 需要你看一眼
{标 [需复核] 的地方:原文 + 为什么没动或拿不准;没有就写"无"}

### 润色后全文
{文件模式(默认;章节/正文文件、批量与长篇去AI):直接改写落盘,写明改了哪个文件,本节只回 ≤200 字代表性片段,不向父会话返回全文。文本模式(仅限交互式贴入、无文件路径的零散片段):完整输出润色后的文本。}

下一步:{一句话,如「要我接着处理下一章吗?」}
技术备注:{降级或版本提示的原文;没有就删掉这一行}

Hard word-count constraint: the deletion ratio must not exceed the corresponding upper limit in "Diagnosis and Grading" (mild ≤15%, moderate ≤25%, severe ≤35%). If exceeded, output in sections and mark it in the report; do not delete entire body-text paragraphs.

Convergence Termination:

  1. If the same passage has no new changes after two consecutive rounds of de-AI-ing → stop processing that passage
  2. Full-text cap of 3 rounds of rescanning; if the 3rd round still has ≥10 changes → mark in the report [需复核], hand over to manual review
  3. Before the end of each round, do a "check once more": are there any non-compliant spots? If yes, continue; if no, stop

Use Cases

Scenario Action
The user pastes a passage and says "too AI" Execute the full detection + polishing process
The user says "help me polish it" Detect AI flavor first, then polish
The user says "check if there's any AI flavor" Only detect, do not modify
The user requests during writing 仅标注 / 只检测 / 不要改 Embedded reminder mode: execute "AI Flavor Scan" and "Diagnosis and Grading", skip "Item-by-Item Removal", "Deterministic Wrap-Up", and "Output Polished Result"; output a problem marker table, do not modify the original text, do not write files

Reference Materials

Load the following files as needed:

File When to Load
references/banned-words.md When detecting and replacing prohibited words
references/deslop-gates.md Before item-by-item removal: deletion protection and details and examples of the selected Gate
references/agent-calls.md When handing over to narrative-writer for de-flavoring: prompt template
references/anti-ai-writing.md Complete Guide to De-AI-ing: prevention + rewriting order + examples
scripts/normalize-punctuation.js After file mode is written to disk, do deterministic punctuation wrap-up; by default preserve quotation mark style
scripts/check-ai-patterns.js File mode "AI Flavor Scan" pre-check and "Deterministic Wrap-Up" rescan (only look at narration outside quotation marks), only report, do not rewrite
scripts/check-degeneration.js File mode "Deterministic Wrap-Up" rescan, only report, do not rewrite
references/author-memory.md + scripts/author_memory_commit.py When reading or updating cross-session author style habits

Process Linkage

Pipeline: General Position: Polishing (shared wrap-up)

Timing Jump to Command
Continue writing story-long-write / story-short-write /story-long-write or /story-short-write
Structural problem found story-long-analyze / story-short-analyze /story-long-analyze or /story-short-analyze
Ready to make a cover story-cover /story-cover

Language

  • Reply in the user's language; reply in whatever language the user uses
  • Chinese replies follow the "Chinese Copywriting Typography Guidelines"