human-writing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHuman-Style Writing
真人风格写作
This skill helps you write content that reads like it was written by a real person with opinions, personality, and specific knowledge—not a corporate blog generator or AI assistant trying to sound helpful.
这项技能能帮你创作出读起来像真人写的内容——有观点、有个性、有具体知识,而不是像企业博客生成器或刻意表现友好的AI助手产出的文字。
Core Principle
核心原则
Write like you're explaining something to a colleague over coffee, not presenting to a board room.
Good writing is specific, opinionated, and conversational. Bad writing is generic, safe, and sounds like every other tech blog.
写作时要像在咖啡店里给同事讲解事情,而不是给董事会做汇报。
好的写作具体、有主见、口语化。糟糕的写作通用、保守,和其他科技博客千篇一律。
What Makes Writing Sound AI-Generated
哪些特征会让写作看起来像AI生成的
❌ Patterns to Avoid
❌ 需要避免的写作模式
1. Over-Enthusiastic Openings
1. 过度热情的开篇
markdown
❌ "We're thrilled to announce..."
❌ "Today, we're excited to share..."
❌ "I'm delighted to introduce..."
❌ "Join us on this exciting journey..."
✅ "We built X because Y kept breaking."
✅ "Here's what we learned shipping X to production."
✅ "Most migration tools get you 70% of the way. Here's how we get to 95%."markdown
❌ "We're thrilled to announce..."
❌ "Today, we're excited to share..."
❌ "I'm delighted to introduce..."
❌ "Join us on this exciting journey..."
✅ "We built X because Y kept breaking."
✅ "Here's what we learned shipping X to production."
✅ "Most migration tools get you 70% of the way. Here's how we get to 95%."2. Vague Claims Without Evidence
2. 无证据的模糊表述
markdown
❌ "This revolutionary approach transforms how developers work."
❌ "Leveraging cutting-edge AI technology..."
❌ "A game-changing solution for modern development."
❌ "Unlock the full potential of your workflow."
✅ "Nango used this to migrate 47 repos in 3 days."
✅ "We tested this on Next.js App Router migration—reduced manual fixes from 800 to 40."
✅ "Stripe's migration guide is 12,000 words. This gets it down to 200 lines of code."markdown
❌ "This revolutionary approach transforms how developers work."
❌ "Leveraging cutting-edge AI technology..."
❌ "A game-changing solution for modern development."
❌ "Unlock the full potential of your workflow."
✅ "Nango used this to migrate 47 repos in 3 days."
✅ "We tested this on Next.js App Router migration—reduced manual fixes from 800 to 40."
✅ "Stripe's migration guide is 12,000 words. This gets it down to 200 lines of code."3. Corporate Buzzword Soup
3. 企业黑话堆砌
markdown
❌ "Empowering developers to leverage synergies..."
❌ "Best-in-class solutions for enterprise-grade..."
❌ "Seamlessly integrate with your existing ecosystem..."
❌ "Drive innovation through collaborative paradigms..."
✅ "Works with whatever you're already using."
✅ "Detects edge cases your regex won't catch."
✅ "One command. No config file. No surprises."markdown
❌ "Empowering developers to leverage synergies..."
❌ "Best-in-class solutions for enterprise-grade..."
❌ "Seamlessly integrate with your existing ecosystem..."
❌ "Drive innovation through collaborative paradigms..."
✅ "Works with whatever you're already using."
✅ "Detects edge cases your regex won't catch."
✅ "One command. No config file. No surprises."4. Unnecessary Hedging
4. 不必要的含糊措辞
markdown
❌ "This might help you potentially improve..."
❌ "You could possibly consider..."
❌ "This may or may not be useful..."
❌ "Some users have reported that..."
✅ "This cuts migration time in half."
✅ "Use this when codemods aren't enough."
✅ "Three users reported this edge case. We fixed it."markdown
❌ "This might help you potentially improve..."
❌ "You could possibly consider..."
❌ "This may or may not be useful..."
❌ "Some users have reported that..."
✅ "This cuts migration time in half."
✅ "Use this when codemods aren't enough."
✅ "Three users reported this edge case. We fixed it."5. Generic Transitions
5. 通用化过渡语
markdown
❌ "Let's dive deep into..."
❌ "Without further ado..."
❌ "At the end of the day..."
❌ "It goes without saying..."
✅ Just start the next section. You don't need a transition.
✅ Or use a specific connector: "Here's why that matters:"markdown
❌ "Let's dive deep into..."
❌ "Without further ado..."
❌ "At the end of the day..."
❌ "It goes without saying..."
✅ 直接开始下一部分,不需要过渡语。
✅ 或者用具体的衔接语:"这就是为什么它很重要:"6. Robotic Lists
6. 机械感列表
markdown
❌ "Here are 5 key benefits:
1. Enhanced productivity
2. Improved efficiency
3. Better collaboration
4. Increased flexibility
5. Streamlined workflows"
✅ "This saves you time in three ways:
- No more searching docs for edge cases—they're encoded in the package
- AI applies patterns consistently—you don't chase style violations
- Tests are generated, not written—coverage without the grind"markdown
❌ "Here are 5 key benefits:
1. Enhanced productivity
2. Improved efficiency
3. Better collaboration
4. Increased flexibility
5. Streamlined workflows"
✅ "This saves you time in three ways:
- No more searching docs for edge cases—they're encoded in the package
- AI applies patterns consistently—you don't chase style violations
- Tests are generated, not written—coverage without the grind"What Makes Writing Sound Human
哪些特征会让写作看起来像真人创作的
✅ Patterns to Use
✅ 值得采用的写作模式
1. Specific Details
1. 具体细节
markdown
❌ "Many developers struggle with migrations."
✅ "We've all copy-pasted from a migration guide, missed an edge case, and spent 2 hours debugging why tests fail."
❌ "Performance is significantly improved."
✅ "Query time dropped from 847ms to 12ms after adding the index."
❌ "Works with popular frameworks."
✅ "Tested on Next.js, Remix, SvelteKit, and Astro."markdown
❌ "Many developers struggle with migrations."
✅ "我们都有过从迁移指南里复制粘贴、漏掉边缘案例,然后花2小时调试测试失败原因的经历。"
❌ "Performance is significantly improved."
✅ "添加索引后,查询时间从847ms降至12ms。"
❌ "Works with popular frameworks."
✅ "已在Next.js、Remix、SvelteKit和Astro上测试通过。"2. Direct, Confident Language
2. 直接、自信的语言
markdown
❌ "This approach may help you potentially improve your workflow."
✅ "This cuts your migration time in half."
❌ "You might want to consider using this feature."
✅ "Use this feature when you have more than 10 files to update."
❌ "Some users have found this useful."
✅ "Three teams adopted this last week. All three shipped in under 2 days."markdown
❌ "This approach may help you potentially improve your workflow."
✅ "这能将你的迁移时间缩短一半。"
❌ "You might want to consider using this feature."
✅ "当你需要更新10个以上文件时,就用这个功能。"
❌ "Some users have found this useful."
✅ "上周有三个团队采用了这个方案,全部在2天内完成了交付。"3. Honest Limitations
3. 坦诚说明局限性
markdown
❌ "Our comprehensive solution handles all use cases."
✅ "This won't catch dynamic imports or string templates. You'll need to fix those manually."
❌ "Perfectly seamless migration experience."
✅ "Expect about 5% of edge cases to need manual review. That's down from 30%."
❌ "Works with any codebase."
✅ "Works if you're on TypeScript 4.5+. Earlier versions need a polyfill."markdown
❌ "Our comprehensive solution handles all use cases."
✅ "这个工具无法处理动态导入或字符串模板,这些需要你手动修复。"
❌ "Perfectly seamless migration experience."
✅ "预计约5%的边缘案例需要手动检查,这已经从原来的30%降下来了。"
❌ "Works with any codebase."
✅ "适用于TypeScript 4.5及以上版本,更早的版本需要使用polyfill。"4. Conversational Asides
4. 口语化的题外话
markdown
✅ "You could write a 400-line script for this. We did. It broke on Unicode."
✅ "Turns out, most projects have 3-5 edge cases that codemods can't handle."
✅ "We tried docs. Developers don't read them. We tried linting. They ignore the warnings."markdown
✅ "你可以为此写一个400行的脚本,我们试过,但它在Unicode字符上出了问题。"
✅ "事实证明,大多数项目都有3-5个代码修改工具(codemods)无法处理的边缘案例。"
✅ "我们试过写文档,但开发者不读;试过用代码检查工具,但他们忽略警告。"5. Active Voice, Present Tense
5. 主动语态、现在时态
markdown
❌ "The package can be installed by running the command."
✅ "Install the package: prpm install @vendor/migration"
❌ "Improvements were made to the conversion quality."
✅ "We improved conversion quality from 78% to 94%."
❌ "It has been observed that users prefer..."
✅ "Users prefer X over Y by a 4:1 margin."markdown
❌ "The package can be installed by running the command."
✅ "安装这个包:prpm install @vendor/migration"
❌ "Improvements were made to the conversion quality."
✅ "我们将转换质量从78%提升到了94%。"
❌ "It has been observed that users prefer..."
✅ "用户对X的偏好度是Y的4倍。"6. Strong Opening Sentences
6. 有力的开篇句
markdown
❌ "In this post, we will discuss how migrations work."
✅ "Codemods automate 70% of migrations. This gets you to 95%."
❌ "Let me tell you about a new feature we've added."
✅ "You can now install an entire framework migration as a single package."
❌ "Today, I want to talk about our vision for the future."
✅ "Package managers changed how we ship code. We're doing the same for AI instructions."markdown
❌ "In this post, we will discuss how migrations work."
✅ "代码修改工具能自动化完成70%的迁移工作,而我们的方案能帮你完成到95%。"
❌ "Let me tell you about a new feature we've added."
✅ "现在你可以将整个框架迁移包作为单个包安装。"
❌ "Today, I want to talk about our vision for the future."
✅ "包管理器改变了我们交付代码的方式,我们要为AI指令做同样的事。"Tone Calibration
语气校准
Technical Posts
技术类文章
- Voice: Knowledgeable peer, not teacher
- Assumptions: Reader knows basics, wants specifics
- Evidence: Code examples, performance numbers, real packages
- Length: As long as needed to be complete, as short as possible to respect time
Example:
markdown
undefined- 语气:知识丰富的同行,而非老师
- 预设:读者懂基础知识,想要具体内容
- 依据:代码示例、性能数据、真实包
- 篇幅:完整表达所需的长度,同时尊重读者时间,尽量精简
示例:
markdown
undefinedConverting Copilot Rules to Claude Format
Converting Copilot Rules to Claude Format
GitHub Copilot uses a single file with YAML frontmatter. Claude uses separate skills in .
.github/copilot-instructions.md.claude/skills/Here's how we handle the conversion:
- Parse the YAML frontmatter with js-yaml
- Extract the glob patterns
applyTo - Convert to Claude's format
fileMatch - Split multi-concern rules into separate skills
Edge case: Copilot's supports negation patterns (). Claude doesn't. We preserve these as comments and log a warning.
applyTo!**/*.test.tsConversion quality: 94% (6% requires manual review for negation patterns).
undefinedGitHub Copilot uses a single file with YAML frontmatter. Claude uses separate skills in .
.github/copilot-instructions.md.claude/skills/Here's how we handle the conversion:
- Parse the YAML frontmatter with js-yaml
- Extract the glob patterns
applyTo - Convert to Claude's format
fileMatch - Split multi-concern rules into separate skills
Edge case: Copilot's supports negation patterns (). Claude doesn't. We preserve these as comments and log a warning.
applyTo!**/*.test.tsConversion quality: 94% (6% requires manual review for negation patterns).
undefinedVision Posts
愿景类文章
- Voice: Opinionated builder with receipts
- Assumptions: Reader is skeptical, needs convincing
- Evidence: Real-world examples, before/after, objections addressed
- Length: Long enough to make the case, tight enough to stay focused
Example:
markdown
undefined- 语气:有实际成果、有主见的构建者
- 预设:读者持怀疑态度,需要被说服
- 依据:真实案例、前后对比、回应质疑
- 篇幅:足够阐明观点,同时保持紧凑
示例:
markdown
undefinedWhy Docs Aren't Enough
Why Docs Aren't Enough
Stripe's migration guide is 12,000 words. It's comprehensive, well-written, and most developers skim it.
Why? Because reading docs requires:
- Find the right section (3-5 minutes)
- Understand the pattern (5-10 minutes)
- Apply to your specific case (10-30 minutes)
- Repeat 20-50 times per migration
That's 6-15 hours. And you'll still miss edge cases.
PRPM packages encode those patterns once. AI applies them consistently. Total time: 20 minutes.
undefinedStripe's migration guide is 12,000 words. It's comprehensive, well-written, and most developers skim it.
Why? Because reading docs requires:
- Find the right section (3-5 minutes)
- Understand the pattern (5-10 minutes)
- Apply to your specific case (10-30 minutes)
- Repeat 20-50 times per migration
That's 6-15 hours. And you'll still miss edge cases.
PRPM packages encode those patterns once. AI applies them consistently. Total time: 20 minutes.
undefinedTutorial Posts
教程类文章
- Voice: Experienced guide who's made the mistakes
- Assumptions: Reader wants to follow along, copy/paste, learn
- Evidence: Runnable examples, expected output, common pitfalls
- Length: Complete walkthrough with no missing steps
Example:
markdown
undefined- 语气:有经验的向导,曾踩过坑
- 预设:读者想要跟着操作、复制粘贴、学习
- 依据:可运行的示例、预期输出、常见陷阱
- 篇幅:完整的分步指南,无遗漏步骤
示例:
markdown
undefinedPublishing Your First PRPM Package
Publishing Your First PRPM Package
What You'll Build
What You'll Build
A Cursor rule that enforces "no default exports" across your TypeScript codebase. By the end, you'll have published it to the registry.
A Cursor rule that enforces "no default exports" across your TypeScript codebase. By the end, you'll have published it to the registry.
Prerequisites
Prerequisites
- Node.js 18+ (check: )
node --version - PRPM CLI installed ()
npm install -g prpm - GitHub account (for publishing)
- Node.js 18+ (check: )
node --version - PRPM CLI installed ()
npm install -g prpm - GitHub account (for publishing)
Step 1: Initialize the Package
Step 1: Initialize the Package
bash
$ mkdir no-default-exports
$ cd no-default-exports
$ prpm init
Format: cursor
Subtype: rule
Name: no-default-exports
Description: Enforce named exports in TypeScriptThis creates and .
prpm.json.cursorrulesbash
$ mkdir no-default-exports
$ cd no-default-exports
$ prpm init
Format: cursor
Subtype: rule
Name: no-default-exports
Description: Enforce named exports in TypeScriptThis creates and .
prpm.json.cursorrulesStep 2: Write the Rule
Step 2: Write the Rule
Edit :
[... full example ...]
.cursorrulesundefinedEdit :
[... full example ...]
.cursorrulesundefinedStructural Techniques
结构化技巧
1. Start With The Punchline
1. 开门见山
markdown
❌ "In this article, we'll explore the challenges of API migrations, discuss various approaches, and ultimately present a solution."
✅ "API migrations fail because docs explain the 'what' but not the 'why.' Here's how to ship the reasoning with the code."markdown
❌ "In this article, we'll explore the challenges of API migrations, discuss various approaches, and ultimately present a solution."
✅ "API迁移失败是因为文档只解释了‘是什么’,没解释‘为什么’。下面是如何将推理逻辑和代码一起交付的方法。"2. Use Subheadings as Scannable Statements
2. 用子标题作为可快速扫描的陈述
markdown
❌ ## Introduction
❌ ## Background
❌ ## Methodology
❌ ## Results
✅ ## The Problem: Docs Go Stale
✅ ## Why Codemods Aren't Enough
✅ ## What PRPM Packages Add
✅ ## Real Example: Next.js App Routermarkdown
❌ ## Introduction
❌ ## Background
❌ ## Methodology
❌ ## Results
✅ ## 问题:文档会过时
✅ ## 为什么代码修改工具还不够
✅ ## PRPM包新增了什么
✅ ## 真实案例:Next.js App Router3. Show, Don't Just Tell
3. 展示,而非仅说明
markdown
❌ "The conversion process is simple and efficient."
✅ "Here's the entire conversion:
```bash
$ prpm install @nextjs/app-router-migration --as cursor
$ cursor apply @nextjs/app-router-migration
✓ Migrated 47 files
⚠ 3 files need manual review (dynamic imports)Done in 90 seconds."
undefinedmarkdown
❌ "The conversion process is simple and efficient."
✅ "以下是完整的转换过程:
```bash
$ prpm install @nextjs/app-router-migration --as cursor
$ cursor apply @nextjs/app-router-migration
✓ Migrated 47 files
⚠ 3 files need manual review (dynamic imports)90秒完成。"
undefined4. Break Up Walls of Text
4. 拆分大段文字
- Use subheadings every 2-3 paragraphs
- Insert code blocks to give eyes a break
- Use bullet lists for 3+ related items
- Add horizontal rules for major section breaks
- Use blockquotes for important callouts
- 每2-3段就加一个子标题
- 插入代码块让眼睛休息
- 3个及以上相关内容用项目符号列表
- 用水平线分隔主要章节
- 用块引用突出重要提示
5. End With Action, Not Summary
5. 以行动收尾,而非总结
markdown
❌ "In conclusion, we've discussed how PRPM packages work and why they're useful for migrations."
✅ "Try it:
```bash
prpm install @popular/package-nameHave questions? Follow @prpmdev or open an issue."
undefinedVoice Examples from PRPM
PRPM的语气示例
Good (from VISION.md):
优秀示例(来自VISION.md):
"Codemods automate the first 60–80% of migrations. Docs explain the rest. Developers still wrestle with edge cases, conventions, and tests."
Why it works: Specific percentages, clear problem statement, no fluff.
"You could read 47 migration guides. Or install one package."
Why it works: Concrete number, stark contrast, confident.
"We tried this on Nango's SDK migration. 47 repos, 3 days, zero regressions."
Why it works: Real company, real numbers, honest outcome.
"Codemods automate the first 60–80% of migrations. Docs explain the rest. Developers still wrestle with edge cases, conventions, and tests."
为什么有效: 具体的百分比、清晰的问题陈述、无冗余内容。
"You could read 47 migration guides. Or install one package."
为什么有效: 具体数字、鲜明对比、语气自信。
"We tried this on Nango's SDK migration. 47 repos, 3 days, zero regressions."
为什么有效: 真实公司、真实数据、诚实的结果。
Bad (AI-generated style):
糟糕示例(AI生成风格):
"Our innovative platform leverages cutting-edge AI to streamline your development workflow."
Why it fails: Buzzwords, vague, could describe anything.
"We're excited to announce a revolutionary new approach to migrations."
Why it fails: Over-enthusiastic, no specifics, marketing speak.
"This powerful solution empowers teams to unlock their full potential."
Why it fails: Empty claims, corporate jargon, meaningless.
"Our innovative platform leverages cutting-edge AI to streamline your development workflow."
为什么无效: 黑话、模糊、可以描述任何产品。
"We're excited to announce a revolutionary new approach to migrations."
为什么无效: 过度热情、无具体内容、营销话术。
"This powerful solution empowers teams to unlock their full potential."
为什么无效: 空洞的表述、企业黑话、毫无意义。
Self-Check Questions
自我检查问题
Before publishing, ask:
- Would a human say this out loud? If not, rewrite.
- Is every claim backed by evidence? If not, add specifics or remove the claim.
- Could this sentence appear in any other company's blog? If yes, make it specific to PRPM.
- Does this assume the reader is dumb? If yes, trust them more.
- Am I hedging because I'm uncertain? If yes, verify facts or own the uncertainty.
- Is this a transition I can delete? If yes, delete it.
- Does this open with enthusiasm instead of information? If yes, lead with the info.
发布前,请自问:
- 真人会这样说出口吗? 如果不会,重写。
- 每个主张都有证据支持吗? 如果没有,补充细节或删除该主张。
- 这句话能出现在其他公司的博客里吗? 如果可以,让它更贴合PRPM的具体情况。
- 这是不是假设读者不懂? 如果是,要更信任读者的能力。
- 我是不是因为不确定才含糊其辞? 如果是,核实事实或坦诚自己的不确定。
- 这个过渡语可以删掉吗? 如果可以,删掉。
- 开头是不是用了热情的表述而非信息? 如果是,先用信息开头。
Quick Fixes
快速修正技巧
If it sounds too formal:
如果写得太正式:
- Replace "utilize" → "use"
- Replace "in order to" → "to"
- Replace "at this point in time" → "now"
- Replace "for the purpose of" → "for" or "to"
- Cut "very," "really," "quite," "actually"
- 把“utilize”换成“use”
- 把“in order to”换成“to”
- 把“at this point in time”换成“现在”
- 把“for the purpose of”换成“为了”或“to”
- 删除“very”“really”“quite”“actually”这类词
If it sounds too generic:
如果写得太通用:
- Add a specific number
- Name a real company/project
- Include a code example
- Mention a concrete edge case
- Quote user feedback
- 添加具体数字
- 提及真实的公司/项目
- 加入代码示例
- 提到具体的边缘案例
- 引用用户反馈
If it sounds too salesy:
如果写得太像营销话术:
- Replace superlatives with comparisons
- Replace "revolutionary" with "different because"
- Replace "amazing" with specific benefits
- Remove exclamation points (except in code comments where appropriate)
- Cut the first paragraph (usually marketing fluff)
- 用对比代替最高级
- 把“revolutionary”换成“不同之处在于”
- 把“amazing”换成具体的收益
- 删除感叹号(代码注释中适当使用的情况除外)
- 删掉第一段(通常是营销冗余内容)
Remember
记住
PRPM users are developers. They have good bullshit detectors. Write like you respect their intelligence and their time.
Good writing is revision. First draft: get ideas down. Second draft: cut 30%. Third draft: add specifics. Fourth draft: read it out loud.
If you wouldn't say it in a GitHub issue comment, don't put it in a blog post.
PRPM的用户是开发者,他们很会辨别空话。写作时要尊重他们的智商和时间。
好的写作是改出来的。 初稿:把想法写下来。二稿:删掉30%的内容。三稿:补充细节。四稿:大声读出来。
如果在GitHub issue评论里你不会这么写,就别把它放进博客文章里。