simhacker/moollm/copy-that

Claude Code and agent skill by simhacker/moollm

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

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.

Install

npx vskill@latest install simhacker/moollm/copy-that

SKILL.md

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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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

DirectoryGrows 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 — see the repo README and skills/README. It is self-contained: the protocol above is complete without CARD.yml or the plugin files, which add interface detail and venue specifics.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
54
Repository forks
5
7-day trend score
20

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/simhacker/moollm/copy-that/badge)](https://verified-skill.com/skills/simhacker/moollm/copy-that)

Something wrong with this skill or its page? Tell us.