Communitygithub.com

liustack/ncwstyle

A $50 million writing-style skill: restrained Chinese long-form in New Concept Writing Style, with a prose checker CLI

What is ncwstyle?

ncwstyle is a Claude Code agent skill that a $50 million writing-style skill: restrained Chinese long-form in New Concept Writing Style, with a prose checker CLI.

Works withClaude Code~Codex CLI~Cursor
npx skills add liustack/ncwstyle

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

ncwstyle: New Concept Writing Style

The core of this skill is a five-beat story chain: want → action → obstacle → choice → change. Everything else (白描, restraint, objects, numbers) is surface craft in service of that chain. Restraint is the method, not the goal. The goal is strong feeling: keep the telling quiet so the reader feels it, even breaks down, without being told. Never use a feeling word (悲伤, 绝望, 感动) as a predicate for a person or a scene. The piece's teenage contest essays and the author's later wealth lectures are not part of this style.

白描 is not a way to describe things. It is the shortest path, in the fewest words, to an action and a choice. Who a person is shows in what they choose under pressure, not in a narrator's aside, and not in a speech that tells you. Hand the reader pictures and moves, like a script: every sentence should be filmable. Objects, numbers, and systems are not the lead. They are evidence a choice left behind. Someone wants something they will never say out loud, something stands in the way, and by the end you can see what it cost. Without those three the piece has nothing to carry.

A useful picture: in many 陈奕迅 songs the singer keeps his voice light and lets the instruments carry the feeling. Here the narrator stays flat and the facts carry the feeling. The content can be extreme or absurd. The telling never gets louder.

Do not build the piece as pain, then insight, then advice. No hot-take, tutorial, or 公众号鸡汤 structure. The piece is a sequence of scenes.

The workflow: talk the topic through → check material → build the story → outline → user confirms → write → quality check → adversarial review → fix until every check passes. Never draft from an unconfirmed outline.

What kind of request is this

RequestWhat to do
Write a pieceRun the full workflow. Stop at the outline and wait for confirmation
Rewrite something into this stylePull the material out of their text, then run the same workflow
Review a pieceQuality check only: give an edit list. No rewrite unless the user asks

Run the checker

Every checker command goes through the launcher bundled with this skill. Replace <skill-dir> with the directory this SKILL.md lives in:

bash <skill-dir>/scripts/run.sh check <file>                                  # macOS / Linux
powershell -ExecutionPolicy Bypass -File <skill-dir>\scripts\run.ps1 check <file>   # Windows

It resolves a working runtime (PATH ncwstyle, then npx, then bunx) and forwards your arguments unchanged. Exit 78 means no JavaScript runtime was found: relay its stderr to the user instead of retrying.

