Install any skill in seconds. Free to start, no credit card required.
Get Started Free →When you want to clean and reformat content (usually from your terminal) for pasting into Slack, Notion, Twitter/X, LinkedIn, email, GitHub, or plain text. Strips ANSI codes, box-drawing chars, terminal prompt artifacts, and applies destination-specific formatting. Default input is the clipboard (read via `pbpaste`); default output is both the clipboard (`pbcopy`) and a chat preview. Triggers on "/paste", "/paste [destination]", "clean this for X," "format for slack/notion/twitter/linkedin/email
.claude/skills/coreyhaines31-paste/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 241% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 87% | 0% |
Cleans terminal output (ANSI, box-drawing, prompt artifacts, etc.) and reformats per destination rules. Reads clipboard by default, writes back to clipboard + previews in chat.
In order:
pbpaste| Invocation | Destination | |---|---| | /paste | plain (default) | | /paste plain | plain | | /paste slack | slack | | /paste notion | notion | | /paste twitter or /paste x | twitter | | /paste linkedin or /paste li | linkedin | | /paste email | email (plain) | | /paste email rich or /paste email html | email (rich/HTML) | | /paste github or /paste gh | github | | /paste markdown or /paste md | markdown render | | /paste html | render to HTML file + open in browser |
If ambiguous, ask. Per-destination rules live in references/destinations.md.
Before any cleaning or copying, scan against patterns in references/secret-patterns.md.
If any match:
sk-12...wxyz).Strip from the content:
\x1b\[[0-9;]*[a-zA-Z] and related (color codes, cursor movement, screen control)╭ ─ ╮ │ ╰ ╯ ╞ ╡ ╤ ╧ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ━ ┃ ┏ ┓ ┗ ┛ etc. Replace with simpler equivalents (-, |) or remove entirely depending on context.$ , > , ❯ , % , # (when first non-whitespace on a line that looks like a shell prompt)\r) — replace with \n or deleteRead references/destinations.md and apply the relevant transform.
| Destination | Output behavior | |---|---| | plain / slack / notion / twitter / linkedin / email / github | (a) Show preview in a code fence in chat. (b) Copy clean version to clipboard via pbcopy. | | email rich | Render to HTML, write to /tmp/paste-<timestamp>.html, open it in browser. Skip clipboard (the user copies from browser to preserve rich text). | | markdown | Render the cleaned markdown directly in chat (Claude Code renders it). Also copy raw markdown to clipboard. Offer: "Open as HTML too?" — if yes, write and open. | | html | Render to HTML, write to /tmp/paste-<timestamp>.html, open it. Skip clipboard. |
After output, report a one-line summary of what was cleaned (e.g., "Stripped 12 ANSI codes, 4 box-drawing chars, 1 prompt artifact. Character count: 248 / 280 (X).").
Twitter and LinkedIn have practical limits. the user said "let me trim" — don't refuse or auto-truncate.
If the content has URLs and destination is twitter or linkedin:
makerskills:jab-hook and ~/.claude/memory/feedback_social_link_placement.md/paste slack→ Reads clipboard, strips ANSI, converts **bold** to *bold*, copies to clipboard, shows preview.
/paste twitter
[pasted error log]→ Uses pasted content (ignores clipboard), strips everything, warns at 412/280 chars, copies, asks if the user wants to trim or pick a different destination.
/paste html
[pasted markdown table]→ Renders table as HTML, opens in browser. the user selects + copies into Notion/email with formatting preserved.
/paste
[pasted output with sk-anthropic-key in it]→ Stops. "Spotted what looks like an Anthropic API key: `sk-an...3kf9`. Continue, redact, or abort?"
jab-hook — clean output for pasting into Typefully drafts when the MCP path doesn't fit; also enforces the link-placement rule for X/LinkedIn destinationssocial-fetch — clean a fetched post before quoting it in a draft or newslettersecond-brain — paste output can be captured cleanly into raw/note-<slug>.md for future compilationwatch-video — transcript / summary output often flows through paste for platform-specific reformattingpaste scans for sk-*, AKIA*, xoxb-*, JWT-shaped strings, and long-hex tokens. Prompts before proceeding on any hit. Better to false-positive occasionally than to leak a real key.*bold*; LinkedIn wants unicode-styled bold; email wants HTML. Same input, 9 different valid outputs. The destination flag is not optional.\033[31m etc.) render as garbage everywhere except the source terminal.twitter or linkedin. Documented in ~/.claude/memory/feedback_social_link_placement.md.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,553 | 6,118 | -42% | 1 | 1 | 0% | 1,761 | 2,047 | +16% | 0 | 0 | — |
case-02 | fail→pass | 3,729 | 4,661 | +25% | 1 | 1 | 0% | 703 | 2,400 | +241% | 0 | 0 | — |
case-03 | fail→fail | 7,211 | 6,661 | -8% | 1 | 1 | 0% | 1,117 | 2,107 | +89% | 0 | 0 | — |
case-04 | fail→pass | 8,415 | 6,671 | -21% | 1 | 1 | 0% | 1,553 | 2,530 | +63% | 0 | 0 | — |
case-05 | fail→fail | 4,551 | 14,300 | +214% | 1 | 1 | 0% | 780 | 3,269 | +319% | 0 | 0 | — |
case-06 | fail→pass | 7,403 | 4,388 | -41% | 1 | 1 | 0% | 1,333 | 2,349 | +76% | 0 | 0 | — |
case-07 | fail→pass | 6,710 | 5,327 | -21% | 1 | 1 | 0% | 1,065 | 2,637 | +148% | 0 | 0 | — |
case-08 | fail→pass | 8,300 | 5,033 | -39% | 1 | 1 | 0% | 1,406 | 2,636 | +87% | 0 | 0 | — |
case-09 | fail→fail | 6,750 | 8,885 | +32% | 1 | 1 | 0% | 979 | 2,341 | +139% | 0 | 0 | — |
case-10 | fail→pass | 5,361 | 3,957 | -26% | 1 | 1 | 0% | 832 | 2,411 | +190% | 0 | 0 | — |
case-11 | pass→pass | 3,226 | 3,157 | -2% | 1 | 1 | 0% | 533 | 2,213 | +315% | 0 | 0 | — |
case-12 | fail→pass | 2,919 | 4,914 | +68% | 1 | 1 | 0% | 421 | 2,467 | +486% | 0 | 0 | — |
case-13 | fail→pass | 3,676 | 4,608 | +25% | 1 | 1 | 0% | 523 | 2,336 | +347% | 0 | 0 | — |
case-14 | fail→pass | 3,675 | 8,277 | +125% | 1 | 1 | 0% | 595 | 2,058 | +246% | 0 | 0 | — |
case-15 | fail→pass | 3,542 | 3,237 | -9% | 1 | 1 | 0% | 517 | 2,282 | +341% | 0 | 0 | — |
case-16 | fail→pass | 2,845 | 6,053 | +113% | 1 | 1 | 0% | 484 | 2,089 | +332% | 0 | 0 | — |
case-17 | fail→fail | 5,351 | 11,823 | +121% | 1 | 1 | 0% | 798 | 2,384 | +199% | 0 | 0 | — |
case-18 | fail→fail | 3,463 | 5,965 | +72% | 1 | 1 | 0% | 429 | 1,991 | +364% | 0 | 0 | — |
case-19 | fail→pass | 3,263 | 3,694 | +13% | 1 | 1 | 0% | 695 | 2,488 | +258% | 0 | 0 | — |
case-20 | pass→pass | 20,251 | 15,534 | -23% | 1 | 1 | 0% | 3,566 | 4,549 | +28% | 0 | 0 | — |
case-21 | pass→pass | 12,050 | 7,497 | -38% | 1 | 1 | 0% | 2,279 | 2,883 | +27% | 0 | 0 | — |
case-22 | pass→pass | 12,978 | 9,779 | -25% | 1 | 1 | 0% | 2,375 | 3,426 | +44% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 18 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.