promptschat
Gives Claude Code access to the prompts.chat library, letting you search, retrieve and improve AI prompt templates, and find and install Agent Skills from its registry.
A local-first personal voice layer for AI agents. Bring your voice to any agent. Adapt to any audience without losing yourself. Humanize AI-generated drafts by rewriting them in your own calibrated voice: PR comments, Slack replies, docs, RFCs, and emails.
Claude Code
> /plugin marketplace add ymeiri/voice-layer> /plugin install voice-layer@voice-layer
Codex
$ npx skills add ymeiri/voice-layer -a codex
Cursor
$ npx skills add ymeiri/voice-layer -a cursor
Gemini CLI
$ npx skills add ymeiri/voice-layer -a gemini-cli
GitHub Copilot
$ copilot plugin marketplace add ymeiri/voice-layer$ copilot plugin install voice-layer@voice-layer
OpenCode
$ npx skills add ymeiri/voice-layer -a opencode
Windsurf
$ npx skills add ymeiri/voice-layer -a windsurf


A local-first personal voice layer for AI agents.
Bring your voice to any agent. Adapt to any audience without losing yourself.
Humanize AI-generated drafts by rewriting them in your own calibrated voice: PR comments, Slack replies, docs, RFCs, and emails.
voice-layer gives Claude Code and Codex a reusable local profile for writing
like you: direct where you are direct, careful where you are careful, and shaped
for the channel without flattening into generic AI prose. It is a local-first AI
writing assistant for personal voice, not a generic humanizer prompt.
generic AI draft + local voice-profile.md -> PR comment | Slack reply | RFC | email
The demo uses only the synthetic profile in this repo.
Homebrew install:
brew tap ymeiri/voice-layer
brew install voice-layer
voice-layer install --agent both
voice-layer doctor --agent both
Remove skills while preserving your profile:
voice-layer uninstall --agent both
Delete local profile data only when you explicitly mean it:
voice-layer purge --yes
Clone-based install also works:
./voice-layer install --agent both
./voice-layer doctor --agent both
This repo currently ships the reference implementation as two Agent Skills:
write-in-my-voice: drafts or rewrites Slack replies, emails, PR
descriptions, review comments, docs, design docs, RFCs, issue updates, and
similar text.calibrate-my-voice: builds a local voice profile from samples you
explicitly approve.The repo and plugin packages use the voice-layer name. The commands are
verbs: one for writing, one for calibration.
Current packaged support is Claude Code and Codex. "Bring your voice to any agent" is the long-term direction; Cursor and other agents are not claimed as supported until their package and invocation behavior are verified. See docs/support-matrix.md.
Why this is not just a prompt:
voice-profile.md, stored outside the repo.AI agents are good at producing text. They are much worse at preserving the person behind the text.
Most AI-polishing tools remove a few cliches. That is not enough. Real writing depends on voice, channel, audience, context, document shape, and boundaries. A message can be more corporate-friendly, more direct, or easier for a different audience to read without erasing the person who wrote it. A design doc can also keep the user's structure, depth, risk framing, and decision style.
If you are searching for an AI text humanizer, voice-layer is the stricter
version of that idea: it humanizes AI-written text by applying an explicit,
auditable voice profile that you control.
voice-layer treats style as a portable profile:
voice + vibe + channel + audience + guardrails -> usable draft
You can test the core loop without connecting Slack, Google Docs, GitHub, email, or any private workspace. The repo includes a synthetic profile at tests/fixtures/profiles/valid-profile.md.
Install the Claude Code skill from this checkout, then launch Claude Code with the bundled profile:
./voice-layer install --agent claude --mode symlink
VOICE_LAYER_PROFILE="$PWD/tests/fixtures/profiles/valid-profile.md" claude
Then ask Claude Code:
/write-in-my-voice draft a PR comment from this:
Change parseWidgetConfig() in src/widgets/config.ts.
Goal: fix FOO-123.
Behavior is behind ENABLE_WIDGET_V2=true.
Tests: npm test -- widgets/config.test.ts.
Concern: we should make sure invalid widget types still return the existing validation error.
A real zero-data Claude Code run produced:
Patch parseWidgetConfig() in src/widgets/config.ts for FOO-123. Gated on
ENABLE_WIDGET_V2=true.
One thing to confirm before this lands: invalid widget types should still
return the existing validation error, not fall through to the new path. Worth
an explicit test case alongside npm test -- widgets/config.test.ts.
The same facts can be shaped for another channel:
/write-in-my-voice make this suitable for a short Slack update to the team:
Change parseWidgetConfig() in src/widgets/config.ts.
Goal: fix FOO-123.
Behavior is behind ENABLE_WIDGET_V2=true.
Tests: npm test -- widgets/config.test.ts.
Concern: invalid widget types should still return the existing validation error.
Output:
Patching parseWidgetConfig() in src/widgets/config.ts for FOO-123, gated on
ENABLE_WIDGET_V2=true. Tests: npm test -- widgets/config.test.ts. Watch item:
invalid widget types should still hit the existing validation error. Flagging
in case anyone sees otherwise.
The broader synthetic example set lives in examples/README.md. No examples are based on a real person.
From a clone of this repo, if you are not using Homebrew:
./voice-layer install --agent both
./voice-layer doctor --agent both
Restart Claude Code or Codex after installing.
The CLI links the skills into:
~/.claude/skills~/.agents/skillsIt also creates the local profile path:
~/.config/voice-layer/voice-profile.md
Preview file changes before installing:
./voice-layer install --agent both --dry-run
Remove skill links without deleting your profile:
./voice-layer uninstall --agent both
Delete local profile data only with an explicit purge:
./voice-layer purge --yes
For Homebrew, plugin/marketplace installs, uninstall, and troubleshooting, see docs/install.md.
Before calibration, write-in-my-voice can still remove generic AI writing
patterns, but it does not know your voice yet.
Claude Code:
/write-in-my-voice rewrite this Slack reply:
Great question! It is important to note that we could potentially leverage this robust approach.
Codex:
Use $write-in-my-voice to rewrite this Slack reply:
Great question! It is important to note that we could potentially leverage this robust approach.
Start calibration when you want the skill to learn your style:
/calibrate-my-voice build my local voice profile.
The calibrating agent should first inspect what source tools are available in the current session, then ask which sources it may use. It can work from pasted samples, exports, local git commits, code reviews, chat, email, docs, or project-management tools such as Linear, Jira, Asana, Monday.com, or internal trackers.
It must not read any source until you approve the source, scope, date range, author filter, and retention mode.
voice-layer separates stable identity from temporary adaptation:
corporate-friendly or
chill-rock-star.The key rule:
Voice is portable. Culture is not a costume.
This repo does not include a hosted service, telemetry, or personal samples. CI runs a static no-silent-telemetry guard over executable repo code:
voice-layer is not an AI detector bypass tool. It is meant to help users
communicate honestly in their own style, with local profile data they can
inspect and delete.
python3 scripts/check_no_silent_telemetry.py
The generated profile stays local by default at:
~/.config/voice-layer/voice-profile.md
Read PRIVACY.md before calibrating from private workspaces.
python3 scripts/sync_core.py --check
python3 scripts/validate_repo.py
python3 scripts/check_no_silent_telemetry.py
python3 scripts/validate_profile.py ~/.config/voice-layer/voice-profile.md
python3 scripts/evaluate_examples.py
python3 scripts/evaluate_behavior.py
python3 scripts/evaluate_behavior.py --print-pilot-prompts
python3 -m unittest discover -s tests
Gives Claude Code access to the prompts.chat library, letting you search, retrieve and improve AI prompt templates, and find and install Agent Skills from its registry.
A Claude Code skill for generating editable PPTX presentations and slides from a workflow, with reusable brand, style, layout, and deck workspaces, native charts, speaker notes, and template filling.
Gives AI agents control over Word, Excel and PowerPoint files, with skills for building .docx reports, academic papers, Excel dashboards and Morph-style animated slides.
A skill that builds animation-rich HTML presentations from scratch or converts PowerPoint files to web slides. Useful for anyone turning a deck into a web presentation.
A local-first personal voice layer for AI agents. Bring your voice to any agent. Adapt to any audience without losing yourself. Humanize AI-generated drafts by rewriting them in your own calibrated voice: PR comments, Slack replies, docs, RFCs, and emails. Install it with the command on its page. It includes calibrate-my-voice, write-in-my-voice. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it