Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add scarletkc/agents --skill product-writinggit clone --depth 1 https://github.com/scarletkc/agentsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/scarletkc/agents/product-writing)<a href="https://agentmods.dev/skills/scarletkc/agents/product-writing"><img src="https://agentmods.dev/badge/skills/scarletkc/agents/product-writing/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/scarletkc/agents/product-writing"><img src="https://agentmods.dev/badge/skills/scarletkc/agents/product-writing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00040 | $0.01913 |
| Opus 5 | $0.00020 | $0.00957 |
| Sonnet 5 | $0.00008 | $0.00383 |
| Haiku 4.5 | $0.00004 | $0.00191 |
Grade A, and why
product-writing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 161 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Product Writing
Help the reader understand what is happening and what they can do next.
Work from the task
Use only the sections relevant to the requested copy. Preserve the user's meaning, terminology, audience, and requested format. Follow existing product conventions where they help readers recognize controls, commands, and states. A wording task does not itself authorize changes to product behavior or a reorganization of the documentation.
Ground behavioral claims in supplied facts, the relevant implementation or specification, or an observed result. When a fact cannot be verified, identify that uncertainty where it matters and complete the parts that are supported. Do not invent behavior or a cause to make the text sound complete.
Interface copy, errors, and help
- Name the action or state accurately. Distinguish saving a setting from testing a connection, accepting a request from completing a job, and partial success from full success. For example, a queued export should not announce that a file is ready to download.
- Make recovery useful. Identify what failed and the relevant input or operation. Include a next step when it is known and actionable. An unknown network failure does not establish that credentials are wrong. Put detail in the message, an expanded view, or a specific help link as the interface allows; an error need not fill a fixed template.
- Preserve meaningful distinctions. Keep prerequisites, limits, and consequences that affect the reader's decision. Use the product's names for controls and commands. Do not shorten away which item an action affects or imply that an irreversible action is temporary.
Status and diagnostic output
- Describe the state the label promises. Effective settings account for runtime overrides; stored settings should be identified as such. If only the API key comes from the environment, label that field rather than the entire endpoint as environment-provided.
- Keep failure visible. Distinguish unknown or unavailable values from empty, missing, or default values. If partial results are supported, identify what could not be checked. Follow the project's failure behavior instead of introducing a fallback merely to produce a message.
- Preserve output contracts. Keep prose and decoration out of JSON, TSV, and other machine formats. Use existing diagnostic channels for explanations. Keep paths, IDs, and commands complete where users need to copy them, subject to the product's redaction rules.
- Give diagnostic views distinct jobs. When a dedicated inspection command
already provides all values and origins, a health summary can focus on
deviations, failures, and their sources, with a pointer to full details.
Without that separate view, preserve the values needed to investigate the
problem. Fifteen normal
field: originrows can bury the two overrides that matter, but removing the only available configuration view loses information. Re-read adjacent labels to catch duplication such asdefault (default).
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 161 lines · 40 tokens per session scan A 457ab0b9e8c4
product-writing is a skill published in the GitHub repository scarletkc/agents (208 stars, last pushed yesterday), licensed Apache-2.0. It adds 40 tokens to every session and 1,913 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-08.
Other skills, from other repositories
maintaining-windows-health
Hands-on playbook for Windows 11 disk cleanup, dev-machine optimization, and proactive health alerting. Use when the PC is full or slow, when a BSOD / Kernel-Power 41 / crash dump / commit-memory pressure happened, when the user asks to free disk space, audit storage, set up disk/memory alerts, or restore the same…
prompt-engineering
Universal prompt engineering techniques for any LLM. Use when crafting, optimizing, or reviewing prompts for AI models. Triggers on requests like "improve this prompt", "write a system prompt", "optimize my instructions", "help me prompt engineer", "audit this prompt", "review my prompt", or when building agentic…
installing-cli-tools
Install, upgrade, configure, and verify developer CLI tools safely. Use when a user asks to install a new CLI, command-line app, SDK tool, package-manager binary, GitHub release binary, language runtime tool, or AI/vendor CLI; configure shell PATH/completions; run first login; set API keys, tokens, or env variables…
repo-activity-summary
Summarize a repository's recent engineering activity from git history — technologies, work types, churn hotspots, contributor patterns, and velocity. Use when asking "what has this repo been working on", "is this project active", "who contributes what", "where are the hotspots", or before onboarding onto an unfamiliar…
clipboard
Copy text to clipboard with optional rich formatting. Triggers on "copy to clipboard", "copy that", "pbcopy", "copy formatted", "copy rich text".
fetch-url-as-markdown
Fetch a web page (URL) and return clean Markdown via local trafilatura, with Exa MCP as a fallback for JS-rendered or anti-bot pages. Use when the user asks to read, fetch, scrape, summarize, or quote a URL — prefer this over the built-in WebFetch tool. Don't use for binary files (PDFs, images, archives) or for…