mcpField
P
paste

paste

github.com/coreyhaines31生产力875336 次安装6 天前更新
代码仓库

关于 paste

paste 是用于清理文本并按目标平台重新格式化的技能,适合整理终端输出和待分享内容。它会先检查疑似密钥,并支持剪贴板读写及格式预览。

主要功能

  1. 01清除 ANSI 与终端提示符
  2. 02按目标平台调整格式
  3. 03复制并预览剪贴板内容
  4. 04检测疑似密钥并询问处理方式
  5. 05支持 HTML 渲染并在浏览器打开

适用场景

  1. 01清理终端命令输出后粘贴
  2. 02将文本改成 Slack 或邮件格式
  3. 03整理内容以发布到社交平台

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/coreyhaines31/makerskills --skill paste

安装后在 Claude Code 中输入/paste确认已加载。

附带文件references/destinations.mdreferences/secret-patterns.md

详细介绍

/paste — 为任意目标清理内容

清理终端输出(ANSI、框线字符、提示符伪影等),并根据目标平台的规则重新排版。默认读取剪贴板,将内容写回剪贴板,并在聊天中预览。

第 1 步 — 获取内容

按以下顺序:

  1. 如果用户在提示词中提供了内容(直接粘贴,或引用对话中较早的内容),使用该内容。
  2. 否则,读取剪贴板(命令如下)。
  3. 如果两者都为空,询问用户要粘贴什么。

各平台的剪贴板命令(读取 / 写入):

平台读取写入
macOSpbpastepbcopy < "$f"
Linux(Wayland)wl-paste -nwl-copy < "$f"
Linux(X11)xclip -selection clipboard -oxclip -selection clipboard < "$f"
Windowspowershell Get-Clipboard -Rawpowershell "Get-Content -Raw '$f' | Set-Clipboard"

$f 是第 6 步写入流程中创建的临时文件。始终从文件复制,绝不要使用 heredoc 或 echo。

没有剪贴板(远程、无头或聊天机器人 Agent):跳过剪贴板,从提示词中获取内容,并将清理后的文本放在代码围栏中返回。

第 2 步 — 解析目标

调用方式目标
/paste纯文本(默认)
/paste plain纯文本
/paste slackslack
/paste notionnotion
/paste twitter 或 /paste xtwitter
/paste linkedin 或 /paste lilinkedin
/paste emailemail(纯文本)
/paste email rich 或 /paste email htmlemail(富文本/HTML)
/paste github 或 /paste ghgithub
/paste markdown 或 /paste mdmarkdown 渲染
/paste html渲染为 HTML 文件并在浏览器中打开

如果有歧义,请提问。各目标的规则见 references/destinations.md。

第 3 步 — 扫描机密信息

在进行任何清理或复制前,根据 references/secret-patterns.md 中的模式进行扫描。

如果匹配到任何内容:

  1. 停止。 暂不复制。
  2. 报告检测到的内容,并对值进行遮蔽(仅显示前 4 个和后 4 个字符,例如 sk-12...wxyz)。
  3. 询问:“检测到内容中有 [类型]。要继续、脱敏(替换为 [REDACTED]),还是中止?”
  4. 如果没有明确答复,默认中止。

第 4 步 — 通用清理

