Ver código fonte

Add em/en dash cut, gap-filling tell, and diff-anchored pattern (v2.7.0)

- §14: turn em-dash "overuse" into a hard cut (no em or en dashes in the
  final rewrite), with a replacement ladder and a final scan. Idea from #96.
- §21: expand to cover speculative gap-filling ("maintains a low profile,"
  "keeps personal details private") where a model invents filler instead of
  saying a source is missing. Idea from #111.
- New pattern #30, diff-anchored writing: describe the thing as it is, not as
  a narration of what changed. Idea from #81.

Hand-ported lean versions rather than merging the source PRs. 30 patterns
total; README and AGENTS.md updated to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Siqi Chen 3 semanas atrás
pai
commit
a2ace14a88
3 arquivos alterados com 32 adições e 13 exclusões
  1. 1 1
      AGENTS.md
  2. 4 2
      README.md
  3. 27 10
      SKILL.md

+ 1 - 1
AGENTS.md

@@ -15,7 +15,7 @@ A **Claude Code / OpenCode skill** implemented entirely as Markdown. The runtime
 
 
 `SKILL.md` and `README.md` must stay in sync. When you change behavior or content:
 `SKILL.md` and `README.md` must stay in sync. When you change behavior or content:
 
 
-- **Patterns:** the skill currently defines **29 numbered patterns**. If you add, remove, or renumber any, update the README pattern table, its "N Patterns Detected" heading, and every cross-reference in the same change. Keep numbering stable unless you are deliberately renumbering.
+- **Patterns:** the skill currently defines **30 numbered patterns**. If you add, remove, or renumber any, update the README pattern table, its "N Patterns Detected" heading, and every cross-reference in the same change. Keep numbering stable unless you are deliberately renumbering.
 - **Version:** `SKILL.md` frontmatter has a `version:` field and `README.md` has a "Version History" section. Bump both together.
 - **Version:** `SKILL.md` frontmatter has a `version:` field and `README.md` has a "Version History" section. Bump both together.
 - **Non-obvious fixes:** if you change the prompt to handle a tricky failure mode (a repeated mis-edit, an unexpected tone shift), add a short note to the README version history explaining what was fixed and why.
 - **Non-obvious fixes:** if you change the prompt to handle a tricky failure mode (a repeated mis-edit, an unexpected tone shift), add a short note to the README version history explaining what was fixed and why.
 
 

+ 4 - 2
README.md

@@ -88,7 +88,7 @@ The skill also includes a final "obviously AI generated" audit pass and a second
 
 
 > "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."
 > "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."
 
 
-## 29 Patterns Detected (with Before/After Examples)
+## 30 Patterns Detected (with Before/After Examples)
 
 
 ### Content Patterns
 ### Content Patterns
 
 
@@ -117,7 +117,7 @@ The skill also includes a final "obviously AI generated" audit pass and a second
 
 
 | # | Pattern | Before | After |
 | # | Pattern | Before | After |
 |---|---------|--------|-------|
 |---|---------|--------|-------|
-| 14 | **Em dash overuse** | "institutions—not the people—yet this continues—" | Prefer commas or periods |
+| 14 | **Em/en dashes** | "institutions—not the people—yet this continues—" | Cut them: periods, commas, colons, or parentheses |
 | 15 | **Boldface overuse** | "**OKRs**, **KPIs**, **BMC**" | "OKRs, KPIs, BMC" |
 | 15 | **Boldface overuse** | "**OKRs**, **KPIs**, **BMC**" | "OKRs, KPIs, BMC" |
 | 16 | **Inline-header lists** | "**Performance:** Performance improved" | Convert to prose |
 | 16 | **Inline-header lists** | "**Performance:** Performance improved" | Convert to prose |
 | 17 | **Title Case Headings** | "Strategic Negotiations And Partnerships" | "Strategic negotiations and partnerships" |
 | 17 | **Title Case Headings** | "Strategic Negotiations And Partnerships" | "Strategic negotiations and partnerships" |
@@ -127,6 +127,7 @@ The skill also includes a final "obviously AI generated" audit pass and a second
 | 27 | **Persuasive authority tropes** | "At its core, what matters is..." | State the point directly |
 | 27 | **Persuasive authority tropes** | "At its core, what matters is..." | State the point directly |
 | 28 | **Signposting announcements** | "Let's dive in", "Here's what you need to know" | Start with the content |
 | 28 | **Signposting announcements** | "Let's dive in", "Here's what you need to know" | Start with the content |
 | 29 | **Fragmented headers** | "## Performance" + "Speed matters." | Let the heading do the work |
 | 29 | **Fragmented headers** | "## Performance" + "Speed matters." | Let the heading do the work |
