@holdyourvoice/hyv 2.3.0 → 2.4.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.
@@ -1,63 +0,0 @@
1
- ---
2
- name: ai-writing-eliminator
3
- description: Use when the user wants to remove AI writing patterns, humanize a draft, make prose less generic, scan for AI cadence, or rewrite only the lines that sound synthetic.
4
- ---
5
-
6
- # AI Writing Eliminator (v2)
7
-
8
- This skill removes machine-shaped writing without destroying the draft. The
9
- algorithm now detects 220+ named AI writing patterns across 31 composite regex
10
- rules, plus 9 structural/rhythmic signals (burstiness, paragraph uniformity,
11
- contraction density, formal hedging, intensifier overuse, fragment ratio,
12
- staccato detection, over-structured lists, uniform sentence rhythm).
13
-
14
- ## Non-Negotiables
15
-
16
- - Fix flagged lines only unless the user asks for a full rewrite.
17
- - Preserve the original argument and local meaning.
18
- - Do not add praise, summaries, preambles, CTAs, or extra sections.
19
- - Do not replace specific roughness with smooth generic prose.
20
- - After editing, rescan the result.
21
-
22
- ## Scan
23
-
24
- - Fix flagged lines only unless the user asks for a full rewrite.
25
- - Preserve the original argument and local meaning.
26
- - Do not add praise, summaries, preambles, CTAs, or extra sections.
27
- - Do not replace specific roughness with smooth generic prose.
28
- - After editing, rescan the result.
29
-
30
- ## Scan
31
-
32
- Use the helper script when a draft is in a file:
33
-
34
- ```bash
35
- hyv scan <draft path>
36
- ```
37
-
38
- For pasted text, apply the same rules manually from
39
- `assets/ai-eliminator-rules.md`.
40
-
41
- ## Repair Prompt
42
-
43
- When a model rewrite is needed, generate a line-level prompt:
44
-
45
- ```bash
46
- hyv rewrite-prompt \
47
- --profile .hold-your-voice/voice-profile.json \
48
- <draft path>
49
- ```
50
-
51
- If there is no profile, still repair the AI patterns, but do not claim the
52
- result is voice-matched.
53
-
54
- ## Bad Fixes
55
-
56
- Reject fixes that:
57
-
58
- - turn the draft into a tidy founder post
59
- - make every paragraph land as a lesson
60
- - replace a concrete scene with an abstract principle
61
- - use dramatic line breaks to fake rhythm
62
- - make the writer sound more professional but less specific
63
-
@@ -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,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,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,24 +0,0 @@
1
- ## Hold Your Voice — automated voice rewriting
2
-
3
- when the user asks to "write in my voice", "rewrite this in my voice", or "make this sound like me":
4
-
5
- 1. read their voice profile at `~/.hyv/voice.md`
6
- 2. run `hyv rewrite --text "<their text>"` to generate a structured rewrite prompt
7
- 3. execute the prompt — rewrite the text yourself using your own llm
8
- 4. present the rewritten text
9
- 5. when the user accepts it, run `hyv reinforce original.md edited.md` to teach the system
10
-
11
- ### available commands
12
-
13
- - `hyv scan <file>` — check a draft for voice drift and ai patterns
14
- - `hyv rewrite <file>` — generate a rewrite prompt for your llm
15
- - `hyv validate <file>` — verify a rewrite matches the voice profile
16
- - `hyv reinforce <original> <edited>` — teach the system what was accepted
17
- - `hyv sync` — refresh cached profiles and rules
18
- - `hyv status` — show auth and plan info
19
-
20
- ### important
21
-
22
- - hyv never calls an llm. it generates prompts you execute yourself.
23
- - voice profiles live at `~/.hyv/voice.md`
24
- - always call `hyv validate` after rewriting to verify the result
@@ -1,24 +0,0 @@
1
- ## Hold Your Voice — automated voice rewriting
2
-
3
- when the user asks to "write in my voice", "rewrite this in my voice", or "make this sound like me":
4
-
5
- 1. read their voice profile at `~/.hyv/voice.md`
6
- 2. run `hyv rewrite --text "<their text>"` to generate a structured rewrite prompt
7
- 3. execute the prompt — rewrite the text yourself using your own llm
8
- 4. present the rewritten text
9
- 5. when the user accepts it, run `hyv reinforce original.md edited.md` to teach the system
10
-
11
- ### available commands
12
-
13
- - `hyv scan <file>` — check a draft for voice drift and ai patterns
14
- - `hyv rewrite <file>` — generate a rewrite prompt for your llm
15
- - `hyv validate <file>` — verify a rewrite matches the voice profile
16
- - `hyv reinforce <original> <edited>` — teach the system what was accepted
17
- - `hyv sync` — refresh cached profiles and rules
18
- - `hyv status` — show auth and plan info
19
-
20
- ### important
21
-
22
- - hyv never calls an llm. it generates prompts you execute yourself.
23
- - voice profiles live at `~/.hyv/voice.md`
24
- - always call `hyv validate` after rewriting to verify the result
@@ -1,12 +0,0 @@
1
- # Hold Your Voice — Cursor Rules
2
-
3
- when writing or rewriting content, match the voice profile below. do not use AI-slop words (delve, leverage, tapestry, in today's fast-paced, not just X but Y, etc.). match rhythm, vocabulary, and sentence patterns from the profile.
4
-
5
- your voice profile is at `~/.hyv/voice.md`. load it and use it as your writing guide.
6
-
7
- when the user says "rewrite in my voice", "make this sound like me", or similar:
8
-
9
- 1. run: `hyv rewrite --text "<text>"`
10
- 2. the cli generates a structured rewrite prompt
11
- 3. execute the prompt yourself — rewrite the text matching the voice profile
12
- 4. present the result
@@ -1,12 +0,0 @@
1
- # Hold Your Voice — Cursor Rules
2
-
3
- when writing or rewriting content, match the voice profile below. do not use AI-slop words (delve, leverage, tapestry, in today's fast-paced, not just X but Y, etc.). match rhythm, vocabulary, and sentence patterns from the profile.
4
-
5
- your voice profile is at `~/.hyv/voice.md`. load it and use it as your writing guide.
6
-
7
- when the user says "rewrite in my voice", "make this sound like me", or similar:
8
-
9
- 1. run: `hyv rewrite --text "<text>"`
10
- 2. the cli generates a structured rewrite prompt
11
- 3. execute the prompt yourself — rewrite the text matching the voice profile
12
- 4. present the result
@@ -1,12 +0,0 @@
1
- # Hold Your Voice — Cursor Rules
2
-
3
- when writing or rewriting content, match the voice profile below. do not use AI-slop words (delve, leverage, tapestry, in today's fast-paced, not just X but Y, etc.). match rhythm, vocabulary, and sentence patterns from the profile.
4
-
5
- your voice profile is at `~/.hyv/voice.md`. load it and use it as your writing guide.
6
-
7
- when the user says "rewrite in my voice", "make this sound like me", or similar:
8
-
9
- 1. run: `hyv rewrite --text "<text>"`
10
- 2. the cli generates a structured rewrite prompt
11
- 3. execute the prompt yourself — rewrite the text matching the voice profile
12
- 4. present the result
@@ -1,174 +0,0 @@
1
- ---
2
- name: hyv-hold-your-voice
3
- description: "Use when the user wants Hold Your Voice-style writing help across any project: build a voice profile from samples, match a writer's voice, remove AI-writing drift, rewrite drafts without flattening voice, or preserve project-specific writing style."
4
- ---
5
-
6
- # Hold Your Voice
7
-
8
- This is the orchestration skill. Use the narrower `voice-matcher` and
9
- `ai-writing-eliminator` skills when a task is only one half of the workflow.
10
-
11
- ## Core Doctrine
12
-
13
- - Hold Your Voice is not a generic AI humanizer. It is a voice-preservation
14
- layer around the writing.
15
- - The benchmark is the writer's own samples, not a universal "good writing"
16
- style guide.
17
- - Trust samples over stated preferences when they disagree.
18
- - Rewrite only the lines that fail the voice or AI-pattern check.
19
- - Preserve surrounding text unless the user explicitly asks for a full rewrite.
20
- - Rough private-note texture beats polished founder cadence.
21
-
22
- ## Workflow
23
-
24
- 1. Identify the target writer and output format.
25
- 2. Find or ask for source samples. Prefer real writing from the current project:
26
- posts, emails, essays, docs, landing copy, changelog notes, founder notes.
27
- 3. Build a profile when no current profile exists:
28
-
29
- ```bash
30
- hyv profile \
31
- --name "project voice" \
32
- --out .hold-your-voice/voice-profile.json \
33
- <sample paths>
34
- ```
35
-
36
- 4. Scan the draft:
37
-
38
- ```bash
39
- hyv scan \
40
- --meta .hold-your-voice/voice-profile.meta.json \
41
- <draft path>
42
- ```
43
-
44
- Passing `--meta` skips patterns the system has learned are not applicable.
45
-
46
- 5. Rewrite by line, not by vibe:
47
-
48
- ```bash
49
- hyv rewrite-prompt \
50
- --profile .hold-your-voice/voice-profile.json \
51
- --meta .hold-your-voice/voice-profile.meta.json \
52
- <draft path>
53
- ```
54
-
55
- 6. Verify by rescanning the revised draft.
56
-
57
- ## Output Standard
58
-
59
- When returning prose to the user, lead with the finished writing. Keep process
60
- notes short. If you changed only flagged lines, say that plainly.
61
-
62
- For project work, store generated profiles under:
63
-
64
- ```text
65
- .hold-your-voice/voice-profile.json
66
- ```
67
-
68
- Do not store private samples inside the plugin folder. Keep project-specific
69
- profiles inside the project that owns the writing.
70
-
71
- ## Auto-Improvement (default)
72
-
73
- The profile **evolves automatically** after every accepted writing session. No
74
- manual reinforce or update commands needed.
75
-
76
- ### How it works
77
-
78
- After the user accepts a revision, run **one command**:
79
-
80
- ```bash
81
- hyv profile-evolve \
82
- --original <original draft file> \
83
- --accepted <accepted/output draft file> \
84
- --profile .hold-your-voice/voice-profile.json
85
- ```
86
-
87
- Optional: `--new-samples <paths>` to merge new writing samples in the same step.
88
- Optional: `--meta <path>` if you need a custom meta file location (defaults to
89
- `voice-profile.meta.json` alongside the profile).
90
-
91
- This does three things simultaneously:
92
-
93
- 1. **Signal extraction** — diffs original vs accepted to find which AI patterns
94
- the user agreed with (`patterns_accepted`) vs overrode (`patterns_overridden`).
95
- 2. **Temporal meta update** — each pattern now tracks `first_seen`,
96
- `last_confirmed`, `contradictions`, `confidence` (0.0–1.0), and status
97
- (`active` / `declining` / `stale`). Accepted signals boost confidence.
98
- Overrides penalize it. Untouched patterns slowly decay.
99
- 3. **Profile stat merge** — sentence length, paragraph shape, and opening moves
100
- use weighted rolling averages so the voice benchmark improves with every
101
- session.
102
-
103
- ### Pattern lifecycle
104
-
105
- - **Active** — confidence ≥ 0.30, last confirmed within 14 days. These
106
- patterns fire during scans.
107
- - **Declining** — 3+ contradictions and confidence < 0.30. Still tracked
108
- but no longer flagged in scan output.
109
- - **Stale** — 5+ contradictions and confidence < 0.15, or untouched for
110
- > 14 days. Archived; does not fire.
111
-
112
- This means after a few days of usage:
113
-
114
- - Patterns the user consistently accepts (e.g., "inflated_verbs") become
115
- high-confidence and reliably flag real AI drift.
116
- - Patterns the user consistently ignores (e.g., "the user's writing style
117
- uses landscape-era phrasing intentionally") quietly fade out.
118
- - The profile's sentence/paragraph stats converge on the actual voice.
119
-
120
- ### Check learning state
121
-
122
- ```bash
123
- hyv profile-status \
124
- --profile .hold-your-voice/voice-profile.json
125
- ```
126
-
127
- Optional: `--write-voice voice.md` produces the human-readable voice profile
128
- with confidence bars per pattern.
129
-
130
- ### Auto-sync to cloud (daily)
131
-
132
- `profile-evolve` automatically tries to sync to Cloudflare R2 after each
133
- evolution. Sync only happens if:
134
-
135
- - The env vars `HYV_R2_ACCESS_KEY_ID`, `HYV_R2_SECRET_ACCESS_KEY`,
136
- `HYV_R2_ENDPOINT`, `HYV_R2_BUCKET` are set.
137
- - The last sync was more than 23 hours ago (no wasteful pushes).
138
- - The payload is under 1MB (safety cap).
139
-
140
- To set up one-time:
141
-
142
- ```bash
143
- export HYV_R2_ACCESS_KEY_ID="your-access-key"
144
- export HYV_R2_SECRET_ACCESS_KEY="your-secret-key"
145
- export HYV_R2_ENDPOINT="https://<account-id>.r2.cloudflarestorage.com"
146
- export HYV_R2_BUCKET="hyv-voice-profiles"
147
- pip install boto3 # only dependency
148
- ```
149
-
150
- R2 has **zero egress fees**. With ~5-20KB profiles synced once daily, annual
151
- cost rounds to zero. No Cloudflare Workers, no compute — just S3 PUT.
152
-
153
- Manual sync (force override):
154
-
155
- ```bash
156
- hyv-sync \
157
- --profile .hold-your-voice/voice-profile.json \
158
- --force
159
- ```
160
-
161
- ### Export and import
162
-
163
- ```bash
164
- hyv profile-export \
165
- --profile .hold-your-voice/voice-profile.json \
166
- --out ~/my-voice.hyv
167
-
168
- hyv profile-import \
169
- --profile .hold-your-voice/voice-profile.json \
170
- --source ~/my-voice.hyv
171
- ```
172
-
173
- The learning is entirely local — no API calls, no third-party services.
174
-
@@ -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,57 +0,0 @@
1
- ---
2
- name: voice-matcher
3
- description: Use when the user wants to write from their own writing, build a voice profile from samples, match an existing writer's style, or make new copy sound like a project/person without copying generic style advice.
4
- ---
5
-
6
- # Voice Matcher
7
-
8
- Build from the writer's own writing. Do not invent a voice from adjectives.
9
-
10
- ## Source Hierarchy
11
-
12
- 1. User-provided samples in the conversation.
13
- 2. Project files the user identifies as their own writing.
14
- 3. Obvious authored prose in the repo, such as essays, posts, emails, public
15
- copy, changelog entries, or founder notes.
16
- 4. `assets/economic-drift-voice.md` only when the user asks for Shashank's or
17
- "my" voice and no better current samples exist.
18
-
19
- ## Profile Build
20
-
21
- Run the portable profiler when files are available:
22
-
23
- ```bash
24
- hyv profile \
25
- --name "project voice" \
26
- --out .hold-your-voice/voice-profile.json \
27
- <sample paths>
28
- ```
29
-
30
- The profile is a working benchmark, not a literary biography. It should capture:
31
-
32
- - sentence rhythm
33
- - paragraph shape
34
- - openings
35
- - argument pattern
36
- - recurring concrete textures
37
- - things the writer avoids
38
- - sample anchors that prove the profile
39
-
40
- ## Writing Method
41
-
42
- - Start from the user's requested point, not from decorative tone imitation.
43
- - Use the profile as a constraint system.
44
- - Match cadence and thinking pattern before vocabulary.
45
- - Keep the writer's roughness when it is part of the voice.
46
- - Do not sand the draft into smooth, generic competence.
47
- - After drafting, run an AI-pattern scan and repair only weak lines.
48
-
49
- ## Verification
50
-
51
- Before handing back final copy, ask:
52
-
53
- - Does the opening sound like a real observation rather than a template?
54
- - Could this line belong unchanged to five other people? If yes, rewrite it.
55
- - Are there profile anchors that justify this cadence?
56
- - Did the rewrite preserve the user's meaning and risk appetite?
57
-