pangu について
panguは、CJK文字とASCII文字が混在する文章のスペースを整える編集スキルです。コードやURL、パス、引用などのリテラル内容を保ちながら、自然言語に規則を適用します。
主な機能
- 01CJKとASCIIの境界スペース
- 02句読点と演算子のスペース
- 03リテラル内容の保持
- 04Markdown編集規則への対応
活用シーン
- 01中国語と英語の混在文の整形
- 02コードを変えずにMarkdownを編集
- 03見出しとリンクラベルの整形
- 04ログを保って説明文を編集
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ shihyuho/ pangu.skill --skill panguインストール後、Claude Code で/panguを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
pangu
句読点前後のスペースに関する慎重なルール(盤古之白)
まず適用範囲を確認
- ユーザーが指定した形式と編集範囲に従います。タスクで作成または変更する文章にはスペースを入れ、文書全体の整形が指定されている場合は文書全体を整形します。無関係なテキストは受け取った状態のままにします。
- リテラルの内容はバイト単位でそのまま保持します。コード、インラインコード、フェンス付きまたはインデント付きのコードブロック、正確な引用、コマンド出力、ログは、コードスパンの外にある場合もそのまま保持します。ユーザーのタスクで明示的に求められた場合に限り、リテラルを変更します。
- 見出し、リンクラベル、コードコメントなど、自然言語の表現にスペースを適用します。Markdownのマーカー、リンク先、その他の構造構文に加え、URL、パス、メールアドレス、バージョン、複合識別子の内部は保持します。トークン内の漢字も、そのトークンの一部として扱います。
- スペースを適用した状態で、指定された作業を提示します。
たとえば、MarkdownリンクではURLをそのままにして、表示されるラベルにスペースを入れます。ログを検索用に引用する場合はログをそのまま保持し、自分の説明にのみスペースを入れます。これらの境界は、以下のテキストルールより優先されます。
テキストルール
CJK文字とASCII英字または数字、あるいは以下の拡張範囲に含まれる文字が直接隣接する場合、その間に半角スペースを1つ入れます。記号と演算子には以下のルールを適用します。CJK文字には、漢字、日本語の仮名、ボポモフォ、および韓国語で使われる漢字が含まれます。ハングルはこの定義に含まれません。한국어testは変更しません。
全角句読点(,。!?「」)の前後にスペースは不要です。
CJK文字を含まない文字列と、すでに正しい空白が入っている箇所は変更しません。
當你凝視著bug,bug也凝視著你 → 當你凝視著 bug,bug 也凝視著你
與PM戰鬥的人 → 與 PM 戰鬥的人
這是2025年的事 → 這是 2025 年的事
拡張文字
以下の正確なUnicodeコードポイント範囲には、下記の付加接尾辞を除き、CJKとの境界にスペースを適用します。
- NBSPより後のラテン1補助:U+00A1–U+00FF。
- ギリシャ文字およびコプト文字:U+0370–U+03FF。
- 文字様記号:U+2100–U+214F。
- 数字形式:U+2150–U+218F。
- 装飾記号:U+2700–U+27BF。
CJK文字と直接接触する箇所にのみスペースを入れ、隣接する非CJK文字同士はまとめて保持します(±5など)。接尾辞 ® ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁱ ⁿ ⁺ ⁻ ⁼ ⁾ ℠ ™ は直前のテキストに付けたままにし、その後にCJK文字が続く場合はスペースを入れます。上付きの開き括弧 ⁽ はこの集合に含まれません。CJK文字を含むテキストでは、©とその直後の数字も分けます。
他の非ASCII文字は、別のテキストルールが適用されない限り、既存のスペースを保持します。★はこれらの範囲に含まれません。·(U+00B7)はラテン1の範囲に含まれますが、以下の中黒ルールにより、単独で詰まっている · はまず ・ に変換します。結合文字と異体字セレクターは記載どおりに保持します。対象文字とCJK文字の間にあるマークは、直接の境界を遮ります。
狀態✓完成 → 狀態 ✓ 完成
版本β測試 → 版本 β 測試
溫度±5度 → 溫度 ±5 度
章節Ⅻ內容 → 章節 Ⅻ 內容
符號★測試 → 符號★測試
結果é完成 → 結果 é 完成
溫度℃變化 → 溫度 ℃ 變化
編號№123項 → 編號 №123 項
符號⅏測試 → 符號 ⅏ 測試
面積m²大小 → 面積 m² 大小
中文⁺註記 → 中文⁺ 註記
商標™產品 → 商標™ 產品
品牌®商品 → 品牌® 商品
©2026版權 → © 2026 版權
演算子と区切り文字
- * = ^ < > \:CJK 文字との境界にスペースを入れ、半角の単語は分割しません。 CJK 文字の直前では、先行する) ] }と- * = &の間にもスペースを入れます。 CJK 文字の直後では、後続する( [ {との間にスペースを入れます。ただし、*[は*[0-9].logのようなグロブの開始となるため除きます。ハイフンが CJK 文字に接している行では、) ] }と( [ {の間に直接あるハイフンも区切り文字です。CJK 文字と数字の間に直接あるハイフンは区切り文字です。すでにスペースがある負の数は、符号と数字を分けません。_:どのような場合も、前後の文字とつなげたままにします。|:パイプのいずれかが CJK 文字に接している場合、その行のすべてのパイプの前後にスペースを入れます。そうでない場合は、半角のA|Bをそのままにします。/:中文/EnglishやA/Bのような結合したテキストは、既存のスペースを保ったまま、分割しません。「トークン全体」の項に示すように、認識されたファイルパスには、外側の CJK 境界にスペースを入れます。&:半角の結合記号(R&D)は分割せず、CJK 文字との境界にはスペースを入れます。+:+886、100+、A+の符号や接尾辞は前後の文字とつなげたままにし、先にその外側の CJK 境界にスペースを入れます。+が CJK 文字に接している場合、その行にある残りの単独の+は、半角単語の間にあるものも含め、区切り文字になります。二重のプラス(C++)や、Disney+、Apple TV+、mo 店+、公視+、AA+、AB+のような名前の接尾辞はつなげたままにしますが、その行のほかの区切り文字は有効になります。+が CJK 文字に接していない場合は、A+Bをそのままにします。既存のスペースに隣接する+は、CJK 文字との境界に直接ある場合を除き、スペースを維持します。一般的な全角句読点は、+の側に詰めます。) ] }の後、および(「『【《の前では、+の直前にのみスペースを入れます。
前面+後面 → 前面 + 後面
Switch+健身環 → Switch + 健身環
前+A+B → 前 + A + B
前 A+B 後 → 前 A+B 後
前+A+「方案」 → 前 + A+「方案」
(中文)+「方案」 → (中文) +「方案」
有100+的選擇 → 有 100+ 的選擇
Disney+的節目 → Disney+ 的節目
Disney+的節目 A+B → Disney+ 的節目 A + B
mo店+免運無限次 → mo 店+ 免運無限次
mo 店+ 免運無限次 → mo 店+ 免運無限次
C++的程式 A+B → C++ 的程式 A + B
A+的等級 A+B → A+ 的等級 A+B
得到一個A-B的結果 → 得到一個 A-B 的結果
得到一個A*B的結果 → 得到一個 A*B 的結果
比較A<B和A>B的結果 → 比較 A<B 和 A>B 的結果
比較A=B與A^B的結果 → 比較 A=B 與 A^B 的結果
前面\後面 → 前面 \ 後面
前面~=後面 → 前面 ~= 後面
(中文)-下一步 → (中文) - 下一步
[中文]*下一步 → [中文] * 下一步
{中文}=下一步 → {中文} = 下一步
(中文)&下一步 → (中文) & 下一步
中文=(東西) → 中文 = (東西)
中文-[東西] → 中文 - [東西]
刪除*[0-9].log檔 → 刪除 *[0-9].log 檔
中文-中文[A]-(中文) → 中文 - 中文 [A] - (中文)
中文[A]-(中文) → 中文 [A]-(中文)
中文-123度 → 中文 - 123 度
氣溫 -5°C → 氣溫 -5°C
前_後 → 前_後
Mollie_陳上進 → Mollie_陳上進
前|A|B → 前 | A | B
前 A|B 後 → 前 A|B 後
得到一個A/B的結果 → 得到一個 A/B 的結果
前面/後面 → 前面/後面
前面 / 後面 → 前面 / 後面
陳上進/貓咪/Mollie → 陳上進/貓咪/Mollie
得到一個R&D的部門 → 得到一個 R&D 的部門
陳上進&Mollie → 陳上進 & Mollie
句読点、引用符、結合されたトークン
- CJK 文字を含む行では、
. , : ; ! ? ~の後に CJK 文字、英字、数字が続く場合、その記号の後にスペースを入れます。半角表記、ファイル拡張子、バージョン番号はそのままにします。記住:(東西)のようにコロンが括弧に接している場合は例外で、コロンを全角にします。 ",'、バッククォート、および( ) [ ] { } < >:CJK 文字との間の外側にスペースを入れ、内側の境界は詰めたままにします。所有格の'sはつなげたままにします。@user、#tag、C#、$100、95%は分割しません。- 左右どちらにもスペース、NBSP、ほかの中黒がない単独の中黒
· • ‧は・にします。スペースのある中黒や中黒の連続はそのままにします。Latin-1 文字である·は、CJK 文字に直接接している場合もスペースを入れます。
前面,後面 → 前面, 後面
電話:123456789 → 電話: 123456789
前面?後面 → 前面? 後面
前面…後面 → 前面… 後面
記住:(東西) → 記住:(東西)
前面(中文123漢字)後面 → 前面 (中文 123 漢字) 後面
前面"中文123漢字"後面 → 前面 "中文 123 漢字" 後面
我看过的电影(1404) → 我看过的电影 (1404)
function(123) → function(123)
陳上進 likes 林依諾's status. → 陳上進 likes 林依諾's status.
請@vinta吃大便 → 請 @vinta 吃大便
前面#H2G2後面 → 前面 #H2G2 後面
前面C#後面 → 前面 C# 後面
前面$100後面 → 前面 $100 後面
新八的構造成分有95%是眼鏡 → 新八的構造成分有 95% 是眼鏡
喬治·R·R·馬丁 → 喬治・R・R・馬丁
喬治 · 馬丁 → 喬治 · 馬丁
喬治 ·馬丁 → 喬治 · 馬丁
卡號••••1234 → 卡號••••1234
卡號····1234 → 卡號 ····1234
トークン全体
トークンと周囲の文章の間にスペースを入れ、トークン内部はそのままにします。途切れのない http:// または https:// の URL は、右端にある CJK 文字も含みます。URL 全体をそのままにし、スキームの前にある CJK 文字との間にスペースを入れます。明示的なスペースまたは全角句読点がある場合は、URL の後に続く文章との区切りになります。
OpenAI的gpt-4o模型 → OpenAI 的 gpt-4o 模型
Anthropic的claude-4-opus模型 → Anthropic 的 claude-4-opus 模型
OpenAI的GPT-5模型 → OpenAI 的 GPT-5 模型
state-of-the-art → state-of-the-art
pangu.js v1.2.3橫空出世 → pangu.js v1.2.3 橫空出世
這是C++跟C#的差別 → 這是 C++ 跟 C# 的差別
得到一個A+的結果 → 得到一個 A+ 的結果
檢查src/main.py文件 → 檢查 src/main.py 文件
在/home目錄 → 在 /home 目錄
檔案在C:\Users\name\ → 檔案在 C:\Users\name\
請看https://example.com/path頁面 → 請看 https://example.com/path頁面
請看https://example.com/path 頁面 → 請看 https://example.com/path 頁面
參考https://example.com/中文API?q=中文#用法,謝謝 → 參考 https://example.com/中文API?q=中文#用法,謝謝
テキストのルールに関する例は pangu 10.4.1 で検証済みです。文章に適用する範囲は、前述の判断に従います。