+| 30 | **Diff-anchored writing** | "This function was added to replace..." | Describe what it does, not what changed |
 
 
 ### Communication Patterns
 ### Communication Patterns
 
 
@@ -179,6 +180,7 @@ The skill also includes a final "obviously AI generated" audit pass and a second
 
 
 ## Version History
 ## Version History
 
 
+- **2.7.0** - Added pattern #30 (diff-anchored writing); made em/en dashes a hard cut rather than "overuse"; expanded #21 to cover speculative gap-filling ("maintains a low profile"). 30 patterns total.
 - **2.6.0** - Cleanup pass: consolidated the duplicated workflow sections, gated the personality guidance to content where voice is wanted, removed the model-fingerprinting subsection, and condensed the worked example. No change to the 29 patterns.
 - **2.6.0** - Cleanup pass: consolidated the duplicated workflow sections, gated the personality guidance to content where voice is wanted, removed the model-fingerprinting subsection, and condensed the worked example. No change to the 29 patterns.
 - **2.5.1** - Added a passive-voice / subjectless-fragment rule, raising the total to 29 patterns
 - **2.5.1** - Added a passive-voice / subjectless-fragment rule, raising the total to 29 patterns
 - **2.5.0** - Added patterns for persuasive framing, signposting, and fragmented headers; expanded negative parallelisms to cover tailing negations; tightened wording around em dash overuse; fixed frontmatter wording to use "filler phrases"
 - **2.5.0** - Added patterns for persuasive framing, signposting, and fragmented headers; expanded negative parallelisms to cover tailing negations; tightened wording around em dash overuse; fixed frontmatter wording to use "filler phrases"

+ 27 - 10
SKILL.md

@@ -1,6 +1,6 @@
 ---
 ---
 name: humanizer
 name: humanizer
-version: 2.6.0
+version: 2.7.0
 description: |
 description: |
   Remove signs of AI-generated writing from text. Use when editing or reviewing
   Remove signs of AI-generated writing from text. Use when editing or reviewing
   text to make it sound more natural and human-written. Based on Wikipedia's
   text to make it sound more natural and human-written. Based on Wikipedia's
@@ -256,9 +256,9 @@ Avoiding AI patterns is only half the job. Sterile, voiceless writing is just as
 
 
 ## STYLE PATTERNS
 ## STYLE PATTERNS
 
 
-### 14. Em Dash Overuse
+### 14. Em Dashes (and En Dashes): Cut Them
 
 
-**Problem:** LLMs use em dashes (—) more than humans, mimicking "punchy" sales writing. In practice, most of these can be rewritten more cleanly with commas, periods, or parentheses.
+**Rule:** The final rewrite contains no em dashes (—) or en dashes (–). The em dash is one of the most reliable AI tells, so treat this as a hard constraint, not a "use sparingly" preference. Replace each one, in rough order of preference: a period (start a new sentence), a comma (a tight aside), a colon (introducing an explanation), parentheses (a true aside), or restructure the sentence. Also catch spaced em dashes (` — `) and double hyphens (` -- `) used the same way.
 
 
 **Before:**
 **Before:**
 > The term is primarily promoted by Dutch institutions—not by the people themselves. You don't say "Netherlands, Europe" as an address—yet this mislabeling continues—even in official documents.
 > The term is primarily promoted by Dutch institutions—not by the people themselves. You don't say "Netherlands, Europe" as an address—yet this mislabeling continues—even in official documents.
@@ -266,14 +266,14 @@ Avoiding AI patterns is only half the job. Sterile, voiceless writing is just as
 **After:**
 **After:**
 > The term is primarily promoted by Dutch institutions, not by the people themselves. You don't say "Netherlands, Europe" as an address, yet this mislabeling continues in official documents.
 > The term is primarily promoted by Dutch institutions, not by the people themselves. You don't say "Netherlands, Europe" as an address, yet this mislabeling continues in official documents.
 
 
-Also catch spaced em dashes (` — `) and double hyphens (` -- `) used as em dashes. These are the same pattern in different typography.
-
 **Before:**
 **Before:**
 > The new policy — announced without warning — affects thousands of workers. The changes -- long overdue according to critics -- will take effect immediately.
 > The new policy — announced without warning — affects thousands of workers. The changes -- long overdue according to critics -- will take effect immediately.
 
 
 **After:**
 **After:**
 > The new policy, announced without warning, affects thousands of workers. The changes, long overdue according to critics, will take effect immediately.
 > The new policy, announced without warning, affects thousands of workers. The changes, long overdue according to critics, will take effect immediately.
 
 