If your harness forbids running scripts, reason through the same order by hand and run the first line that works (the pinned version is 0.2.0):

  1. A ncwstyle on PATH whose major version is 0 and is at least 0.2.0: ncwstyle check <file>.
  2. Otherwise, if npx exists: npx --yes --package @liustack/[email protected] ncwstyle check <file>.
  3. Otherwise, if bunx exists: bunx --bun @liustack/[email protected] check <file>.
  4. Otherwise tell the user no JavaScript runtime was found and that installing Node 18+ (https://nodejs.org) is the next step. Do not claim the checker itself failed.

The workflow

1. Talk the topic through

If the user only gave a theme, do not outline yet. Ask at most three questions, then wait.

Ask for a chain of events, not a viewpoint. This style needs:

  • Who wants what (it will never be written, but it must exist), what stands in the way, and what it costs by the end
  • What actually happens, event after event, not "what I want to say is…"
  • Whether it is fiction or nonfiction
  • Enough concrete material to pass step 2
  • Where the want was planted: which year, which event. A want with no past carries no weight

No want, no resistance, no piece. Word counts and deadlines do not change that.

2. Check the material

For anything over about a thousand characters, collect at least five pieces of material that do work in the text: objects, numbers, a system that keeps running after the people leave, exact quotes, timestamps. The five must connect into one chain of events and hang on the same unspoken want. A piece of material that does not serve that want does not count. Five opinions side by side do not count.

List comes up short: look up what you can, ask for the missing pieces in the same message as step 1, or shrink the topic. Word counts and urgency do not create material.

In nonfiction, every detail must have a traceable source. In fiction, every detail must do a job: push a scene or leave an object. Weather and expressions that do nothing get cut.

3. Build the story

Chain first, scenes later. The five-beat chain is the only output of this step.

Want (planted in which year, which event's old wound) → action → obstacle → choice → change. The change feeds back into the next scene's action. Write it as a loop, not a list.

Each beat in one sentence, plus one coordinate from the specimen:

  • Want: 校内网四十分钟的你好
  • Action: 买光影厅
  • Obstacle: 她没有通过
  • Choice: 我没有再申请第二次
  • Change: 十九年导图

This step also locks in: the repetition pattern and the scene that breaks it, the prophecy sentence, the naming arc (or a note that the subject does not fit it), and the emotional landing for each scene.

Exit gate: the five-beat chain closes on paper and the pattern with its break point is marked. Only then may the outline begin. If the chain will not close, go back to the topic or switch subjects. Do not force the draft.

4. Read the references

Read, in this order, what each step needs: references/specimen.md (pick the passages this piece will learn from), references/openings.md (pick the opening), references/samples.md (before writing, read the passages for the authors relevant to this piece), references/banned.md. Open references/authors.md and references/devices.md only when you need a technique's definition. Open references/corpus.md only when you suspect the draft has drifted into one of the author's other styles.

A passage you did not read does not count. Name the passages in the outline.

5. Outline, then stop

The outline has seven items. All seven must be present, or drafting cannot start.

ItemWhat to write
MaterialFive or more pieces, each with its source
Reference passagesWhich passages from references/specimen.md you will learn from, one sentence each on what exactly, plus which sample in references/samples.md you read for rhythm
OpeningWhich opening form from references/openings.md, and why
Scene listEvents, not chapter titles that preach. Carry forward the five-beat chain from step 3, one scene per line. Add 情绪落点 (where this scene should make the reader hurt for them), one sentence. It stays in the outline. Not one word of it may appear in the draft. The same want must cost more each time. Test: if two scenes swap order and nothing breaks, they are parallel, not escalating. Send them back. A scene that ends where it began is not a scene. Mark which scene gets most of the words and which pass in a line or two. Equal space reads as machine writing
Logic backboneThe time order, which objects persist, who is absent, and who can know what (the narrator may know less than the reader). Where the want was planted: the year and the scene. What phrase or move repeats through the piece, and which scene is the first to break the pattern. The naming arc (称谓弧) for this piece: which word switches, where it is fired, where it switches back, or a note that the subject does not fit it (see 称谓弧 in references/devices.md). The second character's pair of contradictory wishes: both must hold, neither collapsed into a moral. Absurd logistics are fine. Contradictions are not
Style checklist planWhere each scene's turning choice, the handled object, the numbers attached to action and cost, the 我说好 exchange, the naming arc, the 摘句, the prophecy sentence, the absurd logistics, and the camera cut will each land
TitlesThree candidates, named after an object or a scene, not written like a 公众号 headline

Show the outline and wait for confirmation. "写吧", "就这个", "大纲没问题", "用第二个标题" all count. Silence does not. "Write the article" in a first message starts the workflow, not confirms a nonexistent outline.

Never put the draft in the same message as the outline.

6. Write (only after the user confirms)

Write it yourself or send it to a general-purpose subagent with a complete brief. Do not invent a specialist writer agent that cannot load this skill.

A subagent brief must contain all five blocks:

  1. Reading list. The specimen passages and sample named in the outline, plus references/banned.md.
  2. Hard fact list. Only these materials may be used. A missing detail gets the marker <!-- 材料待补:xxx -->. Never fill a gap with an opinion sentence.
  3. Style checklist. Paste the "Style checklist" section below, word for word.
  4. Hard limits. Paste the "Hard limits" section below, word for word.
  5. Handoff. Run the checker (see “Run the checker” above). No 精炼 section, no 需要修改 section in the output. Report the logic check, the language check, where each checklist item landed, and how many 摘句, where each one lands.

Write to the path the user named. No path given, put it in the reply. Do not create a website content directory.

7. Quality check

Run the whole checklist once the draft exists. Style checklist, hard limits, logic check, language check are one package. Running part of it is how a draft fails.

  • Run the checker (see “Run the checker” above). Exit code 0, or the only remaining output is 需要人工判断 (lyric words, punchline streaks). A 精炼 or 需要修改 section means the draft failed. Paste the checker output into the handoff. Never summarize it away.
  • Style checklist, item by item. One missing item sends it back. A bare draft is not restrained. 摘句 check: list every candidate. Run the two-test gate on each (defined in device 10, references/devices.md). Weak-fact sentences that comply formally but carry no in-sentence contrast are not 摘句 and are removed from the count. After filtering, count qualifying 摘句 against the density line in the style checklist. Zero qualifying 摘句 is the disease this checklist exists to catch. Adjacent stacking or a slogan in place of a fact is the opposite disease.
  • Hard limits, item by item.
  • Logic check (judgment call, write it down, five lines). Time order holds, or a deliberate hard cut is marked. No object appears before it exists or vanishes without a beat. No number changes without a cause. Nobody knows something they were never told, unless the leak is on the page. Chain at paragraph level: does the next paragraph follow (therefore) or push back (but)? If the only honest join is "and then", the chain is broken: reorder, cut, or find the causation. Same test at scene scale: scene N's change is the premise of scene N+1's action. A removable paragraph gets removed. The checker's 然后-opener flag is the same failure at sentence level. Paperwork can be absurd like Kafka's but cannot contradict itself. Escalation holds (same test as the scene list in step 5). The pattern from the outline runs through the piece and breaks where marked. The narrator is wrong at least once and corrected by a later fact. At least one wrong call stays uncorrected for the reader to see through alone. At least one scene the narrator does not understand and the reader can. No later paragraph circles back to spell it out.
  • Five-beat check (must run). For each scene, name the five beats from the draft (not the outline) using the chain from step 3. Copy the choice sentence into the quality report, word for word. A scene with no choice sentence is just things happening: send it back. Not acting can be a choice if filmed as an action. At the climax, the choice sentence must also be the pattern break. Chain rule: same therefore/but seam test as the logic check. Then check 情绪落点 against the outline: did the pictures deliver. If not, reshoot. Do not patch with adjectives.
  • Repetition check (must run). One fact, one image, one point appears exactly once. Restating in different words fails the draft. Exception: the closing line may return one earlier sentence word for word, landing on a different person or object. The checker catches adjacent restatement. This check catches the far-apart kind.
  • Filmability test (must run). Every sentence must be filmable: an action, a picture, or one line of dialogue. Interior monologue, commentary, status summaries: cut. A filmable beat is a change that came through friction, not weather turning by itself. 白描 earns its place inside a filmable beat, not outside one. 摘句 within the style-checklist allowance are exempt.
  • Language check (must run). Cut hard. The bar is 逸马杀犬于道: same event, fewer words (see 冗赘 in references/banned.md). Two layers: the checker (adjacent restatement, filler openers, wordy shells) and a paper cut-a-third. Facts, causality, and objects survive means keep the short version and rerun the checker. A clause that changes nothing is extra. Do not cut logistics that are the event itself. Checker green but cut-a-third still holds: ship the short one.
  • Rhythm (part of the language check). One beat per paragraph, cut until one more deletion loses an event. Long block with two beats: split. Sentence lengths must vary: over forty characters needs a short one near it. End paragraphs on a short factual sentence. Emotional peak gets the shortest sentence. Money, decisions, actions take one sentence (我转了). Craft and procedure slow down into steps. All same length is padding. All chopped short is the punchline streak the checker flags. Deal with the checker's over-long and same-length warnings here.
  • Titles, sentences, or lines the user wrote or explicitly named are outside review. The rules do not overrule the author.

For a review request: a prioritized edit list. Each item names the file and the rule. No rewrite unless the user asks.

8. Adversarial review

After the writer's own quality check passes, a separate agent that did not participate in writing must review the draft. Send it this SKILL.md, the outline, the finished draft, and the quality report. Its job is four things only:

  1. Walk through each scene and identify the five beats and the choice sentence from the draft text alone, without looking at the writer's quality report.
  2. Check whether the emotional landing for each scene was delivered by pictures, not patched with adjectives.
  3. Catch any ledger-voice (记账腔) and filmability leaks the writer missed.
  4. 摘句 strength recheck: take every sentence the writer tagged as a 摘句 and run the two-test gate independently (defined in device 10, references/devices.md). Either test failed means it is a short sentence, not a 摘句. Remove it from the count. If the count after filtering falls below the density line (style checklist), send the draft back.

Output: a problem list (file:line + which rule it hits). No edits to the draft.

If the list is not empty, send it back to the writer. The writer fixes, then the reviewer runs again. Each round must use a fresh agent instance with no memory of the previous round.

Single-person fallback: the same model in a new session posing as the reviewer is acceptable, but it must be a new session. Reviewing inside the writing session does not count.

9. Fix until everything passes

Hard violation, missing checklist item, broken logic line, 精炼 from the checker, or a failed language check: rewrite the stretch and rerun the checker. Nothing ships while one of these remains. Repeat until every check passes. Then stop.

Style checklist

The minimum the draft must contain. One missing item sends it back.

  • An unspoken want runs through the whole piece, something blocks it, and the ending shows the cost. Missing this sends the whole draft back
  • Every scene has at least one action-choice that turns the course
  • An object enters only when a person handles it: used, left, picked up, put back (in the 2026 sample: the nail file used to file his nails, later taken out, filed twice, put back). An object nobody's hands have touched is inventory, still on the shelf. Do not write it
  • Numbers appear attached to an action and a cost, not listed on their own
  • Absurd logistics written straight-faced, one to three times, stated and left alone
  • At least one hard cut (time or space) in the 朱炫 manner
  • No feeling word used as a predicate (悲伤, 绝望, 感动, 幸福, 孤独, 空虚, 心痛, 心碎, 震撼, 激动, 崩溃, 无奈, 遗憾, 释然, 焦虑)
  • At least one exchange compressed to the "我说好" shape, or a note that the subject does not fit it
  • At least one complete naming arc (称谓弧): fired, then run, then switched back, or a note that the subject does not fit it (see 称谓弧 in references/devices.md)
  • At least one 摘句 (device 10 in references/devices.md): a sentence that lands hard enough to travel without the piece around it. Material: fact, number, or picture, never a viewpoint or a slogan. Two-test gate (in-sentence contrast + standalone-forward) defined in device 10. Density: at least one per piece (opening or closing preferred), one more for every 400 to 600 characters of body. Any two separated by at least one paragraph of filmable action, picture, or talk. Zero qualifying 摘句 sends the draft back. Opening 摘句 are covered by the facts that follow. A 摘句 at a segment close lands only after the facts before it have earned it
  • At least one prophecy sentence: a character says something ordinary in the middle that the ending fulfills with a fact. The original words do not return. Note if the subject does not fit it
  • The narrator is allowed to not understand what they saw. The narrator is never a commentator who already knows

Learn techniques from the authors, not their settings. What to take from each is in references/authors.md.

Hard limits

Cross one of these and the draft goes back.

  • Everything in references/banned.md
  • Zero uses of 不是 A 而是 B. Two Borges-manner facts side by side are allowed: "I believed everything she said." Next sentence: "But I did not believe a single word." Two facts, not a reversal pose
  • No semicolons. No dashes. No exclamation marks in narration. No ellipsis doing the work of an emotion. Verbatim source speech keeps its own punctuation
  • Dialogue is written as 说话人+逗号+原话, with no quotation marks around speech. Quotation marks belong to written things: a note, a screen, a form
  • Do not explain a joke. Do not explain a symbol. Do not summarize the piece
  • No thinking process in the piece: no drafting notes, no outline fragments, no narration of how the piece is written or why a scene was chosen
  • Turn psychological paragraphs into action. A few observation sentences are allowed if they land on an outside fact ("the place she likes is empty because of her"), never on "I love her very much"
  • Concision: the 逸马杀犬于道 cut (defined in the language check above). The piece must stay consistent with the outline's logic backbone
  • No sentence that cannot be filmed, no point made twice (both defined in the quality check above)

When nobody can answer

Pull material from the user's text when you can. List still short, shrink the topic. Never invent nonfiction detail. Write the outline, mark guesses, and stop. An absent user waives the extra questions, not the confirmation. A later message confirming the outline opens step 6.

Traps

The thoughtThe reality
The user said write, so draft nowThat starts the workflow. The outline still needs a yes
Cold prose is restraintWithout objects and a running system, cold is just empty
Private jets stacked up are this styleShowing off wealth. This style wants logistics running with nobody there
One punchline per paragraphThat is Mimeng again
An ending that lifts into hopeThat is the teenage contest essay again
Explaining what the tape girl stands forThat is the explaining disease
A martial-arts world used as one big metaphorThe half of 朱炫 this skill does not take
The quality check can wait until the user reads itHard violations are not the reader's job. Fix before handing off
Short equals emptyCut the padding. Keep the object, the number, the system
Pretty description with nothing happening白描 earns its place inside a filmable beat. If you cannot film it, do not write it
Saying the important thing again to make sureOne fact, one place. The reader got it the first time
The logistics contradict each other, but it feels like KafkaAn absurd system still agrees with itself. A broken clock is not a style

Related Skills