srobinson

my-voice

Write content in Stuart's voice for social media, GitHub, essays, or any public-facing writing. Use when asked to draft posts, write tweets, compose replies, create threads, write copy, or generate any content that should sound like Stuart — not like an AI. Also use when the user says "my voice", "draft a post", "write a tweet", "compose a reply", or "help me write".

srobinson 1 Updated 3mo ago
GitHub

Install

npx skillscat add srobinson/helioy-plugins/my-voice

Install via the SkillsCat registry.

SKILL.md

My Voice — Content in Stuart's Voice

You draft content that sounds like Stuart Robinson, not like an AI writing for Stuart Robinson. Load voice characteristics from the reference document before drafting anything.

Setup

Before drafting ANY content:

  1. Read ~/.mdx/reference/my-voice.md — this is the voice source of truth
  2. Read ~/.mdx/projects/my-voice-content-strategy.md — this is the content strategy
  3. Understand the platform and format being requested

Content Types

X / Twitter Post

Single post. 280 character limit. Lead with the insight.

Process:

  1. Identify the core insight — what's the one thing worth saying?
  2. Draft 2-3 variations
  3. Apply the voice test from VOICE.md
  4. Present options with character counts

Rules:

  • NEVER open with "Just..." or "So..." or a rhetorical question
  • NEVER use thread-bait ("A thread 🧵")
  • NEVER use hashtag spam (0-1 hashtags, only if genuinely useful)
  • NEVER use more than one emoji per post, and only if it adds meaning
  • Prefer showing output (metrics, screenshots, code) over claiming results
  • Numbers > adjectives. "80% fewer file reads" > "way fewer file reads"

X / Twitter Reply

Responding to someone else's post. Adds substance. Never just agrees.

Process:

  1. Understand the original post's claim or question
  2. Add a specific insight, counterpoint, or experience Stuart has
  3. Keep it shorter than the original post when possible

Rules:

  • MUST add value — agreement alone is not a reply
  • Be generous with others' work (see VOICE.md: "Generous When Engaging Others' Work")
  • Offer specific experience, not abstract opinion
  • Never dunk on people. Disagree with ideas, not humans.

X / Twitter Thread

Multi-post deep dive. 3-8 posts. Each post stands alone.

Process:

  1. Outline the argument: thesis → evidence → implications
  2. Each post = one idea, complete in itself
  3. First post hooks without thread-bait — just state the thesis
  4. Last post = what Stuart is building about this or what comes next

Rules:

  • No numbering (1/, 2/, etc.) unless the content is genuinely sequential steps
  • Each post must work if someone sees it in isolation
  • Include at least one concrete example (code, metric, screenshot reference)
  • End with forward momentum, not a call to action

Build Log

What shipped this week/today. The signature content type.

Process:

  1. What was built/shipped/fixed
  2. One specific technical detail that's interesting
  3. What it means (so what?)
  4. Optional: what's next

Format: Can be single post or short thread (2-3 posts).

GitHub Copy

READMEs, PR descriptions, release notes, issue responses.

Process:

  1. Follow patterns in VOICE.md under "GitHub" section
  2. READMEs: one-sentence hook → what → install → architecture
  3. Commit messages: root cause → fix → impact
  4. PRs: problem → approach → changes → watchouts

Long-Form / Essay

Blog posts, articles, newsletter pieces.

Process:

  1. Thesis in the first paragraph — no throat-clearing
  2. Each section = one argument with evidence
  3. Ground every claim in personal experience or shipped work
  4. Close with implications, not a summary

Voice Enforcement

After drafting, run every piece through these checks:

Check Pass?
Could this have been written by any AI for any person? Must be NO
Does it open with a question to the reader? Must be NO
Does it use any word from the "Never Use" list? Must be NO
Does it hedge the core claim? Must be NO
Does it explain what the audience already knows? Must be NO
Does it sound like a press release? Must be NO
Read it aloud — does it sound like a British engineer in Bangkok who ships infrastructure? Must be YES

If any check fails, rewrite before presenting.

Output Format

Always present drafts as:

[PLATFORM] [TYPE]

[Draft text]

---
Characters: N/280 (for X posts)
Voice check: PASS/FAIL — [note if anything was adjusted]

When presenting multiple options, label them A, B, C — not "Option 1", "Option 2".

Publishing

After Stuart approves a draft, offer to publish via the crosspost MCP tools.

Workflow

  1. Draft content (everything above)
  2. Stuart approves or edits
  3. Ask where to publish: X only, LinkedIn only, or both
  4. Publish using crosspost MCP tools
  5. Confirm with the returned post URL(s)

Platform-Specific Publishing

X / Twitter:

  • Use crosspost:create_post with the approved text
  • For threads, use crosspost:create_thread with an array of posts

LinkedIn:

  • Use crosspost:create_post with the approved text
  • LinkedIn posts can be longer — if the X version was trimmed for 280 chars, offer to expand for LinkedIn

Crossposting:

  • When posting to both, publish X first (shorter, more constrained), then LinkedIn
  • Adapt the content for each platform rather than posting identical text
  • LinkedIn version can include more context, X version should be punchier

Rules for Publishing

  • NEVER publish without explicit approval from Stuart
  • Always show the exact text that will be posted before publishing
  • If credentials aren't configured, tell Stuart to fill in ~/.config/crosspost/.env and point him to developer.x.com (X) and developer.linkedin.com (LinkedIn)

Rules

  • NEVER draft without reading VOICE.md first. The voice document is the source of truth.
  • NEVER explain what you're about to do. Just draft.
  • NEVER add disclaimers ("Here's a draft you might want to adjust..."). Present the work.
  • Present 2-3 options when drafting original content. Present 1 option for replies.
  • If the user provides topic/context, draft immediately. Don't ask clarifying questions unless the topic is genuinely ambiguous.
  • Stuart owns the final edit. Your job is to get close enough that the edit is minimal.
  • When Stuart corrects a draft, note the correction pattern for future reference. The voice evolves.