@holdyourvoice/hyv 2.9.28 → 3.0.1
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 +254 -0
- package/dist/ai-editor.js +9 -0
- package/dist/ai-editor.test.js +61 -0
- package/dist/cli.js +77 -0
- package/dist/cli.test.js +119 -0
- package/dist/contracts.js +1 -0
- package/dist/mcp-tools.js +27 -0
- package/dist/mcp-tools.test.js +23 -0
- package/dist/mcp.js +69 -0
- package/dist/mcp.test.js +22 -0
- package/dist/pipeline.js +64 -0
- package/dist/pipeline.test.js +36 -0
- package/dist/profile.js +31 -0
- package/dist/release-audit.test.js +37 -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 +15 -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
package/CHANGELOG.md
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
# Changelog — @holdyourvoice/hyv
|
|
2
|
-
|
|
3
|
-
All notable CLI changes. Also mirrored to [holdyourvoice.com/changelog](https://holdyourvoice.com/changelog) for user-facing releases.
|
|
4
|
-
|
|
5
|
-
## [2.9.28] — 2026-07-31
|
|
6
|
-
|
|
7
|
-
### Fixed
|
|
8
|
-
- **Scoped MCP activation** — installed rules, export prompts, and MCP metadata now use HYV automatically for publishable copy or an explicit voice request, while routine chat and engineering work bypass it
|
|
9
|
-
- **Agent refresh** — `hyv doctor --fix-agents` refreshes the new scoped instructions through the package version marker
|
|
10
|
-
|
|
11
|
-
## [2.9.27] — 2026-07-15
|
|
12
|
-
|
|
13
|
-
### Fixed
|
|
14
|
-
- **MCP scan hang** — `hyv_scan`, `hyv_fix`, `hyv_check`, `hyv_score`, `hyv_diff`, and `hyv_validate` no longer block on account profile sync; they use local `~/.hyv` cache immediately (matching `hyv scan` CLI) and hydrate profiles in the background
|
|
15
|
-
|
|
16
|
-
## [2.9.26] — 2026-07-09
|
|
17
|
-
|
|
18
|
-
### Improved
|
|
19
|
-
- **Tier 1 structural detection** — cross-sentence binary reframes (`this is not X. it is Y.`), sermon anaphora, and founder-carousel metaphors now sort first in scan output and rewrite prompts
|
|
20
|
-
- **Rewrite prompts** split tier 1 structural hits vs other patterns so the model fixes architecture before vocabulary slop
|
|
21
|
-
- **18 new structural cousin rules** synced in local scan engine (`scan.ts`, `tier-one.ts`)
|
|
22
|
-
|
|
23
|
-
## [2.9.25] — 2026-07-04
|
|
24
|
-
|
|
25
|
-
### Fixed
|
|
26
|
-
- **MCP stdio pollution** — `hyv mcp` no longer prints setup banners to stdout when spawned by Cursor/Claude/ChatGPT (fixes "Unexpected token … is not valid JSON" toast spam on app open)
|
|
27
|
-
- Auto-detects piped stdout (`!isTTY`) or explicit `--stdio` flag; MCP configs now use `mcp --stdio`
|
|
28
|
-
- Interactive terminal runs still show setup on stderr before the JSON-RPC server starts
|
|
29
|
-
|
|
30
|
-
## [2.9.15] — 2026-06-18
|
|
31
|
-
|
|
32
|
-
### Added
|
|
33
|
-
- `mcp-profile-hydrate` — syncs voice profile into MCP agent configs after setup
|
|
34
|
-
- `mcp-integrate` — writes MCP server entries for cursor, claude, codex, windsurf, and more
|
|
35
|
-
- Postinstall detects installed agents and suggests `hyv mcp --setup`
|
|
36
|
-
|
|
37
|
-
### Fixed
|
|
38
|
-
- `hyv mcp --test` validates 13 setup checks including ChatGPT actions
|
|
39
|
-
- Agent docs updated for one-command MCP setup across all supported editors
|
|
40
|
-
|
|
41
|
-
## [2.9.11] — 2026-06-12
|
|
42
|
-
|
|
43
|
-
### Fixed
|
|
44
|
-
- Data safety: preserve profiles with voice anchors, learned patterns, or dashboard-edited markdown
|
|
45
|
-
- Welcome sync accepts `force: true` to intentionally overwrite preserved server profiles
|
|
46
|
-
- `hyv sync` keeps newer local profiles (uses `updated_at` metadata); `--force` overwrites
|
|
47
|
-
- JSON profile cache (`.hyv/cache/profiles/*.json`) backs up before overwrite; skips stale server snapshots
|
|
48
|
-
- `~/.hyv/auth.json` backed up to `.hyv.bak` before each write
|
|
49
|
-
- Web login: fixed email `body` ReferenceError in strict mode; Google sign-in warms `/ready` and retries on 503
|
|
50
|
-
- Legacy `dashboard.html` email login fixed (`user` response, OTP `code` field, cold-start retries)
|
|
51
|
-
- Static copy/sitemap: `holdyourvoice.com/dashboard` → `/app`
|
|
52
|
-
|
|
53
|
-
## [2.9.10] — 2026-06-12
|
|
54
|
-
|
|
55
|
-
### Fixed
|
|
56
|
-
- **Data safety** — welcome profile sync no longer overwrites enriched dashboard profiles (keywords, signature, rules, flashcard onboarding)
|
|
57
|
-
- Local profile cache backs up to `.hyv.bak` before overwrite; refuses empty content replacing real data
|
|
58
|
-
- `hyv sync` skips empty server profile payloads instead of wiping local cache
|
|
59
|
-
|
|
60
|
-
## [2.9.9] — 2026-06-12
|
|
61
|
-
|
|
62
|
-
### Fixed
|
|
63
|
-
- Welcome step 4 failure copy — says `hyv welcome` retry, not `hyv sync` (sync requires paid plan)
|
|
64
|
-
- CLI plan/init/export/api messages point to `/app` and `/app/billing`, not `/dashboard`
|
|
65
|
-
- Rewrite prompts no longer silently pick a cached profile when none is passed (generic rules as intended)
|
|
66
|
-
- Web auth forgot-password and session check retry on cold-start 503s
|
|
67
|
-
- Marketing email links point to `/app` not `/dashboard`
|
|
68
|
-
|
|
69
|
-
## [2.9.7] — 2026-06-12
|
|
70
|
-
|
|
71
|
-
### Fixed
|
|
72
|
-
- `hyv sync` — profiles with spaces or missing slugs (e.g. "Say About Us") no longer crash with "Invalid profile name"
|
|
73
|
-
- Welcome step 4 — clearer sync failure messages (HTTP status / server error)
|
|
74
|
-
|
|
75
|
-
## [2.9.6] — 2026-06-12
|
|
76
|
-
|
|
77
|
-
### Fixed
|
|
78
|
-
- Welcome profile sync — server accepts `content` markdown from step 4 (upsert, no duplicate-profile 403)
|
|
79
|
-
- Dashboard handoff — opens `/app/billing` with session cookie; falls back to billing URL if handoff fails
|
|
80
|
-
- Edge worker handles `/cli/auth/web-handoff` (no container lag)
|
|
81
|
-
|
|
82
|
-
### Changed
|
|
83
|
-
- `hyv open dashboard` and paid-feature copy point to `/app` not `/dashboard`
|
|
84
|
-
|
|
85
|
-
## [2.9.5] — 2026-06-12
|
|
86
|
-
|
|
87
|
-
### Fixed
|
|
88
|
-
- Post-signup browser opens `/app/billing` (live dashboard) instead of `/dashboard` (404)
|
|
89
|
-
- Worker redirects `/dashboard` → `/app` for old links
|
|
90
|
-
|
|
91
|
-
## [2.9.4] — 2026-06-12
|
|
92
|
-
|
|
93
|
-
### Fixed
|
|
94
|
-
- Welcome step 4 — one sign-in only; opens dashboard billing tab (no second Google login on marketing site)
|
|
95
|
-
- `hyv plan --upgrade` opens authenticated dashboard billing instead of public pricing page
|
|
96
|
-
|
|
97
|
-
### Changed
|
|
98
|
-
- Step 4 copy tightened; spinners while account + profile sync run
|
|
99
|
-
|
|
100
|
-
## [2.9.3] — 2026-06-12
|
|
101
|
-
|
|
102
|
-
### Fixed
|
|
103
|
-
- Browser signup OAuth — clearer error when Google denies; server fix for `redirect_uri_mismatch` (requires API deploy)
|
|
104
|
-
|
|
105
|
-
## [2.9.2] — 2026-06-12
|
|
106
|
-
|
|
107
|
-
### Changed
|
|
108
|
-
- Welcome step 4 copy — warmer signup pitch, highlights $1 first month and what paid unlocks
|
|
109
|
-
|
|
110
|
-
## [2.9.1] — 2026-06-12
|
|
111
|
-
|
|
112
|
-
### Added
|
|
113
|
-
- Welcome step 3 is skippable (Enter or `s`)
|
|
114
|
-
- Multiline draft paste for testing (no more single-line shell chaos)
|
|
115
|
-
- Document extraction for samples and scans: `.md`, `.txt`, `.html`, `.docx`, `.pdf`, `.skill`
|
|
116
|
-
- Recursive folder scan; single files (including `.skill` archives) work in step 2
|
|
117
|
-
- Minimal terminal spinners while reading, saving, and scanning
|
|
118
|
-
|
|
119
|
-
### Fixed
|
|
120
|
-
- Step 3 crash when scanning pasted text (`Cannot read properties of undefined (reading 'match')`) — profile now loads correctly
|
|
121
|
-
- `ENOTDIR` when pointing at a file instead of a folder
|
|
122
|
-
|
|
123
|
-
## [2.9.0] — 2026-06-12
|
|
124
|
-
|
|
125
|
-
### Changed
|
|
126
|
-
- `hyv welcome` — profile-first flow: name → samples (paste/folder/link/chat) → test draft → signup
|
|
127
|
-
- Keeps tagline; drops install/init/mcp step list from welcome
|
|
128
|
-
- MCP `hyv_welcome` supports `step`, `mode=extract_prompt`, and `profile` for agent-led onboarding
|
|
129
|
-
- Postinstall points to `hyv welcome` instead of `hyv init`
|
|
130
|
-
|
|
131
|
-
## [2.8.10] — 2026-06-12
|
|
132
|
-
|
|
133
|
-
### Fixed
|
|
134
|
-
- `hyv init` browser login opens Google OAuth again (`assertSafeOAuthUrl` allows `accounts.google.com`)
|
|
135
|
-
|
|
136
|
-
## [2.8.9] — 2026-06-12
|
|
137
|
-
|
|
138
|
-
### Improved
|
|
139
|
-
- `hyv fix --in-place` matches batch/watch safeguards: interactive `[y/N]` or `--yes` + `.bak` backup
|
|
140
|
-
- `hyv watch --command fix` ignores self-triggered saves after writing fixes
|
|
141
|
-
- `hyv doctor` checks auth.json permissions, stale `hyv.md` vs `hyv.mdc`, and MCP stdio health
|
|
142
|
-
- Shared `resolveCliEntry()` for MCP setup and stdio probes
|
|
143
|
-
- Auth refresh + destructive-write unit tests
|
|
144
|
-
|
|
145
|
-
### Changed
|
|
146
|
-
- `dist/` built at publish/prepare — no longer committed to git
|
|
147
|
-
|
|
148
|
-
## [2.8.8] — 2026-06-12
|
|
149
|
-
|
|
150
|
-
### Security
|
|
151
|
-
- OAuth browser flow verifies server `state` on callback (CSRF protection)
|
|
152
|
-
- Automatic token refresh via `getValidToken()` before API calls
|
|
153
|
-
- `HYV_API_URL` host allowlist; `assertSafeOpenUrl` for checkout/OAuth redirects
|
|
154
|
-
- Profile name path traversal blocked; MCP file reads symlink-safe with `isError` responses
|
|
155
|
-
- Sensitive `~/.hyv` files and dirs use `0o600`/`0o700` permissions
|
|
156
|
-
|
|
157
|
-
### Fixed
|
|
158
|
-
- `hyv doctor --fix-agents` uses correct postinstall-lib path
|
|
159
|
-
- `hyv import` registered; `--fail-on-hit` exits code 2 (scan + batch)
|
|
160
|
-
- Queue sync sends `original_text` / `accepted_text` for learning reinforce
|
|
161
|
-
- Postinstall: Claude Desktop MCP merge with backup, Cursor `alwaysApply` rule, absolute MCP command path
|
|
162
|
-
|
|
163
|
-
### Improved
|
|
164
|
-
- `hyv mcp --test` spawns stdio subprocess and validates JSON-RPC `tools/list`
|
|
165
|
-
- `hyv batch --fix --in-place` and `hyv watch --command fix` require `--yes` (`.bak` backups)
|
|
166
|
-
- Stale duplicate agent/skill markdown removed from `assets/` (canonical copies in `agents/` + `skills/`)
|
|
167
|
-
|
|
168
|
-
## [2.8.6] — 2026-06-12
|
|
169
|
-
|
|
170
|
-
### Changed
|
|
171
|
-
- `hyv welcome` — short onboarding: 4 steps, one-line demo, subscribe prompt (full lists moved to `hyv free`)
|
|
172
|
-
- Shorter postinstall message before auto-welcome
|
|
173
|
-
|
|
174
|
-
## [2.8.5] — 2026-06-12
|
|
175
|
-
|
|
176
|
-
### Changed
|
|
177
|
-
- `hyv welcome` slimmed down (superseded by 2.8.6 — use `npm i -g @holdyourvoice/hyv@2.8.6`)
|
|
178
|
-
|
|
179
|
-
## [2.8.4] — 2026-06-12
|
|
180
|
-
|
|
181
|
-
### Fixed
|
|
182
|
-
- Postinstall only auto-runs welcome when npm shows script output; otherwise first bare `hyv` shows full onboarding (fixes silent global installs)
|
|
183
|
-
|
|
184
|
-
## [2.8.3] — 2026-06-12
|
|
185
|
-
|
|
186
|
-
### Fixed
|
|
187
|
-
- `npm i -g` runs `hyv welcome` onboarding automatically on first install (no y/N prompt)
|
|
188
|
-
- First bare `hyv` shows full onboarding when npm hid postinstall output
|
|
189
|
-
- Upgraded `glob` to v13 — removes deprecated glob@11 warning during install
|
|
190
|
-
|
|
191
|
-
## [2.8.2] — 2026-06-12
|
|
192
|
-
|
|
193
|
-
### Added
|
|
194
|
-
- Phase 5 marketing: `hyv content` (blog outlines, CI snippets, share templates)
|
|
195
|
-
- `hyv plan --free` — canonical free vs paid matrix in terminal
|
|
196
|
-
- `cli/assets/FREE-PAID.md` — shipped free/paid reference
|
|
197
|
-
- Scan funnel hints + `scan_complete` / `init_success` telemetry events
|
|
198
|
-
- Landing + npm README: npx-first install, free CLI section, SEO keywords
|
|
199
|
-
|
|
200
|
-
### Improved
|
|
201
|
-
- Postinstall, welcome, plan, and init flows promote npx + free local tier
|
|
202
|
-
- npm package description optimized for cursor/claude/MCP discovery
|
|
203
|
-
|
|
204
|
-
## [2.8.1] — 2026-06-12
|
|
205
|
-
|
|
206
|
-
### Fixed
|
|
207
|
-
- `postinstall-lib.js` now included in published tarball — `npm install` no longer fails on postinstall
|
|
208
|
-
|
|
209
|
-
## [2.8.0] — 2026-06-12
|
|
210
|
-
|
|
211
|
-
### Added
|
|
212
|
-
- Full Phase 1–4 product plan: free local engine, hybrid analysis, MCP `hyv_analyze` / `hyv_clean`, learning loop UX, packaging hardening
|
|
213
|
-
- `npm run test:smoke` — 28+ CLI regression checks
|
|
214
|
-
- `npm run validate:publish` — prepublish tarball verification
|
|
215
|
-
- Golden prompt tests, postinstall idempotency tests, edge-case suite
|
|
216
|
-
|
|
217
|
-
### Fixed
|
|
218
|
-
- `hyv check ""` no longer reports false clean — rejects empty input
|
|
219
|
-
- Bundled CLI resolves correct package + rules version from `dist/`
|
|
220
|
-
- Smoke tests avoid SIGPIPE false failures when piping CLI output
|
|
221
|
-
|
|
222
|
-
## [2.7.1] — 2026-06-12
|
|
223
|
-
|
|
224
|
-
### Added
|
|
225
|
-
- `hyv upgrade` — check and install latest global CLI
|
|
226
|
-
- `hyv mcp --setup` and `hyv mcp --test` — agent setup + health check
|
|
227
|
-
- MCP tools: `hyv_analyze` (hybrid server+local), `hyv_clean` (scan→fix→validate pipeline)
|
|
228
|
-
- `hyv reinforce --last` — learn from last fix/rewrite session
|
|
229
|
-
- Free-first local engine: scan, fix, check, score, diff work offline without subscription
|
|
230
|
-
- `hyv welcome` / `hyv free` — onboarding with live demo
|
|
231
|
-
- Profile-aware local pipeline: never-list, learned patterns, anchors, cadence
|
|
232
|
-
- Opt-in telemetry: `HYV_TELEMETRY=1`
|
|
233
|
-
|
|
234
|
-
### Improved
|
|
235
|
-
- Postinstall upgrades agent instructions via `~/.hyv/agents-version.json`
|
|
236
|
-
- `hyv status` shows engine/rules version, drift, evolution summary
|
|
237
|
-
- `hyv doctor` reports full engine label + `--fix-agents`
|
|
238
|
-
- Published package excludes Python dev scripts and `src/`
|
|
239
|
-
|
|
240
|
-
### Fixed
|
|
241
|
-
- Bundled CLI reads correct `package.json` version from `dist/`
|
package/README.md
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
# hold your voice
|
|
2
|
-
|
|
3
|
-
make your ai agent sound exactly like you.
|
|
4
|
-
|
|
5
|
-
`@holdyourvoice/hyv` is a CLI-first voice gate for AI workflows. scan drafts for AI writing patterns locally (offline, no API), wire it into cursor/claude via MCP, and unlock profile-aware rewrites when you subscribe.
|
|
6
|
-
|
|
7
|
-
**Try without installing:**
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npx @holdyourvoice/hyv welcome
|
|
11
|
-
npx @holdyourvoice/hyv scan draft.md
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## install
|
|
15
|
-
|
|
16
|
-
**Recommended** (installs node automatically if missing):
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
# mac / linux
|
|
20
|
-
curl -fsSL https://holdyourvoice.com/install.sh | bash
|
|
21
|
-
|
|
22
|
-
# windows (powershell)
|
|
23
|
-
powershell -ExecutionPolicy Bypass -c "irm https://holdyourvoice.com/install.ps1 | iex"
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Already have node 18+?
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm i -g @holdyourvoice/hyv
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
postinstall copies scoped agent rules and configures MCP for claude desktop and cursor (plus claude code, windsurf, codex, command code skills when detected). HYV runs automatically for publishable copy or an explicit voice request, not routine chat or engineering work. set `HYV_AUTO_CONFIGURE_AGENTS=0` to skip.
|
|
33
|
-
|
|
34
|
-
## free vs paid
|
|
35
|
-
|
|
36
|
-
| free forever (local, no account) | paid unlocks |
|
|
37
|
-
|----------------------------------|--------------|
|
|
38
|
-
| `hyv scan`, `fix`, `check`, `score`, `diff`, `batch`, `watch` | voice profiles synced from your account |
|
|
39
|
-
| `hyv mcp` — agent tools (`hyv_scan`, `hyv_clean`, …) | learning loop: `hyv reinforce`, `hyv add` |
|
|
40
|
-
| `hyv welcome`, `hyv doctor`, `hyv content` | profile-aware `hyv rewrite` prompts |
|
|
41
|
-
| 30+ free web tools at [holdyourvoice.com/tools](https://holdyourvoice.com/tools) | hybrid server analysis (`hyv scan --server`, MCP `hyv_analyze`) |
|
|
42
|
-
| public voice profiles + blog | multiple profiles, team voices, dashboard |
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
hyv plan --free # full matrix in the terminal
|
|
46
|
-
hyv welcome # live demo + every free capability
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
local scan never calls an LLM. your text stays on your machine.
|
|
50
|
-
|
|
51
|
-
## quick start
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# instant demo — no auth
|
|
55
|
-
npx @holdyourvoice/hyv welcome
|
|
56
|
-
|
|
57
|
-
# scan a draft offline
|
|
58
|
-
hyv scan draft.md
|
|
59
|
-
|
|
60
|
-
# sign in when you want profiles + learning
|
|
61
|
-
hyv init
|
|
62
|
-
hyv new my-voice
|
|
63
|
-
|
|
64
|
-
# generate a rewrite prompt (profile-aware when subscribed)
|
|
65
|
-
hyv rewrite draft.md
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## npx (no global install)
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
npx @holdyourvoice/hyv welcome
|
|
72
|
-
npx @holdyourvoice/hyv scan draft.md
|
|
73
|
-
npx @holdyourvoice/hyv fix draft.md
|
|
74
|
-
npx @holdyourvoice/hyv init
|
|
75
|
-
npx @holdyourvoice/hyv mcp --setup
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## MCP server
|
|
79
|
-
|
|
80
|
-
`hyv mcp` runs a stdio MCP server for claude desktop, claude code, cursor, windsurf, codex, and command code.
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
hyv mcp --setup # copy-paste config for every agent
|
|
84
|
-
hyv mcp --test # health check (tools, demo pipeline, profile)
|
|
85
|
-
hyv mcp # start server (stdio)
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
postinstall copies agent rules to `~/.cursor/rules/hyv.mdc`, `~/.claude/commands/hyv.md`, etc. re-run anytime:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
hyv doctor --fix-agents
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### tools
|
|
95
|
-
|
|
96
|
-
| tool | description |
|
|
97
|
-
|------|-------------|
|
|
98
|
-
| `hyv_welcome` / `hyv_demo` | onboarding + live free scan demo |
|
|
99
|
-
| `hyv_scan` | fast local scan (free, offline; uses `~/.hyv` cache, no network wait) |
|
|
100
|
-
| `hyv_analyze` | hybrid local + server analysis (paid when online) |
|
|
101
|
-
| `hyv_clean` | scan → fix → validate → rewrite prompt |
|
|
102
|
-
| `hyv_fix` / `hyv_check` / `hyv_score` / `hyv_diff` | local utilities |
|
|
103
|
-
| `hyv_rewrite` | profile-aware rewrite prompt |
|
|
104
|
-
| `hyv_validate` | verify text against voice profile |
|
|
105
|
-
| `hyv_profiles` | list cached or account profiles |
|
|
106
|
-
|
|
107
|
-
### agent workflow
|
|
108
|
-
|
|
109
|
-
1. `hyv_scan` or `hyv_analyze` on draft text
|
|
110
|
-
2. `hyv_clean` or `hyv_fix` → `hyv_rewrite` → `hyv_validate`
|
|
111
|
-
3. after user accepts edits: `hyv reinforce --last` (CLI learning loop)
|
|
112
|
-
|
|
113
|
-
## CI / pre-commit
|
|
114
|
-
|
|
115
|
-
block AI-slop before merge:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
hyv content ci # full github actions + pre-commit snippets
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
github actions:
|
|
122
|
-
|
|
123
|
-
```yaml
|
|
124
|
-
- run: npx @holdyourvoice/hyv@latest scan content/ --fail-on-hit
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`--fail-on-hit` exits with code **2** when issues are found (exit 0 = clean). use in CI to block merges on AI-slop.
|
|
128
|
-
|
|
129
|
-
### destructive in-place writes
|
|
130
|
-
|
|
131
|
-
`fix`, `batch`, and `watch` can rewrite files on disk. they create a `.bak` backup sibling before writing.
|
|
132
|
-
|
|
133
|
-
| command | safeguard |
|
|
134
|
-
|---------|-----------|
|
|
135
|
-
| `hyv fix <file> --in-place` | prompts `[y/N]` locally; use `--yes` in CI |
|
|
136
|
-
| `hyv batch <glob> --fix --in-place` | same — one prompt for the whole batch |
|
|
137
|
-
| `hyv watch <file> --command fix` | same — confirms once at startup |
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
# interactive (local)
|
|
141
|
-
hyv fix draft.md --in-place
|
|
142
|
-
|
|
143
|
-
# non-interactive (CI/scripts)
|
|
144
|
-
hyv fix draft.md --in-place --yes
|
|
145
|
-
hyv batch "posts/**/*.md" --fix --in-place --yes
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## commands
|
|
149
|
-
|
|
150
|
-
| command | description |
|
|
151
|
-
|---------|-------------|
|
|
152
|
-
| `hyv` | condensed welcome (no args) |
|
|
153
|
-
| `hyv welcome` / `hyv free` | free demo + capability tour |
|
|
154
|
-
| `hyv scan <file>` | scan text for AI patterns |
|
|
155
|
-
| `hyv fix <file>` | auto-swap fixable patterns (`--in-place --yes` for CI) |
|
|
156
|
-
| `hyv batch <glob>` | scan/fix many files (`--fail-on-hit` exits 2) |
|
|
157
|
-
| `hyv watch <file>` | re-scan on save (`--command fix --yes` to auto-fix) |
|
|
158
|
-
| `hyv check <text>` | quick pass/fail check |
|
|
159
|
-
| `hyv init` | authenticate with hold your voice |
|
|
160
|
-
| `hyv new <name>` | create a voice profile |
|
|
161
|
-
| `hyv rewrite <file>` | generate rewrite prompt |
|
|
162
|
-
| `hyv content [topic]` | blog outlines, CI snippets, share templates |
|
|
163
|
-
| `hyv plan --free` | free vs paid matrix |
|
|
164
|
-
| `hyv mcp` | start MCP server |
|
|
165
|
-
| `hyv export [format]` | export profile for LLMs |
|
|
166
|
-
| `hyv reinforce --last` | learn from last fix session |
|
|
167
|
-
| `hyv doctor` | diagnose and fix issues |
|
|
168
|
-
| `hyv upgrade` | install latest global CLI |
|
|
169
|
-
|
|
170
|
-
## voice profiles
|
|
171
|
-
|
|
172
|
-
profiles live in `~/.hyv/profiles/` as markdown. create one with:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
hyv new my-voice
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
onboarding walks through your style, audience, and tone. profiles sync to the server when you're on a paid plan.
|
|
179
|
-
|
|
180
|
-
## content formats
|
|
181
|
-
|
|
182
|
-
`hyv scan` detects 220+ AI writing patterns:
|
|
183
|
-
|
|
184
|
-
- **ai-slop** — delve, leverage, tapestry, pivotal, foster
|
|
185
|
-
- **formulaic** — firstly, moreover, in conclusion
|
|
186
|
-
- **voice-drift** — arguably, perhaps, some might say
|
|
187
|
-
- **structure** — antithesis, signpost claims, lesson setups
|
|
188
|
-
|
|
189
|
-
paid profiles add never-list bans, learned patterns, anchors, and cadence scoring.
|
|
190
|
-
|
|
191
|
-
## environment variables
|
|
192
|
-
|
|
193
|
-
| variable | description |
|
|
194
|
-
|----------|-------------|
|
|
195
|
-
| `HYV_API_URL` | API base URL (default: `https://holdyourvoice.com`) |
|
|
196
|
-
| `HYV_LOCAL_ONLY` | force offline mode (`1` or `true`) |
|
|
197
|
-
| `HYV_TELEMETRY` | log funnel events to `~/.hyv/telemetry/` (`1` to enable) |
|
|
198
|
-
| `HYV_POSTINSTALL_QUIET` | suppress postinstall output (`1`) |
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
HYV_API_URL=https://staging.holdyourvoice.com hyv init
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## links
|
|
205
|
-
|
|
206
|
-
- [npm package](https://www.npmjs.com/package/@holdyourvoice/hyv)
|
|
207
|
-
- [free tools](https://holdyourvoice.com/tools)
|
|
208
|
-
- [pricing](https://holdyourvoice.com/#pricing)
|
|
209
|
-
- [blog](https://holdyourvoice.com/blog)
|
|
210
|
-
- [community](https://holdyourvoice.com/community)
|
|
211
|
-
|
|
212
|
-
## documentation ownership
|
|
213
|
-
|
|
214
|
-
Changes under `cli/` update this README, the more-specific owner README when applicable, and the root repository README. Package-relative paths, bin names, published files, and postinstall behavior are contracts; validate them with `npm run validate:publish` before merging.
|
|
215
|
-
|
|
216
|
-
## license
|
|
217
|
-
|
|
218
|
-
UNLICENSED — [holdyourvoice.com](https://holdyourvoice.com)
|
package/agents/AGENTS.md
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# Hold Your Voice — Agent Instructions
|
|
2
|
-
|
|
3
|
-
The user has a voice profile for publishable copy. Use it for social posts, newsletters, blogs, landing or product pages, campaigns, and external audience-facing emails. Also use it whenever the user explicitly asks for HYV, a voice profile, or writing in their voice.
|
|
4
|
-
|
|
5
|
-
## Auto-trigger — do these automatically
|
|
6
|
-
|
|
7
|
-
**For eligible publishable copy or an explicit HYV/voice request:**
|
|
8
|
-
1. Run `hyv_scan` for a fast local check (free, offline, works without a profile)
|
|
9
|
-
2. Run `hyv_clean` for the full scan → fix → validate pipeline, or `hyv_fix` then `hyv_rewrite`
|
|
10
|
-
3. Run `hyv_validate` to verify the output matches their voice
|
|
11
|
-
|
|
12
|
-
**When the user asks you to create or rewrite eligible copy:**
|
|
13
|
-
1. Write your draft normally
|
|
14
|
-
2. Run `hyv_scan` or `hyv_clean` on it
|
|
15
|
-
3. Run `hyv_rewrite` to match their voice profile
|
|
16
|
-
4. Deliver the voice-matched version
|
|
17
|
-
|
|
18
|
-
**Do not auto-run HYV** for routine chat, Q&A, analysis, research, planning, coding, debugging, reviews, logs, operational work, code comments, or internal engineering-status messages. If the request is ambiguous, bypass HYV unless the user explicitly asks for it.
|
|
19
|
-
|
|
20
|
-
**After the user accepts a substantial edit:**
|
|
21
|
-
- Suggest they run `hyv reinforce --last` so their profile learns from the change
|
|
22
|
-
|
|
23
|
-
## Which tool to use
|
|
24
|
-
|
|
25
|
-
| Tool | What it does | When to use |
|
|
26
|
-
|------|-------------|-------------|
|
|
27
|
-
| `hyv_welcome` | Onboarding guide (name → samples → test → signup) | New users, first time |
|
|
28
|
-
| `hyv_mcp_setup` | Status, integrate apps, ChatGPT connector | Check/refresh setup |
|
|
29
|
-
| `hyv_profiles` | List voice profiles | See which profiles are available |
|
|
30
|
-
| `hyv_scan` | Fast local AI-pattern scan (free, 220+ patterns) | Eligible publishable copy or an explicit HYV request |
|
|
31
|
-
| `hyv_analyze` | Full hybrid scan (local + server, paid) | Important drafts |
|
|
32
|
-
| `hyv_clean` | Scan → fix → validate → rewrite in one call | Best single-call pipeline |
|
|
33
|
-
| `hyv_fix` | Auto-fix deterministic patterns (no LLM) | Before rewrite |
|
|
34
|
-
| `hyv_rewrite` | Profile-aware rewrite prompt | After scan/fix |
|
|
35
|
-
| `hyv_validate` | Verify output matches voice profile | After rewrite |
|
|
36
|
-
| `hyv_check` | Quick pass/fail | Spot checks |
|
|
37
|
-
| `hyv_score` | 0-100 voice score | Quantify quality |
|
|
38
|
-
| `hyv_diff` | Before/after comparison | Review changes |
|
|
39
|
-
| `hyv_list_free_tools` | List all free capabilities | What's available |
|
|
40
|
-
|
|
41
|
-
## Voice profiles
|
|
42
|
-
|
|
43
|
-
- Run `hyv_profiles` first if unsure which profile is active.
|
|
44
|
-
- Terminal profiles (from `hyv welcome`) are already local — no extra step.
|
|
45
|
-
- Dashboard profiles sync after the user runs `hyv init` once (MCP auto-downloads).
|
|
46
|
-
- Pass `profile: "<slug>"` on tools only when using a non-default profile.
|
|
47
|
-
- If no profile exists yet, free local scan still works — call `hyv_welcome` to onboard.
|
|
48
|
-
|
|
49
|
-
## Rewrite rules
|
|
50
|
-
|
|
51
|
-
1. **Never** use AI-slop words: delve, leverage, tapestry, foster, harness, pivotal, innovative, cutting-edge, robust, holistic, nuanced, resonate, unpack, navigate, landscape, ecosystem, transformative, paradigm, revolutionize, unlock, supercharge, game-changer
|
|
52
|
-
2. **Never** use formulaic connectors: firstly, secondly, moreover, furthermore, in conclusion, to conclude, notably
|
|
53
|
-
3. **Never** use hedging: arguably, perhaps, some might say, it's worth noting, it's important to note
|
|
54
|
-
4. **Never** use signpost claims: this is why, this is how, here's where, here's why
|
|
55
|
-
5. **Never** use antithesis patterns: "not just X, but Y", "more than just", "it's not about X, it's about Y"
|
|
56
|
-
6. **Match** the user's sentence rhythm, vocabulary, and tone from their voice profile
|
|
57
|
-
7. **Preserve** roughness that carries voice — don't over-polish
|
|
58
|
-
8. **Open** from concrete observations, not generic setups
|
|
59
|
-
9. **Fix only** flagged lines — preserve clean lines exactly
|
|
60
|
-
10. **Never add** sections, hooks, CTAs, markdown, or commentary
|
|
61
|
-
|
|
62
|
-
## MCP setup (no terminal needed)
|
|
63
|
-
|
|
64
|
-
- `hyv_mcp_setup` with `action=status` — see what's integrated and onboarding progress
|
|
65
|
-
- `hyv_mcp_setup` with `action=integrate` — refresh Cursor/Claude configs (`force=true` after hyv upgrade)
|
|
66
|
-
- `hyv_mcp_setup` with `action=chatgpt` — ChatGPT remote OAuth steps (recommended for paid users)
|
|
67
|
-
- `hyv_welcome` — finish voice onboarding inside this chat
|
|
68
|
-
|
|
69
|
-
## CLI fallback (when MCP tools aren't available)
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
echo "text to check" | hyv scan -
|
|
73
|
-
hyv fix file.md # apply auto-fixes without LLM
|
|
74
|
-
hyv rewrite file.md # generate rewrite prompt
|
|
75
|
-
hyv check "inline text" # quick spot-check
|
|
76
|
-
hyv score file.md # just a 0-100 number
|
|
77
|
-
hyv diff file.md # show proposed fixes
|
|
78
|
-
hyv profiles # list profiles
|
|
79
|
-
hyv reinforce --last # learn from last edit
|
|
80
|
-
hyv mcp --setup # view all MCP configs
|
|
81
|
-
hyv mcp --test # verify everything works
|
|
82
|
-
```
|
package/agents/README.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# `cli/agents/`
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
`cli/agents/` contains agent resources included in the published CLI package.
|
|
6
|
-
|
|
7
|
-
## Contracts
|
|
8
|
-
|
|
9
|
-
The directory is included by the `files` list in `cli/package.json`. Changes must preserve package inclusion and postinstall discovery behavior. All host instructions share the same activation boundary: publishable copy or an explicit voice request uses HYV; routine chat and engineering work bypass it.
|
|
10
|
-
|
|
11
|
-
## Validation
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cd cli
|
|
15
|
-
npm run validate:publish
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Documentation ownership
|
|
19
|
-
|
|
20
|
-
Changes update this README, `cli/README.md`, and the root `README.md`.
|
package/agents/chatgpt.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Hold Your Voice — Writing Rules
|
|
2
|
-
|
|
3
|
-
The user has a voice profile for publishable copy: social posts, newsletters, blogs, landing or product pages, campaigns, and external audience-facing emails. Apply it whenever the user explicitly asks for HYV, a voice profile, or writing in their voice.
|
|
4
|
-
|
|
5
|
-
Do not apply these rules to routine chat, Q&A, analysis, research, planning, coding, debugging, reviews, logs, operational work, code comments, or internal engineering-status messages. If a request is ambiguous, bypass HYV unless the user explicitly requests it.
|
|
6
|
-
|
|
7
|
-
## Rules
|
|
8
|
-
1. Never use AI-slop words: delve, leverage, tapestry, foster, harness, pivotal, innovative, cutting-edge, state-of-the-art, robust, holistic, multifaceted, nuanced
|
|
9
|
-
2. Never use formulaic connectors: firstly, secondly, moreover, furthermore, in conclusion
|
|
10
|
-
3. Never use hedging: arguably, perhaps, some might say, it's worth noting
|
|
11
|
-
4. Never use signpost claims: this is why, this is how, here's where
|
|
12
|
-
5. Match the user's sentence rhythm and vocabulary
|
|
13
|
-
6. Preserve roughness that carries voice — don't over-polish
|
|
14
|
-
7. Open from concrete observations, not generic setups
|
|
15
|
-
|
|
16
|
-
## When rewriting
|
|
17
|
-
- Fix only flagged lines, preserve clean lines
|
|
18
|
-
- Remove AI patterns line by line
|
|
19
|
-
- Match the user's voice profile exactly
|
|
20
|
-
- Never add sections, hooks, CTAs, or commentary
|
|
21
|
-
|
|
22
|
-
## Voice profiles
|
|
23
|
-
- `hyv_profiles` — which profile MCP tools use (default + all local copies)
|
|
24
|
-
- Dashboard-built profiles: user runs `hyv init` once on their Mac — then MCP auto-syncs
|
|
25
|
-
- Terminal `hyv welcome` profiles are already local — no extra step
|
|
26
|
-
|
|
27
|
-
## MCP setup (no terminal)
|
|
28
|
-
- `hyv_mcp_setup` with `action=status` — see what's integrated and onboarding progress
|
|
29
|
-
- `hyv_mcp_setup` with `action=integrate` — refresh Cursor/Claude configs (`force=true` after hyv upgrade)
|
|
30
|
-
- `hyv_mcp_setup` with `action=chatgpt` — **recommended:** remote OAuth (developer mode → new app → https://holdyourvoice.com/mcp + OAuth). Free fallback: local connector (command: hyv, arguments: mcp)
|
|
31
|
-
- `hyv_welcome` — finish voice onboarding inside this chat
|
|
32
|
-
|
|
33
|
-
## ChatGPT connection (recommended — paid users)
|
|
34
|
-
1. Settings → Developer mode ON
|
|
35
|
-
2. Settings → Apps → New App
|
|
36
|
-
3. Server URL: `https://holdyourvoice.com/mcp` · Authentication: OAuth
|
|
37
|
-
4. Save → sign in to holdyourvoice.com
|
|
38
|
-
5. OAuth runs in ChatGPT's browser — no Windows firewall issues, no local install
|
|
39
|
-
|
|
40
|
-
## Available tools
|
|
41
|
-
- `hyv_mcp_setup` / `hyv_welcome` / `hyv_demo` — setup and onboarding
|
|
42
|
-
- `hyv_scan` / `hyv_analyze` — check for AI patterns (+ hybrid when paid)
|
|
43
|
-
- `hyv_clean` — full scan → fix → validate pipeline
|
|
44
|
-
- `hyv_fix` / `hyv_rewrite` / `hyv_validate`
|
|
45
|
-
- `hyv_check` / `hyv_score` / `hyv_diff`
|
|
46
|
-
- `hyv_profiles` — list available profiles
|
|
47
|
-
- CLI: `hyv reinforce --last` after user accepts edits
|
package/agents/claude-code.md
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Hold Your Voice
|
|
2
|
-
|
|
3
|
-
The user has a voice profile for publishable copy. Use HYV for social posts, newsletters, blogs, landing or product pages, campaigns, and external audience-facing emails. Always use HYV when the user explicitly asks for it, a voice profile, or writing in their voice.
|
|
4
|
-
|
|
5
|
-
## When to use HYV
|
|
6
|
-
|
|
7
|
-
Run `hyv_scan` or use the `hyv_scan` MCP tool before delivering eligible publishable copy:
|
|
8
|
-
- Social posts, threads, and public replies
|
|
9
|
-
- Newsletters, blogs, articles, and landing or product pages
|
|
10
|
-
- Campaigns and external audience-facing emails
|
|
11
|
-
|
|
12
|
-
Run `hyv_rewrite` or use the `hyv_rewrite` MCP tool when eligible copy needs voice work, or whenever the user explicitly asks for HYV or voice-profile writing.
|
|
13
|
-
|
|
14
|
-
Bypass HYV for routine chat, Q&A, analysis, research, planning, coding, debugging, reviews, logs, operational work, code comments, and internal engineering-status messages. If the request is ambiguous, bypass it unless the user explicitly requests HYV.
|
|
15
|
-
|
|
16
|
-
## How to use
|
|
17
|
-
|
|
18
|
-
### MCP tools (preferred — if MCP is connected):
|
|
19
|
-
1. `hyv_welcome` for new users (step 2: extract_prompt from chat history)
|
|
20
|
-
2. `hyv_scan` (fast local) or `hyv_analyze` (hybrid when paid) → get issues
|
|
21
|
-
3. `hyv_clean` → scan + fix + validate + rewrite prompt in one call
|
|
22
|
-
4. Or stepwise: `hyv_fix` → `hyv_rewrite` → `hyv_validate`
|
|
23
|
-
5. `hyv_check` / `hyv_score` / `hyv_diff` for quick checks
|
|
24
|
-
6. After user accepts edits: suggest `hyv reinforce --last` (CLI learning loop)
|
|
25
|
-
|
|
26
|
-
### CLI commands (fallback):
|
|
27
|
-
```bash
|
|
28
|
-
echo "text to check" | hyv scan -
|
|
29
|
-
hyv fix file.md # apply auto-fixes without LLM
|
|
30
|
-
hyv rewrite file.md # generate rewrite prompt
|
|
31
|
-
hyv check "inline text" # quick spot-check
|
|
32
|
-
hyv score file.md # just a 0-100 number
|
|
33
|
-
hyv diff file.md # show proposed fixes
|
|
34
|
-
hyv profiles # list profiles
|
|
35
|
-
hyv rules # list/toggle detection rules
|
|
36
|
-
hyv batch "posts/**/*.md" # scan multiple files
|
|
37
|
-
hyv history # track scores over time
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Rules
|
|
41
|
-
- Never skip the scan step for user-facing content
|
|
42
|
-
- Preserve the original meaning exactly when rewriting
|
|
43
|
-
- Match the voice profile's rhythm, vocabulary, and patterns
|
|
44
|
-
- If no profile is set up yet, run `hyv profiles` to check
|
|
45
|
-
- Setup: `hyv mcp --setup` | health: `hyv mcp --test`
|