跳到主要内容
知仓学习社ZHICANG

ctrl-clip

⧉ Copy a message to the system clipboard cleanly formatted — no blockquote pipes, no terminal bars, no Claude commentary. Use whenever you draft a m…

改身份文件严重 0 · 高危 3davepoon/buildwithclaude

它会碰到什么

扫了多少4 个文本文件,16 KB
它会碰到什么改身份文件
命中总数3 处
命中统计严重 0 · 高 3 · 中 0 · 低 0
逐条看命中(3 条严重或高危)
  • clip-setup.sh:12identity-write
    #   clip-setup.sh --uninstall  remove the handler, MIME type, CLAUDE.md rule and saved drafts
  • clip-setup.sh:22identity-write
    claude_md="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/CLAUDE.md"
  • clip-setup.sh:116identity-write
    cat -- "$claude_md.tmp.$$" > "$claude_md"   # cat keeps a symlinked CLAUDE.md intact

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

⧉ ctrl-clip

> Source: https://github.com/geanruca/ctrl-clip (MIT). Also installable as a Claude Code

> plugin: /plugin marketplace add geanruca/ctrl-clip then /plugin install ctrl-clip@ctrl-clip.

> Usage: /ctrl-clip [slack|md|plain] [what to copy].

Put text on the user's clipboard so it pastes cleanly. The built-in /copy copies

the raw markdown of the last response — blockquotes turn into >/ pipes and the

commentary comes along. This skill copies only the content meant to be pasted,

reformatted for its destination.

1. Decide WHAT to copy

Arguments: $ARGUMENTS

  • If the arguments describe the content ("the Slack reply", "the PR description",

"the second draft"), copy that.

  • Otherwise copy the most recent drafted message in the conversation (a Slack

reply, comment, email, PR text). If the last response had no draft, copy the whole

last response.

  • Copy only the draft — never your own framing ("Here's a draft:", "Let me know

if…", labels, explanations).

  • Keep the wording verbatim. Reformat, don't rewrite. Don't translate.

2. Format for the target

First word of the arguments selects the format; default is slack.

slack (default — also Teams, WhatsApp, chat)

  • No blockquotes (>), no headings (#), no tables, no horizontal rules.
  • Tables → one line per row: Label: value, value.
  • Bold: text (single asterisks). Italic: _text_. Keep inline ` code ` and
- Bullets with `- `; blank line between paragraphs.
- Links as bare URLs.

**md** (PR descriptions, Azure DevOps / GitHub comments, docs)
- Keep standard Markdown (headings, `**bold**`, lists, tables, code fences).
- Still no blockquotes unless the content genuinely quotes someone.

**plain** (email body, forms, anything without markup)
- No markup at all: strip `*`, `_`, backticks, `#`. Bullets become `- `.
- Tables → `Label: value` lines.

## 3. Copy

1. Write the formatted text with the **Write** tool to `clip.txt` in the session
   scratchpad directory (fall back to `/tmp/claude-clip.txt` if there is none). Using
   a file avoids every shell quoting problem with `$`, backticks and quotes.
2. Run:

${CLAUDE_SKILL_DIR}/clip.sh <that file>

   The script strips leftover `>`/`│`/`⏺` markers and trailing whitespace, then copies
   via wl-copy, xclip, xsel, pbcopy, or OSC 52 (in that order).

## 4. Confirm

Reply with a single line: the script's `⧉ Copied …` output plus the format used,
e.g. `⧉ Copied 6 lines / 412 chars (slack)`. Do **not** echo the copied text again.
If the script fails, show its error line.

## Inline ⧉ copy link (whenever you draft a message to paste)

Every draft the user will paste somewhere gets a clickable copy icon (`⧉`, two
overlapping squares) labeled `ctrl + click`, as a reminder of how to trigger it.

`<CLIP_DIR>` below is the **absolute** path of `~/.cache/claude-clip`, for example
`/home/alice/.cache/claude-clip`. The "Drafts to paste" rule loaded at session start
spells it out. If that rule is not in your context, run
`${CLAUDE_SKILL_DIR}/clip-setup.sh` once: it registers the Ctrl+click handler if needed
and prints `CLIP_DIR=…`. Never write `~` or `$HOME` into a path or link — neither is
expanded.

1. Write the formatted text (section 2, no blockquote markers) with the **Write** tool
   to `<CLIP_DIR>/<id>.claudeclip`. `<id>` is a short unique slug matching
   `[A-Za-z0-9_-]{1,64}`, e.g. `slack-33247-review`.
2. In the response, show the draft as a **blockquote** — every line prefixed with `> `,
   blank lines as `>`. The bar is how the user sees exactly what gets copied; nothing
   else goes inside it.
3. Right under the blockquote, on its own line:
   `[⧉ ctrl + click](file://<CLIP_DIR>/<id>.claudeclip)`

The user **Ctrl+clicks** the link (a plain click does nothing). If copying breaks, check
`<CLIP_DIR>/handler.log` first — no entry means the click never reached the handler.

Why `file://`: Claude Code's fullscreen TUI refuses clicks on non-allowlisted schemes
(custom `claude-clip://` links are never dispatched), but it opens local `file://`
links with xdg-open. `*.claudeclip` is registered as `application/x-claude-clip`,
whose default app is `clip-url-handler.sh`: it copies the file via `clip.sh` and shows
a desktop notification.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 3,470
本站分层T1
该仓技能数381
原文件路径plugins/all-skills/skills/ctrl-clip/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 381 个技能