paste について
pasteは、テキストを整え、用途に応じて形式を変えるスキルです。ターミナル出力や共有用の文章に使え、秘密情報の検出とクリップボード操作にも対応します。
主な機能
- 01ANSIコードとプロンプト表記の除去
- 02用途に応じたテキスト整形
- 03クリップボードへのコピーとプレビュー
- 04秘密情報の可能性を検出して確認
- 05HTMLを生成してブラウザーで表示
活用シーン
- 01ターミナル出力を整えて貼り付け
- 02Slackやメール向けに文章を整形
- 03SNS投稿用の文章を準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ coreyhaines31/ makerskills --skill pasteインストール後、Claude Code で/pasteを入力して読み込まれたか確認します。
同梱ファイルreferences/destinations.mdreferences/secret-patterns.md
詳細
/paste — あらゆる宛先向けにコンテンツを整形
ターミナル出力(ANSI、罫線文字、プロンプトの不要な表示など)を整理し、宛先のルールに合わせて再フォーマットします。デフォルトでクリップボードを読み取り、結果をクリップボードに書き戻して、チャットにプレビューを表示します。
ステップ 1 — コンテンツを取得
次の順に処理します。
- ユーザーがプロンプトにコンテンツを含めている場合(貼り付けた場合、または会話の前の部分で言及した場合)は、それを使用します。
- それ以外の場合は、クリップボードを読み取ります(以下のコマンドを参照)。
- どちらも空の場合は、貼り付ける内容をユーザーに尋ねます。
プラットフォーム別のクリップボードコマンド(読み取り/書き込み):
| プラットフォーム | 読み取り | 書き込み |
|---|---|---|
| macOS | pbpaste | pbcopy < "$f" |
| Linux(Wayland) | wl-paste -n | wl-copy < "$f" |
| Linux(X11) | xclip -selection clipboard -o | xclip -selection clipboard < "$f" |
| Windows | powershell Get-Clipboard -Raw | powershell "Get-Content -Raw '$f' | Set-Clipboard" |
$f はステップ 6 の書き込み手順で使用する一時ファイルです。必ずファイルからコピーし、ヒアドキュメントや echo からコピーしないでください。
クリップボードを使えないエージェント(リモート、ヘッドレス、チャットボットなど)は、クリップボードを使わず、プロンプトからコンテンツを取得し、整形したテキストをコードフェンス内で返してください。
ステップ 2 — 宛先を解析
| 呼び出し | 宛先 |
|---|---|
/paste | プレーンテキスト(デフォルト) |
/paste plain | プレーンテキスト |
/paste slack | Slack |
/paste notion | Notion |
/paste twitter または /paste x | |
/paste linkedin または /paste li | |
/paste email | メール(プレーンテキスト) |
/paste email rich または /paste email html | メール(リッチテキスト/HTML) |
/paste github または /paste gh | GitHub |
/paste markdown または /paste md | Markdown のレンダリング |
/paste html | HTML ファイルにレンダリングしてブラウザーで開く |
曖昧な場合は、ユーザーに尋ねてください。宛先ごとのルールは references/destinations.md にあります。
ステップ 3 — シークレットをスキャン
整形やコピーを行う前に、references/secret-patterns.md のパターンに照らしてスキャンします。
一致するものが見つかった場合:
- 停止します。 まだコピーしないでください。
- 検出されたものを、値をマスクした状態で報告します(先頭 4 文字と末尾 4 文字のみ。例:
sk-12...wxyz)。 - 次のように尋ねます。「コンテンツ内に[type]が見つかりました。続行、秘匿化(
[REDACTED]に置換)、または中止しますか?」 - 明確な返答がない場合は、デフォルトで中止します。
ステップ 4 — 共通の整形
コンテンツから次のものを取り除きます。
- ANSI エスケープコード —
\x1b\[[0-9;]*[a-zA-Z]などの関連コード(カラーコード、カーソル移動、画面制御) - 罫線文字 —
╭ ─ ╮ │ ╰ ╯ ╞ ╡ ╤ ╧ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ━ ┃ ┏ ┓ ┗ ┛など。状況に応じて簡単な文字(-、|)に置き換えるか、完全に削除します。 - ターミナルプロンプトの不要な表示 — 行頭にある
$、>、❯、%、#(シェルプロンプトに見える行で、最初の非空白文字となっている場合) - キャリッジリターン(
\r) —\nに置き換えるか削除します - 行末の空白
- 過剰な空行 — 連続する空行が 3 行以上の場合は 2 行にまとめます
ステップ 5 — 宛先のルールを適用
references/destinations.md を読み、該当する変換を適用します。
ステップ 6 — 出力
クリップボードへの書き込み手順(クリップボードに書き込むすべての出力先で実施します):
- エージェントのファイル書き込みツールを使って、整形済みの内容を一時ファイルに書き込みます。例:
/tmp/paste-<slug>.txt。シェルのヒアドキュメントやechoでパイプしてはいけません。エージェントのハーネスは、ヒアドキュメントを約70文字で強制的に折り返したり、すべての行にインデントを加えたりする場合があり、チャット上では問題なく見えても、貼り付けると内容が崩れることがあります。 - ステップ 1 の書き込みコマンドで、ファイルの内容をコピーします。
- 一連の処理を検証します。 クリップボードの内容を読み戻し、ファイルと比較します。例:
pbpaste | cmp -s - "$f" && echo match(環境に応じて読み取りコマンドを置き換えてください。Windows の場合はpowershell "(Get-Clipboard -Raw) -eq (Get-Content -Raw '$f')"を使用します)。一致しない場合はその旨を報告し、コードフェンス内にテキストを表示します。 - チャットのプレビューは、コピーしようとした内容ではなく、読み戻した内容から作成します。記憶を頼りにプレビューを作ると、コピーが壊れているのに正常に見えるまま出荷されてしまいます。
- 検証後、一時ファイルを削除します。ファイルには、ユーザーがコピーした内容が含まれている可能性があります。シークレットスキャンを通過したテキストも例外ではありません。
| 出力先 | 出力動作 |
|---|---|
| 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 をチャットに直接表示します(ほとんどのエージェント UI ではレンダリングされます)。また、上記の手順で生の Markdown をクリップボードにコピーします。"HTML としても開きますか?" と確認します。希望する場合は、ファイルに書き込んで開きます。 |
| html | HTML に変換し、/tmp/paste-<timestamp>.html に書き込み、ブラウザーで開きます。クリップボードは使用しません。 |
出力後、整形した内容の概要を1行で報告します(例:"ANSI コードを12個、罫線文字を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を参照してください(エージェントのメモリ、または${MAKERSKILLS_MEMORY:-${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/memory}/)。
例
/paste slack
→ クリップボードを読み取り、ANSI を除去し、**太字** を *太字* に変換してクリップボードにコピーし、プレビューを表示します。
/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 形式の文字列、長い 16 進数トークンをスキャンします。該当するものが見つかった場合は、処理を続行する前に確認を求めます。実際のキーを漏らすより、たまに誤検出するほうが安全です。 - 画一的な変換ではなく、出力先に応じて変換します。 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 やメールでは使いものになりません。