Internal Communications Writer
anthropics/skills
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill…
Build newsletter writing instructions inside a Codex or Claude project.
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install charlie947/social-media-skills newsletter-voice --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/newsletter-voice .claude/skills/newsletter-voice && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .claude/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voiceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install charlie947/social-media-skills newsletter-voice --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/newsletter-voice .agents/skills/newsletter-voice && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .agents/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install charlie947/social-media-skills newsletter-voice --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/newsletter-voice .cursor/skills/newsletter-voice && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .cursor/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/charlie947/social-media-skills.git --path skills/newsletter-voice--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install charlie947/social-media-skills newsletter-voice --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/newsletter-voice .gemini/skills/newsletter-voice && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .gemini/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install charlie947/social-media-skills newsletter-voiceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/newsletter-voice .github/skills/newsletter-voice && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .github/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add charlie947/social-media-skills --skill newsletter-voice -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install charlie947/social-media-skills newsletter-voice --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/newsletter-voice .opencode/skills/newsletter-voice && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "newsletter-voice" agent skill from https://github.com/charlie947/social-media-skills/tree/main/skills/newsletter-voice into .opencode/skills/newsletter-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "newsletter-voice", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
newsletter-voiceBuild newsletter writing instructions inside a Codex or Claude project.
Newsletter Voice is an agent skill from charlie947/social-media-skills. Build newsletter writing instructions inside a Codex or Claude project. Runs after voice-builder. Produces newsletter-voice.md, a single file the assistant references when drafting newsletters in the user's voice. Works with or without existing newsletter samples: if the user has past issues, the skill analyses them; if not, the skill offers 6 archetypes tuned to the user's voice. Trigger whenever the user says "build my newsletter voice", "learn my newsletter style", "set up my newsletter system", "train on my…
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/archetypes.md`).
It sits in Writing & Content, covering Newsletters. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8cefb5b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Newsletter Voice loads about 2.5k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 185 tokens; SKILL.md has 970 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from charlie947/social-media-skills at commit 8cefb5b, republished under its MIT licence (© charlie947). 970 words, ~2,464 tokens.
.claude/skills/newsletter-voice/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.AskUserQuestion examples describe the questions, not a required API: use an available question tool within its limits, or ask in chat. Reuse answers and source material already supplied.about-me.md, voice.md and relevant brand files before personalised work. Confirm the intended author if files conflict or contain starter defaults. Ask for missing facts or run voice-builder; never inherit the maintainer's identity, accounts or private files.references/ relative to this skill folder. For an explicitly requested profile refresh, read and update the canonical about-me.md, voice.md or newsletter-voice.md in place, preserving unrelated user facts and rules. Consumers must reread those canonical files. Use a new filename only for new deliverables that would collide with unrelated existing files. Installation alone never starts an interview or writes files. Do not write persistent learnings unless requested.The moment this skill is triggered, check the project root for voice.md and about-me.md.
If either file is missing, tell the user:
Newsletter voice sits on top of your general voice profile. Run voice-builder first (upload the skill or say "build my voice"), then come back here once about-me.md and voice.md are in the project.
Then stop. Do not continue until both files exist.
If both files exist, read them fully, then go straight to Step 1.
Ask the user in chat:
Do you have 2 to 3 past newsletter issues I can learn from?
Yes: paste them here (one per message or all at once) No: type "archetype" and I will build from a template tuned to your voice
Wait for response.
If the user pastes 2 or more newsletters, go to Step 2a. If the user types "archetype", go to Step 2b. If the user pastes 1 newsletter, ask for at least one more. If they only have one, offer: "One sample is not enough for pattern detection. Want me to switch to archetype mode and use your one newsletter as a reference point?"
Read every newsletter fully. Look for patterns across issues, not one-off quirks. Extract:
Opening formula
Section structure
Data philosophy
Formatting
Length
Voice markers unique to newsletter format
Absence signals
Then go to Step 3.
Call the AskUserQuestion tool with a single question:
[
{
"question": "Which newsletter archetype fits what you want to write?",
"header": "Archetype",
"multiSelect": false,
"options": [
{"label": "Data tutorial", "description": "Numbers, frameworks, step-by-step methods with prompts"},
{"label": "Contrarian essay", "description": "Take a position, defend it, name the opposition"},
{"label": "Case study teardown", "description": "One subject per issue, unpacked in depth"},
{"label": "Curated digest", "description": "5 to 7 links with your commentary each week"},
{"label": "Personal essay", "description": "Reflection on a theme, story-first"},
{"label": "Interview or profile", "description": "One person per issue, Q and A or narrative"}
]
}
]After the user picks an archetype, load the matching defaults from references/archetypes.md inside this skill folder. Tune every field using voice.md and about-me.md before writing newsletter-voice.md. Flag inside the output file that archetype defaults were used and the file should be revisited after 5 published issues.
Create newsletter-voice.md in the project root. Single file, 800 to 1,200 words target. Use this structure:
# Newsletter Voice
## Source
[Sample-based: analysed X newsletter issues] OR [Archetype-based: [archetype name] tuned to voice.md. Revisit after 5 published issues.]
## Audience and purpose
[Who reads this newsletter and what they get from it. Written from about-me.md and voice.md. 2 to 3 sentences.]
## Voice principles
[3 to 5 core principles the writing always holds. Each one a short declarative sentence. Tuned to this user's voice.md.]
## Opening formula
[How issues start. Include 2 concrete templates with bracketed placeholders, e.g. "[Specific result with number]. [Credibility marker]. [Value promise for this issue]." Target word count for the opening section.]
## Section flow
[Standard structure of an issue, section by section, 5 to 8 sections max. Brief notes on what each section does and how long it runs.]
## Data and evidence
[How numbers and examples are used. Specific rules, e.g. "every claim needs a number", "sources linked inline", "example-to-abstraction ratio roughly 3:1".]
## Formatting rules
[Headers, lists, bold, italic, code blocks, visual markers. What to use, what to avoid. Drawn from samples or archetype defaults.]
## Closing and signoff
[How issues end. Forward-looking statement versus summary. Signoff phrase if a consistent one exists across samples (do not invent one).]
## What this newsletter never does
[1 short paragraph or 3 to 5 items. Drawn from absence patterns across samples or archetype defaults. Behaviours only, not a banned-words list.]
## Length
[Word count target for standard issues. Separate target for longer comprehensive guides if the user writes both formats.]Fill every section from the samples (or tuned archetype defaults). No generic filler. If the samples do not cover something, say "no clear pattern across samples" rather than guessing.
Tell the user:
Your newsletter voice is built. newsletter-voice.md is in your project root alongside about-me.md and voice.md. When you want to draft an issue, say "write a newsletter" and I will use all three files together.
[If archetype mode: Remember this file was built from archetype defaults. After 5 or so published issues, re-run this skill with your real samples for a sharper profile.]
One file in the project root:
© charlie947, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/newsletter-voice of charlie947/social-media-skills.
Open the folder on GitHubat commit 8cefb5b
Newsletter Voice next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Newsletter Voice this skillcharlie947/social-media-skills | 3.8k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Internal Communications Writeranthropics/skills | 180k | 38 repos | ~378 | Automated safety check: Pass | Apache-2.0 | |
| Clarityaddyosmani/clarity | 269 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| News Aggregator Skillcclank/news-aggregator-skill | 1.3k | — | ~2.1k | Automated safety check: Pass | None | |
| Changelog Social RecapFlorianBruniaux/claude-code-ultimate-guide | 6.1k | — | ~1.8k | Automated safety check: Notes | CC-BY-SA-4.0 | |
| News ExtractorNanmiCoder/NewsCrawler | 624 | — | ~1.3k | Automated safety check: Pass | GPL-3.0 |
anthropics/skills
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill…
addyosmani/clarity
Draft, rewrite, or review reader-facing prose so it is specific, useful, and recognizably the author's without inventing facts or performing humanness.
cclank/news-aggregator-skill
Comprehensive news aggregator that fetches, filters, and deeply analyzes real-time content from 44+ sources including Hacker News, Lobsters, Dev.to, GitHub, arXiv, Hugging Face Papers, AIHOT, TLDR…
FlorianBruniaux/claude-code-ultimate-guide
Turns CHANGELOG.md entries for a release or a week into LinkedIn, Twitter/X, newsletter and Slack posts in French and English.
NanmiCoder/NewsCrawler
新闻站点内容提取。支持 12 个平台:微信公众号、今日头条、网易新闻、搜狐新闻、腾讯新闻、BBC News、CNN News、Twitter/X、Lenny's Newsletter、Naver Blog、Detik News、Quora。当用户需要提取新闻内容、抓取公众号文章、爬取新闻、或获取新闻JSON/Markdown时激活。
ginobefun/BestBlogs
A skill your agent uses when the user wants to find today's most worth-reading content from BestBlogs, browse personalized feeds, check trending items, search specific topics, or explore curated…
charlie947/social-media-skills
Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.
charlie947/social-media-skills
Generate 24 to 40 LinkedIn post ideas in a single table by pairing the user's content pillars with 8 proven content formats.
charlie947/social-media-skills
Generate a branded slide-by-slide LinkedIn carousel using Gemini.
charlie947/social-media-skills
Generate 6 clickbait-style LinkedIn hook variations for any topic.
charlie947/social-media-skills
Surface the 20 most relevant stories in a niche from the last 7 days using available live research tools.
charlie947/social-media-skills
Write deadpan LinkedIn pinned comments AND matching image generation prompts in the user’s voice.
Categories
Build newsletter writing instructions inside a Codex or Claude project. Newsletter Voice is an agent skill from charlie947/social-media-skills. Build newsletter writing instructions inside a Codex or Claude project.
Newsletter Voice fits situations like: ever the user says build my newsletter voice; learn my newsletter style; set up my newsletter system; train on my newsletters.
Run `npx skills add charlie947/social-media-skills --skill newsletter-voice -a claude-code`. Or copy the skill folder (skills/newsletter-voice in charlie947/social-media-skills) into .claude/skills/newsletter-voice in your project. Claude Code loads it when a task matches its description.
Run `npx skills add charlie947/social-media-skills --skill newsletter-voice -a codex`. Or copy the skill folder (skills/newsletter-voice in charlie947/social-media-skills) into .agents/skills/newsletter-voice in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add charlie947/social-media-skills --skill newsletter-voice -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/newsletter-voice, .gemini/skills/newsletter-voice, .github/skills/newsletter-voice and .opencode/skills/newsletter-voice in your project.
SKILL.md names no scripts, command-line tools or credentials: Newsletter Voice is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Newsletter Voice is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Newsletter Voice: Internal Communications Writer (anthropics/skills, 180k stars), Clarity (addyosmani/clarity, 269 stars), News Aggregator Skill (cclank/news-aggregator-skill, 1.3k stars) and Changelog Social Recap (FlorianBruniaux/claude-code-ultimate-guide, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
charlie947 (a GitHub user) maintains it in charlie947/social-media-skills, which has 3,844 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 15, 2026.
Source: charlie947/social-media-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.