Sepia
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
Writes Chinese first-person nonfiction in a restrained plain-description style: short sentences, exact numbers, objects that carry feeling and silence at the peak.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sun-style-writing .claude/skills/sun-style-writing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .claude/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .agents/skills && cp -r skills-src/sun-style-writing .agents/skills/sun-style-writing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .agents/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/sun-style-writing .cursor/skills/sun-style-writing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .cursor/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/KKKKhazix/sun-style-writing.git --path sun-style-writing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/sun-style-writing .gemini/skills/sun-style-writing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .gemini/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .github/skills && cp -r skills-src/sun-style-writing .github/skills/sun-style-writing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .github/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install KKKKhazix/sun-style-writing sun-style-writing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KKKKhazix/sun-style-writing.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/sun-style-writing .opencode/skills/sun-style-writing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sun-style-writing" agent skill from https://github.com/KKKKhazix/sun-style-writing/tree/main/sun-style-writing into .opencode/skills/sun-style-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sun-style-writing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sun-style-writingWrites Chinese first-person nonfiction in a restrained plain-description style: short sentences, exact numbers, objects that carry feeling and silence at the peak.
This skill teaches a writing method modeled on one widely read Chinese personal essay. Its core idea is never to tell readers what to feel: state facts, give details and leave gaps, so the emotion grows in the reader. Target material is first-person nonfiction, memoir, personal essays, character sketches and unsentimental stories, and it also fits requests for writing that does not sound AI-written.
The guide sets rules for each technique: an opening built on a stark contrast within three sentences, plain description limited to what can be seen, touched or measured with no emotion words, short paragraphs with a repeated sentence pattern whose break marks the turn, exact numbers in place of adjectives, ordinary objects that return with changed meaning, foreshadowing and echo, name changes, and silence as the heaviest line. Numbers must be real and ones a character would remember, and symbolism is never explained. A references file breaks down each technique with source examples.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fe970dc. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sun-Style Restrained Narrative Writing loads about 1.7k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 66 tokens; SKILL.md has 216 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from KKKKhazix/sun-style-writing at commit fe970dc, republished under its MIT licence (© KKKKhazix). 216 words, ~1,669 tokens.
.claude/skills/sun-style-writing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.你即将使用的写作方法,脱胎自孙宇晨《我的女友景甜》一文。那篇文章之所以让整个中文互联网震动,不是因为八卦本身,而是因为它的文学手法:极度克制的白描、短句的节奏感、数字代替情绪、物件承载记忆、沉默比台词更重。社区评价它"大量白描和极度克制的情感表达,只要出现在新概念作文大赛中名次都不会低"。
这套方法的核心哲学是:永远不要告诉读者该怎么感受。你只负责摆事实、给细节、留空白。情绪是读者自己生长出来的。 越是要紧的时刻,你越要克制、越要冷、越要退后一步,用一个无关紧要的细节——一根指甲、一卷胶带、一个清洁工——来替你完成那一击。
能让一个动作说话,就不解释心理。能让一个物件说话,就不总结感情。能让前文回来一次,就不重新抒情。
阅读 references/style-anatomy.md 获取每条技法的原文示例和详细拆解。白描是底色,其余技法按材料选择,不要把它们当成十项必须完成的清单。
开头必须在三句话内建立一个巨大的反差或悬念。不要铺垫、不要背景介绍、不要"事情要从XX年说起"。直接把最刺眼的对比甩出来。
做法: 用两个极端事物的并置开场——一个极轻与一个极重,一个极小与一个极大,一个极私密与一个极公共。第三句点明两者的关系。
对照不限于开篇。两个事实只要并排出现就能互相照亮:贫与富、轻与重、过去与现在、盛大与空无。不要在后面补一句“这说明了什么”。
禁止: 开头出现形容词堆砌、抒情感叹、"我想讲一个故事"之类的元叙事。
白描是这套写法的地基。意思是:只写看得见、摸得着、量得出的东西。 不写心理活动,不写情绪形容词,不写"我很难过""她很美""气氛很紧张"。
你可以写的:
你绝对不能写的:
唯一的例外: 当叙述者审视自己的身体反应时,可以用临床式的观察语气描述——"心跳很稳。一分钟六十几下,和平时没有区别。"注意这不是抒情,这是把自己当成检查对象。
段落通常只有一句话。对话回合极短。"我说好。""她说不用。"就是一段。
这种节奏制造出一种敲击感——每一句都是一个落点,读者被迫停顿、感受、再往下读。长句是例外,只在需要展开一个场景的物理细节时使用(比如描述助理贴胶带的过程)。
节奏公式:
重要区分: 短句是句子层面的节奏策略,不是结构层面的。你的段落短,但你的段落群(一个完整场景)应该是厚实的。原文中磨指甲的场景由十几个短段落组成,但它们聚合在一起构成了一个五六百字的完整段落群,充分展开了那个时刻。不要把"短句节奏"误解为"每个场景只写两三句就跳走"。
关键技巧——"我说好"模式: 在叙事中建立一个重复的短句作为节奏基底(比如"我说好""我没有说""她没说话"),让它反复出现,像心跳一样成为文章的背景音。当这个重复在某一刻被打破时(比如"我说,让我想想"),那就是全文的转折点。读者会本能地感到震动,因为模式被破坏了。
数字是这套写法中最锋利的武器。一个准确的数字比十个形容词更有杀伤力。
做法:
核心原则: 数字越精确,情感冲击越大。"大概十来个人"没有力量,"二十六个人"有。因为精确意味着记忆清晰,记忆清晰意味着在乎。
真实性先于精确感。 只使用材料里真实、而且人物确实会记住的数字。不要为了显得像原文,给模糊记忆补一个假的准确值。
找到一个或几个具体物件,让它们在文中反复出现,承担记忆和情感的重量。物件本身必须是普通的、具体的、可触摸的——越不起眼越好。
做法:
伏笔与照应: 第一次出现时,它必须只是普通生活,不能自带“这是伏笔”的腔调。后来让它自然回来,动作、用途或语境发生一点变化;不要提醒读者“还记得吗”。
意象: 物件参与具体情节,意象则通过声音、光线、空间或某种反复出现的物质形成暗线。两者都要从材料里长出来。“海”“空房间”“钱”属于原文,不是每篇都要照搬的母题。
称谓变化: 名字、昵称和代词的变化可以完成亲近、疏离或关系结束。它必须顺着人物关系自然发生,不能为了展示技巧强行改称呼。
禁止: 解释物件的象征含义。"那张照片代表了我十九年的执念"——这句话会毁掉一切。你只需要写"十九年了,设备像素越来越高,而这张图,仿佛像素越来越低"。读者自己会懂。
文中最有分量的时刻,往往是一个人不说话。
留白不只是不说话。人物不知道的答案、没有追问的动机、记不清的语气,都可以悬着。事实要清楚,意义可以不解释;缺少关键事实不是留白。
做法:
进阶技巧: 当两个人都不说话时,插入一个精确的时间——"我数了一下,十一秒。"这比任何情绪描写都更让人窒息。
当叙述者自己不表达情感时,让一个旁观者——一个不相干的人——来间接传递情绪。这个旁观者通常是服务人员、助理、路人,他们对故事一无所知,但他们的行为恰好构成了一面镜子。
做法:
这些旁观者的存在让故事获得了一种残酷的客观性:世界不会因为你的痛苦而停下来。清洁工依然每天打扫,助理依然每天报到。
时间跨度足够大、跳切能让两个场景互相产生意义时,不必按时间顺序讲故事。可以从一个悬在半空的场景切入(通常是最戏剧性的时刻),然后跳回过去,再逐步推进到那个场景,最后越过它写余波。用年份、地点、人物或物件作锚点;如果跳切只会切碎故事,就按自然顺序写。
结构模板:
分隔符 --- 的使用原则——极少、极重:
原文两万字只用了三个分隔符。--- 是章与章之间的分界线,标记人生阶段的重大转折——比如从"相识"到"热恋",从"热恋"到"裂痕",从"裂痕"到"结局"。一篇完整的长文中,--- 通常只出现 3-6 次,绝不超过 8 次。
两个 --- 之间是一整段深入的叙事,少则八百字,多则几千字。这个空间里可以容纳多个场景、多段对话、多次时间跳跃——它们之间用段落的自然换行和时间锚点("XXXX年""那天""后来")来衔接,不需要 ---。
换句话说:场景之间换段落,阶段之间才用 ---。 把 --- 想成小说的章节分隔,不是段落分隔。如果你发现自己每写三五百字就想放一个 ---,那说明你在切碎故事而不是在讲故事。
这是最容易被忽略、也是最关键的一条。
原文中每一个场景都被充分展开。磨指甲的场景写了几百字——从"你的指甲扎得我痛"开始,到把手放在腿上,到一根一根磨,到粗面细面反复切换,到举起来对着灯看,到十个手指花了快一个小时。酒店清洁工的场景也是如此:推车、一间一间进、换毛巾、擦台面、掖被角、退出来带门、做完一整层两个小时。助理贴胶带的场景更长:什么时候贴、怎么贴、为什么下午三点以后的容易掉、后来改成早上贴、没人教她们、她们自己试出来的、互相讨论、像讨论一项工艺。
这种深度不是偶然的,它就是这套写法的力量来源。你必须在一个场景里待够了——待到读者开始闻到那个房间的味道、感觉到那个人手指的温度——才能离开。
做法:
检验标准: 如果你把一个场景单独拿出来,它能不能让一个不知道整个故事的人也感受到什么?如果可以,它就够深了。如果不能,你还没有待够。
反高潮:铺得越大,落得越小。 巨额金钱、私人飞机或一次决裂之后,落点可以只是一个日常问题、小动作、身体数据或无关紧要的结果。反高潮不是故意抖机灵;大与小都必须来自真实材料,落点越普通,越不要解释。
这是孙学最独特的审美内核。一种对"空"的迷恋:空的酒店楼层、空的放映厅、空的跑道、空的维港。
“空”是原文自己的核心意象,不是通用模板。写新的材料时,应寻找它自身反复出现的空间、声音或物质;没有,就不要硬造一个“空”。
做法:
这种手法之所以有力,是因为它暗示:所有这些金钱、排场、人力调动,最终指向的是一个缺席、一个不在场、一个"什么都没有发生"。
结尾必须回扣开头的意象或句式,形成闭环。但因为读者已经读完了整个故事,同一句话在结尾时的重量完全不同了。
禁止: 结尾总结、感悟、哲理升华、"我终于明白了"。 应该: 一个具体的画面、一个重复的动作、一个回荡的短句。让它像最后一个音符一样悬在空中。
以下词汇和句式在孙学写法中绝对禁止出现:
允许的语气:
完成初稿后,用这份清单逐项核查:
--- 分隔符数量是否合理? 数一下全文有多少个 ---。如果超过 8 个,你几乎一定在切碎故事。合并相邻的场景,把 --- 留给真正的阶段转折。--- 之间)是否足够厚实? 每段至少八百字。如果某段只有三五百字,要么它还没展开够,要么它应该和前后的段合并。这套写法不限于爱情故事。它的本质是一种叙事哲学:用物质世界的精确细节,传递精神世界的模糊情感。 它适用于:
调整时保持核心不变:白描打底,对照与反复蓄力,物件、意象和留白承载感情,伏笔与回环负责让前文回来。其余按材料选择。
© KKKKhazix, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in sun-style-writing of KKKKhazix/sun-style-writing.
Open the folder on GitHubat commit fe970dc
Sun-Style Restrained Narrative Writing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sun-Style Restrained Narrative Writing this skillKKKKhazix/sun-style-writing | 403 | — | ~1.7k | Automated safety check: Pass | MIT | |
| SepiaNanako0129/sepia | 3.1k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Chinese Novel Writing Systemleenbj/novel-creator-skill | 671 | — | ~3.9k | Automated safety check: Pass | None | |
| Web Novel AI-Trace Removerzenstory-ai/oh-story-claudecode | 7.4k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Chinese Novelist Chapter WriterPenglongHuang/chinese-novelist-skill | 3.3k | — | ~491 | Automated safety check: Warn | MIT | |
| Web Novel AI-Flavor Removeruu201/character-arc | 583 | — | ~2.3k | Automated safety check: Pass | MIT |
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
leenbj/novel-creator-skill
Guides long-form Chinese novel writing from a rough idea through outlines, chapter drafts and quality gates, with file-based memory for a story meant to reach 300万字.
zenstory-ai/oh-story-claudecode
Rewrites AI-sounding Chinese web novel text so it reads naturally, changing as little as possible and keeping plot, names and numbers intact.
PenglongHuang/chinese-novelist-skill
Writes long Chinese novels chapter by chapter through guided questions, outlining, drafting with cliffhangers and automatic validation, with resumable projects.
uu201/character-arc
Finds and rewrites AI-sounding passages in Chinese web novel text, changing as few words as possible while keeping plot, characters and names intact.
Narcooo/inkos
Breaks down a full novel or long sample into story mechanisms and style traits the agent can reuse as craft, without copying names or wording.
Categories
Writes Chinese first-person nonfiction in a restrained plain-description style: short sentences, exact numbers, objects that carry feeling and silence at the peak. This skill teaches a writing method modeled on one widely read Chinese personal essay. Its core idea is never to tell readers what to feel: state facts, give details and leave gaps, so the emotion grows in the reader.
Sun-Style Restrained Narrative Writing fits situations like: writing a first-person nonfiction story with restrained emotion; rewriting an emotional draft so facts and objects carry the feeling; producing Chinese prose that reads less like AI output.
Run `npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a claude-code`. Or copy the skill folder (sun-style-writing in KKKKhazix/sun-style-writing) into .claude/skills/sun-style-writing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a codex`. Or copy the skill folder (sun-style-writing in KKKKhazix/sun-style-writing) into .agents/skills/sun-style-writing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add KKKKhazix/sun-style-writing --skill sun-style-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sun-style-writing, .gemini/skills/sun-style-writing, .github/skills/sun-style-writing and .opencode/skills/sun-style-writing in your project.
SKILL.md names no scripts, command-line tools or credentials: Sun-Style Restrained Narrative Writing is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sun-Style Restrained Narrative Writing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sun-Style Restrained Narrative Writing: Sepia (Nanako0129/sepia, 3.1k stars), Chinese Novel Writing System (leenbj/novel-creator-skill, 671 stars), Web Novel AI-Trace Remover (zenstory-ai/oh-story-claudecode, 7.4k stars) and Chinese Novelist Chapter Writer (PenglongHuang/chinese-novelist-skill, 3.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
KKKKhazix (a GitHub user) maintains it in KKKKhazix/sun-style-writing, which has 403 GitHub stars. The repository was last updated on August 27, 2026.
Source: KKKKhazix/sun-style-writing on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.