Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/petekp-clean-copy
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/clean-copy
What's inside
- Skill name
clean-copy- Description
- Cut interface copy that should not exist. Captions that restate a label, hints that pre-empt a worry the user never had, warnings that are scar tissue from a fixed bug. Use when writing or reviewing any user-facing string (labels, hints, empty states, toasts, confirmations, button text), or when asked to clean up or tighten copy.
- License
- MIT
- Instructions
- 45 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Clean copy Most bad copy is not badly written. It is copy that should not be on the screen. Editing it for tone only makes the wrong thing read better. So the first question is never "how should this be phrased". It is: should this exist? ## The ladder Walk each string down these rungs in order. Stop at the first one that fires and delete. **1. Does this need to surface at all?** Would the user ever have wondered about this, unprompted? If not, you are not answering a question. You are planting one. Nobody opens an avatar cropper wondering whether the circle is a true circle. A caption reading "the preview is rendered at the exact size used on your profile" makes them wonder whether it might not be. **2. Does the label need to exist?** A caption earns its place only when the value is meaningless without it. If the label, the field, or the value beside it already says the thing, the caption is noise. A field labelled "Retry limit" does not need "how many times we retry" beneath it. A bare "30" does need "seconds" beside it. That one stays. **3. Is it pre-empting something the user never had to consider?** The tell: copy that rules out a failure rather than describing a behaviour. > Cancel upload > *Always keeps the files already transferred. Never wipes the folder like the old cancel did.* That second sentence exists because of a bug. The user does not know about the bug, does not share your memory of fixing it, and now has a worry they arrived without. The fix for a fixed bug is the fix. Not a caption about the fix. The same goes for copy defending a design decision, or hedging about something that simply works: "this may look slow but it is not", "don't worry if the count seems off for a moment". **4. Rewrite to remove the offending part. If nothing is left, delete the element.** Do not preserve a hint because there was a hint there. An empty `hint` prop comes off the component. An explanatory `<p>` gets deleted, not shortened to a stub. ## What survives Copy stays when the user genuinely cannot act without it: - A real consequence at the moment of choosing. Under a destructive button: *"Anything not yet synced is lost."* They need it before they click, and they cannot infer it. - A compatibility or scope fact they cannot see. *"Works with keys issued after March; older keys need rotating first."* The checkbox alone does not tell them whether it applies to them. - What a blank state means and what to do next. *"No projects yet. Create one and it will appear here."* - Units, scale, or format on a bare value. The first example is one sentence. Had it continued *"only use this when a sync is stuck"*, that half would go. It instructs the user on when they are allowed to press a button they can already see. Keep the consequence, cut the permission slip. ## Working style - Run this pass before any phrasing or voice pass, such as refine-prose or write-as-pete. Polishing a string that should be cut only makes the wrong thing read better. - Read the string next to what is actually on screen around it: the label, the value, the button. Redundancy is invisible when you read the string alone. - Cut whole clauses, not words. Tightening "Leave this blank to use the default setting for your account" into "Leave blank for the default" is a smaller win than noticing which half of a two-sentence hint is doing no work. - When reviewing a batch, report as `file:line` with the current string and either the rewrite or `cut`, and say in a few words which rung it failed. Do not rewrite copy that passes. - If a string is load-bearing but only in a rare state, consider whether it belongs in that state rather than permanently on the page.
From petekp/claude-code-setup, MIT.
More from petekp/claude-code-setup
- 0.663score
frame-check
petekp
Check whether the stated problem is the right problem before work commits to it.
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
herdr-names
petekp
Rename Herdr tabs, panes, and agents so each sidebar entry says in a few words what that session is doing.
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
latent-potential
petekp
First-principles, team-of-experts assessment of a software project that surfaces latent potential; underexploited assets, a sharper north star, missing…
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
pr-description
petekp
Write or update a GitHub PR description a teammate understands in one quick read: a picture when one fits, then a few plain sentences grounded in the diff and…
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
pr-screenshot-comparison
petekp
Create clear, polished before-and-after screenshots from the actual running product for a GitHub pull request.
SkillAFreshness: A★ 48Claude Code +9 - 0.660score
pr-self-review
petekp
Draft explanatory author-context comments for the user's own PR or local diff.
SkillAFreshness: A★ 48Claude Code +9 - 0.659score
vignette-todo-run
petekp
Run a batch of Vignette TODO items as a multi-agent worktree run.
SkillAFreshness: A★ 48Claude Code +9 - 0.658score
code-comments
petekp
Write, review, or remove code comments.
SkillAFreshness: A★ 48Claude Code +9 - 0.658score
release-notes
petekp
Write release notes or a changelog entry that tell existing users what they will notice after updating, with the technical detail after it.
SkillAFreshness: A★ 48Claude Code +9 - 0.623score
refine-prose
petekp
Refine prose so it says what the writer means to a specific reader: cut the text that should not exist, put the point first, state things literally, remove…
SkillBFreshness: B★ 48Claude Code +9 - 0.618score
catch-up
petekp
Give the human a fast, plain-English catch-up on what changed in the project: what the agents did, why, and what decisions need their input.
SkillBFreshness: B★ 48Claude Code +9 - 0.615score
deep-research
petekp
Investigate a question that requires sustained research across sources and produce cited findings.
SkillBFreshness: B★ 48Claude Code +9
Signals
- Stars
- 48
- Forks
- 11
- Open issues
- 2
- Last commit (this folder)
- Sep 23, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/petekp/claude-code-setup
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from petekp
- 0.663score
frame-check
petekp
Check whether the stated problem is the right problem before work commits to it.
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
pr-screenshot-comparison
petekp
Create clear, polished before-and-after screenshots from the actual running product for a GitHub pull request.
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
pr-description
petekp
Write or update a GitHub PR description a teammate understands in one quick read: a picture when one fits, then a few plain sentences grounded in the diff and…
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
herdr-names
petekp
Rename Herdr tabs, panes, and agents so each sidebar entry says in a few words what that session is doing.
SkillAFreshness: A★ 48Claude Code +9 - 0.663score
latent-potential
petekp
First-principles, team-of-experts assessment of a software project that surfaces latent potential; underexploited assets, a sharper north star, missing…
SkillAFreshness: A★ 48Claude Code +9 - 0.660score
pr-self-review
petekp
Draft explanatory author-context comments for the user's own PR or local diff.
SkillAFreshness: A★ 48Claude Code +9
Cite this page
clean-copy skill. Agent Mart. https://agentmart.dev/skills/petekp-clean-copy (last updated 2026-10-24)