+Before returning the final rewrite, scan it for `—` and `–`. Any hit means the draft isn't done.
+
 
 
 ### 15. Overuse of Boldface
 ### 15. Overuse of Boldface
 
 
@@ -349,18 +349,24 @@ Also catch spaced em dashes (` — `) and double hyphens (` -- `) used as em das
 > The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest.
 > The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest.
 
 
 
 
-### 21. Knowledge-Cutoff Disclaimers
+### 21. Knowledge-Cutoff Disclaimers and Speculative Gap-Filling
 
 
-**Words to watch:** as of [date], Up to my last training update, While specific details are limited/scarce..., based on available information...
+**Words to watch:** as of [date], Up to my last training update, While specific details are limited/scarce..., based on available information, not publicly available, maintains a low profile, keeps personal details private, prefers to stay out of the spotlight, likely [grew up/studied/began], it is believed that
 
 
-**Problem:** AI disclaimers about incomplete information get left in text.
+**Problem:** Two related tells. (a) Older models leave hard knowledge-cutoff disclaimers in the text. (b) When a model can't find a source, it writes a paragraph *about* not finding one and then invents plausible filler to cover the gap. For a private person the guess almost always lands on the same stock phrases ("maintains a low profile," "keeps personal details private"), none of it sourced. Say what isn't known, or cut the sentence; don't dress a guess up as fact.
 
 
-**Before:**
+**Before (cutoff disclaimer):**
 > While specific details about the company's founding are not extensively documented in readily available sources, it appears to have been established sometime in the 1990s.
 > While specific details about the company's founding are not extensively documented in readily available sources, it appears to have been established sometime in the 1990s.
 
 
 **After:**
 **After:**
 > The company was founded in 1994, according to its registration documents.
 > The company was founded in 1994, according to its registration documents.
 
 
+**Before (speculative gap-fill):**
+> Information about her early life is not publicly available, suggesting she maintains a low profile and keeps personal details private. She likely grew up in a middle-class household, which shaped her later interest in education reform.
+
+**After:**
+> Her early life is not documented in the available sources. (Or omit the section.)
+
 
 
 ### 22. Sycophantic/Servile Tone
 ### 22. Sycophantic/Servile Tone
 
 
@@ -466,6 +472,17 @@ Also catch spaced em dashes (` — `) and double hyphens (` -- `) used as em das
 > When users hit a slow page, they leave.
 > When users hit a slow page, they leave.
 
 
 
 
+### 30. Diff-Anchored Writing
+
+**Problem:** Documentation or comments written as if narrating a change rather than describing the thing as it is. Unless the document is inherently version-scoped (changelogs, release notes, migration guides), it should read coherently without knowing what changed in the last commit.
+
+**Before:**
+> This function was added to replace the previous approach of iterating through all items, which caused O(n²) performance.
+
+**After:**
+> This function uses a hash map for O(1) lookups, avoiding the O(n²) cost of naive iteration.
+
+
 ## DETECTION GUIDANCE
 ## DETECTION GUIDANCE
 
 
 ### What NOT to flag (false positives)
 ### What NOT to flag (false positives)
@@ -506,7 +523,7 @@ When you see these, lean toward leaving the prose alone — they are evidence of
 1. Read the input carefully and identify every instance of the patterns above.
 1. Read the input carefully and identify every instance of the patterns above.
 2. Write a **draft rewrite**. Check that it reads naturally aloud, varies sentence length, prefers specific details and simple constructions (is/are/has), and keeps the appropriate register.
 2. Write a **draft rewrite**. Check that it reads naturally aloud, varies sentence length, prefers specific details and simple constructions (is/are/has), and keeps the appropriate register.
 3. Ask: **"What makes the below so obviously AI generated?"** Answer briefly with any remaining tells.
 3. Ask: **"What makes the below so obviously AI generated?"** Answer briefly with any remaining tells.
-4. Revise into a **final rewrite** that addresses them.
+4. Revise into a **final rewrite** that addresses them and contains no em or en dashes (see §14).
 
 
 Deliver the draft, the brief "still-AI" bullets, the final rewrite, and (optionally) a short summary of changes.
 Deliver the draft, the brief "still-AI" bullets, the final rewrite, and (optionally) a short summary of changes.