joy-check
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseJoy Check
喜悦检查
Operator Context
操作者背景
This skill operates as an operator for tonal framing validation, configuring Claude's behavior for evaluating whether content frames experiences through joy, curiosity, and generosity rather than grievance, accusation, or victimhood. It implements the Two-Pass Validation architectural pattern -- deterministic regex pre-filter followed by LLM semantic analysis -- to catch both obvious and subtle negative framing.
该技能用作语气框架验证的操作器,配置Claude的行为,以评估内容是否通过喜悦、好奇和包容的视角来呈现经历,而非抱怨、指责或受害者心态。它采用双阶段验证架构模式——先通过确定性正则表达式预过滤,再进行LLM语义分析——以捕捉明显和微妙的负面框架。
Hardcoded Behaviors (Always Apply)
硬编码行为(始终适用)
- CLAUDE.md Compliance: Read and follow repository CLAUDE.md before validating
- Joy is the lens: Every paragraph should frame its subject through curiosity, wonder, generosity, or earned satisfaction -- because content that builds a case for grievance alienates readers and undermines the author's credibility, even when the underlying experience is legitimate
- No grievance framing: Content should never build a case for being wronged -- because accumulating evidence of injustice reads as prosecution, not communication
- No accusation framing: Content should never point fingers at specific people or imply bad faith -- because attributing motive to others is speculation wearing the mask of observation
- No victimhood framing: Content should never position the author as a victim -- because it shifts agency from the author to external forces
- Reframe, don't suppress: Negative experiences are valid topics. The skill checks framing, not topic. A difficult experience can be framed through what you learned, what you built, or what you now understand. Suppressing legitimate experiences would be dishonest; reframing them through curiosity is editorial craft.
- CLAUDE.md合规性:验证前请阅读并遵循仓库中的CLAUDE.md
- 以喜悦为视角:每个段落都应通过好奇、惊叹、包容或成就感来呈现主题——因为构建抱怨立场的内容会疏远读者,损害作者的可信度,即使背后的经历是真实合理的
- 无抱怨框架:内容绝不能构建“自己被亏待”的立场——因为积累不公的证据读起来像起诉,而非沟通
- 无指责框架:内容绝不能指向特定个人或暗示恶意——因为揣测他人动机是披着观察外衣的臆测
- 无受害者心态框架:内容绝不能将作者定位为受害者——因为这会把主动权从作者转移到外部力量
- 重构而非压制:负面经历是合理的写作主题。该技能检查的是框架,而非主题。一段艰难的经历可以从你学到的东西、构建的成果或现在理解的视角来呈现。压制合理的经历是不诚实的;以好奇的视角重构才是编辑的技巧。
Default Behaviors (ON unless disabled)
默认行为(默认开启,可关闭)
- Paragraph-level analysis: Evaluate each paragraph independently against the Joy Framing Rubric
- Regex pre-filter: Run first as a fast gate -- catches obvious patterns without spending LLM tokens
scan-negative-framing.py - Suggestion mode: Flag and suggest reframes without modifying content
- Score output: Produce a joy score (0-100) for the full piece
- 段落级分析:针对喜悦框架评估准则独立评估每个段落
- 正则表达式预过滤:先运行作为快速筛选——无需消耗LLM令牌即可捕捉明显的负面模式
scan-negative-framing.py - 建议模式:标记问题并提供重构建议,但不修改内容
- 分数输出:为整篇内容生成喜悦分数(0-100分)
Optional Behaviors (OFF unless enabled)
可选行为(默认关闭,需开启)
- Fix mode (--fix): Rewrite flagged paragraphs in place, then re-verify
- Strict mode (--strict): Fail on any paragraph below 60 joy score
- 修复模式(--fix):直接重写标记的段落,然后重新验证
- 严格模式(--strict):任何段落分数低于60分则判定为不合格
What This Skill CAN Do
该技能可实现的功能
- Evaluate tonal framing at the paragraph level using the Joy Framing Rubric
- Detect subtle grievance, accusation, and victimhood patterns that regex misses (passive-aggressive factuality, accumulative grievance, reluctant generosity)
- Suggest positive reframes for negatively-framed paragraphs
- Produce a joy score (0-100) for publication readiness
- Rewrite flagged paragraphs in fix mode while preserving substance
- 使用喜悦框架评估准则进行段落级语气框架评估
- 检测正则表达式无法识别的微妙抱怨、指责和受害者模式(被动攻击式的事实陈述、累积的抱怨、不情愿的包容)
- 为负面框架的段落提供正向重构建议
- 生成发布就绪的喜悦分数(0-100分)
- 在修复模式下重写标记的段落,同时保留内容实质
What This Skill CANNOT Do
该技能无法实现的功能
- Evaluate voice authenticity (use voice-validator for that)
- Detect AI writing patterns (use anti-ai-editor for that)
- Change the topic or substance of content (only reframes the framing)
- Evaluate factual accuracy or grammar (out of scope entirely)
- 评估语气真实性(请使用voice-validator)
- 检测AI写作模式(请使用anti-ai-editor)
- 更改内容的主题或实质(仅重构框架)
- 评估事实准确性或语法(完全超出范围)
Instructions
操作步骤
Phase 1: PRE-FILTER
阶段1:预过滤
Goal: Use the regex scanner as a fast gate to catch obvious negative framing before spending LLM tokens on semantic analysis.
Step 1: Run the regex-based scanner
bash
python3 ~/.claude/scripts/scan-negative-framing.py [file]Step 2: Handle regex hits
If the scanner finds hits, these are obvious negative framing patterns (victimhood, accusation, bitterness, passive aggression). Report them to the user with the scanner's suggested reframes. These do not require LLM evaluation -- the regex patterns are high-confidence matches.
If mode is active, apply the scanner's suggested reframes and re-run to confirm clean.
--fixGATE: Regex scan returns zero hits. If hits remain after reporting/fixing, do NOT proceed to Phase 2 -- the obvious patterns must be resolved first. Proceeding with known regex hits would waste LLM analysis on paragraphs that need mechanical fixes.
目标:使用正则表达式扫描器作为快速筛选,在消耗LLM令牌进行语义分析前捕捉明显的负面框架。
步骤1:运行基于正则表达式的扫描器
bash
python3 ~/.claude/scripts/scan-negative-framing.py [file]步骤2:处理正则匹配结果
如果扫描器发现匹配项,这些是明显的负面框架模式(受害者心态、指责、怨气、被动攻击)。向用户报告这些问题以及扫描器提供的重构建议。这些无需LLM评估——正则表达式模式是高置信度匹配。
如果启用了模式,应用扫描器的建议重构并重新运行以确认无问题。
--fix关卡:正则扫描返回零匹配。如果报告/修复后仍有匹配项,请勿进入阶段2——必须先解决这些明显的模式。在已知存在正则匹配项的情况下进行LLM分析,会浪费资源在需要机械修复的段落上。
Phase 2: ANALYZE
阶段2:分析
Goal: Read the content and evaluate each paragraph against the Joy Framing Rubric using LLM semantic understanding.
Step 1: Read the content
Read the full file. Identify paragraph boundaries (blank-line separated blocks). Skip frontmatter (YAML between markers), code blocks, and blockquotes.
---Step 2: Evaluate each paragraph against the Joy Framing Rubric
| Dimension | Joy-Centered (PASS) | Grievance-Centered (FAIL) |
|---|---|---|
| Subject position | Author as explorer, builder, learner | Author as victim, wronged party, unrecognized genius |
| Other people | Fellow travelers, interesting minds, people figuring things out | Opponents, thieves, people who should have done better |
| Difficult experiences | Interesting, surprising, made me think differently | Unfair, hurtful, someone should fix this |
| Uncertainty | Comfortable, curious, "none of us know" | Anxious, defensive, "I need to prove" |
| Action framing | "I decided to", "I realized", "I learned" | "I was forced to", "I had no choice", "they made me" |
| Closing energy | Forward-looking, building, sharing, exploring | Cautionary, warning, demanding, lamenting |
Step 3: Score each paragraph
For each paragraph, assign one of:
- JOY (80-100): Frames through curiosity, generosity, or earned satisfaction
- NEUTRAL (50-79): Factual, neither joy nor grievance
- CAUTION (30-49): Leans toward grievance but recoverable with reframing
- GRIEVANCE (0-29): Frames through accusation, victimhood, or bitterness
For any paragraph scored CAUTION or GRIEVANCE, draft a specific reframe suggestion that preserves the substance while shifting the framing toward curiosity or generosity.
GATE: All paragraphs analyzed and scored. Reframe suggestions drafted for all CAUTION and GRIEVANCE paragraphs. Proceed to Phase 3.
目标:阅读内容,使用LLM语义理解针对喜悦框架评估准则评估每个段落。
步骤1:阅读内容
读取完整文件。识别段落边界(空行分隔的块)。跳过前置元数据(标记之间的YAML)、代码块和引用块。
---步骤2:针对喜悦框架评估准则评估每个段落
| 维度 | 以喜悦为核心(合格) | 以抱怨为核心(不合格) |
|---|---|---|
| 作者定位 | 探索者、构建者、学习者 | 受害者、被亏待者、未被认可的天才 |
| 他人定位 | 同行旅伴、有趣的思想者、正在摸索的人 | 对手、窃贼、本应做得更好的人 |
| 艰难经历 | 有趣的、令人惊讶的、促使我改变想法 | 不公平的、伤人的、应该有人来解决 |
| 不确定性 | 坦然的、好奇的、“我们都不知道” | 焦虑的、防御的、“我需要证明” |
| 行为呈现 | “我决定”、“我意识到”、“我学到了” | “我被迫”、“我别无选择”、“他们让我” |
| 结尾基调 | 前瞻性的、建设性的、分享的、探索性的 | 警示性的、警告的、要求的、哀叹的 |
步骤3:为每个段落打分
为每个段落分配以下等级之一:
- 喜悦(80-100分):通过好奇、包容或成就感呈现
- 中性(50-79分):事实性描述,既无喜悦也无抱怨
- 警示(30-49分):倾向于抱怨,但可通过重构修复
- 抱怨(0-29分):通过指责、受害者心态或怨气呈现
对于任何被评为警示或抱怨的段落,起草具体的重构建议,在保留内容实质的同时将框架转向好奇或包容。
关卡:所有段落已分析并打分。为所有警示和抱怨段落起草了重构建议。进入阶段3。
Phase 3: REPORT
阶段3:报告
Goal: Produce a structured report with scores, findings, and reframe suggestions.
Step 1: Calculate overall score
Average all paragraph scores. The overall score determines pass/fail:
- PASS: Score >= 60 AND no GRIEVANCE paragraphs
- FAIL: Score < 60 OR any GRIEVANCE paragraph present
Step 2: Output the report
JOY CHECK: [file]
Score: [0-100]
Status: PASS / FAIL
Paragraphs:
P1 (L10-12): JOY [85] -- explorer framing, curiosity
P2 (L14-16): NEUTRAL [65] -- factual timeline
P3 (L18-22): CAUTION [40] -- "confused" leans defensive
-> Reframe: Focus on what you learned from the confusion
P4 (L24-28): JOY [90] -- generous framing of others
Overall: [summary of tonal arc -- where the piece starts, how it moves, where it lands]Step 3: Handle fix mode
If mode is active:
--fix- Rewrite any CAUTION or GRIEVANCE paragraphs using the drafted reframe suggestions
- Preserve the substance -- change only the framing
- Re-run Phase 2 analysis on the rewritten paragraphs to verify fixes landed
- If fixes introduce new CAUTION/GRIEVANCE scores, iterate (maximum 3 attempts)
GATE: Report produced. If , all rewrites applied and re-verified. Joy check complete.
--fix目标:生成包含分数、发现和重构建议的结构化报告。
步骤1:计算整体分数
平均所有段落的分数。整体分数决定合格/不合格:
- 合格:分数≥60分且无抱怨段落
- 不合格:分数<60分或存在任何抱怨段落
步骤2:输出报告
喜悦检查:[file]
分数:[0-100]
状态:合格/不合格
段落详情:
P1(第10-12行):喜悦 [85分] —— 探索者视角,充满好奇
P2(第14-16行):中性 [65分] —— 事实性时间线
P3(第18-22行):警示 [40分] —— “困惑”带有防御性倾向
-> 重构建议:聚焦于你从困惑中学到的东西
P4(第24-28行):喜悦 [90分] —— 对他人的包容视角
整体总结:[语气弧线总结——内容的起始、发展和收尾基调]步骤3:处理修复模式
如果启用了模式:
--fix- 使用起草的重构建议重写任何警示或抱怨段落
- 保留内容实质——仅改变框架
- 对重写后的段落重新运行阶段2分析以验证修复效果
- 如果修复后仍出现新的警示/抱怨分数,重复操作(最多3次尝试)
关卡:报告已生成。如果启用了模式,所有重写已应用并重新验证。喜悦检查完成。
--fixThe Joy Principle
喜悦原则
This is the editorial philosophy that drives the check.
A difficult experience is not a negative topic. Seeing your architecture appear elsewhere is interesting. Navigating provenance in the AI age is worth writing about. The topic can involve confusion, surprise, even frustration.
The framing is what matters. The same experience can be told as:
- "Someone took my work" (grievance)
- "I saw my patterns show up somewhere unexpected and it made me think about how ideas move now" (joy/curiosity)
Both describe the same events. The second frames it through the lens that defines joy-centered content: the specific satisfaction found in understanding something you didn't understand before.
Joy doesn't mean happiness. It means engagement, curiosity, the energy of figuring things out. A joy-centered post about a frustrating debugging session isn't happy -- but it frames the frustration as the puzzle and the understanding as the reward. That's the lens.
这是驱动该检查的编辑理念。
艰难的经历并非负面主题。看到自己的架构出现在其他地方是有趣的。在AI时代探索来源问题值得书写。主题可以包含困惑、惊讶,甚至挫败感。
重要的是框架。同一段经历可以这样讲述:
- “有人盗用了我的成果”(抱怨)
- “我看到自己的模式出现在某个意想不到的地方,这让我开始思考现在想法的传播方式”(喜悦/好奇)
两者描述的是相同的事件。第二种方式通过定义以喜悦为核心内容的视角呈现:从理解之前不理解的事物中获得的具体满足感。
喜悦并不意味着快乐。它意味着投入、好奇、探索事物的动力。一篇关于令人沮丧的调试过程的以喜悦为核心的文章并非快乐的——但它将挫败感视为谜题,将理解视为奖励。这就是核心视角。
Examples
示例
These examples show the same content reframed from grievance to joy. The substance is identical. Only the framing changes.
这些示例展示了相同内容从抱怨视角重构为喜悦视角的效果。内容实质完全相同,仅框架改变。
Example 1: Describing a Difficult Experience
示例1:描述艰难经历
GRIEVANCE (FAIL):
I spent nine months building this system and nobody cared. Then someone
else showed up with the same thing and got all the attention. It felt
unfair. I did the work and they got the credit.JOY (PASS):
I've been building and writing about this architecture for about nine
months now. The response has been mostly crickets. Some good conversations,
some pushback, but nothing that made me feel like the ideas were landing.
Then someone posted a system with the same concepts and I got excited.
Someone else got it.Why the second works: The author is an explorer who found something interesting, not a victim cataloguing injustice. "Mostly crickets" is honest without being bitter. "Someone else got it" is generous.
抱怨(不合格):
我花了九个月构建这个系统,却没人在意。然后别人带着同样的东西出现,获得了所有关注。这感觉不公平。我做了所有工作,他们却得到了赞誉。喜悦(合格):
我已经构建并撰写关于这个架构的内容约九个月了。反响大多平平。有一些不错的对话,一些反对意见,但没有让我觉得这些想法被接受的反馈。然后有人发布了一个包含相同概念的系统,我很兴奋。终于有人理解了。为何第二种方式有效:作者是发现有趣事物的探索者,而非罗列不公的受害者。“大多平平”是诚实的描述,并无怨气。“终于有人理解了”是包容的视角。
Example 2: Discovering Similarity
示例2:发现相似性
GRIEVANCE (FAIL):
I was shocked to find they had copied my exact architecture. The same
router, the same dispatch pattern, the same four layers. They claimed
they invented it independently, which seems unlikely given the timing.JOY (PASS):
I went from excited to curious. Because this wasn't just someone building
agents and skills, which plenty of people do. It was the routing
architecture I'd spent months developing and writing about.Why the second works: "Excited to curious" is an explorer's arc. No accusation of copying. The observation is about what the author found interesting, not what was done to them.
抱怨(不合格):
我震惊地发现他们复制了我完全相同的架构。相同的路由、相同的调度模式、相同的四层结构。他们声称是独立发明的,但考虑到时间点,这似乎不太可能。喜悦(合格):
我从兴奋变成了好奇。因为这不仅仅是有人在构建agents和skills,很多人都在做这件事。这是我花了几个月开发和撰写的路由架构。为何第二种方式有效:“从兴奋变成好奇”是探索者的转变。没有指责复制的内容。观察的重点是作者发现有趣的地方,而非发生在自己身上的不公。
Example 3: Discussing How Ideas Spread
示例3:讨论想法的传播
GRIEVANCE (FAIL):
If the ideas are going to spread through AI's training data anyway, if
Claude is going to absorb my blog posts and hand the architecture to
people who don't know where it came from, then I might as well just
give up trying to get credit.JOY (PASS):
This experience helped me realize that the best thing I can do with
these ideas is just put them out there completely. No holding back,
no waiting for the perfect moment. If the patterns are useful, people
should have them. If someone builds something better on top of them,
even better.Why the second works: The decision to release is framed as a positive realization, not a resignation. "Even better" at the end carries forward energy.
抱怨(不合格):
如果这些想法无论如何都会通过AI的训练数据传播,如果Claude会吸收我的博客文章,然后把架构交给不知道来源的人,那我还不如放弃争取认可。喜悦(合格):
这段经历让我意识到,处理这些想法的最佳方式就是完全公开。不保留,不等待完美的时刻。如果这些模式有用,人们就应该能够使用它们。如果有人在它们的基础上构建出更好的东西,那就更好了。为何第二种方式有效:将发布决定呈现为积极的领悟,而非无奈的放弃。结尾的“那就更好了”传递了向前的动力。
Example 4: Talking About Credit
示例4:谈论认可
GRIEVANCE (FAIL):
I've been thinking about why this bothered me, and it's because I
deserve recognition for this work. Nine months of effort should count
for something.JOY (PASS):
I've been thinking about what made this experience interesting, and
it's not about credit. I just want to communicate the value as I see
it, and be understood.Why the second works: Locates the feeling in curiosity ("what made this interesting") not entitlement ("I deserve"). "Be understood" is a human need, not a demand.
抱怨(不合格):
我一直在思考这件事为何困扰我,因为我理应得到对这项工作的认可。九个月的努力应该有价值。喜悦(合格):
我一直在思考这段经历有趣的地方,这与认可无关。我只是想传达我所看到的价值,并被理解。为何第二种方式有效:将感受定位在好奇(“这段经历有趣的地方”)而非 entitlement(“我理应得到”)。“被理解”是人类的需求,而非要求。
Example 5: The Conclusion
示例5:结论
GRIEVANCE (FAIL):
I don't know how to fix the provenance problem. But I'm going to keep
documenting my work publicly so at least there's a record. If nothing
else, the timestamps speak for themselves.JOY (PASS):
I may never be an influencer. I'm probably never going to be known much
outside of the specific things I work on. I just enjoy coming up with
interesting and novel ideas, trying weird things, seeing what sticks.
That's been the most enjoyable part of this whole process.Why the second works: Ends on what the author enjoys, not what they're defending against. "Seeing what sticks" carries the experimental energy. No timestamps-as-evidence framing.
抱怨(不合格):
我不知道如何解决来源问题。但我会继续公开记录我的工作,至少留下记录。如果别无他用,时间戳可以证明一切。喜悦(合格):
我可能永远不会成为网红。我可能永远只会在自己专注的领域小有名气。我只是喜欢想出有趣且新颖的想法,尝试奇怪的事物,看看哪些能行得通。这是整个过程中最令人享受的部分。为何第二种方式有效:结尾聚焦于作者享受的事情,而非他们要防御的东西。“看看哪些能行得通”传递了实验的动力。没有将时间戳作为证据的框架。
Example 6: Addressing Uncertainty About Origins
示例6:回应来源的不确定性
GRIEVANCE (FAIL):
They might not know where the patterns came from. But I do. And the
timeline doesn't lie.JOY (PASS):
Claude doesn't cite its sources. There's no way for any of us to tell
whether our AI-assisted work drew on someone else's blog post or was
synthesized fresh. The honest answer to "where did this architecture
come from?" might be "I built it with Claude and I don't know what
Claude drew on." That's true for everyone using these tools. Including me.Why the second works: Includes the author in the same uncertainty. "Including me" is the key phrase. It transforms from "I know and they should know" to "none of us fully know."
抱怨(不合格):
他们可能不知道这些模式的来源。但我知道。时间戳不会说谎。喜悦(合格):
Claude不引用来源。我们任何人都无法判断,我们的AI辅助工作是借鉴了他人的博客文章,还是全新合成的。对于“这个架构来自哪里?”的诚实答案可能是“我用Claude构建了它,但我不知道Claude借鉴了什么”。这适用于所有使用这些工具的人,包括我。为何第二种方式有效:将作者纳入相同的不确定性中。“包括我”是关键短语。它从“我知道,他们也应该知道”转变为“我们都不完全清楚”。
Error Handling
错误处理
Error: "File Not Found"
错误:“文件未找到”
Cause: Path incorrect or file does not exist
Solution:
- Verify path with
ls -la [path] - Use glob pattern to search:
Glob **/*.md - Confirm correct working directory
原因:路径错误或文件不存在
解决方案:
- 使用验证路径
ls -la [path] - 使用通配符模式搜索:
Glob **/*.md - 确认当前工作目录正确
Error: "Regex Scanner Fails or Not Found"
错误:“正则扫描器失败或未找到”
Cause: script missing or Python error
Solution:
scan-negative-framing.py- Verify script exists:
ls scripts/scan-negative-framing.py - Check Python version: (requires 3.10+)
python3 --version - If script unavailable, skip Phase 1 and proceed directly to Phase 2 LLM analysis -- the regex pre-filter is an optimization, not a requirement
原因:脚本缺失或Python错误
解决方案:
scan-negative-framing.py- 验证脚本是否存在:
ls scripts/scan-negative-framing.py - 检查Python版本:(需要3.10及以上版本)
python3 --version - 如果脚本不可用,跳过阶段1,直接进入阶段2的LLM分析——正则预过滤是优化手段,而非必需步骤
Error: "All Paragraphs Score GRIEVANCE"
错误:“所有段落均被评为抱怨”
Cause: Content is fundamentally framed through grievance -- not recoverable with paragraph-level reframes
Solution:
- Report the scores honestly
- Suggest the content needs a full rewrite with a different framing premise, not paragraph-level fixes
- Point the user to the Joy Principle section and Examples for guidance on the target framing
原因:内容从根本上以抱怨为框架——无法通过段落级重构修复
解决方案:
- 如实报告分数
- 建议内容需要基于不同的框架前提进行全面重写,而非段落级修复
- 引导用户查看喜悦原则部分和示例,了解目标框架
Error: "Fix Mode Fails After 3 Iterations"
错误:“修复模式在3次尝试后失败”
Cause: Rewritten paragraphs keep introducing new CAUTION/GRIEVANCE patterns, often because the underlying premise is grievance-based
Solution:
- Output the best version achieved with flagged remaining concerns
- Explain which specific rubric dimensions resist correction
- Suggest the framing premise itself may need rethinking, not just the language
原因:重写的段落不断引入新的警示/抱怨模式,通常因为底层前提是基于抱怨的
解决方案:
- 输出已实现的最佳版本,并标记剩余的问题
- 解释哪些特定的评估维度难以修正
- 建议可能需要重新思考框架前提,而非仅仅修改语言
Anti-Patterns
反模式
Anti-Pattern 1: Defensive Disclaimers
反模式1:防御性免责声明
What it looks like: "I'm not accusing anyone" / "This isn't about blame"
Why wrong: If you have to disclaim, the framing is already grievance-adjacent. The disclaimer signals that the content that follows is accusatory enough to need a shield.
Do instead: Remove the disclaimer AND reframe the content so the disclaimer isn't needed.
表现:“我不是在指责任何人” / “这不是为了追责”
为何错误:如果你需要免责声明,说明框架已经接近抱怨。免责声明表明接下来的内容足够具有指责性,需要一个盾牌。
正确做法:删除免责声明,并重构内容,使免责声明变得不必要。
Anti-Pattern 2: Accumulative Grievance
反模式2:累积的抱怨
What it looks like: Each paragraph adds another piece of evidence for being wronged
Why wrong: Even if each paragraph is mild, the accumulation builds a case. A reader who finishes the piece feeling "that person was wronged" has been led through a prosecution.
Do instead: Intersperse observations with what you learned, built, or found interesting. Break the evidence chain.
表现:每个段落都增加一条被亏待的证据
为何错误:即使每个段落都很温和,累积起来也会构建一个控诉的案例。读完文章后觉得“那个人被亏待了”的读者,相当于经历了一场起诉。
正确做法:在观察中穿插你学到的、构建的或发现的有趣内容。打破证据链。
Anti-Pattern 3: Passive-Aggressive Factuality
反模式3:被动攻击式的事实陈述
What it looks like: "The timeline shows X. The repo was created Y days later. I'll let you draw your own conclusions."
Why wrong: Presenting facts in prosecution order is framing, not neutrality. "I'll let you draw your own conclusions" is the most aggressive form of accusation -- it deputizes the reader.
Do instead: Include facts where relevant to the experience, not as evidence. If the timeline is interesting, say why it's interesting, not why it's damning.
表现:“时间线显示X。仓库在Y天后创建。我让你自己得出结论。”
为何错误:以起诉的顺序呈现事实是框架,而非中立。“我让你自己得出结论”是最具攻击性的指责形式——它把读者变成了陪审团。
正确做法:在与经历相关的地方包含事实,而非作为证据。如果时间线有趣,说明它为何有趣,而非为何能证明不公。
Anti-Pattern 4: Reluctant Generosity
反模式4:不情愿的包容
What it looks like: "I'm not saying they did anything wrong, BUT..."
Why wrong: The "but" negates the generosity. This is grievance wearing a generous mask. Readers hear the "but" louder than the generosity.
Do instead: Be generous without qualification, or acknowledge the complexity directly. "This is a complicated situation" is more honest than "They're great, BUT..."
表现:“我不是说他们做错了,但……”
为何错误:“但”否定了前面的包容。这是披着包容外衣的抱怨。读者会更关注“但”后面的内容。
正确做法:无条件地包容,或直接承认复杂性。“这是一个复杂的情况”比“他们很棒,但……”更诚实。
Integration
集成
This skill integrates with the content validation pipeline:
CONTENT --> voice-validator (deterministic) --> scan-ai-patterns (deterministic)
--> scan-negative-framing (regex pre-filter) --> joy-check (LLM analysis)
--> anti-ai-editor (LLM style fixes)The joy-check can be invoked standalone via or as part of the content pipeline for any content where positive framing matters.
/joy-check [file]该技能与内容验证流水线集成:
内容 --> voice-validator(确定性)--> scan-ai-patterns(确定性)
--> scan-negative-framing(正则预过滤)--> joy-check(LLM分析)
--> anti-ai-editor(LLM风格修复)可以通过单独调用喜悦检查,或在内容流水线中调用,适用于任何需要积极框架的内容。
/joy-check [file]References
参考
This skill uses these shared patterns:
- Anti-Rationalization - Prevents shortcut rationalizations
- Verification Checklist - Pre-completion checks
该技能使用以下共享模式:
- 反合理化 - 防止捷径式的合理化
- 验证清单 - 完成前的检查
Domain-Specific Anti-Rationalization
特定领域的反合理化
| Rationalization | Why It's Wrong | Required Action |
|---|---|---|
| "The content is factual, so it's fine" | Facts arranged as prosecution are framing, not neutrality | Evaluate the arrangement of facts, not just their accuracy |
| "The author earned the right to be upset" | Earned anger is still grievance framing | Check framing, not whether the feeling is justified |
| "It's only one negative paragraph" | One GRIEVANCE paragraph poisons the tonal arc of the whole piece | Flag it. One grievance paragraph is a FAIL condition |
| "The reframe would be dishonest" | Reframing is editorial craft, not dishonesty -- the substance stays the same | Preserve substance, change only the lens |
| "This is too subtle to flag" | Subtle grievance is the hardest to catch and the most important -- it's what regex misses | If it reads as building a case, flag it |
| 合理化说法 | 为何错误 | 要求的行动 |
|---|---|---|
| “内容是事实性的,所以没问题” | 以起诉方式排列的事实是框架,而非中立 | 评估事实的排列方式,而非仅仅是准确性 |
| “作者有权利感到沮丧” | 合理的愤怒仍然是抱怨框架 | 检查框架,而非感受是否合理 |
| “只有一个负面段落” | 一个抱怨段落会破坏整篇文章的语气弧线 | 标记它。一个抱怨段落即判定为不合格 |
| “重构会不诚实” | 重构是编辑技巧,而非不诚实——内容实质保持不变 | 保留内容实质,仅改变视角 |
| “这太微妙了,无需标记” | 微妙的抱怨最难捕捉,也最重要——这正是正则表达式遗漏的部分 | 如果读起来像是在构建控诉案例,就标记它 |
Related Skills and Scripts
相关技能与脚本
- -- Regex pre-filter for obvious negative framing patterns (Phase 1)
scan-negative-framing.py - -- Voice fidelity validation (complementary, different concern)
voice-validator - -- AI pattern detection and removal (complementary, different concern)
anti-ai-editor - -- Multi-step content pipeline that can invoke joy-check as a validation phase
voice-writer
- —— 用于明显负面框架模式的正则预过滤(阶段1)
scan-negative-framing.py - —— 语气真实性验证(互补技能,关注点不同)
voice-validator - —— AI模式检测与移除(互补技能,关注点不同)
anti-ai-editor - —— 多步骤内容流水线,可在验证阶段调用喜悦检查 ",
voice-writer