Sepia
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
Write and ship a blog post for your project that reads like a human wrote it and pulls SEO traffic to your site.
$ npx skills add tamdogood/builder-essential-skills --skill write-blog -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tamdogood/builder-essential-skills write-blog --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/tamdogood/builder-essential-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/write-blog .claude/skills/write-blog && 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 "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .claude/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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/tamdogood/builder-essential-skills/tree/main/skills/write-blogType 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 tamdogood/builder-essential-skills --skill write-blog -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tamdogood/builder-essential-skills write-blog --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tamdogood/builder-essential-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/write-blog .agents/skills/write-blog && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .agents/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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 tamdogood/builder-essential-skills --skill write-blog -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tamdogood/builder-essential-skills write-blog --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tamdogood/builder-essential-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/write-blog .cursor/skills/write-blog && 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 "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .cursor/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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/tamdogood/builder-essential-skills.git --path skills/write-blog--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 tamdogood/builder-essential-skills --skill write-blog -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tamdogood/builder-essential-skills write-blog --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tamdogood/builder-essential-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/write-blog .gemini/skills/write-blog && 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 "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .gemini/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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 tamdogood/builder-essential-skills write-blogInstalls 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 tamdogood/builder-essential-skills --skill write-blog -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tamdogood/builder-essential-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/write-blog .github/skills/write-blog && 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 "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .github/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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 tamdogood/builder-essential-skills --skill write-blog -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tamdogood/builder-essential-skills write-blog --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tamdogood/builder-essential-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/write-blog .opencode/skills/write-blog && 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 "write-blog" agent skill from https://github.com/tamdogood/builder-essential-skills/tree/main/skills/write-blog into .opencode/skills/write-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-blog", 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.
write-blogWrite and ship a blog post for your project that reads like a human wrote it and pulls SEO traffic to your site.
Write Blog is an agent skill from tamdogood/builder-essential-skills. Write and ship a blog post for your project that reads like a human wrote it and pulls SEO traffic to your site. Use when a contributor wants to draft, edit, or publish a blog post, add a post to the site, write about the project for search/traction, or make an existing draft sound less like AI. Enforces the house voice (no em dashes), picks a non-cannibalizing angle, uses ASD-STE100 Simplified Technical English for technical prose, wires the post into your site, and runs the humanizer pass before shipping.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files (for example `README.md`, `check.sh` and `reference/angles.md`). Compatibility notes: claude-code
It sits in Writing & Content, covering Blog and article writing and Humanizing AI text. The repository describes itself as: A repository for skills that are essential to my daily work. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1be9984. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGrepGlobBashAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashFrom 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.
claude-code
From compatibility in the SKILL.md frontmatter.
Write Blog loads about 2.1k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 1,205 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Grep, Glob, Bash, AskUserQuestionAutomated 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 tamdogood/builder-essential-skills at commit 1be9984, republished under its MIT licence (© tamdogood). 1,205 words, ~2,107 tokens.
.claude/skills/write-blog/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.You are helping a contributor write a blog post for the project's website. The bar: it reads like a person wrote it, it ranks for a search cluster no other post already owns, and it ships wired correctly into the site with the build green.
Use ASD-STE100 Simplified Technical English (STE) for the post's technical and instructional prose. Use short, direct sentences, consistent terms, clear actions, and the approved meaning of technical words when the STE dictionary is available. Do not use idioms, slang, figurative language, or synonym changes that can make a technical term unclear. Preserve exact code, commands, identifiers, product names, and quotations. The post can keep a human opinion and a concrete example, but clarity takes priority over rhythm or decoration. Do not claim strict STE conformance without checking the current ASD-STE100 issue and dictionary.
This skill exists so every contributor writes in the same voice, picks non-overlapping topics, and passes the same anti-AI-slop gate, whether or not they already know the house rules.
No em dashes (—) or en dashes (–). Ever. The house voice bans them. Use a period, a
comma, or "so"/"because"/parentheses instead. A single dash in a draft is a hard fail.
There is a scanner: run bash check.sh <file> (in this skill's folder) on any draft before
you call it done.
Do these in order. Don't skip the angle check or the humanizer pass.
Before writing a word, read what already exists so you match voice and don't cannibalize keywords:
reference/angles.md (in this skill folder) for how to pick an angle that doesn't
collide, plus the topics still untapped.reference/voice.md for the house voice and the anti-AI checklist, self-contained.reference/craft.md for the writing craft: leads that win the click, spine structure,
and which creative-writing skill to reach for at each stage.reference/seo.md for on-page keyword placement, internal linking, verifying the
machine-readable SEO, and the post-ship distribution loop that earns the first backlinks.Every post must own a distinct search cluster. Two posts fighting for the same
keywords cannibalize each other. From your post index and reference/angles.md, pick an
angle no shipped post already owns, then pitch it back to the contributor in one line
before drafting: the working title, the one-sentence thesis, and the 3-5 keyword phrases it
targets. Confirm before you write the body. If they gave you a topic that collides with an
existing post, say so and propose the adjacent-but-distinct angle instead.
A good post has a spine, not a listicle. Read reference/craft.md before you outline; the
lead and the H2-spine are 80% of whether the post gets finished and ranked. Structure:
Write the prose as plain markdown first, in your blog's source directory (the source of
truth). Follow reference/voice.md, reference/craft.md, and the STE guidance above as
you write. Keep it honest, concrete, and grounded in real project code. Use one clear
opinion and support it with evidence. If /direct-response-copy is available in your environment, run it
on the title, description, and closing CTA (only those three surfaces, not the body).
Run a humanizer pass on the draft: if /humanizer is available in your environment, invoke
it on the draft. If it isn't available, apply the checklist in reference/voice.md
yourself. Then run an STE pass. Check sentence length, clear subjects and actions,
consistent technical terms, approved word meanings when available, and intentional
exceptions. Strip: significance inflation, promotional adjectives, the rule of three,
"-ing" tail analyses, negative parallelisms ("it's not X, it's Y"), synonym cycling,
hedging, and every dash. For headline/description/CTA polish you may also pull in
/direct-response-copy if it's available.
Then run bash check.sh <draft-file> and fix anything it flags.
Follow reference/wiring.md. In short: register the post in whatever index/registry your
blog uses, add the body in your blog's format, make sure the SEO surfaces (sitemap, RSS,
OG/Twitter cards, JSON-LD) include the new post, add the cover image, and build. For keyword
placement (title/description/first-H2/tags), internal-link count, and anchor-text rules,
follow reference/seo.md. Add a reciprocal inbound link from the most related existing post.
Your site's build command must be green. Then smoke-test the post: confirm the post page,
the cover image, the blog index, the sitemap, and the RSS feed all load and include the new
post. View source on the post and confirm the meta description, OG/Twitter tags, and
BlogPosting JSON-LD actually emitted with the right values (reference/seo.md lists what
to check). Re-run bash check.sh on the final markdown. Only then is the post itself done.
A correct post with no inbound links does not rank. After it ships, seed the first signal:
if /x-tweet is available in your environment, run it on the post's core insight for a
thread that teaches the idea and links the post; cross-link the post from the relevant docs;
and answer the real question it solves where people are already asking it. See the
distribution loop in reference/seo.md. Always link the canonical production URL
(<your-site-url>/blog/<slug>), never a staging or preview host.
The scanner will flag SKILL.md and the reference/ files because they name the banned
characters (—) (–) and use → as teaching notation. That's expected. The scanner is
for blog drafts and rendered post bodies, not for this skill's documentation.
© tamdogood, 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 7 other files in skills/write-blog of tamdogood/builder-essential-skills.
Open the folder on GitHubat commit 1be9984
Write Blog 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 |
|---|---|---|---|---|---|---|
| Write Blog this skilltamdogood/builder-essential-skills | 220 | — | ~2.1k | Automated safety check: Notes | MIT | |
| SepiaNanako0129/sepia | 3k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Humanizer Zhai-zixun/humanizer-zh | 177 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Content Strategy And Assemblyjacob-dietle/context-os | 111 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Linkedin Writerflaqai/backlink_skills | 754 | — | ~6k | Automated safety check: Pass | MIT | |
| Writewaynesutton/markdown-site | 628 | — | ~3k | Automated safety check: Pass | MIT |
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
ai-zixun/humanizer-zh
Remove signs of AI-generated, translated, or overly mechanical Chinese prose.
jacob-dietle/context-os
This skill should be used when producing content (newsletter posts, blog posts, LinkedIn posts) from existing corpus material.
flaqai/backlink_skills
LinkedIn-native long-form article and newsletter writing workflow for LinkedIn and Google-to-LinkedIn topic discovery, business-depth research, professional thought leadership, evidence-led…
waynesutton/markdown-site
Writing style guide for technical content, social media, blog posts, READMEs, git commits, and developer documentation.
sickn33/agentic-awesome-skills
Generate clean, human-sounding, SEO-optimized WordPress blog posts with optional Yoast metadata, JSON-LD schema markup, and image SEO planning.
tamdogood/builder-essential-skills
Create truthful, human-centered marketing campaigns for an app or product, including positioning, channel copy, original artwork, editable layouts, README banners, and selective website integration.
tamdogood/builder-essential-skills
Generate, refine, compare, and when needed validate distinctive names for startups, AI products, developer tools, protocols, open-source projects, apps, product families, local businesses, services…
tamdogood/builder-essential-skills
Profile and debug Hermes sessions from their JSONL transcripts.
tamdogood/builder-essential-skills
Inspect an unfamiliar repository, turn a focused Markdown behavior scenario into a deterministic test in the repository's native test stack, run it, and preserve traceability between intent and code.
tamdogood/builder-essential-skills
Create or update a complete repository skill from a user's idea, including the workflow instructions, references, scripts or assets, agent metadata, skill-card artwork, cinematic banner artwork…
tamdogood/builder-essential-skills
Run a cumulative daily or retrospective sweep of research papers on a chosen topic, audit their claims, methods, integrity signals, and independent support, then identify overlooked but feasible…
Categories
Write and ship a blog post for your project that reads like a human wrote it and pulls SEO traffic to your site. Write Blog is an agent skill from tamdogood/builder-essential-skills. Write and ship a blog post for your project that reads like a human wrote it and pulls SEO traffic to your site.
Write Blog fits situations like: A contributor wants to draft; publish a blog post; add a post to the site; write about the project for search/traction.
Run `npx skills add tamdogood/builder-essential-skills --skill write-blog -a claude-code`. Or copy the skill folder (skills/write-blog in tamdogood/builder-essential-skills) into .claude/skills/write-blog in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tamdogood/builder-essential-skills --skill write-blog -a codex`. Or copy the skill folder (skills/write-blog in tamdogood/builder-essential-skills) into .agents/skills/write-blog 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 tamdogood/builder-essential-skills --skill write-blog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-blog, .gemini/skills/write-blog, .github/skills/write-blog and .opencode/skills/write-blog in your project.
Going by SKILL.md and its folder, Write Blog needs a shell for the scripts in its folder and the command-line tools its instructions call (bash). Our summary lists: A Bash shell. Its frontmatter pre-approves these tools: Read, Write, Edit, Grep, Glob, Bash, AskUserQuestion. Compatibility (from SKILL.md): claude-code.
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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Write Blog 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.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Write Blog: Sepia (Nanako0129/sepia, 3k stars), Humanizer Zh (ai-zixun/humanizer-zh, 177 stars), Content Strategy And Assembly (jacob-dietle/context-os, 111 stars) and Linkedin Writer (flaqai/backlink_skills, 754 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tamdogood (a GitHub user) maintains it in tamdogood/builder-essential-skills, which has 220 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on August 16, 2026.
Source: tamdogood/builder-essential-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.