{
  "markdown": "# anti-vibe-writing\n\n![anti-vibe-writing: a black-and-white comic banner, four panels showing AI writing going from em-dash-and-emoji clutter that gets auto-removed, through a human cleanup pass, to clean copy that reads human](./anti-vibe-writing-banner.png)\n\n[![English](https://img.shields.io/badge/README-English-1f6feb?style=flat-square)](./README.md)\n[![中文](https://img.shields.io/badge/README-%E4%B8%AD%E6%96%87-15803d?style=flat-square)](./README.zh.md)\n[![License: MIT](https://img.shields.io/badge/License-MIT-111111?style=flat-square)](./LICENSE)\n[![Skill version](https://img.shields.io/badge/skill-1.7.0-orange?style=flat-square)](./CHANGELOG.md)\n\n> 本 README 提供中英文两个版本：**English**（本页，默认）和 **[中文](./README.zh.md)**。点上方徽章切换。\n\n> **One goal: make AI sound genuinely idiomatic, 倍儿地道.**\n\nAn agent writing skill that removes the AI-generated feel from documents. Works in English and Chinese, with optional modes for matching a specific author's voice.\n\nIt runs best as a final pass after drafting with Claude Code, Codex, or any LLM-backed agent. The goal is not to make the prose prettier. The goal is to keep the substance and remove the tells: templated phrasing, vague abstraction, consultant-speak, markdown-heavy formatting, over-structured outlines, the copy-paste residue chat and search models leave behind (`oaicite` / `turn0search0` / `[cite: 1]` / stray `【】` markers), and the cautious over-balancing that makes writing feel assembled.\n\nIf the default \"clean\" mode is not enough, the skill also supports:\n- **Human-texture mode**: inject controlled irregularities (inversions, particles, half-sentences, non-standard punctuation) for personal voice\n- **Learning mode**: build a reusable host profile from real samples so future drafts sound like the person who would write them\n- **Scenario presets**: format and tone constraints tuned for tweets, Weibo, blogs, podcast show notes, and professional reports\n\n## Quick start\n\nAt its core this is just a set of markdown rules (`SKILL.md` + `references/` + `assets/`), not tied to any one agent. Claude Code, Codex, Kimi, work-buddy, Hermes. If it can read files or take an instruction prompt, it can use this.\n\n**1. Get the rules**\n\nClone the repo, or just copy the `skills/anti-vibe-writing/` folder:\n\n```bash\ngit clone https://github.com/weijt606/anti-vibe-writing.git\n```\n\n**2. Feed it to your agent (pick whichever fits)**\n\n- **Simplest: just hand it the repo link.** No need to clone first: send `https://github.com/weijt606/anti-vibe-writing` and let the agent read `SKILL.md` and `references/` and configure itself. Works with any agent that can browse the web or run git.\n- **One-off (any agent)**: open `skills/anti-vibe-writing/assets/rewrite-prompt-template.md`. It has ready-made instruction blocks: Full Rewrite / Light Cleanup in English, and \"中文改写（带负向约束）\" for Chinese. Copy the block for your language and send it with your draft.\n- **Persistent**: put `SKILL.md` and the matching `references/*patterns-to-remove.md` wherever your agent loads context. Names differ by tool:\n  - Agents with a skills directory (e.g. Claude Code): drop it in `~/.claude/skills/anti-vibe-writing/`, then call `/anti-vibe-writing`\n  - Agents with a project-instructions file (e.g. Codex's `AGENTS.md`): write or include the rules there\n  - Otherwise: paste into the system prompt / custom instructions / knowledge base\n\n**3. (Optional) Name the scenario and mode**\n\nOne line of context changes the result a lot:\n- Scenario: \"this is a tweet / a newsletter / a technical memo\"\n- Loosen up: \"make it feel personal\" / \"blog voice\" → enables human-texture mode\n- Match a voice: paste a few of your own samples and say \"learn my style\" → enables learning mode\n\nWhen in doubt, say nothing. The default clean mode is right for most drafts.\n\n## Quick examples\n\nCurated before/after snippets live in [examples/](./examples/) for anyone scanning the repo. The full regression set stays under `references/`.\n\n## Voice modes\n\nThe skill runs in one of three modes:\n\n| Mode | When to use | Triggered by |\n|---|---|---|\n| Default (clean) | Most product, docs, and professional copy | Default, no opt-in needed |\n| Human texture | Personal blogs, founder notes, social posts | \"Loosen it up\" / \"blog voice\" / \"make it feel personal\" |\n| Learning mode | Series content, personal newsletters, voice-consistent comms | User provides samples, or asks \"learn my style\" |\n\nModes combine with scenario presets (tweet / Weibo / blog / podcast / report). Conflict resolution rules are documented in `SKILL.md`.\n\nHuman-texture mode also has a **social-only \"casual typing\" (随手打) layer** (off by default; turn it on by naming it, \"casual typing\" / \"开随手打\", or describing the effect, \"like a quick phone post\"; matched by intent, not a fixed phrase, and a plain \"loosen it up\" won't trigger it): a tiny amount of phone-typing texture on casual posts (dropped end punctuation, no capitalization, an omitted particle) that **never touches numbers, names, or links** and never makes meaning-changing typos. It's phone-typing texture, not error injection to dodge AI detectors.\n\n## Use cases\n\n**The flagship case: Chinese posts on X.** Chinese AI-smell is most obvious on X: 赋能 / 打通, 首先 / 其次, three-clause parallelism, and machine-translation syntax give it away at a glance. This skill is built for exactly that: take an \"obviously AI-written\" Chinese post and make it read like something a person actually typed. See [`examples/07-tweet-zh.md`](./examples/07-tweet-zh.md) and [`examples/08-translationese-zh.md`](./examples/08-translationese-zh.md).\n\nOther common cases:\n\n- Social posts (X, Weibo, Jike, RedNote)\n- Blogs, newsletters, public WeChat articles\n- Podcast show notes and video scripts\n- README cleanup\n- Product docs and landing page copy\n- Proposals, founder notes, technical memos, internal reports\n\n## Output goals\n\n- More human rhythm\n- More intentional structure\n- Cleaner phrasing\n- Stronger voice\n- Less AI smell\n- Sounds chosen by a person, not assembled by a system\n\n## Repository layout\n\n```text\nagents/\n  README.md\n  anti-vibe-writing-dev.agent.md           # local, gitignored\n  anti-vibe-writing-dev.agent.example.md\nskills/\n  anti-vibe-writing/\n    SKILL.md\n    references/\n      patterns-to-remove.md                # English AI-smell\n      chinese-patterns-to-remove.md        # 中文 AI 味\n      before-after-benchmarks.md           # English benchmarks\n      chinese-before-after.md              # 中文基准\n      common-problems-and-fixes.md\n      human-passes.md\n      human-texture.md                     # Optional irregularity\n      learning-mode.md                     # Sample-driven style learning\n      scenario-presets.md                  # Per-scenario constraints\n    assets/\n      final-pass-checklist.md\n      rewrite-prompt-template.md\n      host-profile-template.md             # Fillable host profile\n      style-extraction-prompt.md           # One-shot extraction prompt\nexamples/\n  ...\nCHANGELOG.md\nCONTRIBUTING.md\nREADME.md                                    # English (default)\nREADME.zh.md                                 # Chinese\nLICENSE\n```\n\n## Working with the files\n\nSkill files are versioned. The developer agent file is local and gitignored by default, so contributors can adjust it without changing the public repository.\n\nTo create a local agent file, copy `agents/anti-vibe-writing-dev.agent.example.md` to `agents/anti-vibe-writing-dev.agent.md`.\n\nIf you want tool-specific auto-discovery, you may still need to mirror these files into the locations required by the target agent platform.\n\n## Credits & references\n\nThis skill stands on the shoulders of several open de-AI / humanizer projects and writeups. The patterns below were studied and adapted into this skill's own structure; the original analysis and wording belong to their authors. Thanks to:\n\nEnglish:\n- [blader/humanizer](https://github.com/blader/humanizer): a 30-pattern humanizer skill (MIT). Informed the sentence-level tells: copula avoidance, negative parallelism, synonym cycling, false ranges, signposting, diff-anchored writing.\n- [hardikpandya/stop-slop](https://github.com/hardikpandya/stop-slop): AI-slop detection skill (MIT). Source of the optional five-dimension scoring pass (Directness / Rhythm / Trust / Authenticity / Density) in `assets/final-pass-checklist.md`.\n\n中文 / Chinese:\n- [op7418/Humanizer-zh](https://github.com/op7418/Humanizer-zh): a 24-pattern Chinese humanizer skill, itself a Chinese adaptation of blader/humanizer (MIT). Informed the copula-\"是\" avoidance and synonym-cycling tells in the Chinese track.\n- [\"AI 中文翻译腔\" by yage.ai](https://yage.ai/share/ai-chinese-translationese-20260418.html): the analysis of Chinese translationese (物理动作动词写抽象 / 形容词加冒号预判读者 / 抽象名词主语). Informed the 翻译腔层 of `references/chinese-patterns-to-remove.md`.\n- [@dotey on X](https://x.com/dotey/status/2022774029220749538): discussion of de-AI prompt techniques (role-setting, negative constraints) that shaped the 改写心态 section and the Chinese rewrite prompt block.\n\nThese are independent projects with their own scope; this repo borrows ideas, not code. If you maintain one of them and want a credit adjusted, open an issue.\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for how to add new patterns, benchmarks, or scenario presets.\n\n## License\n\nThis project is open source under the MIT License. See `LICENSE`.\n\n## Contributor notes\n\n- Preserve meaning. Sharpen the writing without changing facts.\n- Prefer concrete edits over generic style advice.\n- Keep structure only when it helps the reader.\n\n## Version highlights\n\n**1.7.0**\n- New copy-paste model-residue layer for the machine-only tokens current chat and search models leave in a pasted draft: `contentReference` / `oaicite` / `turn0search0`, `[cite: 1]` / `[cite_start]` / `[span_1]`, `grok_card`, `ppl-ai-file-upload`, stray `【】`/`†` citation scaffolding, unsourced `[1][2]` brackets, and leftover \"Here is the revised version\" / \"Sources:\" framing. Exact-string and language-agnostic, so it's added to both patterns references, the deterministic grep gate, the checklist, and the rewrite-prompt template\n- Chinese track adds an 附和 / 谄媚开头 tell (问得好 / 你说得对 / 好的，下面是……) and an 无源的权威铺垫 tell (研究表明 / 数据显示 / 专家指出 with no source named)\n- New English sentence-level tells (sycophantic openers, unsourced authority) and a note that the AI vocabulary list drifts by model generation (showcasing / highlighting / emphasizing / enhance now sit beside the older delve / tapestry set), so no single wordlist is treated as final\n- Additive only: no change to the skeleton, philosophy, or workflow. Still a lightweight set of markdown rules\n\n**1.6.0**\n- The final checklist is now a step you run, not a list you glance at: after rewriting, work through `final-pass-checklist.md`, fix only the flagged spots, re-check, and stop after at most two rounds. It's the lightest form of a generate → check → revise loop. One model, one conversation, no extra agents, still just markdown\n- New deterministic gate: a one-line `grep` at the bottom of the checklist catches the *exact* tells self-review skims past (em-dash `—`, the `…` character, stray `→ •` in prose, and a fast subset of the jargon list). Shared double curly quotes `“ ”` are left to human judgment by language, so Chinese full-width quotes aren't deleted by mistake\n- Learning mode gains a closing check: compare the output's sentence rhythm and punctuation against the numbers recorded in the host profile, and nudge it back if it drifted\n- New banned-sentence-structure coverage in the Chinese track (the gaps that weren't covered before): template openers (\"在这个 XX 的时代…\", the preachy \"记住，真正重要的是…\"), the \"以前…现在…\" time-contrast frame, the \"总之 / 归根结底 / 说到底\" summary-closer, plus 鸡汤/slogan endings and the slick all-correct-but-empty conclusion. Synced into the Chinese rewrite-prompt block and the deterministic gate, with a new example 11 (`examples/11-sentence-structures-zh.md`) demonstrating them. Items already covered (不是…而是, 值得注意的是, 让我们 openers, per-paragraph subheadings) were left as-is, not duplicated\n\n**1.5.0**\n- New typographic-tells layer targeting the signals readers, platforms (Reddit and others), and detectors catch first: the em-dash (`—` / `——`), en-dash connectors, smart quotes `“ ” ‘ ’`, the `…` character, and stray `→ • ·` in prose. Replace each by the job it does (period, comma, colon, parentheses, straight quotes) while leaving Chinese full-width quotes alone\n- New format-forms mapping: swaps the AI *layout* habits (scattered bolding, a heading per short chunk, bullets where a sentence works, `1. 2. 3.` frameworks, `> callouts`, `---` rules, tables for 2–3 items) for the plainest thing a person actually types. Rule of thumb: if you wouldn't type the formatting into a message to a friend, cut it\n- Human-texture mode reconciled: the em-dash used to be a \"personal voice\" signal, but AI now overuses it into a tell, so it's downgraded to rare-and-deliberate with parenthesis/period alternatives\n- Stated plainly: stripping these symbols is not a trick to dodge a detector. It makes the text genuinely read like keyboard typing, and lower false-positive flags are just a side effect\n- A sixth scenario preset: Reddit / English forum comments. Comment-as-genuine-help constraints, a hard \"no em-dashes at all\" rule (some subreddit automods flag em-dash density and auto-remove comments as low-effort/AI), break too-symmetric \"it's not X, it's Y\" parallelism, casual connectors, plus disclosure / anti-sock-puppet guardrails\n- New example `10`: an em-dash / typographic-tell before-after in both English and Chinese\n\n**1.4.0**\n- Human-texture mode gains a \"casual typing\" (随手打) layer: a social-only, default-off, hard-guardrailed sliver of phone-typing texture (dropped punctuation / no caps / omitted particle), never on numbers or names, never meaning-changing typos, and not for dodging detectors\n\n**1.3.0**\n- A sharper Chinese track for more idiomatic (地道) output: a 翻译腔 / 欧化句式 layer (被字句, 作为一个…, 不仅…而且…, 对…进行…, 复数\"们\"), a 四字成语 overuse rule, and a 改写心态 section that swaps the 资深文案 / 营销专家 stance for a friend / 公众号 editor / journalist voice\n- New sentence-level English tells (copula avoidance, negative parallelism, synonym cycling, false ranges, signposting, diff-anchored writing), adapted from open humanizer projects (see Credits)\n- Three new examples: a Chinese X/Twitter post (`07`), a Chinese translationese demo (`08`), and an English sentence-tells demo (`09`)\n- A ready-to-use \"中文改写（带负向约束）\" prompt block in `assets/rewrite-prompt-template.md`, plus an optional five-dimension scoring pass in the final-pass checklist\n\n**1.2.0**\n- Chinese AI-smell rules and Chinese before/after benchmarks (`references/chinese-*.md`)\n- Human-texture mode for opt-in irregularity (`references/human-texture.md`)\n- Learning mode with host profile workflow (`references/learning-mode.md`)\n- Five scenario presets: X / Weibo / blog / podcast / report (`references/scenario-presets.md`)\n- Host profile template and one-shot style extraction prompt\n- Fixed `tools:` field in SKILL.md to use Claude Code's real tool names\n\nSee [CHANGELOG.md](./CHANGELOG.md) for the full version history.\n",
  "bytes": 15183,
  "sha": "3ee4884e854110ea055e9e0b892a52e10363761b55ae3421dd7a50009caa383e",
  "repo_slug": "weijt606/anti-vibe-writing",
  "fonte": "repo",
  "truncated": false,
  "api": "https://api.agentalog.com/api/listings/skl_weijt606_anti_vibe_writing_anti_vibe_wri_a14fb64b/readme"
}