从内容中移除:

  • ANSI 转义码 — \x1b\[[0-9;]*[a-zA-Z] 及相关代码(颜色代码、光标移动、屏幕控制)
  • 框线字符 — ╭ ─ ╮ │ ╰ ╯ ╞ ╡ ╤ ╧ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ━ ┃ ┏ ┓ ┗ ┛ 等。根据上下文替换为更简单的等效字符(-、|)或直接移除。
  • 终端提示符伪影 — 行首的 $ 、> 、❯ 、% 、# (当它们是看起来像 shell 提示符的行中第一个非空白字符时)
  • 回车符(\r)— 替换为 \n 或删除
  • 行尾空白
  • 多余空行 — 将连续 3 行或更多空行合并为 2 行

第 5 步 — 应用目标规则

阅读 references/destinations.md 并应用相应的转换。

步骤 6 — 输出

剪贴板写入流程(所有写入剪贴板的目标):

  1. 使用 Agent 的文件写入工具,将清理后的内容写入临时文件,例如 /tmp/paste-<slug>.txt。绝不要通过 shell heredoc 或 echo 传递内容:Agent 执行环境可能会将 heredoc 自动换行(约 70 个字符)并为每行添加缩进,导致粘贴内容错乱,而聊天中看起来却正常。
  2. 使用步骤 1 中的写入命令从文件复制内容。
  3. 验证往返结果。 读取剪贴板内容并与文件比较,例如 pbpaste | cmp -s - "$f" && echo match(替换为对应平台的读取命令;在 Windows 上使用 powershell "(Get-Clipboard -Raw) -eq (Get-Content -Raw '$f')")。如果不匹配,报告问题并改为在代码围栏中显示文本。
  4. 根据读回的内容生成聊天预览,而不是根据原本想复制的内容。凭记忆生成预览,是复制内容损坏却看起来正常的原因。
  5. 验证完成后删除临时文件。文件可能包含用户复制的任何内容,包括通过了机密信息扫描的文本。
目标输出行为
plain / slack / notion / twitter / linkedin / email / github(a) 在聊天中的代码围栏内显示预览。(b) 使用上述剪贴板写入流程;预览以读回的内容为准。
email rich渲染为 HTML,写入 /tmp/paste-<timestamp>.html,然后在浏览器中打开(macOS 上使用 open,Linux 上使用 xdg-open,Windows 上使用 start)。跳过剪贴板(用户从浏览器复制,以保留富文本格式)。
markdown直接在聊天中渲染清理后的 Markdown(大多数 Agent 界面都支持渲染)。同时使用上述写入流程将原始 Markdown 复制到剪贴板。询问:“也要以 HTML 格式打开吗?”——如果要,则写入文件并打开。
html渲染为 HTML,写入 /tmp/paste-<timestamp>.html,然后在浏览器中打开。跳过剪贴板。

输出后,用一句话总结清理了哪些内容(例如,“移除了 12 个 ANSI 代码、4 个框线字符、1 个提示词伪影。字符数:248 / 280(X)。已验证剪贴板往返结果。”)。

长度警告

Twitter 和 LinkedIn 有实际字符数限制。用户说过“让我自己删减”,不要拒绝,也不要自动截断。

  • Twitter/X:超过 280 个字符时发出警告,并注明超出字符数。
  • LinkedIn:超过 400 个字符时发出警告(这是建议上限,并非硬性限制)。
  • 其他目标:不提示长度警告。

社交平台目标的 URL 处理

如果内容中包含 URL,且目标是 twitter 或 linkedin:

  • 单独列出 URL(不要将其包含在正文中)
  • 提醒用户:链接应放在首条评论(LinkedIn)或回复(X)中,而不是正文里
  • 参阅记忆库中的 makerskills:jab-hook 和 feedback_social_link_placement.md(Agent 的记忆库,或 ${MAKERSKILLS_MEMORY:-${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/memory}/)

示例

/paste slack

→ 读取剪贴板,移除 ANSI 代码,将 **bold** 转换为 *bold*,复制到剪贴板并显示预览。

/paste twitter
[pasted error log]

→ 使用粘贴的内容(忽略剪贴板),移除所有内容,在字符数达到 412/280 时发出警告,复制内容,并询问用户要自行删减还是选择其他目标。

/paste html
[pasted markdown table]

→ 将表格渲染为 HTML,并在浏览器中打开。用户可以选择并复制到 Notion / email,同时保留格式。

/paste
[pasted output with sk-anthropic-key in it]

→ 停止。“发现疑似 Anthropic API 密钥:sk-an...3kf9。要继续、编辑以隐藏密钥,还是中止?”

配合使用

  • jab-hook — 当 MCP 路径不适用时,清理要粘贴到 Typefully 草稿中的内容;还会对 X / LinkedIn 目标强制执行链接位置规则
  • social-fetch — 在引用抓取的帖子到草稿或简报之前进行清理
  • second-brain — paste 输出可以直接整理到 raw/note-<slug>.md,供日后汇编
  • watch-video — 转录 / 摘要输出通常会经过 paste,以便针对不同平台重新排版

质量说明

  • 剪贴板写入流程不可省略。 文件 → 从文件复制 → 读回并比较 → 从读回的内容生成预览。来源:2026-07-31,通过 heredoc 管道复制的内容发布后出现了硬换行和缩进,而聊天预览看起来很干净;发现问题的是用户,而不是验证流程。
  • 始终先检测机密信息。 在进行任何格式处理或目标逻辑之前,paste 会扫描 sk-*、AKIA*、xoxb-*、JWT 格式的字符串和长十六进制令牌。发现任何匹配项时,都会提示用户确认后再继续。偶尔误报也好过泄露真正的密钥。
  • 根据目标进行转换,而不是一刀切。 Slack 使用 *bold*;LinkedIn 使用 Unicode 样式的粗体;电子邮件使用 HTML。同一输入可以有 9 种有效输出。目标标志不可省略。
  • 所有目标都会剥除 ANSI 代码。 终端转义序列(如 \033[31m)在源终端以外的任何地方都会显示为乱码。
  • 强制执行字符数限制,而不只是发出警告。 X 限制为 280 个字符,LinkedIn 限制为 3000 个字符,Twitter 限制为 25000 个字符;对于超出限制的输出,paste 会拒绝复制,并提供缩减方案。
  • 社交平台目标的链接应放在首条评论中——而不是正文中。当目标为 twitter 或 linkedin 时会强制执行此规则。相关说明记录在记忆存储中的 feedback_social_link_placement.md。
  • HTML 目标会在浏览器标签页中打开,而不是写入剪贴板。 格式化表格和代码块需要在渲染后的界面中选中并复制,才能保留格式。将原始 HTML 复制到剪贴板会导致内容在 Notion/电子邮件中显示为乱码。

评论

支持 Markdown