Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Copy That

ASecurity

Transmission hygiene for content leaving the chat. Anything the human will copy out — posts, comments, emails, commit messages — ships inside a fenced code block, pre-formatted for the destination venue's rules (via formats/ plugins), with out-of-band notes strictly outside the fence. Use whenever drafting content for another platform, when a destination venue is named, or when a paste came out garbled.

56 stars
0 votes
0 copies
0 views
Added 10/6/2026
developmentgogit

Works with

cli

Security Analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add SimHacker/moollm --skill copy-that --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Copy That?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Copy That
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/simhacker-copy-that/badge)](https://www.skillsdirectory.com/skills/simhacker-copy-that)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: copy-that
description: Transmission hygiene for content leaving the chat. Anything the human will copy out — posts, comments, emails, commit messages — ships inside a fenced code block, pre-formatted for the destination venue's rules (via formats/ plugins), with out-of-band notes strictly outside the fence. Use whenever drafting content for another platform, when a destination venue is named, or when a paste came out garbled.
allowed-tools: [Read, Write, Grep]
related: [postel, no-ai-slop, yaml-jazz, thoughtful-commitment]
license: MIT
tags: [publishing, formatting, hygiene, copydesk, venues]
credits: "Don Hopkins; lineage: newspaper copydesk, radio voice procedure"
---

# Copy That 📋

Transmission hygiene. "Copy that" is radio voice procedure for *received exactly as sent*. This
skill makes that literally true for content moving from an agent's chat to anywhere else.

## The problem

Chat UIs render rich text, and copying rendered rich text is lossy and unpredictable: formatting
drops, characters get substituted, and — worst — the selection boundary is invisible, so private
editorial notes sitting next to a draft get swept into the clipboard along with it.

The founding incident, July 2026: a draft Hacker News post sat in chat next to a private note
flagging one claim's accuracy. The author copied the whole thing. The private note went live
on HN inside the post and was caught only because the edit window was still open. The draft and
the note were separated by nothing but a paragraph break, and a paragraph break is not a boundary.

A fenced code block is a boundary. It renders verbatim, it has a copy button that copies exactly
its contents, and its edges are visible to both parties.

## The protocol

1. **Recognize copy-bound content.** If the human will paste it somewhere else — post, comment,
   reply, email, commit message, config for another machine, code for another platform — it is
   copy-bound. When in doubt, it is copy-bound.

2. **Identify the venue.** Stated venue: use it. Obvious from context: use it. Unknown and the
   rules diverge in ways that matter: ask, or fall back to plain text, the safest common
   denominator.

3. **Load the rules.** Read `formats/<venue>.yml` for the venue's supported and unsupported
   markup, character and encoding policy, and quirks. If the author has a
   `house-styles/<author>.yml`, layer it on top. House style tightens venue rules; it never
   loosens a venue hard constraint.

4. **Emit one fenced block per artifact.** Language hint `text` for plain venues, `markdown` for
   GFM venues, the real language for code. If the content itself contains triple backticks, use a
   four-backtick fence. Multiple artifacts (a post and its follow-up; an email and its subject
   line) get multiple fences, each labeled outside the fence.

5. **Keep the fence pure.** Nothing inside the fence that is not meant to be published verbatim.
   Accuracy flags, alternatives considered, "cut this if too spicy" — all of that is out-of-band
   and lives in normal prose before or after the block. The fence is the airlock.

6. **Preflight before handing over.** Inside the fence, check:
   - Venue-forbidden characters (emoji on HN; smart quotes where ASCII is wanted)
   - Author-forbidden patterns (see house style; e.g. em-dashes)
   - Markup the venue will strip or render literally
   - Encoding traps (astral-plane unicode, zero-width characters)
   - Fence collisions (backticks in content vs fence length)
   - Anything that reads like a note to the human rather than the audience

## Venue format plugins — `formats/`

Each venue gets one YAML file describing its rendering contract. The plugin is the single source
of truth; the agent should not improvise venue rules from memory when a plugin exists, and should
propose a plugin (`DEFINE-VENUE`) when one doesn't.

Schema (see CARD.yml for the full field list):

```yaml
venue:
  id: hacker-news
  format_doc: https://news.ycombinator.com/formatdoc
markup_supported:
  - { syntax: "*italics*", renders: "italics", notes: "the only inline styling" }
markup_unsupported:
  - { syntax: "**bold**", happens: "renders literally with asterisks" }
characters:
  emoji: stripped_silently
structure:
  paragraphs: "blank line between; single newlines collapse"
quirks:
  - "indent two+ spaces for monospace code blocks; no syntax highlighting; no wrapping"
```

Plugins are grown by **programming by example**: when a paste renders unexpectedly, the observed
behavior becomes a `test_cases` entry and, if needed, a new quirk. Real cases in, rules out.

## House styles — `house-styles/`

Venue plugins say what *can* render. House styles say what the author *wants*. An author might
forbid em-dashes (two ASCII dashes or restructure), require links on their own line preceded by
a description line ending with a colon with blank lines around, or demand that quoted material
is never silently cleaned. See `house-styles/EXAMPLE.yml` for a template. House styles apply
across venues and never authorize something a venue forbids.

## Examples — `examples/`

Real before/after cases, each one a story: what was drafted, what went wrong or almost went
wrong, what the fence-disciplined version looks like. The founding incident is
`examples/hn-meta-note-leak.md`. Add cases as they happen; this directory is the skill's memory
and its regression suite.

## Extension points

| Directory | Grows when |
|-----------|------------|
| `formats/` | A new destination venue appears, or a known venue changes behavior |
| `house-styles/` | A new author articulates their voice rules |
| `examples/` | A paste goes wrong (or conspicuously right) in the wild |
| `scripts/` (optional) | A preflight check is worth automating (sister-script pattern: doc first, script second) |

## K-line

**COPY-THAT** — invoke to demand fence discipline and venue formatting for everything outbound in
the current session. "COPY-THAT for HN" loads the hacker-news plugin for all subsequent drafts.

## Related MOOLLM skills

- **postel** — this skill is "emit conservative" specialized to publication venues
- **no-ai-slop** — governs what the words are; copy-that governs where the words sit
- **yaml-jazz** — plugin files carry semantics in comments; read them whole
- **thoughtful-commitment** — the same custody-of-the-artifact instinct, applied to git history

## Part of MOOLLM

This skill is part of [MOOLLM](https://github.com/SimHacker/moollm) — see the
[repo README](https://github.com/SimHacker/moollm/blob/main/README.md) and
[skills/README](https://github.com/SimHacker/moollm/blob/main/skills/README.md).
It is self-contained: the protocol above is complete without CARD.yml or the plugin files,
which add interface detail and venue specifics.

Attribution

SimHackerSimHacker
View sourceSee grades on GitHubMore from SimHacker →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Clean Code

Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments

304955 votes

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

286712 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Writing Plans

Use when you have a spec or requirements for a multi-step task, before touching code

2927051 votes
View all in development →