diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-29 16:21:07 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-29 16:21:07 -0500 |
| commit | 10d0bc1ac516b44625e44ee34a31b2207e5ce34e (patch) | |
| tree | 6c9ad37a550ddcb6bf7242607cb8a13d2b7c8c2c /voice | |
| parent | 296b2e684d73c70bdf6b42407ddf86c0cb7ba493 (diff) | |
| download | rulesets-10d0bc1ac516b44625e44ee34a31b2207e5ce34e.tar.gz rulesets-10d0bc1ac516b44625e44ee34a31b2207e5ce34e.zip | |
docs(voice): complete the SKILL.md / voice-profile.org structural split
Backfills the remaining 40 patterns into the paired source-of-truth
shape Pattern 13 demonstrated in 296b2e6. Each pattern in SKILL.md
now collapses to a mode-tagged header plus a one-line Rule plus a
profile pointer. The full Problem, Basis, Before/After, Detection,
and History land in the corresponding voice-profile.org §N section.
Sizes:
- voice/SKILL.md: 678 to 437 lines.
- voice/references/voice-profile.org: 134 to 1311 lines.
- Net: 1297 insertions, 360 deletions across both files.
Mode-tag conventions: general-only patterns (#1-12, 14-16, 18-31)
tagged [general]. Prose+personal patterns (#33-38, 41) tagged [prose
· personal]. Personal-only patterns (#32, 39, 40) tagged [personal].
Pattern 13 keeps its dual-mode tag (general overuse-reduction vs
prose/personal zero-tolerance).
Corpus-confirmed Basis entries cite the Phase 1 measurements for
patterns 7, 17, 22, 32, 33, 34, 38. All other patterns are tagged
observation-derived with the appropriate source (Wikipedia Signs of
AI Writing, Strunk and White, Orwell, Plain English, Garner, or
Craig's commits.md / interaction.md rules).
Seven em-dashes were caught in the new SKILL.md Rule lines during a
post-migration spot-check and rewritten as periods or colons. The
em-dash on Pattern 13's Rule line stays because the rule references
the symbol literally.
Known follow-up: the profile's prose sections (Problem, Basis,
History) still contain em-dashes carried over from the original
SKILL.md Problem paragraphs. They don't break the loading model but
they do violate the rule the file documents. A separate hygiene pass
can scrub them. The em-dash sweep was not bundled here so the
migration shape stays the deliverable.
Bulk migration was dispatched to a subagent with strict format
requirements. Spot-checks of patterns 1, 13, 17, 32, and 41
confirmed the shape lands correctly across all four mode-tag
conventions.
Diffstat (limited to 'voice')
| -rw-r--r-- | voice/SKILL.md | 480 | ||||
| -rw-r--r-- | voice/references/voice-profile.org | 1177 |
2 files changed, 1297 insertions, 360 deletions
diff --git a/voice/SKILL.md b/voice/SKILL.md index f8b0a06..aef1db2 100644 --- a/voice/SKILL.md +++ b/voice/SKILL.md @@ -81,145 +81,79 @@ Avoiding AI patterns is half the job. Sterile, voiceless writing is just as obvi ## Content Patterns -### 1. Undue Emphasis on Significance, Legacy, and Broader Trends +### 1. Undue Emphasis on Significance, Legacy, and Broader Trends [general] -**Words to watch:** stands/serves as, is a testament/reminder, a vital/significant/crucial/pivotal/key role/moment, underscores/highlights its importance/significance, reflects broader, symbolizing its ongoing/enduring/lasting, contributing to the, setting the stage for, marking/shaping the, represents/marks a shift, key turning point, evolving landscape, focal point, indelible mark, deeply rooted +**Rule.** Strip statements that puff up importance by claiming an arbitrary aspect represents or contributes to a broader trend, and watch for phrases like "stands as", "testament to", "pivotal moment", "evolving landscape", "marks a shift". -**Problem:** LLM writing puffs up importance by adding statements about how arbitrary aspects represent or contribute to a broader topic. +See `voice/references/voice-profile.org` §1 for problem, basis, examples, and history. -**Before:** -> The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain. This initiative was part of a broader movement across Spain to decentralize administrative functions and enhance regional governance. +### 2. Undue Emphasis on Notability and Media Coverage [general] -**After:** -> The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office. +**Rule.** Cut notability claims that list sources without giving the substance. Replace "cited in X, Y, Z" with the actual argument made in one of them. -### 2. Undue Emphasis on Notability and Media Coverage +See `voice/references/voice-profile.org` §2 for problem, basis, examples, and history. -**Words to watch:** independent coverage, local/regional/national media outlets, written by a leading expert, active social media presence +### 3. Superficial Analyses with -ing Endings [general] -**Problem:** LLMs hit readers over the head with claims of notability, often listing sources without context. +**Rule.** Cut tacked-on present-participle phrases (highlighting, ensuring, reflecting, contributing to, fostering, showcasing) that add fake depth without new information. -**Before:** -> Her views have been cited in The New York Times, BBC, Financial Times, and The Hindu. She maintains an active social media presence with over 500,000 followers. +See `voice/references/voice-profile.org` §3 for problem, basis, examples, and history. -**After:** -> In a 2024 New York Times interview, she argued that AI regulation should focus on outcomes rather than methods. +### 4. Promotional and Advertisement-like Language [general] -### 3. Superficial Analyses with -ing Endings +**Rule.** Remove travel-brochure adjectives (vibrant, breathtaking, nestled, stunning, renowned, must-visit) and replace promotional framing with concrete facts. -**Words to watch:** highlighting/underscoring/emphasizing..., ensuring..., reflecting/symbolizing..., contributing to..., cultivating/fostering..., encompassing..., showcasing... +See `voice/references/voice-profile.org` §4 for problem, basis, examples, and history. -**Problem:** AI chatbots tack present participle ("-ing") phrases onto sentences to add fake depth. +### 5. Vague Attributions and Weasel Words [general] -**Before:** -> The temple's color palette of blue, green, and gold resonates with the region's natural beauty, symbolizing Texas bluebonnets, the Gulf of Mexico, and the diverse Texan landscapes, reflecting the community's deep connection to the land. +**Rule.** Replace vague attributions (experts say, observers have cited, industry reports, some critics argue) with a named source plus the specific claim. -**After:** -> The temple uses blue, green, and gold colors. The architect said these were chosen to reference local bluebonnets and the Gulf coast. +See `voice/references/voice-profile.org` §5 for problem, basis, examples, and history. -### 4. Promotional and Advertisement-like Language +### 6. Outline-like "Challenges and Future Prospects" Sections [general] -**Words to watch:** boasts a, vibrant, rich (figurative), profound, enhancing its, showcasing, exemplifies, commitment to, natural beauty, nestled, in the heart of, groundbreaking (figurative), renowned, breathtaking, must-visit, stunning +**Rule.** Delete formulaic "Despite its... faces challenges" wrap-ups and "Future Outlook" boilerplate, replacing with the actual events that happened. -**Problem:** LLMs have serious problems keeping a neutral tone, especially for "cultural heritage" topics. - -**Before:** -> Nestled within the breathtaking region of Gonder in Ethiopia, Alamata Raya Kobo stands as a vibrant town with a rich cultural heritage and stunning natural beauty. - -**After:** -> Alamata Raya Kobo is a town in the Gonder region of Ethiopia, known for its weekly market and 18th-century church. - -### 5. Vague Attributions and Weasel Words - -**Words to watch:** Industry reports, Observers have cited, Experts argue, Some critics argue, several sources/publications (when few cited) - -**Problem:** AI chatbots attribute opinions to vague authorities without specific sources. - -**Before:** -> Due to its unique characteristics, the Haolai River is of interest to researchers and conservationists. Experts believe it plays a crucial role in the regional ecosystem. - -**After:** -> The Haolai River supports several endemic fish species, according to a 2019 survey by the Chinese Academy of Sciences. - -### 6. Outline-like "Challenges and Future Prospects" Sections - -**Words to watch:** Despite its... faces several challenges..., Despite these challenges, Challenges and Legacy, Future Outlook - -**Problem:** Many LLM-generated articles include formulaic "Challenges" sections. - -**Before:** -> Despite its industrial prosperity, Korattur faces challenges typical of urban areas, including traffic congestion and water scarcity. Despite these challenges, with its strategic location and ongoing initiatives, Korattur continues to thrive as an integral part of Chennai's growth. - -**After:** -> Traffic congestion increased after 2015 when three new IT parks opened. The municipal corporation began a stormwater drainage project in 2022 to address recurring floods. +See `voice/references/voice-profile.org` §6 for problem, basis, examples, and history. ## Language and Grammar Patterns -### 7. Overused "AI Vocabulary" Words - -**High-frequency AI words:** Additionally, align with, comprehensive, crucial, delve, emphasizing, enduring, enhance, fostering, garner, highlight (verb), interplay, intricate/intricacies, key (adjective), landscape (abstract noun), pivotal, showcase, tapestry (abstract noun), testament, underscore (verb), valuable, vibrant - -**Note on "comprehensive" (2026-05-29):** A corpus pass found 42 occurrences in Craig's git commit bodies, while every other watch-word in this list registered zero or one occurrence. "comprehensive" is genuine Craig vocabulary in technical contexts ("comprehensive test coverage", "comprehensive audit"). Craig has chosen to keep it on the watch-list because he's consciously trying to use it sparingly. Flag it; suggest an alternative ("full", "complete", "thorough", or rewording to drop the adjective) and let Craig decide per instance. - -**Problem:** These words appear far more frequently in post-2023 text. They often co-occur. - -**Before:** -> Additionally, a distinctive feature of Somali cuisine is the incorporation of camel meat. An enduring testament to Italian colonial influence is the widespread adoption of pasta in the local culinary landscape, showcasing how these dishes have integrated into the traditional diet. - -**After:** -> Somali cuisine also includes camel meat, which is considered a delicacy. Pasta dishes, introduced during Italian colonization, remain common, especially in the south. - -### 8. Avoidance of "is"/"are" (Copula Avoidance) - -**Words to watch:** serves as/stands as/marks/represents [a], boasts/features/offers [a] +### 7. Overused "AI Vocabulary" Words [general] -**Problem:** LLMs substitute elaborate constructions for simple copulas. +**Rule.** Flag and rewrite around the high-frequency AI vocabulary list (delve, comprehensive, crucial, pivotal, intricate, tapestry, testament, underscore, vibrant, showcase, and the others), with "comprehensive" as a soft flag because corpus shows it as genuine Craig vocabulary he chooses to use sparingly. -**Before:** -> Gallery 825 serves as LAAA's exhibition space for contemporary art. The gallery features four separate spaces and boasts over 3,000 square feet. +See `voice/references/voice-profile.org` §7 for problem, basis, examples, and history. -**After:** -> Gallery 825 is LAAA's exhibition space for contemporary art. The gallery has four rooms totaling 3,000 square feet. +### 8. Avoidance of "is"/"are" (Copula Avoidance) [general] -### 9. Negative Parallelisms +**Rule.** Replace elaborate copula substitutes (serves as, stands as, represents, boasts, features) with plain "is" or "has". -**Problem:** Constructions like "Not only...but..." or "It's not just about..., it's..." are overused. +See `voice/references/voice-profile.org` §8 for problem, basis, examples, and history. -**Before:** -> It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere. It's not merely a song, it's a statement. +### 9. Negative Parallelisms [general] -**After:** -> The heavy beat adds to the aggressive tone. +**Rule.** Rewrite "not only X but Y" and "it's not just about X, it's Y" constructions as a single direct claim. -### 10. Rule of Three Overuse +See `voice/references/voice-profile.org` §9 for problem, basis, examples, and history. -**Problem:** LLMs force ideas into groups of three to appear comprehensive. +### 10. Rule of Three Overuse [general] -**Before:** -> The event features keynote sessions, panel discussions, and networking opportunities. Attendees can expect innovation, inspiration, and industry insights. +**Rule.** Break the reflexive three-item list pattern when the third item is filler. Collapse to one or two specific items. -**After:** -> The event includes talks and panels. There's also time for informal networking between sessions. +See `voice/references/voice-profile.org` §10 for problem, basis, examples, and history. -### 11. Elegant Variation (Synonym Cycling) +### 11. Elegant Variation (Synonym Cycling) [general] -**Problem:** AI has repetition-penalty code causing excessive synonym substitution. +**Rule.** Stop cycling synonyms for the same referent across consecutive sentences. Repeat the noun, or merge the sentences. -**Before:** -> The protagonist faces many challenges. The main character must overcome obstacles. The central figure eventually triumphs. The hero returns home. +See `voice/references/voice-profile.org` §11 for problem, basis, examples, and history. -**After:** -> The protagonist faces many challenges but eventually triumphs and returns home. +### 12. False Ranges [general] -### 12. False Ranges +**Rule.** Rewrite "from X to Y" constructions where X and Y are not on the same scale. List the items plainly instead. -**Problem:** LLMs use "from X to Y" constructions where X and Y aren't on a meaningful scale. - -**Before:** -> Our journey through the universe has taken us from the singularity of the Big Bang to the grand cosmic web, from the birth and death of stars to the enigmatic dance of dark matter. - -**After:** -> The book covers the Big Bang, star formation, and current theories about dark matter. +See `voice/references/voice-profile.org` §12 for problem, basis, examples, and history. ## Style Patterns @@ -229,359 +163,185 @@ Avoiding AI patterns is half the job. Sterile, voiceless writing is just as obvi See `voice/references/voice-profile.org` §13 for problem, basis, examples, and history. -### 14. Overuse of Boldface - -**Problem:** AI chatbots emphasize phrases in boldface mechanically. - -**Before:** -> It blends **OKRs (Objectives and Key Results)**, **KPIs (Key Performance Indicators)**, and visual strategy tools such as the **Business Model Canvas (BMC)** and **Balanced Scorecard (BSC)**. - -**After:** -> It blends OKRs, KPIs, and visual strategy tools like the Business Model Canvas and Balanced Scorecard. +### 14. Overuse of Boldface [general] -### 15. Inline-Header Vertical Lists +**Rule.** Strip mechanical boldface used to call out terms, acronyms, or phrases in running prose. Bold survives only for structural emphasis the document genuinely needs. -**Problem:** AI outputs lists where items start with bolded headers followed by colons. +See `voice/references/voice-profile.org` §14 for problem, basis, examples, and history. -**Before:** -> - **User Experience:** The user experience has been significantly improved with a new interface. -> - **Performance:** Performance has been enhanced through optimized algorithms. -> - **Security:** Security has been strengthened with end-to-end encryption. +### 15. Inline-Header Vertical Lists [general] -**After:** -> The update improves the interface, speeds up load times through optimized algorithms, and adds end-to-end encryption. +**Rule.** Collapse bullet lists whose items start with a bold header plus colon into running prose, unless the list structure is genuinely the right shape. -### 16. Title Case in Headings +See `voice/references/voice-profile.org` §15 for problem, basis, examples, and history. -**Problem:** AI chatbots capitalize all main words in headings. +### 16. Title Case in Headings [general] -**Before:** -> ## Strategic Negotiations And Global Partnerships +**Rule.** Lowercase headings that are reflexively title-cased. Sentence case is the default unless the project's house style is title case. -**After:** -> ## Strategic negotiations and global partnerships +See `voice/references/voice-profile.org` §16 for problem, basis, examples, and history. -### 17. Emojis +### 17. Emojis [general] -**Problem:** AI chatbots often decorate headings or bullet points with emojis. +**Rule.** Remove decorative emojis from headings, bullets, and prose unless the document is a register where emoji is genuinely intended. -**Before:** -> 🚀 **Launch Phase:** The product launches in Q3 -> 💡 **Key Insight:** Users prefer simplicity -> ✅ **Next Steps:** Schedule follow-up meeting +See `voice/references/voice-profile.org` §17 for problem, basis, examples, and history. -**After:** -> The product launches in Q3. User research showed a preference for simplicity. Next step: schedule a follow-up meeting. +### 18. Curly Quotation Marks [general] -### 18. Curly Quotation Marks +**Rule.** Convert curly quotation marks to straight ASCII quotes. -**Problem:** ChatGPT uses curly quotes (“...”) instead of straight quotes ("..."). - -**Before:** -> He said “the project is on track” but others disagreed. - -**After:** -> He said "the project is on track" but others disagreed. +See `voice/references/voice-profile.org` §18 for problem, basis, examples, and history. ## Communication Patterns -### 19. Collaborative Communication Artifacts - -**Words to watch:** I hope this helps, Of course!, Certainly!, You're absolutely right!, Would you like..., let me know, here is a... - -**Problem:** Text meant as chatbot correspondence gets pasted as content. +### 19. Collaborative Communication Artifacts [general] -**Before:** -> Here is an overview of the French Revolution. I hope this helps! Let me know if you'd like me to expand on any section. +**Rule.** Strip chatbot correspondence framing ("I hope this helps", "Let me know if...", "Here is an overview of...", "Certainly!", "Of course!") that leaked into the body. -**After:** -> The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest. +See `voice/references/voice-profile.org` §19 for problem, basis, examples, and history. -### 20. Knowledge-Cutoff Disclaimers +### 20. Knowledge-Cutoff Disclaimers [general] -**Words to watch:** as of [date], Up to my last training update, While specific details are limited/scarce..., based on available information... +**Rule.** Remove training-cutoff hedges ("as of my last update", "while specific details are scarce", "based on available information") and either commit to a fact or omit the claim. -**Problem:** AI disclaimers about incomplete information get left in text. +See `voice/references/voice-profile.org` §20 for problem, basis, examples, and history. -**Before:** -> 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. +### 21. Sycophantic/Servile Tone [general] -**After:** -> The company was founded in 1994, according to its registration documents. +**Rule.** Cut servile opener phrases ("Great question!", "You're absolutely right", "That's an excellent point") and proceed straight to the substance. -### 21. Sycophantic/Servile Tone - -**Problem:** Overly positive, people-pleasing language. - -**Before:** -> Great question! You're absolutely right that this is a complex topic. That's an excellent point about the economic factors. - -**After:** -> The economic factors you mentioned are relevant here. +See `voice/references/voice-profile.org` §21 for problem, basis, examples, and history. ## Filler and Hedging -### 22. Filler Phrases - -**Before → After:** -- "In order to achieve this goal" → "To achieve this" -- "Due to the fact that it was raining" → "Because it was raining" -- "At this point in time" → "Now" -- "In the event that you need help" → "If you need help" -- "The system has the ability to process" → "The system can process" -- "It is important to note that the data shows" → "The data shows" -- "For the purpose of" → "To" -- "In spite of the fact that" → "Although" -- "A great deal of" → "Much" -- "At this juncture" → "Now" - -### 23. Excessive Hedging +### 22. Filler Phrases [general] -**Problem:** Over-qualifying statements. +**Rule.** Compress wordy filler ("in order to" to "to", "due to the fact that" to "because", "at this point in time" to "now", "has the ability to" to "can", "it is important to note that" to nothing). -**Before:** -> It could potentially possibly be argued that the policy might have some effect on outcomes. +See `voice/references/voice-profile.org` §22 for problem, basis, examples, and history. -**After:** -> The policy may affect outcomes. +### 23. Excessive Hedging [general] -### 24. Generic Positive Conclusions +**Rule.** Strip stacked hedges ("could potentially possibly", "might have some effect") down to a single appropriate qualifier. -**Problem:** Vague upbeat endings. +See `voice/references/voice-profile.org` §23 for problem, basis, examples, and history. -**Before:** -> The future looks bright for the company. Exciting times lie ahead as they continue their journey toward excellence. This represents a major step in the right direction. +### 24. Generic Positive Conclusions [general] -**After:** -> The company plans to open two more locations next year. +**Rule.** Replace vague upbeat endings ("the future looks bright", "exciting times lie ahead", "a step in the right direction") with a concrete fact or cut the closer entirely. -### 25. Hyphenated Word Pair Overuse +See `voice/references/voice-profile.org` §24 for problem, basis, examples, and history. -**Words to watch:** third-party, cross-functional, client-facing, data-driven, decision-making, well-known, high-quality, real-time, long-term, end-to-end +### 25. Hyphenated Word Pair Overuse [general] -**Problem:** AI hyphenates common word pairs with perfect consistency. Humans rarely hyphenate these uniformly, and when they do, it's inconsistent. Less common or technical compound modifiers are fine to hyphenate. +**Rule.** Drop reflexive hyphens from common modifier pairs (cross-functional, data-driven, decision-making, well-known, high-quality, real-time, long-term) where humans hyphenate inconsistently. Less common or genuinely technical compound modifiers can keep their hyphens. -**Before:** -> The cross-functional team delivered a high-quality, data-driven report on our client-facing tools. Their decision-making process was well-known for being thorough and detail-oriented. - -**After:** -> The cross functional team delivered a high quality, data driven report on our client facing tools. Their decision making process was known for being thorough and detail oriented. +See `voice/references/voice-profile.org` §25 for problem, basis, examples, and history. ## Universal Good-Writing Rules These six patterns extend the AI-detection patterns above with canonical good-writing rules from Strunk & White's *The Elements of Style*, Orwell's *Politics and the English Language*, the Plain English Campaign, and Garner's *Modern English Usage*. They apply in both modes — they target prose smells with no register conflict. -### 26. Long Word → Short Word - -**Words to watch (curated Plain English wordlist):** utilize → use, commence → start, terminate → end, facilitate → help, demonstrate → show, sufficient → enough, prior to → before, subsequent to → after, approximately → about, endeavor → try, commence → begin/start, ascertain → find out, assistance → help, obtain → get, modification → change, implement → carry out, optimal → best, regarding → about, methodology → method, in the event of → if. - -**Problem:** Long Latinate words signal effortful writing without adding precision. Anglo-Saxon roots are shorter and clearer. - -**Before:** -> The system will utilize advanced algorithms to facilitate optimal performance. Prior to deployment, we must ascertain that the methodology is sufficient. +### 26. Long Word → Short Word [general] -**After:** -> The system uses algorithms to get the best performance. Before deployment, we must check that the method works. +**Rule.** Swap long Latinate words for their short Anglo-Saxon equivalents per the Plain English wordlist (utilize to use, facilitate to help, ascertain to find out, methodology to method, prior to to before, optimal to best). -### 27. Active Over Passive Voice +See `voice/references/voice-profile.org` §26 for problem, basis, examples, and history. -**Detection:** "to be + past-participle" patterns where the actor is recoverable from context. +### 27. Active Over Passive Voice [general] -**Problem:** Passive voice hides who did what. Active voice is shorter and clearer in most cases. Skip when the actor genuinely doesn't matter (technical writing about an inanimate process: "the table was created in 2024" can stay passive). +**Rule.** Rewrite passive constructions to active when the actor is recoverable from context. Flag rather than auto-rewrite when the actor genuinely doesn't matter. -**Before:** -> The migration was run by the deployment script. The bug was introduced in commit abc123. The fix was applied by the team. +See `voice/references/voice-profile.org` §27 for problem, basis, examples, and history. -**After:** -> The deployment script ran the migration. Commit abc123 introduced the bug. The team applied the fix. +### 28. Comma Splices [general] -**Suggestion-only in v1.** When in doubt, flag rather than auto-rewrite — passive is sometimes the right choice in technical contexts. +**Rule.** Split two independent clauses joined only by a comma into two sentences or join them with a conjunction. In personal mode the semicolon escape route is blocked by #33. -### 28. Comma Splices +See `voice/references/voice-profile.org` §28 for problem, basis, examples, and history. -**Detection:** Two independent clauses joined only by a comma. +### 29. Cliché Flag [general] -**Problem:** Comma splices read as run-ons. Either split into two sentences, join with a conjunction, or use a semicolon (in personal mode this becomes a period). +**Rule.** Replace business and conversational clichés (at the end of the day, leverage as a verb, low-hanging fruit, circle back, touch base, move the needle, keep it loose) with the plain meaning, including in casual register where "it's fine, it's casual" is the tell. -**Before:** -> The build failed, the test suite reported three errors. +See `voice/references/voice-profile.org` §29 for problem, basis, examples, and history. -**After:** -> The build failed. The test suite reported three errors. +### 30. Jargon-Fragment → Complete Sentence [general] -### 29. Cliché Flag +**Rule.** Rewrite telegraphic sentence fragments inside prose paragraphs as complete sentences with subject and verb. Headings and bullet items are exempt because fragments are valid there. -**Words to watch:** at the end of the day, moving forward, going forward, at this juncture, circle back, low-hanging fruit, deep dive, leverage (as verb), synergy, take it offline, ducks in a row, boil the ocean, pivot (corporate sense), keep it loose, keep it casual, touch base, circle up, hit the ground running, move the needle, on the same page, no-brainer, win-win. +See `voice/references/voice-profile.org` §30 for problem, basis, examples, and history. -**Problem:** Clichés signal effortful prose without saying anything specific. Replace with the actual meaning. A casual, friendly, or conversational register is *not* a license to keep a cliché — cut it there too. If you catch yourself justifying one as "it's fine, it's casual," that's the tell; replace it with the plain meaning. (Craig, 2026-05-22: "keep it loose" slipped through as "acceptable casual" — exactly the miss this note prevents.) +### 31. Noun-ified Verbs [general] -**Before:** -> At the end of the day, we need to leverage our core competencies and circle back on the low-hanging fruit. +**Rule.** Replace corporate-speak noun-ifications (the ask, a learn, the spend, a build, the reveal, the lift) with the real noun (the request, the lesson, the budget, the system, the finding). Philosophical nominalizations are not targets. -**After:** -> We need to use what we already do well and start with the easiest improvements first. - -### 30. Jargon-Fragment → Complete Sentence - -**Detection:** Sentence-like fragments inside prose paragraphs that read as bullet-list shorthand. Headings and bullet items are exempt — fragments are valid there. - -**Problem:** Telegraphic fragments in prose paragraphs read as bullet-style notes leaking into running text. They lose the connective tissue a complete sentence carries. - -**Before:** -> The new function handles edge cases. Empty input throws. Whitespace gets trimmed. Returns null on no match. - -**After:** -> The new function handles edge cases. It throws on empty input, trims whitespace, and returns null when no match is found. - -### 31. Noun-ified Verbs - -**Words to watch:** the ask, a learn, the spend, a build, the reveal, a do, the lift, the get, the say. - -**Problem:** Corporate-speak nominalization. Use the real noun: "the request", "the lesson", "the budget", "the system", "the finding". Note this targets corporate-speak patterns specifically; philosophical nominalizations like "the becoming" or "the unfolding" are different and don't trigger this pattern. - -**Before:** -> The ask was for a quick build. After the reveal, we'll do a learn. - -**After:** -> The request was for a quick prototype. After the announcement, we'll review what worked. +See `voice/references/voice-profile.org` §31 for problem, basis, examples, and history. ## Craig's Voice (prose + personal modes) These patterns carry Craig's writing voice. Most apply in **both** prose mode (emails, documents, notes he authors) and personal mode (commits, PRs, PR comments) — tagged **(prose + personal)**. Three are publish-artifact-specific — tagged **(personal only)** — because they assume a commit or PR and misfire on free prose: #32 (first-person rewrite) wrongly imposes "I did X" voice on a document that's legitimately third-person, #39 (public-artifact scope flag) has nothing to guard in a private journal, and #40 (praise/correction asymmetry) is a PR-review rule. General mode skips all of them — it edits text that isn't Craig's, where contractions, em-dash elimination, and first-person would conflict with academic, literary, or formal registers. -### 32. First-Person Voice Rewrite (personal only) - -**Detection:** Impersonal third-person construction in a publish-artifact body where first-person fits naturally. - -**Problem:** Impersonal third-person ("Add support for X", "The change adds Y") reads as press-release voice in a commit body or PR description. First-person ("I added X", "I missed Y", "I kept Z because...") sounds like one engineer talking to another. - -The subject line of a commit stays imperative per Conventional Commits ("feat: add support for X"). The body shifts to first person. Skip the rewrite for purely mechanical changes (a chore version bump, a typo fix) where the subject alone carries the message. - -**Before:** -> Adds the new validation step before saving. The previous flow allowed empty values to leak into the database. This change blocks them at the API boundary. - -**After:** -> I added a validation step before saving. The previous flow let empty values leak into the database. I'm blocking them at the API boundary now. - -### 33. Semicolon → Period or Comma (prose + personal) - -**Detection:** Semicolons in prose Craig authors — emails, documents, working notes, commit-message bodies, PR descriptions, PR review comments. - -**Problem:** Craig's voice avoids semicolons. They make the writing feel unnecessarily literary. Replace with a period (split into two sentences) or a comma (when the clauses are tightly coupled). In a genuinely formal long-form document the semicolon can be defensible, so weigh the register, but the default for his prose is to split. - -**Note on basis (2026-05-29).** A corpus pass over Craig's git commit bodies measured his semicolon rate at 3.16 per 1000 words, comparable to AI-generated prose. The rule is self-discipline, not habit-reflection. Craig has decided his published voice drops semicolons because the period-split usually reads better, not because semicolons are inherently an AI tell. - -**Before:** -> I added the validation; the previous flow allowed empty values to leak through. - -**After:** -> I added the validation. The previous flow allowed empty values to leak through. - -### 34. Contractions (prose + personal) - -**Detection:** Uncontracted forms in publish-artifact prose where the contraction reads more naturally. - -**Problem:** Uncontracted English reads stiff in a short prose body unless a negation or emphasis needs the weight. Prefer "it's", "that's", "don't", "we're", "I'd", "won't" in his prose — emails, documents, commit and PR bodies. - -**Before:** -> It is worth noting that the change does not break the existing flow. We are confident that this is the right approach. - -**After:** -> It's worth noting the change doesn't break the existing flow. We're confident this is the right approach. - -(Note: pattern #38 catches "worth noting" as rhetorical padding — the example above shows isolated transformation; in practice both passes apply.) - -### 35. Sentence Split on Conjunctions (prose + personal) - -**Detection:** Sentences that stack three or four clauses with commas and conjunctions ("so", "and", "but"), where splitting on a conjunction would not lose meaning. - -**Problem:** Long compound sentences read easier as two or three shorter ones in a prose or publish-artifact body. Skip in academic or literary prose where deliberate long sentences are the register. - -**Before:** -> I added the validation step before saving so empty values get blocked at the API boundary, and I also added a regression test that exercises the empty-string case, but I did not change the upstream caller because that's a separate concern. - -**After:** -> I added the validation step before saving so empty values get blocked at the API boundary. I added a regression test that exercises the empty-string case. I didn't change the upstream caller because that's a separate concern. - -### 36. Felt-Experience Narration (prose + personal) - -**Detection:** Phrases that tell the reader how the change will feel or how often the writer will use it. - -**Problem:** Phrases like "I'll feel this every time I commit", "this will be a relief", "I'm excited about", "this is going to be huge for productivity" read as performance, not communication. State what changed and let the reader decide what to do with it. - -**Before:** -> I'm so excited about this — I'll feel the speedup every time I run the build. This is going to be a huge relief. +### 32. First-Person Voice Rewrite [personal] -**After:** -> The build now finishes in roughly half the time it used to take. +**Rule.** Rewrite impersonal third-person publish-artifact bodies into first person ("I added X", "I kept Y because..."). The commit subject line stays imperative per Conventional Commits. Skip for mechanical changes where the subject alone carries the message. -### 37. Sentence Fragments → Complete (prose + personal) +See `voice/references/voice-profile.org` §32 for problem, basis, examples, and history. -**Detection:** Sentence fragments inside prose paragraphs in any text Craig authors — an email, a document, a working note, a commit or PR body. Bullets and headings remain fair game for fragments. +### 33. Semicolon → Period or Comma [prose · personal] -**Problem:** Bullet shorthand leaking into running prose ("Two changes." "Fix incoming." "Body as decision log.") reads as bullet-list notes pasted into a paragraph. Every prose sentence needs a subject and a verb in prose and personal modes. (General mode keeps the softer #30, which exempts more — the strong "every sentence" rule is Craig's, so it rides with his voice, not with third-party text.) +**Rule.** Replace semicolons with a period (split into two sentences) or a comma (when the clauses are tightly coupled) in Craig's authored prose. A formal long-form document can keep the semicolon, but the default is to split. -**Before:** -> Big change to the validator. Three new patterns. Test coverage up. Old behavior preserved. +See `voice/references/voice-profile.org` §33 for problem, basis, examples, and history. -**After:** -> I made a big change to the validator. There are three new patterns and the test coverage is up. The old behavior is preserved. +### 34. Contractions [prose · personal] -### 38. Terse Cut — Rhetorical Padding (prose + personal) +**Rule.** Prefer contractions in Craig's prose (it's, that's, don't, we're, I'd, won't) unless a negation or emphasis genuinely needs the uncontracted weight. -**Detection:** Padding phrases that add length without meaning: "worth noting", "it's important to understand", "as you can see", "needless to say", "obviously", "of course", "in essence", "fundamentally". +See `voice/references/voice-profile.org` §34 for problem, basis, examples, and history. -**Problem:** Tier 1 omit-needless-words (#26) catches the most rigid offenders ("the fact that", "in order to"). Prose and personal modes are more aggressive: also strip soft padding like "worth noting" and "it's important to understand". State the thing directly. Academic writing often retains these as transition markers, so the aggressive cut is prose/personal-only because it conflicts with that register. +### 35. Sentence Split on Conjunctions [prose · personal] -**Before:** -> It's worth noting that the change doesn't break the existing flow. Needless to say, the test suite is green. Obviously, this means we can ship. +**Rule.** Split sentences that stack three or four clauses joined by "so", "and", "but" into two or three shorter sentences when the split does not lose meaning. Academic or literary registers can keep long sentences. -**After:** -> The change doesn't break the existing flow. The test suite is green. We can ship. +See `voice/references/voice-profile.org` §35 for problem, basis, examples, and history. -### 39. Public-Artifact Scope Check (personal only — flag only) +### 36. Felt-Experience Narration [prose · personal] -**Detection:** Local absolute paths (`/home/<user>/...`, `/Users/<user>/...`), private repo names (any repo not in this project's known public set), personal-tooling references (`humanizer`, `voice`, `commits.md`, anything under `claude-rules/`, anything under `.ai/` or `.claude/`). +**Rule.** Cut phrases that tell the reader how the change will feel or how often the writer will use it ("I'll feel this every time", "this will be a relief", "I'm excited about", "this is huge"). State what changed and let the reader decide. -**Problem:** Commit messages, PR descriptions, PR comments, and Linear ticket bodies are visible to teammates and anyone with read access. References to the writer's personal layout are noise to a reader who can't reproduce it. +See `voice/references/voice-profile.org` §36 for problem, basis, examples, and history. -**Behavior in this skill: flag-only, no auto-rewrite.** Surface each match as a warning. The user resolves manually because auto-masking risks silently editing meaningful content (a legitimate file path mention may be load-bearing; only the author can tell). +### 37. Sentence Fragments → Complete [prose · personal] -**Output format for matches:** -``` -WARN: line 12: "/home/cjennings/code/rulesets" — local absolute path in commit body -WARN: line 18: "claude-rules/commits.md" — personal-tooling reference; state the underlying reason instead -``` +**Rule.** Rewrite every sentence fragment inside a prose paragraph in Craig's authored text as a complete sentence with subject and verb. Bullets and headings can stay fragments. This is the stricter cousin of general-mode #30. -### 40. Praise vs Correction Asymmetry (personal only) +See `voice/references/voice-profile.org` §37 for problem, basis, examples, and history. -**Detection:** In a PR review summary or comment — a praise clause that explains *why* the good thing is good; or a finding / change-request that states what to fix without saying why. +### 38. Terse Cut — Rhetorical Padding [prose · personal] -**Problem:** Praise and correction call for opposite treatment. The author already knows why their good change is good, so justifying praise reads as flattery — give the praise and stop. Correction is the reverse: behavior only changes when the reason lands, so a finding, change-request, or inline coaching note must always explain the why. And the why is delivered gently, the way a kind coach or mentor would, never as a verdict from on high. Keep it brief either way. +**Rule.** Strip soft rhetorical padding ("worth noting", "it's important to understand", "as you can see", "needless to say", "obviously", "of course", "in essence", "fundamentally") and state the thing directly. Academic writing retains these as transition markers, so the aggressive cut is prose and personal only. -**On an approve summary:** praise plus verdict, nothing else. Cut any clause that describes or justifies the change. "Clean fix on the stacking bug, the tri-state is the right level to solve it at, and the tests cover the edges. Approving." becomes "Clean fix on the stacking bug. Approving." If a clause references what the code does or why it works, delete it. +See `voice/references/voice-profile.org` §38 for problem, basis, examples, and history. -**On a finding or change-request:** always give the why, gently and briefly. Not "Move this to a helper." but "I'd pull this into one helper — three copies of the same rule means the next change has to touch all three, and missing one brings the bug back." +### 39. Public-Artifact Scope Check [personal] -**Before:** -> Nice clean migration, the provider mocks and the Normal/Boundary/Error cases are all covered which is exactly what I'd want here. Approving. Also rename `x`. +**Rule.** Flag (do not auto-rewrite) local absolute paths, private repo names, and personal-tooling references (anything under `claude-rules/`, `.ai/`, `.claude/`, or naming personal skills) in publish artifacts. Surface each match as a WARN line so the author resolves manually. -**After:** -> Clean migration. Approving. One note inline: I'd rename `x` to `provider` — it reads as a generic placeholder and the next person won't know it's the resolved provider without tracing it. +See `voice/references/voice-profile.org` §39 for problem, basis, examples, and history. -### 41. No Emphasis Formatting (prose + personal) +### 40. Praise vs Correction Asymmetry [personal] -**Detection:** Bold (`**...**`), italic (`*...*` / `_..._`), or underscore-wrapped words used to emphasize a phrase in Craig's prose. This is distinct from #14, which strips AI's mechanical boldface in general mode — #41 carries Craig's own principle and covers italics and underscores too. +**Rule.** Praise on a PR review is short and unjustified (the author knows why their good change is good). Correction always explains the why, gently and briefly, the way a mentor would. Never as a verdict from on high. -**Problem:** Craig makes his points with words, not formatting. Emphasis markup is a crutch: when a sentence leans on bold or italics to land, the wording isn't doing the work. The fix isn't to delete the markup and leave a flat sentence — it's to rephrase so the stress lives in the word choice and sentence shape. (This is the same principle behind his terminal-rendering rule in chat, but here it's about the writing itself, not the display.) +See `voice/references/voice-profile.org` §40 for problem, basis, examples, and history. -Leave markup that is structural rather than emphatic: a heading, a defined term on first use where the convention is house style, code spans for literal identifiers. The target is emphasis-by-formatting, not all formatting. +### 41. No Emphasis Formatting [prose · personal] -**Before:** -> This is **really** important: you must run the migration *before* deploying, or the app will crash. +**Rule.** Remove emphasis markup (bold, italics, underscore-wrapped words) used to stress a phrase in Craig's prose, and rephrase so the stress lives in word choice and sentence shape. Structural markup stays: headings, defined terms on first use, code spans for literal identifiers. -**After:** -> Run the migration before deploying. Skip that step and the app crashes on the first request. +See `voice/references/voice-profile.org` §41 for problem, basis, examples, and history. ## Process diff --git a/voice/references/voice-profile.org b/voice/references/voice-profile.org index 15f01c4..867d8a1 100644 --- a/voice/references/voice-profile.org +++ b/voice/references/voice-profile.org @@ -102,6 +102,343 @@ Six concrete edits to =voice/SKILL.md=, all of which can land independently: The 41 patterns are migrated below from SKILL.md per the pairing rule above. Phase 1 of this migration populates only Pattern §13 as a worked example of the form. The remaining 40 patterns are scheduled for the backfill pass once Craig confirms the shape. +** §1 Undue Emphasis on Significance, Legacy, and Broader Trends + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Strip statements that puff up importance by claiming an arbitrary aspect represents or contributes to a broader trend. Watch for phrases like "stands as", "serves as", "testament to", "vital role", "pivotal moment", "evolving landscape", "marks a shift", "reflects broader", "setting the stage for", "indelible mark", "deeply rooted". Replace with a concrete fact or cut the sentence entirely. + +*** Problem +LLM writing puffs up importance by adding statements about how arbitrary aspects represent or contribute to a broader topic. Watch-list words: stands/serves as, is a testament/reminder, a vital/significant/crucial/pivotal/key role/moment, underscores/highlights its importance/significance, reflects broader, symbolizing its ongoing/enduring/lasting, contributing to the, setting the stage for, marking/shaping the, represents/marks a shift, key turning point, evolving landscape, focal point, indelible mark, deeply rooted. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain. This initiative was part of a broader movement across Spain to decentralize administrative functions and enhance regional governance. +#+end_example + +*** After +#+begin_example +The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office. +#+end_example + +*** History +- Original SKILL.md entry: significance and broader-trend puffery, with watch-list phrases drawn from Wikipedia's AI-writing guide. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §2 Undue Emphasis on Notability and Media Coverage + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Cut notability claims that list sources without giving the substance. Replace "cited in The New York Times, BBC, Financial Times" with the actual argument made in one of them. + +*** Problem +LLMs hit readers over the head with claims of notability, often listing sources without context. Watch-list words: independent coverage, local/regional/national media outlets, written by a leading expert, active social media presence. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Her views have been cited in The New York Times, BBC, Financial Times, and The Hindu. She maintains an active social media presence with over 500,000 followers. +#+end_example + +*** After +#+begin_example +In a 2024 New York Times interview, she argued that AI regulation should focus on outcomes rather than methods. +#+end_example + +*** History +- Original SKILL.md entry: notability inflation through bare source lists. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §3 Superficial Analyses with -ing Endings + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Cut tacked-on present-participle phrases (highlighting, underscoring, emphasizing, ensuring, reflecting, symbolizing, contributing to, cultivating, fostering, encompassing, showcasing) that add fake depth without new information. + +*** Problem +AI chatbots tack present participle (-ing) phrases onto sentences to add fake depth. Watch-list words: highlighting, underscoring, emphasizing, ensuring, reflecting, symbolizing, contributing to, cultivating, fostering, encompassing, showcasing. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The temple's color palette of blue, green, and gold resonates with the region's natural beauty, symbolizing Texas bluebonnets, the Gulf of Mexico, and the diverse Texan landscapes, reflecting the community's deep connection to the land. +#+end_example + +*** After +#+begin_example +The temple uses blue, green, and gold colors. The architect said these were chosen to reference local bluebonnets and the Gulf coast. +#+end_example + +*** History +- Original SKILL.md entry: -ing phrase tacking for fake analytical depth. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §4 Promotional and Advertisement-like Language + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Remove travel-brochure adjectives (vibrant, breathtaking, nestled, stunning, renowned, must-visit, profound, rich figurative use) and replace promotional framing with concrete facts about the subject. + +*** Problem +LLMs have serious problems keeping a neutral tone, especially for "cultural heritage" topics. Watch-list words: boasts a, vibrant, rich (figurative), profound, enhancing its, showcasing, exemplifies, commitment to, natural beauty, nestled, in the heart of, groundbreaking (figurative), renowned, breathtaking, must-visit, stunning. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Nestled within the breathtaking region of Gonder in Ethiopia, Alamata Raya Kobo stands as a vibrant town with a rich cultural heritage and stunning natural beauty. +#+end_example + +*** After +#+begin_example +Alamata Raya Kobo is a town in the Gonder region of Ethiopia, known for its weekly market and 18th-century church. +#+end_example + +*** History +- Original SKILL.md entry: travel-brochure adjective patterns. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §5 Vague Attributions and Weasel Words + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Replace vague attributions (experts say, observers have cited, industry reports, some critics argue, several sources) with a named source plus the specific claim made. + +*** Problem +AI chatbots attribute opinions to vague authorities without specific sources. Watch-list words: Industry reports, Observers have cited, Experts argue, Some critics argue, several sources or publications (when few cited). + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Due to its unique characteristics, the Haolai River is of interest to researchers and conservationists. Experts believe it plays a crucial role in the regional ecosystem. +#+end_example + +*** After +#+begin_example +The Haolai River supports several endemic fish species, according to a 2019 survey by the Chinese Academy of Sciences. +#+end_example + +*** History +- Original SKILL.md entry: vague-authority attribution patterns. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §6 Outline-like "Challenges and Future Prospects" Sections + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Delete formulaic "Despite its prosperity, X faces challenges" wrap-ups and "Future Outlook" boilerplate. Replace with the actual events that happened or omit the section. + +*** Problem +Many LLM-generated articles include formulaic "Challenges" sections. Watch-list words: "Despite its... faces several challenges...", "Despite these challenges", "Challenges and Legacy", "Future Outlook". + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Despite its industrial prosperity, Korattur faces challenges typical of urban areas, including traffic congestion and water scarcity. Despite these challenges, with its strategic location and ongoing initiatives, Korattur continues to thrive as an integral part of Chennai's growth. +#+end_example + +*** After +#+begin_example +Traffic congestion increased after 2015 when three new IT parks opened. The municipal corporation began a stormwater drainage project in 2022 to address recurring floods. +#+end_example + +*** History +- Original SKILL.md entry: outline-template "Challenges and Future Prospects" sections. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §7 Overused "AI Vocabulary" Words + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Flag and rewrite around the high-frequency AI vocabulary list. Watch-list words: Additionally, align with, comprehensive, crucial, delve, emphasizing, enduring, enhance, fostering, garner, highlight (verb), interplay, intricate or intricacies, key (adjective), landscape (abstract noun), pivotal, showcase, tapestry (abstract noun), testament, underscore (verb), valuable, vibrant. "comprehensive" is a soft flag because the corpus shows it as genuine Craig vocabulary he chooses to use sparingly. Suggest an alternative ("full", "complete", "thorough", or rewording to drop the adjective) and let Craig decide per instance. + +*** Problem +These words appear far more frequently in post-2023 text. They often co-occur. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus. "comprehensive" 42 occurrences; every other watch-word 0 or 1 (delve 0, embark 0, navigate the 0, in the realm of 0, seamless 0, moreover 0, furthermore 0, in conclusion 0, additionally 1, robust 1, leverage 1). "comprehensive" is genuine Craig vocabulary in technical contexts ("comprehensive test coverage", "comprehensive audit"). Craig has chosen to keep it on the watch-list because he is consciously trying to use it sparingly. + +*** Before +#+begin_example +Additionally, a distinctive feature of Somali cuisine is the incorporation of camel meat. An enduring testament to Italian colonial influence is the widespread adoption of pasta in the local culinary landscape, showcasing how these dishes have integrated into the traditional diet. +#+end_example + +*** After +#+begin_example +Somali cuisine also includes camel meat, which is considered a delicacy. Pasta dishes, introduced during Italian colonization, remain common, especially in the south. +#+end_example + +*** History +- Original SKILL.md entry: high-frequency post-2023 AI vocabulary list. +- 2026-05-29 (commit =c3cf9a5=): note on "comprehensive" added with corpus measurement and soft-flag guidance. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §8 Avoidance of "is"/"are" (Copula Avoidance) + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Replace elaborate copula substitutes (serves as, stands as, marks, represents, boasts, features, offers) with plain "is" or "has". + +*** Problem +LLMs substitute elaborate constructions for simple copulas. Watch-list words: serves as, stands as, marks, represents (a), boasts, features, offers (a). + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Gallery 825 serves as LAAA's exhibition space for contemporary art. The gallery features four separate spaces and boasts over 3,000 square feet. +#+end_example + +*** After +#+begin_example +Gallery 825 is LAAA's exhibition space for contemporary art. The gallery has four rooms totaling 3,000 square feet. +#+end_example + +*** History +- Original SKILL.md entry: copula avoidance patterns. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §9 Negative Parallelisms + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Rewrite "not only X but Y" and "it's not just about X, it's Y" constructions as a single direct claim. + +*** Problem +Constructions like "Not only...but..." or "It's not just about..., it's..." are overused as a way to claim depth. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere. It's not merely a song, it's a statement. +#+end_example + +*** After +#+begin_example +The heavy beat adds to the aggressive tone. +#+end_example + +*** History +- Original SKILL.md entry: negative-parallelism stock phrasing. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §10 Rule of Three Overuse + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Break the reflexive three-item list pattern when the third item is filler. Collapse to one or two specific items. + +*** Problem +LLMs force ideas into groups of three to appear comprehensive. The third item is usually filler chosen to fit the cadence, not because it adds substance. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The event features keynote sessions, panel discussions, and networking opportunities. Attendees can expect innovation, inspiration, and industry insights. +#+end_example + +*** After +#+begin_example +The event includes talks and panels. There's also time for informal networking between sessions. +#+end_example + +*** History +- Original SKILL.md entry: rule-of-three cadence overuse. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §11 Elegant Variation (Synonym Cycling) + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Stop cycling synonyms for the same referent across consecutive sentences. Repeat the noun, or merge the sentences. + +*** Problem +AI has repetition-penalty code causing excessive synonym substitution. The protagonist becomes the main character becomes the central figure becomes the hero, all referring to the same person. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The protagonist faces many challenges. The main character must overcome obstacles. The central figure eventually triumphs. The hero returns home. +#+end_example + +*** After +#+begin_example +The protagonist faces many challenges but eventually triumphs and returns home. +#+end_example + +*** History +- Original SKILL.md entry: elegant-variation synonym cycling driven by repetition penalty. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §12 False Ranges + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Rewrite "from X to Y" constructions where X and Y are not on the same scale. List the items plainly instead. + +*** Problem +LLMs use "from X to Y" constructions where X and Y are not on a meaningful scale ("from the Big Bang to dark matter") to imply comprehensive sweep. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Our journey through the universe has taken us from the singularity of the Big Bang to the grand cosmic web, from the birth and death of stars to the enigmatic dance of dark matter. +#+end_example + +*** After +#+begin_example +The book covers the Big Bang, star formation, and current theories about dark matter. +#+end_example + +*** History +- Original SKILL.md entry: false-range "from X to Y" constructions. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + ** §13 Em Dash Overuse *** Modes @@ -132,3 +469,843 @@ The term is primarily promoted by Dutch institutions, not by the people themselv - 2026-05-26 (commit =4fac2a0=): prose mode added, rule strengthened to zero-tolerance in prose and personal. - 2026-05-29 (commit =c3cf9a5=): Note on basis added with corpus measurement. - 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §14 Overuse of Boldface + +*** Modes +General mode only. Prose and personal inherit it. Pattern §41 is the related Craig-voice rule covering emphasis-by-formatting in his authored prose. + +*** Rule +Strip mechanical boldface used to call out terms, acronyms, or phrases in running prose. Bold survives only for structural emphasis the document genuinely needs. + +*** Problem +AI chatbots emphasize phrases in boldface mechanically. Acronyms, names, and key terms get wrapped in bold even when the surrounding sentence already gives them stress. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +It blends **OKRs (Objectives and Key Results)**, **KPIs (Key Performance Indicators)**, and visual strategy tools such as the **Business Model Canvas (BMC)** and **Balanced Scorecard (BSC)**. +#+end_example + +*** After +#+begin_example +It blends OKRs, KPIs, and visual strategy tools like the Business Model Canvas and Balanced Scorecard. +#+end_example + +*** History +- Original SKILL.md entry: mechanical boldface around terms and acronyms. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §15 Inline-Header Vertical Lists + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Collapse bullet lists whose items start with a bold header plus colon into running prose, unless the list structure is genuinely the right shape. + +*** Problem +AI outputs lists where items start with bolded headers followed by colons, often when a paragraph would carry the same content more naturally. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +- **User Experience:** The user experience has been significantly improved with a new interface. +- **Performance:** Performance has been enhanced through optimized algorithms. +- **Security:** Security has been strengthened with end-to-end encryption. +#+end_example + +*** After +#+begin_example +The update improves the interface, speeds up load times through optimized algorithms, and adds end-to-end encryption. +#+end_example + +*** History +- Original SKILL.md entry: inline-header vertical list pattern. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §16 Title Case in Headings + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Lowercase headings that are reflexively title-cased. Sentence case is the default unless the project's house style is title case. + +*** Problem +AI chatbots capitalize all main words in headings even when the surrounding document uses sentence case. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +## Strategic Negotiations And Global Partnerships +#+end_example + +*** After +#+begin_example +## Strategic negotiations and global partnerships +#+end_example + +*** History +- Original SKILL.md entry: reflexive title-case in headings. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §17 Emojis + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Remove decorative emojis from headings, bullets, and prose unless the document is a register where emoji is genuinely intended. + +*** Problem +AI chatbots often decorate headings or bullet points with emojis to add visual structure that the prose itself does not need. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows zero emojis. The rule reflects established practice. + +*** Before +#+begin_example +🚀 **Launch Phase:** The product launches in Q3 +💡 **Key Insight:** Users prefer simplicity +✅ **Next Steps:** Schedule follow-up meeting +#+end_example + +*** After +#+begin_example +The product launches in Q3. User research showed a preference for simplicity. Next step: schedule a follow-up meeting. +#+end_example + +*** History +- Original SKILL.md entry: decorative emoji in headings and bullets. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §18 Curly Quotation Marks + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Convert curly quotation marks to straight ASCII quotes. + +*** Problem +ChatGPT uses curly quotes instead of straight quotes, which is a recognizable tell in technical and source-controlled writing. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +He said “the project is on track” but others disagreed. +#+end_example + +*** After +#+begin_example +He said "the project is on track" but others disagreed. +#+end_example + +*** History +- Original SKILL.md entry: curly-quote substitution. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §19 Collaborative Communication Artifacts + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Strip chatbot correspondence framing ("I hope this helps", "Let me know if...", "Here is an overview of...", "Certainly!", "Of course!", "Would you like...") that leaked into the body. + +*** Problem +Text meant as chatbot correspondence gets pasted as content, carrying the assistant's framing into a document that should stand alone. Watch-list words: I hope this helps, Of course!, Certainly!, You're absolutely right!, Would you like..., let me know, here is a... + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Here is an overview of the French Revolution. I hope this helps! Let me know if you'd like me to expand on any section. +#+end_example + +*** After +#+begin_example +The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest. +#+end_example + +*** History +- Original SKILL.md entry: collaborative-communication artifacts pasted as content. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §20 Knowledge-Cutoff Disclaimers + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Remove training-cutoff hedges ("as of my last update", "while specific details are scarce", "based on available information") and either commit to a fact or omit the claim. + +*** Problem +AI disclaimers about incomplete information get left in text, signaling the model's uncertainty rather than the author's. Watch-list words: as of [date], Up to my last training update, While specific details are limited or scarce, based on available information. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +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. +#+end_example + +*** After +#+begin_example +The company was founded in 1994, according to its registration documents. +#+end_example + +*** History +- Original SKILL.md entry: knowledge-cutoff hedging. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §21 Sycophantic/Servile Tone + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Cut servile opener phrases ("Great question!", "You're absolutely right", "That's an excellent point") and proceed straight to the substance. + +*** Problem +Overly positive, people-pleasing language reads as performance rather than communication and signals AI assistant register. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +Great question! You're absolutely right that this is a complex topic. That's an excellent point about the economic factors. +#+end_example + +*** After +#+begin_example +The economic factors you mentioned are relevant here. +#+end_example + +*** History +- Original SKILL.md entry: sycophantic and servile opener patterns. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §22 Filler Phrases + +*** Modes +General mode only. Prose and personal inherit it. Pattern §38 is the stricter cousin for Craig's authored prose. + +*** Rule +Compress wordy filler to plain equivalents: "in order to" to "to", "due to the fact that" to "because", "at this point in time" to "now", "in the event that" to "if", "has the ability to" to "can", "it is important to note that" to nothing, "for the purpose of" to "to", "in spite of the fact that" to "although", "a great deal of" to "much", "at this juncture" to "now". + +*** Problem +Wordy filler stretches a sentence without adding precision. Cutting it shortens the prose and sharpens the claim. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows "moreover", "furthermore", "additionally", "in conclusion" all at zero or one occurrence. Filler-phrase avoidance confirmed at the watch-list level. + +*** Before +#+begin_example +In order to achieve this goal, we need to allocate resources due to the fact that the team has the ability to deliver. At this point in time, it is important to note that the data shows progress. +#+end_example + +*** After +#+begin_example +To achieve this, we need to allocate resources because the team can deliver. The data shows progress. +#+end_example + +*** Detection +The original SKILL.md entry uses a Before to After substitution table: +- "In order to achieve this goal" to "To achieve this" +- "Due to the fact that it was raining" to "Because it was raining" +- "At this point in time" to "Now" +- "In the event that you need help" to "If you need help" +- "The system has the ability to process" to "The system can process" +- "It is important to note that the data shows" to "The data shows" +- "For the purpose of" to "To" +- "In spite of the fact that" to "Although" +- "A great deal of" to "Much" +- "At this juncture" to "Now" + +*** History +- Original SKILL.md entry: wordy filler phrase substitutions. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §23 Excessive Hedging + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Strip stacked hedges ("could potentially possibly", "might have some effect") down to a single appropriate qualifier. + +*** Problem +Over-qualifying statements weakens them without adding accuracy. One hedge does the job that three do. + +*** Basis +Observation-derived (Strunk and White, Garner). + +*** Before +#+begin_example +It could potentially possibly be argued that the policy might have some effect on outcomes. +#+end_example + +*** After +#+begin_example +The policy may affect outcomes. +#+end_example + +*** History +- Original SKILL.md entry: stacked hedge reduction. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §24 Generic Positive Conclusions + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Replace vague upbeat endings ("the future looks bright", "exciting times lie ahead", "a step in the right direction") with a concrete fact or cut the closer entirely. + +*** Problem +Vague upbeat endings give the document the shape of a press release without making any specific claim. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The future looks bright for the company. Exciting times lie ahead as they continue their journey toward excellence. This represents a major step in the right direction. +#+end_example + +*** After +#+begin_example +The company plans to open two more locations next year. +#+end_example + +*** History +- Original SKILL.md entry: generic positive conclusion boilerplate. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §25 Hyphenated Word Pair Overuse + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Drop reflexive hyphens from common modifier pairs (third-party, cross-functional, client-facing, data-driven, decision-making, well-known, high-quality, real-time, long-term, end-to-end) where humans hyphenate inconsistently. Less common or genuinely technical compound modifiers can keep their hyphens. + +*** Problem +AI hyphenates common word pairs with perfect consistency. Humans rarely hyphenate these uniformly, and when they do, it is inconsistent. The uniformity itself is the tell. + +*** Basis +Observation-derived (Wikipedia "Signs of AI Writing"). + +*** Before +#+begin_example +The cross-functional team delivered a high-quality, data-driven report on our client-facing tools. Their decision-making process was well-known for being thorough and detail-oriented. +#+end_example + +*** After +#+begin_example +The cross functional team delivered a high quality, data driven report on our client facing tools. Their decision making process was known for being thorough and detail oriented. +#+end_example + +*** History +- Original SKILL.md entry: hyphenated common-modifier overuse. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §26 Long Word → Short Word + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Swap long Latinate words for their short Anglo-Saxon equivalents per the Plain English wordlist: utilize to use, commence to start or begin, terminate to end, facilitate to help, demonstrate to show, sufficient to enough, prior to to before, subsequent to to after, approximately to about, endeavor to try, ascertain to find out, assistance to help, obtain to get, modification to change, implement to carry out, optimal to best, regarding to about, methodology to method, "in the event of" to "if". + +*** Problem +Long Latinate words signal effortful writing without adding precision. Anglo-Saxon roots are shorter and clearer. + +*** Basis +Observation-derived (Strunk and White, Orwell, Plain English Campaign, Garner). + +*** Before +#+begin_example +The system will utilize advanced algorithms to facilitate optimal performance. Prior to deployment, we must ascertain that the methodology is sufficient. +#+end_example + +*** After +#+begin_example +The system uses algorithms to get the best performance. Before deployment, we must check that the method works. +#+end_example + +*** History +- Original SKILL.md entry: Plain English wordlist substitutions. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §27 Active Over Passive Voice + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Rewrite passive constructions to active when the actor is recoverable from context. Flag rather than auto-rewrite when the actor genuinely does not matter, because passive is sometimes the right choice in technical contexts. + +*** Problem +Passive voice hides who did what. Active voice is shorter and clearer in most cases. Skip when the actor genuinely does not matter (technical writing about an inanimate process: "the table was created in 2024" can stay passive). + +*** Basis +Observation-derived (Strunk and White, Orwell). + +*** Before +#+begin_example +The migration was run by the deployment script. The bug was introduced in commit abc123. The fix was applied by the team. +#+end_example + +*** After +#+begin_example +The deployment script ran the migration. Commit abc123 introduced the bug. The team applied the fix. +#+end_example + +*** Detection +"to be" plus past-participle patterns where the actor is recoverable from context. + +*** History +- Original SKILL.md entry: active-over-passive with suggestion-only treatment in v1. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §28 Comma Splices + +*** Modes +General mode only. Prose and personal inherit it. The semicolon escape route is blocked in personal mode by §33. + +*** Rule +Split two independent clauses joined only by a comma into two sentences or join them with a conjunction. In general mode a semicolon is an acceptable repair. In personal mode the semicolon is itself a target (§33), so prefer the period. + +*** Problem +Comma splices read as run-ons. Either split into two sentences, join with a conjunction, or use a semicolon (in personal mode this becomes a period). + +*** Basis +Observation-derived (Strunk and White). + +*** Before +#+begin_example +The build failed, the test suite reported three errors. +#+end_example + +*** After +#+begin_example +The build failed. The test suite reported three errors. +#+end_example + +*** Detection +Two independent clauses joined only by a comma. + +*** History +- Original SKILL.md entry: comma-splice repair. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §29 Cliché Flag + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Replace business and conversational clichés with the plain meaning, including in casual register where "it's fine, it's casual" is the tell. Watch-list phrases: at the end of the day, moving forward, going forward, at this juncture, circle back, low-hanging fruit, deep dive, leverage (as verb), synergy, take it offline, ducks in a row, boil the ocean, pivot (corporate sense), keep it loose, keep it casual, touch base, circle up, hit the ground running, move the needle, on the same page, no-brainer, win-win. + +*** Problem +Clichés signal effortful prose without saying anything specific. Replace with the actual meaning. A casual, friendly, or conversational register is not a license to keep a cliché. Cut it there too. If you catch yourself justifying one as "it's fine, it's casual," that is the tell. Craig flagged this on 2026-05-22 when "keep it loose" slipped through as "acceptable casual" — exactly the miss this note prevents. + +*** Basis +Observation-derived (Orwell, Garner). + +*** Before +#+begin_example +At the end of the day, we need to leverage our core competencies and circle back on the low-hanging fruit. +#+end_example + +*** After +#+begin_example +We need to use what we already do well and start with the easiest improvements first. +#+end_example + +*** History +- Original SKILL.md entry: business and conversational cliché list. +- 2026-05-22: Craig added "keep it loose" / "keep it casual" after a miss in earlier output. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §30 Jargon-Fragment → Complete Sentence + +*** Modes +General mode only. Prose and personal inherit it. Pattern §37 is the stricter cousin for Craig's authored prose. + +*** Rule +Rewrite telegraphic sentence fragments inside prose paragraphs as complete sentences with subject and verb. Headings and bullet items are exempt because fragments are valid there. + +*** Problem +Telegraphic fragments in prose paragraphs read as bullet-style notes leaking into running text. They lose the connective tissue a complete sentence carries. + +*** Basis +Observation-derived (Strunk and White). + +*** Before +#+begin_example +The new function handles edge cases. Empty input throws. Whitespace gets trimmed. Returns null on no match. +#+end_example + +*** After +#+begin_example +The new function handles edge cases. It throws on empty input, trims whitespace, and returns null when no match is found. +#+end_example + +*** Detection +Sentence-like fragments inside prose paragraphs that read as bullet-list shorthand. Headings and bullet items are exempt because fragments are valid there. + +*** History +- Original SKILL.md entry: jargon-fragment rewrite for prose paragraphs. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §31 Noun-ified Verbs + +*** Modes +General mode only. Prose and personal inherit it. + +*** Rule +Replace corporate-speak noun-ifications with the real noun: "the ask" to "the request", "a learn" to "the lesson", "the spend" to "the budget", "a build" to "the system" or "the prototype", "the reveal" to "the announcement", "the lift" to "the effort", "the get" to "the result". Philosophical nominalizations ("the becoming", "the unfolding") are not targets. + +*** Problem +Corporate-speak nominalization reads as performance. The real nouns are shorter and clearer. Watch-list: the ask, a learn, the spend, a build, the reveal, a do, the lift, the get, the say. + +*** Basis +Observation-derived (Garner; Craig's voice rules in claude-rules/commits.md). + +*** Before +#+begin_example +The ask was for a quick build. After the reveal, we'll do a learn. +#+end_example + +*** After +#+begin_example +The request was for a quick prototype. After the announcement, we'll review what worked. +#+end_example + +*** History +- Original SKILL.md entry: corporate-speak nominalization. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §32 First-Person Voice Rewrite + +*** Modes +Personal mode only. General and prose skip it because a research note, a document, or anyone else's text is legitimately third-person. + +*** Rule +Rewrite impersonal third-person publish-artifact bodies into first person ("I added X", "I missed Y", "I kept Z because..."). The commit subject line stays imperative per Conventional Commits ("feat: add support for X"). The body shifts to first person. Skip the rewrite for mechanical changes (a chore version bump, a typo fix) where the subject alone carries the message. + +*** Problem +Impersonal third-person ("Add support for X", "The change adds Y") reads as press-release voice in a commit body or PR description. First-person ("I added X", "I kept Y because...") sounds like one engineer talking to another. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows standalone "I" at 3.85 per 1000 words. Craig writes first-person heavily in his commit prose. This is real, not aspirational. + +*** Before +#+begin_example +Adds the new validation step before saving. The previous flow allowed empty values to leak into the database. This change blocks them at the API boundary. +#+end_example + +*** After +#+begin_example +I added a validation step before saving. The previous flow let empty values leak into the database. I'm blocking them at the API boundary now. +#+end_example + +*** Detection +Impersonal third-person construction in a publish-artifact body where first-person fits naturally. + +*** History +- Original SKILL.md entry: first-person rewrite for publish artifacts. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §33 Semicolon → Period or Comma + +*** Modes +Prose and personal modes. General mode keeps semicolons because academic and literary registers use them legitimately. + +*** Rule +Replace semicolons with a period (split into two sentences) or a comma (when the clauses are tightly coupled) in Craig's authored prose: emails, documents, working notes, commit-message bodies, PR descriptions, PR review comments. A formal long-form document can keep the semicolon, but the default is to split. + +*** Problem +Craig's voice avoids semicolons. They make the writing feel unnecessarily literary. The period-split usually reads better, and dropping semicolons removes one common AI tell. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows 3.16 semicolons per 1000 words, comparable to AI-generated prose. The rule is self-discipline, not habit-reflection. Craig has decided his published voice drops semicolons because the period-split usually reads better, not because semicolons are inherently an AI tell. + +*** Before +#+begin_example +I added the validation; the previous flow allowed empty values to leak through. +#+end_example + +*** After +#+begin_example +I added the validation. The previous flow allowed empty values to leak through. +#+end_example + +*** Detection +Semicolons in prose Craig authors: emails, documents, working notes, commit-message bodies, PR descriptions, PR review comments. + +*** History +- Original SKILL.md entry: semicolon to period or comma in Craig's authored prose. +- 2026-05-29 (commit =c3cf9a5=): basis note added with corpus measurement reframing the rule as self-discipline. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §34 Contractions + +*** Modes +Prose and personal modes. General mode skips because academic, literary, and formal registers often prefer uncontracted forms. + +*** Rule +Prefer contractions in Craig's prose (it's, that's, don't, we're, I'd, won't) unless a negation or emphasis genuinely needs the uncontracted weight. + +*** Problem +Uncontracted English reads stiff in a short prose body unless a negation or emphasis needs the weight. Prefer contractions in his prose: emails, documents, commit and PR bodies. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows 459 contractions total (3.57 per 1000 words). Top hits: doesn't (92), don't (59), isn't (46), it's (43), can't (40), that's (34). Rule confirmed as established Craig habit. + +*** Before +#+begin_example +It is worth noting that the change does not break the existing flow. We are confident that this is the right approach. +#+end_example + +*** After +#+begin_example +It's worth noting the change doesn't break the existing flow. We're confident this is the right approach. +#+end_example + +*** Detection +Uncontracted forms in publish-artifact prose where the contraction reads more naturally. Note pattern §38 catches "worth noting" as rhetorical padding. The example above shows isolated transformation. In practice both passes apply. + +*** History +- Original SKILL.md entry: contractions preferred in Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §35 Sentence Split on Conjunctions + +*** Modes +Prose and personal modes. General mode skips because academic and literary registers use long compound sentences deliberately. + +*** Rule +Split sentences that stack three or four clauses joined by "so", "and", "but" into two or three shorter sentences when the split does not lose meaning. + +*** Problem +Long compound sentences read easier as two or three shorter ones in a prose or publish-artifact body. Skip in academic or literary prose where deliberate long sentences are the register. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/commits.md). Corpus context: average sentence is 18.81 words, median 14, with 28% of sentences at 21+ words. Long-sentence rate is moderate. Inspection of actual sentences for conjunction-stitching is deferred to Phase 2. + +*** Before +#+begin_example +I added the validation step before saving so empty values get blocked at the API boundary, and I also added a regression test that exercises the empty-string case, but I did not change the upstream caller because that's a separate concern. +#+end_example + +*** After +#+begin_example +I added the validation step before saving so empty values get blocked at the API boundary. I added a regression test that exercises the empty-string case. I didn't change the upstream caller because that's a separate concern. +#+end_example + +*** Detection +Sentences that stack three or four clauses with commas and conjunctions ("so", "and", "but") where splitting on a conjunction would not lose meaning. + +*** History +- Original SKILL.md entry: sentence split on conjunctions for Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §36 Felt-Experience Narration + +*** Modes +Prose and personal modes. General mode skips because third-party prose is legitimately allowed to describe how something feels. + +*** Rule +Cut phrases that tell the reader how the change will feel or how often the writer will use it ("I'll feel this every time I commit", "this will be a relief", "I'm excited about", "this is going to be huge"). State what changed and let the reader decide what to do with it. + +*** Problem +Felt-experience phrases read as performance, not communication. They tell the reader how the writer wants them to receive the change rather than describing the change. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/commits.md). Commit-body corpus would not carry felt-experience prose; email and journal corpus deferred to Phase 2. + +*** Before +#+begin_example +I'm so excited about this — I'll feel the speedup every time I run the build. This is going to be a huge relief. +#+end_example + +*** After +#+begin_example +The build now finishes in roughly half the time it used to take. +#+end_example + +*** Detection +Phrases that tell the reader how the change will feel or how often the writer will use it. + +*** History +- Original SKILL.md entry: felt-experience narration cut for Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §37 Sentence Fragments → Complete + +*** Modes +Prose and personal modes. General mode keeps the softer §30, which exempts more, because the strong "every sentence" rule is Craig's voice and should not be imposed on third-party text. + +*** Rule +Rewrite every sentence fragment inside a prose paragraph in Craig's authored text as a complete sentence with subject and verb. Bullets and headings can stay fragments. + +*** Problem +Bullet shorthand leaking into running prose ("Two changes." "Fix incoming." "Body as decision log.") reads as bullet-list notes pasted into a paragraph. Every prose sentence needs a subject and a verb in prose and personal modes. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/commits.md). Corpus context: 9.7% of sentences are 1-5 words. Some are legitimate single-word claims ("All eight pass."), some may be fragments. Word count alone cannot distinguish. Syntactic detection deferred to Phase 2. + +*** Before +#+begin_example +Big change to the validator. Three new patterns. Test coverage up. Old behavior preserved. +#+end_example + +*** After +#+begin_example +I made a big change to the validator. There are three new patterns and the test coverage is up. The old behavior is preserved. +#+end_example + +*** Detection +Sentence fragments inside prose paragraphs in any text Craig authors: an email, a document, a working note, a commit or PR body. Bullets and headings remain fair game for fragments. + +*** History +- Original SKILL.md entry: sentence-fragment rewrite for Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §38 Terse Cut — Rhetorical Padding + +*** Modes +Prose and personal modes. General mode keeps the softer §22 because academic registers retain "worth noting" and "it's important to understand" as legitimate transition markers. + +*** Rule +Strip soft rhetorical padding ("worth noting", "it's important to understand", "as you can see", "needless to say", "obviously", "of course", "in essence", "fundamentally") and state the thing directly. + +*** Problem +Tier 1 omit-needless-words (§26) catches the most rigid offenders ("the fact that", "in order to"). Prose and personal modes are more aggressive. They also strip soft padding like "worth noting" and "it's important to understand". Academic writing often retains these as transition markers, so the aggressive cut is prose and personal only because it conflicts with that register. + +*** Basis +Corpus-measured: 2026-05-29 commit corpus shows 41.1% of paragraphs are single-sentence. Craig writes terse. Paragraph breaks land after one complete thought even when short. Confirmed indirectly via paragraph structure. + +*** Before +#+begin_example +It's worth noting that the change doesn't break the existing flow. Needless to say, the test suite is green. Obviously, this means we can ship. +#+end_example + +*** After +#+begin_example +The change doesn't break the existing flow. The test suite is green. We can ship. +#+end_example + +*** Detection +Padding phrases that add length without meaning: "worth noting", "it's important to understand", "as you can see", "needless to say", "obviously", "of course", "in essence", "fundamentally". + +*** History +- Original SKILL.md entry: rhetorical-padding cut for Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §39 Public-Artifact Scope Check + +*** Modes +Personal mode only. General and prose skip because a private journal or a third-party document has no public-scope concern. Flag only; no auto-rewrite. + +*** Rule +Flag (do not auto-rewrite) local absolute paths, private repo names, and personal-tooling references in publish artifacts. Surface each match as a WARN line so the author resolves manually. Output format: +#+begin_example +WARN: line 12: "/home/cjennings/code/rulesets" — local absolute path in commit body +WARN: line 18: "claude-rules/commits.md" — personal-tooling reference; state the underlying reason instead +#+end_example + +*** Problem +Commit messages, PR descriptions, PR comments, and Linear ticket bodies are visible to teammates and anyone with read access. References to the writer's personal layout are noise to a reader who cannot reproduce it. Auto-masking risks silently editing meaningful content because a legitimate file path mention may be load-bearing, and only the author can tell. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/commits.md, Content scope section). Corpus is the public artifacts themselves, so confirmation is circular. Deferred to Phase 2. + +*** Detection +Local absolute paths (=/home/<user>/...=, =/Users/<user>/...=), private repo names (any repo not in this project's known public set), personal-tooling references (humanizer, voice, commits.md, anything under =claude-rules/=, anything under =.ai/= or =.claude/=). + +*** History +- Original SKILL.md entry: public-artifact scope flag for personal mode. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §40 Praise vs Correction Asymmetry + +*** Modes +Personal mode only. General and prose skip because the rule assumes a PR review context. + +*** Rule +Praise on a PR review is short and unjustified (the author knows why their good change is good). Correction always explains the why, gently and briefly, the way a mentor would, never as a verdict from on high. Keep it brief either way. + +On an approve summary: praise plus verdict, nothing else. Cut any clause that describes or justifies the change. "Clean fix on the stacking bug, the tri-state is the right level to solve it at, and the tests cover the edges. Approving." becomes "Clean fix on the stacking bug. Approving." If a clause references what the code does or why it works, delete it. + +On a finding or change-request: always give the why, gently and briefly. Not "Move this to a helper." but "I'd pull this into one helper — three copies of the same rule means the next change has to touch all three, and missing one brings the bug back." + +*** Problem +Praise and correction call for opposite treatment. The author already knows why their good change is good, so justifying praise reads as flattery. Correction is the reverse. Behavior only changes when the reason lands, so a finding, change-request, or inline coaching note must always explain the why. And the why is delivered gently, the way a kind coach or mentor would. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/commits.md, Voice and Focus section). PR-review corpus needed for empirical measurement. Deferred to Phase 2. + +*** Before +#+begin_example +Nice clean migration, the provider mocks and the Normal/Boundary/Error cases are all covered which is exactly what I'd want here. Approving. Also rename `x`. +#+end_example + +*** After +#+begin_example +Clean migration. Approving. One note inline: I'd rename `x` to `provider` — it reads as a generic placeholder and the next person won't know it's the resolved provider without tracing it. +#+end_example + +*** Detection +In a PR review summary or comment: a praise clause that explains why the good thing is good, or a finding or change-request that states what to fix without saying why. + +*** History +- Original SKILL.md entry: praise-versus-correction asymmetry for PR review. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. + +** §41 No Emphasis Formatting + +*** Modes +Prose and personal modes. General mode keeps the related but mechanical §14 (boldface strip). §41 carries Craig's own principle and covers italics and underscores too. + +*** Rule +Remove emphasis markup (bold, italics, underscore-wrapped words) used to stress a phrase in Craig's prose, and rephrase so the stress lives in word choice and sentence shape. Structural markup stays: headings, defined terms on first use where the convention is house style, code spans for literal identifiers. + +*** Problem +Craig makes his points with words, not formatting. Emphasis markup is a crutch. When a sentence leans on bold or italics to land, the wording is not doing the work. The fix is not to delete the markup and leave a flat sentence. It is to rephrase so the stress lives in the word choice and sentence shape. This is the same principle behind his terminal-rendering rule in chat, but here it is about the writing itself, not the display. + +*** Basis +Observation-derived (Craig's voice rules in claude-rules/interaction.md, No Reverse-Video Highlighting rule). Org-mode bold uses =*word*= rather than Markdown =**word**= so corpus grep for Markdown emphasis is not directly applicable. Corpus measurement deferred to Phase 2. + +*** Before +#+begin_example +This is **really** important: you must run the migration *before* deploying, or the app will crash. +#+end_example + +*** After +#+begin_example +Run the migration before deploying. Skip that step and the app crashes on the first request. +#+end_example + +*** Detection +Bold (=**...**=), italic (=*...*= or =_..._=), or underscore-wrapped words used to emphasize a phrase in Craig's prose. + +*** History +- Original SKILL.md entry: no emphasis formatting for Craig's authored prose. +- 2026-05-29: migrated to this file as the canonical home per the pairing rule. |
