| name | voice |
| description | Writing voice profile for AI-drafted communication. Provides channel-specific style samples and anti-patterns under profiles/ — pick the file matching the output destination (PR comment, chat, commit message, formal email). Use when the user says "draft in my voice", "rewrite this like I'd say it", or another skill needs a consistent writing register. This skill does not know about its consumers. |
voice — writing-voice profile
Single source of truth for "how the owner writes" across channels and audiences. Read-only resource — does not invoke other skills, does not know who consumes it.
Channel selector
Pick the profile that matches where the text will appear. When in doubt, default to pr-comments (most universally calibrated).
| Output channel | Profile | Notes |
|---|
| Code review comment (GitHub PR, GitLab, Bitbucket) | profiles/pr-comments.md | Terse, lowercase-friendly, question-form, backticks for code refs |
| Slack / Teams / Discord chat | profiles/chat-casual.md | Most casual; emoji, contractions, fragments OK |
| Git commit message body / PR description | profiles/commit-messages.md | Conventional commits, scoped, terse subject + optional bullet body |
| Email / DM to outside-org / formal stakeholder | profiles/formal-external.md | Capital starts, no slang/emoji, still concise |
Universal rules (apply to all profiles)
- The AI-tell blocklist lives in
../../rules/communication.mdc — those AI tells are forbidden in every channel.
- Don't add hedging ("perhaps", "it might be worth considering", "I noticed") regardless of formality.
- Don't restate context the recipient already has.
- Don't praise-sandwich.
- Match the recipient's existing energy: if the thread is one-line replies, don't write paragraphs.
How a consumer loads this profile
Any skill or invocation that drafts text on the owner's behalf can load these files directly. Standard pattern:
1. Determine the output channel (PR comment? chat reply? commit message?).
2. Read the AI-tell blocklist in `rules/communication.mdc` (always).
3. Read `.cursor/skills/voice/profiles/<channel>.md`.
4. Pass both as a <voice_profile> block to the generating agent with the instruction:
"Match the samples in this profile. Anti-patterns are non-negotiable."
5. Self-check generated output against the anti-patterns before showing to user.
When project-specific conventions conflict with the voice profile (e.g. a repo's git log uses past-tense commits but voice says imperative), project conventions win — voice fills gaps, doesn't override existing norms.