@holdyourvoice/hyv 2.9.28 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +17 -22
- package/Readme.md +247 -0
- package/dist/ai-editor.js +9 -0
- package/dist/ai-editor.test.js +61 -0
- package/dist/cli.js +106 -0
- package/dist/cli.test.js +119 -0
- package/dist/contracts.js +1 -0
- package/dist/pipeline.js +64 -0
- package/dist/pipeline.test.js +36 -0
- package/dist/release-audit.test.js +29 -0
- package/dist/text.js +42 -0
- package/dist/text.test.js +16 -0
- package/dist/voice-dna.js +77 -0
- package/dist/voice-dna.test.js +32 -0
- package/package.json +14 -74
- package/CHANGELOG.md +0 -241
- package/README.md +0 -218
- package/agents/AGENTS.md +0 -82
- package/agents/README.md +0 -20
- package/agents/chatgpt.md +0 -47
- package/agents/claude-code.md +0 -45
- package/agents/codex.md +0 -31
- package/agents/cursor.md +0 -36
- package/agents/generic.md +0 -49
- package/agents/windsurf.md +0 -20
- package/assets/FREE-PAID.md +0 -46
- package/assets/README.md +0 -20
- package/assets/ai-eliminator-rules.md +0 -140
- package/assets/chatgpt-instructions.txt +0 -8
- package/assets/detection-rules.json +0 -18
- package/assets/economic-drift-voice.md +0 -42
- package/assets/voice-dna-template.md +0 -88
- package/assets/voice-profile-schema.json +0 -28
- package/dist/index.js +0 -20911
- package/scripts/README.md +0 -23
- package/scripts/check-no-duplicates.js +0 -32
- package/scripts/install.ps1 +0 -101
- package/scripts/install.sh +0 -155
- package/scripts/postinstall-lib.js +0 -796
- package/scripts/postinstall.js +0 -35
- package/skills/README.md +0 -20
- package/skills/ai-writing-eliminator/SKILL.md +0 -63
- package/skills/hold-your-voice/SKILL.md +0 -174
- package/skills/voice-matcher/SKILL.md +0 -57
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# AI Eliminator Rules (v2 — 220+ patterns + structural signals)
|
|
2
|
-
|
|
3
|
-
Use these rules to remove AI-generated cadence without erasing the writer.
|
|
4
|
-
|
|
5
|
-
## Core Rule
|
|
6
|
-
|
|
7
|
-
Fix the exact line that drifted. Do not rewrite a whole draft when one sentence
|
|
8
|
-
is the problem. Preserve clean surrounding lines.
|
|
9
|
-
|
|
10
|
-
## Detection Coverage
|
|
11
|
-
|
|
12
|
-
The algorithm now detects 220+ named AI writing patterns organized across 31
|
|
13
|
-
composite regex rules, plus structural/rhythmic analysis of: burstiness
|
|
14
|
-
(sentence length variance), paragraph rhythm uniformity, contraction density,
|
|
15
|
-
formal hedging, generic intensifiers, fragment ratio, over-structured list
|
|
16
|
-
patterns, and uniform sentence rhythm within paragraphs.
|
|
17
|
-
|
|
18
|
-
## Banned Pattern Categories
|
|
19
|
-
|
|
20
|
-
### Binary reframing & negation (#1, #210-212)
|
|
21
|
-
- "It's not X, it's Y" / "The point isn't X, it's Y"
|
|
22
|
-
- "You don't need X, you need Y"
|
|
23
|
-
- "Not just X, but Y" / "Not only... but also"
|
|
24
|
-
- **structural cousins (top priority):** cross-sentence forms the vocabulary scan misses:
|
|
25
|
-
- "This is not X. It is Y." / "Is not X. It is Y."
|
|
26
|
-
- "You are not X. You are Y." / "You are no longer X. You are Y."
|
|
27
|
-
- "You stop X. You start Y."
|
|
28
|
-
- "They don't need X. They need Y."
|
|
29
|
-
- "They call it X. They call it Y." (staccato anaphora)
|
|
30
|
-
- Parallel sermon: "X because… / they X because…" and "endure through… / they endure through…"
|
|
31
|
-
- Founder-carousel metaphors: "competing with the void", "architect of a new reality", "friction into momentum", "cognitive architecture", "defines what good looks like", "the hidden goal", "quiet promise", "simple but uncomfortable:"
|
|
32
|
-
|
|
33
|
-
**Tier 1 priority:** rules with ids `structural_*` and `founder_*` are primary flags. They sort first in scan output, win hit-budget slots in the editor, weigh heavier in cleanliness scoring, lead rewrite prompts, and gate rewrite output before vocabulary slop.
|
|
34
|
-
|
|
35
|
-
### Staccato drama (#2, #95, #96)
|
|
36
|
-
- Short punchy sentence runs: "No X. No Y. Just Z."
|
|
37
|
-
- Perfectly even sentence rhythm throughout paragraphs
|
|
38
|
-
- Three short sentences in a row (performance cadence)
|
|
39
|
-
|
|
40
|
-
### Landscape/era grandstanding (#3, #181-188)
|
|
41
|
-
- "In today's fast-paced world" / "ever-evolving landscape"
|
|
42
|
-
- "Now more than ever" / "as never before"
|
|
43
|
-
- "Has never been more important"
|
|
44
|
-
- "In the digital age" / "new era of X"
|
|
45
|
-
- "The rise of X" / "increasingly + adjective"
|
|
46
|
-
|
|
47
|
-
### Truth/reality posturing (#22, #110, #161-163)
|
|
48
|
-
- "The truth is" / "the reality is" / "here's the truth"
|
|
49
|
-
- "The harsh/ugly/brutal reality" / "real talk"
|
|
50
|
-
- "Brutal honesty" / "reality check"
|
|
51
|
-
|
|
52
|
-
### Hedging & non-committal (#4, #53-55, #89, #197-199)
|
|
53
|
-
- "It depends, but" / "no one-size-fits-all"
|
|
54
|
-
- "It can be tempting to" / "you might be tempted to"
|
|
55
|
-
- "In many ways" / "at first it might seem"
|
|
56
|
-
|
|
57
|
-
### Transitions & balance (#7, #38-40, #81, #91, #203)
|
|
58
|
-
- "On the one hand / on the other hand"
|
|
59
|
-
- "On the flip side" / "that said" / "however"
|
|
60
|
-
- "Moreover / furthermore / in addition" chains
|
|
61
|
-
- "At first glance vs on closer inspection"
|
|
62
|
-
|
|
63
|
-
### Let's/invitation patterns (#5, #63-65, #80, #127)
|
|
64
|
-
- "Let's dive in" / "let's explore" / "let's break it down"
|
|
65
|
-
- "Delve into" / "dive deeper" / "deep dive"
|
|
66
|
-
- "Navigate the complex landscape"
|
|
67
|
-
|
|
68
|
-
### Empathy opener (#21, #74-75, #107, #164-165)
|
|
69
|
-
- "It's easy to feel X" / "you're not alone"
|
|
70
|
-
- "You're not imagining it" / "you deserve"
|
|
71
|
-
- "Shouting into the void"
|
|
72
|
-
|
|
73
|
-
### Founder/thought-leader cadence (#72-73, #104-109)
|
|
74
|
-
- "Here's the thing" / "and honestly?"
|
|
75
|
-
- "Here's the kicker" / "the part most people miss"
|
|
76
|
-
- "What nobody's saying" / "the best part?"
|
|
77
|
-
- "Same X. Better Y." / "the moment X becomes Y"
|
|
78
|
-
|
|
79
|
-
### Marketing verbs (#61-62, #83, #114-117, #145-150)
|
|
80
|
-
- "Unlock the power of" / "harness the power of"
|
|
81
|
-
- "Transform/elevate/take to the next level"
|
|
82
|
-
- "Master the art of" / "game-changer"
|
|
83
|
-
- "Supercharge / turbocharge / on steroids"
|
|
84
|
-
|
|
85
|
-
### Journey/destination clichés (#59, #84, #122, #144, #214-215)
|
|
86
|
-
- "X isn't a destination; it's a journey"
|
|
87
|
-
- "No matter where you are on your journey"
|
|
88
|
-
- "Embark on" / "you're still early" / "it's still day one"
|
|
89
|
-
|
|
90
|
-
### Metaphor clusters (#18, #120-121, #159-160, #167-168, #173-180)
|
|
91
|
-
- "Beacon / lighthouse / tapestry / symphony / tides"
|
|
92
|
-
- "Silent killer / hidden gem / tip of the iceberg"
|
|
93
|
-
- "North star / double-edged sword / blessing and a curse"
|
|
94
|
-
- "Noise vs signal" / "X is the new Y"
|
|
95
|
-
- "Flood / avalanche / tsunami of X"
|
|
96
|
-
|
|
97
|
-
### Guide/article framing (#11-13, #27-28, #136-138)
|
|
98
|
-
- "You're in the right place" / "here's a step-by-step guide"
|
|
99
|
-
- "First, second, third" / "key takeaways" / "actionable tips"
|
|
100
|
-
- "In this article/guide/post" / "this piece explores"
|
|
101
|
-
|
|
102
|
-
### Wrapping/closing (#9, #14-15, #51-52, #66, #93, #103, #189, #217)
|
|
103
|
-
- "At the end of the day" / "the bottom line is"
|
|
104
|
-
- "In conclusion / in summary / to recap"
|
|
105
|
-
- "Let that sink in" / "only time will tell"
|
|
106
|
-
- "Curious what others think" / "let me know if you need help"
|
|
107
|
-
|
|
108
|
-
### UX/business buzzwords (#92, #123-126, #155-157)
|
|
109
|
-
- "Robust, scalable, innovative, impactful"
|
|
110
|
-
- "Seamless experience" / "frictionless journey"
|
|
111
|
-
- "Pain points" / "wealth of insights"
|
|
112
|
-
|
|
113
|
-
### Story/temporal templates (#17, #32-33, #113, #216, #218-219)
|
|
114
|
-
- "Imagine this / picture this"
|
|
115
|
-
- "Storytelling has been around for centuries"
|
|
116
|
-
- "Little did I know" / "at first I was skeptical"
|
|
117
|
-
- "The best time was X, the second-best time is now"
|
|
118
|
-
|
|
119
|
-
## Structural Signals (Beyond Individual Words)
|
|
120
|
-
|
|
121
|
-
- **Low burstiness**: Sentence lengths all similar (coefficient of variation < 0.35)
|
|
122
|
-
- **Mechanical paragraphs**: All paragraphs nearly identical sentence count
|
|
123
|
-
- **Over-structured lists**: Rigid 3-item lists throughout
|
|
124
|
-
- **Uniform paragraph rhythm**: Most sentences fall in 12-22 word range
|
|
125
|
-
- **Low contractions**: < 0.8 contractions per 100 words (overly formal)
|
|
126
|
-
- **Formal hedging density**: 2+ institutional hedging phrases
|
|
127
|
-
- **Generic intensifiers**: 3+ "remarkably/incredibly/amazingly" instances
|
|
128
|
-
- **No fragments**: Zero sentence fragments in 20+ sentences (over-polished)
|
|
129
|
-
|
|
130
|
-
## What To Do Instead
|
|
131
|
-
|
|
132
|
-
- Start from rough private-note material: an exact edit, meeting fragment,
|
|
133
|
-
dashboard annoyance, customer confusion, half-remembered sentence, or internal
|
|
134
|
-
contradiction.
|
|
135
|
-
- Let the idea move because the logic moves, not because line breaks perform.
|
|
136
|
-
- Prefer concrete scenes, mechanisms, quoted language, and specific stakes.
|
|
137
|
-
- Let some pieces end on a detail, hesitation, unresolved thought, or awkwardly
|
|
138
|
-
specific observation.
|
|
139
|
-
- If a line sounds like a maxim, a carousel, or a model trying to be sharp,
|
|
140
|
-
make it plainer and more grounded.
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
when i ask you to "write in my voice" or "rewrite this in my voice":
|
|
2
|
-
|
|
3
|
-
- read `~/.hyv/voice.md` for my voice profile
|
|
4
|
-
- run `hyv rewrite --text "<text>"` to get the structured prompt
|
|
5
|
-
- execute the prompt and rewrite the text
|
|
6
|
-
- match my rhythm, vocabulary, and patterns exactly
|
|
7
|
-
- never use words i avoid
|
|
8
|
-
- present the rewritten version
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "1.0.0",
|
|
3
|
-
"engine": "node",
|
|
4
|
-
"source": "cli/src/lib/signals.ts",
|
|
5
|
-
"updated": "2026-06-12",
|
|
6
|
-
"categories": {
|
|
7
|
-
"ai-slop": { "description": "Dead AI language and overused words", "severity_default": "red" },
|
|
8
|
-
"voice-drift": { "description": "Hedging, generic openers, voice drift", "severity_default": "yellow" },
|
|
9
|
-
"structure": { "description": "Formulaic structure and antithesis tells", "severity_default": "yellow" },
|
|
10
|
-
"cadence": { "description": "Sentence rhythm violations", "severity_default": "yellow" },
|
|
11
|
-
"learned": { "description": "User-specific learned patterns", "severity_default": "yellow" },
|
|
12
|
-
"engagement-bait": { "description": "Engagement bait patterns", "severity_default": "red" },
|
|
13
|
-
"ai-cringe": { "description": "AI cringe phrases", "severity_default": "yellow" },
|
|
14
|
-
"insider-claim": { "description": "Insider knowledge claims", "severity_default": "yellow" }
|
|
15
|
-
},
|
|
16
|
-
"pattern_count": 220,
|
|
17
|
-
"notes": "Node signals.ts is canonical for npm package. Server syncs this manifest; supplemental rules may ship in ~/.hyv/cache/supplemental-rules.json"
|
|
18
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Economic Drift Voice
|
|
2
|
-
|
|
3
|
-
Economic Drift is the default Shashank voice profile when the user asks for
|
|
4
|
-
"my voice" and no fresher project samples are available. Do not force it onto a
|
|
5
|
-
different writer when their own samples exist.
|
|
6
|
-
|
|
7
|
-
## Philosophy
|
|
8
|
-
|
|
9
|
-
High-signal, low-friction writing. The reader should get a lot without working
|
|
10
|
-
hard. The tone feels like a private conversation with someone smart, slightly
|
|
11
|
-
cynical, and not performing for approval.
|
|
12
|
-
|
|
13
|
-
## Style
|
|
14
|
-
|
|
15
|
-
- Open with a concrete observation, moment, mechanism, or pattern.
|
|
16
|
-
- Avoid lesson openers, question openers, inspirational claims, and generic
|
|
17
|
-
category summaries.
|
|
18
|
-
- Use contrarian tension only when the real point is uncomfortable, not for
|
|
19
|
-
cheap shock.
|
|
20
|
-
- Mix simple language with dense thinking.
|
|
21
|
-
- Let sentence length vary naturally. No theatrical staccato.
|
|
22
|
-
- Favor rough private-note texture: exact edits, customer confusion, dashboard
|
|
23
|
-
annoyances, meeting fragments, internal contradictions.
|
|
24
|
-
- Do not turn every piece into a tidy lesson. Some endings should stop on a
|
|
25
|
-
detail or unresolved thought.
|
|
26
|
-
- Use lowercase when writing in Shashank's deliberate social-writing style,
|
|
27
|
-
unless the user or target format asks otherwise.
|
|
28
|
-
|
|
29
|
-
## Hard Bans
|
|
30
|
-
|
|
31
|
-
- `here's the thing`
|
|
32
|
-
- `let's be honest`
|
|
33
|
-
- `at the end of the day`
|
|
34
|
-
- `which is another way of saying`
|
|
35
|
-
- `in other words`
|
|
36
|
-
- `the moment x becomes y`
|
|
37
|
-
- `same x. better y.`
|
|
38
|
-
- motivational poster energy
|
|
39
|
-
- screenshot-ready punchline cadence
|
|
40
|
-
- generic founder advice
|
|
41
|
-
- bullets, hashtags, emojis, and bold emphasis in social prose unless requested
|
|
42
|
-
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# Voice DNA
|
|
2
|
-
|
|
3
|
-
## Writing Rules
|
|
4
|
-
- Write like a sharp human, not a language model.
|
|
5
|
-
- Use contractions naturally (don't, can't, won't).
|
|
6
|
-
- Short paragraphs. 1-3 sentences max.
|
|
7
|
-
- Get to the point. No throat-clearing, no preamble.
|
|
8
|
-
- If making a claim, be specific. Use numbers, names, concrete details.
|
|
9
|
-
- Vary sentence length. Mix short punchy lines with longer ones.
|
|
10
|
-
- Use natural transitions, not mechanical ones ("Furthermore," "Additionally").
|
|
11
|
-
- When uncertain, say so plainly ("I think," "probably," "kinda"). Hedging is human.
|
|
12
|
-
- Never pad output to seem more thorough. Shorter and accurate beats longer and fluffy.
|
|
13
|
-
- Use physical verbs for abstract processes: "sanded down" not "improved," "bolted on" not "added," "stripped back" not "simplified."
|
|
14
|
-
- Humor comes from specificity, not from jokes. Be unexpectedly precise.
|
|
15
|
-
- Parenthetical asides are good. Use them for editorial commentary, honest reactions, quick tangents, and deflating your own seriousness (like this).
|
|
16
|
-
- Write the way you talk. Naturally.
|
|
17
|
-
- Use short words, short sentences, short paragraphs.
|
|
18
|
-
- Never use jargon. Pretend the reader is smart but unfamiliar with the topic.
|
|
19
|
-
- Read every sentence aloud in your head. If you'd stumble saying it, rewrite it.
|
|
20
|
-
- Be crystal clear about what you want the reader to do next.
|
|
21
|
-
|
|
22
|
-
## Formatting Rules
|
|
23
|
-
- Short paragraphs (1-2 sentences default, 3 max).
|
|
24
|
-
- Numbers as digits.
|
|
25
|
-
- Contractions always.
|
|
26
|
-
- NO em dashes ever. Use commas, periods, colons, semicolons, or parentheses.
|
|
27
|
-
- Bold sparingly, 1-2 key moments per section.
|
|
28
|
-
- Code blocks for specific prompts, commands, or tool outputs.
|
|
29
|
-
|
|
30
|
-
## Banned Phrases
|
|
31
|
-
|
|
32
|
-
### Dead AI Language
|
|
33
|
-
- "In today's [anything]..."
|
|
34
|
-
- "It's important to note that..." / "It's worth noting..."
|
|
35
|
-
- "Delve" / "Dive into" / "Unpack"
|
|
36
|
-
- "Harness" / "Leverage" / "Utilize"
|
|
37
|
-
- "Landscape" / "Realm" / "Robust"
|
|
38
|
-
- "Game-changer" / "Cutting-edge" / "State-of-the-art"
|
|
39
|
-
- "Straightforward"
|
|
40
|
-
- "I'd be happy to help"
|
|
41
|
-
- "In order to"
|
|
42
|
-
|
|
43
|
-
### Dead Transitions
|
|
44
|
-
- "Furthermore" / "Additionally" / "Moreover"
|
|
45
|
-
- "Moving forward" / "At the end of the day"
|
|
46
|
-
- "To put this in perspective..."
|
|
47
|
-
- "What makes this particularly interesting is..."
|
|
48
|
-
- "The implications here are..."
|
|
49
|
-
- "In other words..."
|
|
50
|
-
- "It goes without saying..."
|
|
51
|
-
|
|
52
|
-
### Engagement Bait
|
|
53
|
-
- "Let that sink in" / "Read that again" / "Full stop"
|
|
54
|
-
- "This changes everything"
|
|
55
|
-
- "Are you paying attention?"
|
|
56
|
-
- "You're not ready for this"
|
|
57
|
-
|
|
58
|
-
### AI Cringe
|
|
59
|
-
- "Supercharge" / "Unlock" / "Future-proof"
|
|
60
|
-
- "10x your productivity"
|
|
61
|
-
- "The AI revolution"
|
|
62
|
-
- "In the age of AI"
|
|
63
|
-
|
|
64
|
-
### Generic Insider Claims
|
|
65
|
-
- "Here's the part nobody's talking about"
|
|
66
|
-
- "What nobody tells you"
|
|
67
|
-
- Anything with "nobody" or "most people don't realize"
|
|
68
|
-
|
|
69
|
-
### The Big One (FATAL)
|
|
70
|
-
- "This isn't X. This is Y." and ALL variations.
|
|
71
|
-
- "Not X. Y."
|
|
72
|
-
- "Forget X. This is Y."
|
|
73
|
-
- "Less X, more Y."
|
|
74
|
-
- ANY sentence that negates one framing then asserts a corrected one.
|
|
75
|
-
- If even ONE of these appears, the output fails. Delete the negation, just state the positive claim.
|
|
76
|
-
|
|
77
|
-
### Business Jargon (Ogilvy Rule)
|
|
78
|
-
- "Utilize" / "Leverage" / "Synergy"
|
|
79
|
-
- "Circle back" / "Touch base" / "Take it offline"
|
|
80
|
-
- "Low-hanging fruit" / "Move the needle" / "Bandwidth"
|
|
81
|
-
- "Deep dive" / "Boil the ocean"
|
|
82
|
-
|
|
83
|
-
## Writing Samples
|
|
84
|
-
|
|
85
|
-
<!-- Paste your writing here. The more you give, the better the voice match.
|
|
86
|
-
Google docs, emails, blog posts, Slack messages, reports.
|
|
87
|
-
Pre-AI writing is best — your voice before it blended with AI defaults. -->
|
|
88
|
-
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"profile_version": "hold-your-voice-portable-v1",
|
|
3
|
-
"name": "project voice",
|
|
4
|
-
"source_count": 0,
|
|
5
|
-
"word_count": 0,
|
|
6
|
-
"sentence": {
|
|
7
|
-
"avg_words": 0,
|
|
8
|
-
"variance": "medium"
|
|
9
|
-
},
|
|
10
|
-
"paragraph": {
|
|
11
|
-
"avg_sentences": 0
|
|
12
|
-
},
|
|
13
|
-
"signature": {
|
|
14
|
-
"case_style": "mixed",
|
|
15
|
-
"argument_pattern": "mixed",
|
|
16
|
-
"opening_moves": [],
|
|
17
|
-
"cadence": [],
|
|
18
|
-
"anchors": [],
|
|
19
|
-
"never_list": []
|
|
20
|
-
},
|
|
21
|
-
"voice_rules": [],
|
|
22
|
-
"ai_eliminator": {
|
|
23
|
-
"rewrite_scope": "flagged-lines-only",
|
|
24
|
-
"preserve_surrounding_lines": true,
|
|
25
|
-
"avoid_polished_founder_cadence": true
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|