aboutsummaryrefslogtreecommitdiff
path: root/voice/SKILL.md
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-29 16:21:07 -0500
committerCraig Jennings <c@cjennings.net>2026-05-29 16:21:07 -0500
commit10d0bc1ac516b44625e44ee34a31b2207e5ce34e (patch)
tree6c9ad37a550ddcb6bf7242607cb8a13d2b7c8c2c /voice/SKILL.md
parent296b2e684d73c70bdf6b42407ddf86c0cb7ba493 (diff)
downloadrulesets-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/SKILL.md')
-rw-r--r--voice/SKILL.md480
1 files changed, 120 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