Content Creator
thatrebeccarae/claude-marketing
Comprehensive content marketing toolkit with brand voice analysis, SEO optimization scripts, content frameworks, social media strategy, and content calendar planning.
A skill your agent uses when writing or fixing user-facing technical docs — a README, a getting-started tutorial, a how-to guide, or API/CLI/config reference — especially when a page tries to teach…
$ npx skills add ericrisco/rsc-harness --skill technical-writing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness technical-writing --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/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/technical-writing .claude/skills/technical-writing && 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 "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .claude/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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/ericrisco/rsc-harness/tree/main/skills/technical-writingType 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 ericrisco/rsc-harness --skill technical-writing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness technical-writing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/technical-writing .agents/skills/technical-writing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .agents/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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 ericrisco/rsc-harness --skill technical-writing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness technical-writing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/technical-writing .cursor/skills/technical-writing && 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 "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .cursor/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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/ericrisco/rsc-harness.git --path skills/technical-writing--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 ericrisco/rsc-harness --skill technical-writing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness technical-writing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/technical-writing .gemini/skills/technical-writing && 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 "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .gemini/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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 ericrisco/rsc-harness technical-writingInstalls 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 ericrisco/rsc-harness --skill technical-writing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/technical-writing .github/skills/technical-writing && 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 "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .github/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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 ericrisco/rsc-harness --skill technical-writing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness technical-writing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/technical-writing .opencode/skills/technical-writing && 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 "technical-writing" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/technical-writing into .opencode/skills/technical-writing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writing", 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.
technical-writingA skill your agent uses when writing or fixing user-facing technical docs — a README, a getting-started tutorial, a how-to guide, or API/CLI/config reference — especially when a page tries to teach…
Technical Writing is an agent skill from ericrisco/rsc-harness. Use when writing or fixing user-facing technical docs — a README, a getting-started tutorial, a how-to guide, or API/CLI/config reference — especially when a page tries to teach, explain and enumerate at once, a tutorial branches, a reference is padded with opinions, a README reads like a sales pitch, samples are stale, or weasel words have crept in. NOT an SEO blog article (that is article-writing), NOT the content calendar or pipeline (that is content-engine).
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/diataxis-modes.md`).
It sits in Writing & Content, covering Technical writing, Blog and article writing and Technical documentation. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
Read from SKILL.md and the folder at commit 92fde8f. 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.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ACME_KEYDD_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Technical Writing loads about 3k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 122 tokens; SKILL.md has 1,047 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); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,047 words, ~2,974 tokens.
.claude/skills/technical-writing/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.You write the document a person reads to use a product or codebase: a README, a tutorial, a how-to, API/CLI/config reference. Not marketing prose, not an SEO article, not a course. The craft is mostly one decision made early and held: what kind of doc does this reader actually need, then writing that one kind in its correct shape.
The backbone is Diátaxis — four documentation modes, each serving a distinct need (diataxis.fr). The sentence-level rules come from the Google developer documentation style guide (developers.google.com/style). The shipping discipline is docs-as-code: docs live with the code and lint in CI.
Before you write a line, name the reader's need and pick exactly one mode. Mixing modes in one page is the single biggest reason docs fail readers — the learner gets buried in parameters, the expert wades through a beginner tutorial to find one flag.
| Reader is… | They want… | Mode | Shape |
|---|---|---|---|
| Learning, new, hands need holding | To acquire skill by doing | Tutorial | Linear, runnable, guaranteed to work |
| Competent, has a specific goal | To get a task done now | How-to | Goal-titled, ordered steps, no teaching |
| Working, needs a fact | To look something up | Reference | Dry, complete, mirrors the product |
| Curious, wants the "why" | To understand | Explanation | Discursive, trade-offs, no steps |
Rule: one page, one mode. Why: a tutorial answers "how do I start?", reference answers "what are the flags?" — a reader arrives with one question, and a page serving two answers neither well.
If a page already mixes modes, do not patch it — split it. See references/diataxis-modes.md for a worked split of one bad page into four.
A lesson a beginner runs end to end and succeeds. You are the instructor; their success is your responsibility, not theirs.
Bad → Good opening:
<!-- Bad: assumes context, branches, explains -->
Depending on your package manager, install the SDK (we use a monorepo
because it scales better). Configure your environment as needed.
<!-- Good: one path, concrete, checkable -->
## Build your first report
You need Python 3.12+ and a free API key from example.com/keys.
1. Install the SDK:
```bash
pip install acme-sdk==4.2.0export ACME_KEY="your-key-here"echo $ACME_KEY — you should see your key printed back.
## How-to
A recipe for someone who already knows the product and has a real goal right now.
- Title it as the goal: **"How to rotate an API key"**, not "API keys".
- Assume competence. Do not re-teach concepts; link to reference/explanation instead.
- Ordered steps, but the reader may adapt — state the goal so they can.
- Address one real-world task. "How to configure logging" is reference; "How to ship logs to Datadog" is a how-to.
- No tutorial hand-holding, no narrative.
Bad → Good:
```md
<!-- Bad: teaches, no clear goal in the title -->
## Logging
Logging is important. A logger has levels: DEBUG, INFO… Here is how
levels work, and then some setup.
<!-- Good: goal title, competent reader, straight to it -->
## How to send logs to Datadog
1. Set `LOG_SINK=datadog` and `DD_API_KEY` in the environment.
2. Restart the worker: `acme worker restart`.
3. Confirm delivery in Datadog → Logs within ~1 min.The technical facts, structured to mirror the product. The reader is not reading top to bottom — they are scanning for one entry.
### `GET /reports/{id}`
| Param | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | path | string (uuid) | yes | Report identifier. |
| `fields` | query | string | no | Comma-separated fields to return. Default: all. |
**Responses**
| Status | Meaning |
|---|---|
| `200` | Report returned. |
| `404` | No report with that `id`. |
| `429` | Rate limit exceeded; retry after `Retry-After` seconds. |Background and the "why" — context, design decisions, trade-offs, alternatives considered.
The one doc everyone gets wrong by turning it into a pitch. A README lives in the top-level directory, orients a new reader, and at minimum says what the thing is, what it is for, and links to fuller docs (Google docguide).
Skeleton, in order: what + why (two lines) → install → one minimal runnable example → link to deeper docs → status/license.
Bad → Good opening lines:
<!-- Bad: a sales page -->
# Acme SDK 🚀
The most powerful, blazing-fast, developer-friendly toolkit to
effortlessly supercharge your data workflows!
<!-- Good: what it is, what it's for, in two lines -->
# Acme SDK
A Python client for the Acme reporting API. Fetch, filter, and export
reports without writing HTTP by hand.
## Install
```bash
pip install acme-sdk==4.2.0
## Sentence-level rules
Apply these to every mode. Each ships clearer prose at no cost.
| Rule | Why | Bad → Good |
|---|---|---|
| Second person, imperative steps | The reader is *doing* this | "The user should run…" → "Run…" |
| Active voice | Names who acts | "The file is created by the script" → "The script creates the file" |
| Present tense | Docs describe how it works now | "This will return a list" → "This returns a list" |
| Define before use | No forward references | Spell out a term the first time, then use it |
| One idea per sentence | Scannable, translatable | Split the 40-word sentence into two |
| Cut "in order to" | It is always just "to" | "in order to deploy" → "to deploy" |
| Ban weasel/AI-tell words | They lie about difficulty and add nothing | "simply run X" → "run X" |
Banned words: **simply, just, easy, effortless, seamless, robust, powerful, leverage, utilize, in order to, blazing-fast, supercharge**. If a step is "simple", the reader either already knows it (delete the word) or does not (the word mocks them). Full banlist with replacements is in `references/diataxis-modes.md`.
## Code examples
- Minimal: the fewest lines that work. Cut every line not required to run.
- Runnable and **tested** — copy-paste it onto a clean machine and confirm. Untested samples rot and misinform.
- Language-tag every fence (`bash`, `python`, `json`, `yaml`, `ini`).
- Show expected output so the reader knows they succeeded.
- No `...` standing in for required lines. Elide only genuinely irrelevant detail, and say so.
```python
# Good: minimal, runnable, shows what comes back
from acme import Client
client = Client(api_key="your-key")
report = client.reports.get("3f9a-...")
print(report.title)
# -> "Q2 revenue"Treat docs like code, or they go stale and mislead.
.vale.ini at the repo root, custom rules in a styles dir, run as a blocking check on every PR touching Markdown. Common rules ban "simply/just/easy" and enforce "sign in" over "log in". Used in production by GitLab, Datadog, and ING.pip install line in a tutorial breaks every reader.A starter .vale.ini, a custom banned-terms style, and a GitHub Actions blocking job are in references/vale-starter.md.
| Anti-pattern | Why it fails | Do instead |
|---|---|---|
| One page teaches + explains + lists params | Serves no reader well; all three are diluted | Split by mode (classify table above) |
| Tutorial that branches ("if you prefer…") | Beginner cannot judge the choice; loses the path | One guaranteed path; defer choices to a how-to |
| How-to that teaches concepts | Wastes the competent reader's time | Link to reference/explanation; just give steps |
| Reference with opinions ("we recommend…") | Pollutes a lookup with judgement | Move recommendations to how-to/explanation |
| README as a sales page | New reader still does not know what it is | What/why in two lines, then install + example |
Untested or ...-gapped code samples | They rot; reader copies a broken command | Test on a clean machine; show expected output |
| Weasel words (simply, just, seamless) | Lie about difficulty, add zero information | Delete the word; the imperative stands alone |
| Wall of text, no headings or steps | Unscannable; reader cannot find their answer | Short sentences, one idea each, real headings |
... hides a line the reader needs.scripts/verify.sh path/to/doc.md).references/diataxis-modes.md — per-mode templates, a worked split of one mixed page into four, and the full weasel-word/AI-tell banlist with replacements.references/vale-starter.md — starter .vale.ini, a custom banned-terms Vale style, and a GitHub Actions job running Vale as a blocking check.../article-writing/SKILL.md.../content-engine/SKILL.md.../course-storytelling/SKILL.md.../brand-voice/SKILL.md.../accessibility/SKILL.md.© ericrisco, 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 5 other files (scripts, references) in skills/technical-writing of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Technical Writing 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 |
|---|---|---|---|---|---|---|
| Technical Writing this skillericrisco/rsc-harness | 156 | — | ~3k | Automated safety check: Pass | MIT | |
| Content Creatorthatrebeccarae/claude-marketing | 162 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Rnd Technical Writerchendongqi/OPB-Skills | 125 | — | ~2.5k | Automated safety check: Pass | None | |
| Money Contentiamzifei/show-me-the-money | 1k | — | ~9.6k | Automated safety check: Pass | Custom licence | |
| Content Engineindranilbanerjee/digital-marketing-pro | 854 | 1 repos | ~8.9k | Automated safety check: Pass | MIT | |
| Content Briefindranilbanerjee/digital-marketing-pro | 854 | 1 repos | ~1.2k | Automated safety check: Pass | MIT |
thatrebeccarae/claude-marketing
Comprehensive content marketing toolkit with brand voice analysis, SEO optimization scripts, content frameworks, social media strategy, and content calendar planning.
chendongqi/OPB-Skills
Technical article writing assistant. An agent skill from chendongqi/OPB-Skills.
iamzifei/show-me-the-money
Automated content creation pipeline for business growth. An agent skill from iamzifei/show-me-the-money.
indranilbanerjee/digital-marketing-pro
Draft marketing content in brand voice — blog posts, ad copy, email sequences, social posts, landing pages, and brand-voice guides — through a gated pipeline (research, outline, draft, fact-check…
indranilbanerjee/digital-marketing-pro
Create a production-ready content brief a writer can execute without extra context — keyword map (primary, secondary, related questions), H2/H3 outline with key points and word-count targets, brand…
FerroxLabs/wayland
Cross-platform analytics mastery for content creators covering YouTube, Instagram, TikTok, Twitter/X, podcast, and newsletter metrics, audience demographic analysis, content performance patterns…
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Categories
A skill your agent uses when writing or fixing user-facing technical docs — a README, a getting-started tutorial, a how-to guide, or API/CLI/config reference — especially when a page tries to teach…. Technical Writing is an agent skill from ericrisco/rsc-harness. Use when writing or fixing user-facing technical docs — a README, a getting-started tutorial, a how-to guide, or API/CLI/config reference — especially when a page tries to teach, explain and enumerate at once, a tutorial branches, a reference is padded with opinions, a README reads like a sales pitch, samples are stale, or weasel words have crept in.
Technical Writing fits situations like: fixing user-facing technical docs — a README; A getting-started tutorial; API/CLI/config reference — especially when a page tries to teach; explain and enumerate at once.
Run `npx skills add ericrisco/rsc-harness --skill technical-writing -a claude-code`. Or copy the skill folder (skills/technical-writing in ericrisco/rsc-harness) into .claude/skills/technical-writing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill technical-writing -a codex`. Or copy the skill folder (skills/technical-writing in ericrisco/rsc-harness) into .agents/skills/technical-writing 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 ericrisco/rsc-harness --skill technical-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/technical-writing, .gemini/skills/technical-writing, .github/skills/technical-writing and .opencode/skills/technical-writing in your project.
Going by SKILL.md and its folder, Technical Writing needs a shell for the scripts in its folder, the command-line tools its instructions call (pip) and credentials named ACME_KEY and DD_API_KEY. Our summary lists: Python 3; A Bash shell; A credential in ACME_KEY; A credential in DD_API_KEY.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Technical Writing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k 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.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Technical Writing: Content Creator (thatrebeccarae/claude-marketing, 162 stars), Rnd Technical Writer (chendongqi/OPB-Skills, 125 stars), Money Content (iamzifei/show-me-the-money, 1k stars) and Content Engine (indranilbanerjee/digital-marketing-pro, 854 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.