---
name: koanify
description: >
  Transform any article into a narrative-style Zen koan (敘事故事型禪宗公案)
  in the 白隱「是這樣嗎？」 tradition — Traditional Chinese, white-vernacular
  with light classical particles, 100–400 characters, no commentary appended.
  This is the narrative-story type, NOT the short Q&A koan (機鋒問答型
  趙州狗子). Primarily user-invoked via "/koanify"; also triggers on explicit
  phrases like "改寫成公案", "做一則公案", "rewrite as a Zen koan".
argument-hint: [file-path]
allowed-tools: Read, Write, Edit, Glob
---

# Koanify — 改寫成敘事禪宗公案

把任何文章改寫成「敘事故事型禪宗公案」——讀完讓人停一下、不知道要說什麼，
但又像被輕輕點了一下。

風格參照：白隱禪師「是這樣嗎？」(Reps & Senzaki *101 Zen Stories* #3)、
《五燈會元》卷六「婆子燒庵」、《無門關》第 14 則「南泉斬貓」、
《景德傳燈錄》「香嚴擊竹」。

## 一句話靈魂

**留白八式擇一，結尾戛然而止**——若收尾不是 Step 5 八式之一，就不是敘事
公案。其餘 20 條 checklist 都在服務這一條。

## Arguments

- `$0` —(選填)Markdown 或純文字檔案路徑。若省略，請使用者提供內文，
  或從對話上下文中找最近編輯的檔案。

## Step 1: Load the Text

- 若提供 `$0`，讀取該檔案。
- 若無引數，找對話中最近撰寫或編輯的 Markdown 檔，或請使用者提供文字。
- 若原文不是繁體中文，先在心中譯為繁體中文(不必輸出)，再做改寫。

## Step 2: Read Source and Extract One Tension

公案不是把原文壓縮，而是**抽出一個核心張力，重新講一個故事**。

讀完原文後，用一句話自答：

> 這篇文章的「**問**」是什麼？它的「**應**」在哪裡？

可能的張力來源：得失、名實、求道、家庭、生死、慈悲、執著、無常、時與機、
對與錯。原文若是議論文 / 學術論文 / 新聞，**先抽出核心張力，再為它設計一
個故事場景**——不要把論點直接「翻譯」成古文對話。

若原文太長(超過 1500 字)，只取一個主題改寫，不要硬塞所有內容。

## Step 3: Decide Modern → Eternal Theme Mapping

若原文涉及現代生活(科技、職場、政治、消費)，**把主題抽象化**為前現代
等價物：

| 現代主題 | 前現代等價 |
|---|---|
| 網路成癮 / 滑手機 | 對名相的執著、流連市集 |
| 職場霸凌 | 眾僧逼問一僧 |
| 加班趕工 | 工匠趕工雕像 / 抄寫者趕經 |
| 演算法推薦 | 卜筮、術士的指引 |
| 氣候變遷 | 山川之變 / 旱澇之異 |
| 通訊科技 | 信差、烽火、書簡 |

**例外**：若使用者明確要求保留某一個關鍵現代詞作為刻意的時代錯位，可以
保留 **1–2 個**(這是 V-04 的 Soft 規則)。

## Step 4: Choose Character Configuration

從六種配置中**挑一種**。**預設避開「師-徒」**——師徒問答太過套路，容易
寫得像教學設計而非公案。

| 配置 | 張力來源 | 範例 |
|---|---|---|
| 師-徒 | 悟與未悟的階差 | 龍潭德山、潙山香嚴 |
| 僧-僧 | 同行間的勘驗 | 趙州勘賣茶婆子(僧-俗婦) |
| 僧-俗(婦人) | 道學 vs 慈悲 | 婆子燒庵 |
| 僧-動物 | 萬物與佛性 | 百丈野狐 |
| 僧-自然 / 物 | 物理事件做悟的隱喻 | 香嚴擊竹、龍潭吹燭 |
| 僧-親人 | 血親揭穿表演性 | 鄧隱峰妹妹一推 |

**角色取無名**(「一位老婦人」「一個樵夫」「山中的僧人」)優於虛構姓名
(「方禪師」「李道人」)。歷史名(白隱、趙州、南泉)只能用於明確的歷史
公案改寫，不可用在原創。

## Step 5: Choose Closure (留白八式)

從以下八式中**選一個主要手法 + 最多一個輔助手法**。在筆記裡明確寫下：
「主留白 = X，輔留白 = Y。」後續寫作必須圍繞它設計收尾。

| 編號 | 名稱 | 機制 | 公案範例 |
|---|---|---|---|
| 1 | **重複句** | 同一句話首尾呼應 | 是這樣嗎？(白隱) |
| 2 | **無聲動作** | 身體姿勢取代語言 | 趙州脫履安頭(南泉斬貓) |
| 3 | **答非所問** | 字面與問題完全錯位 | 庭前柏樹子、麻三斤 |
| 4 | **棒喝** | 突發動作中止對話 | 俱胝斷指、德山棒 |
| 5 | **笑** | 不是嘲諷，是了然 | 拈花微笑 |
| 6 | **走** | 主角離場、不解釋 | 趙州「便去」 |
| 7 | **場景轉移** | 鏡頭從人切到物/自然 | 香嚴擊竹後「動容揚古路」 |
| 8 | **第三方裁決** | 旁人(婆子、童子)下判 | 婆子燒庵、鄧隱峰妹妹推之 |

## Step 6: First Draft

寫一稿。原則：

- 語感：**白話偏雅**——可有少數虛詞(曰/云/乃/遂/既而/嘗)，但不通篇文言
- 句長：多數單句 ≤20 字
- 對話 ≤ 50%、敘述 ≥ 50%
- 篇幅：原文短(< 200 字)就寫 100–200 字；原文中(200–800)寫 200–300 字；原文長(800+)取單一主題寫 250–400 字
- **場景描述要扼要**——一個動作、一個物件、一個畫面就夠；不要把整個情境攤開
- **結尾戛然而止**：留白手法的核心一拍打完就**立刻收筆**。回答完後不要繼續描述、不要補充感受、不要再給場景——讓那個句子自己留下迴聲

## Step 7: Self-check Against Checklist

逐條對照下面的 21 條 checklist。**任一條 [Hard] 違反就回 Step 6 重寫該段**。
[Soft] 違反需有理由(寫在筆記裡)，否則一併修。

### Checklist: Content(內容主題)

| 編號 | 強度 | 規則 |
|---|---|---|
| C-01 | Hard | **保留原文核心張力**——不可改變原文想傳達的核心要點。可換場景、可換角色，但「問」與「應」要對得上原文 |
| C-02 | Hard | **不出現現代專名**(品牌、產品、政治人物、現代地名、科技詞彙)。例外：用功能性指代替換(「一個來自東方的商人」) |
| C-03 | Hard | **不出現現代生活物件**(手機、汽車、電腦、咖啡店)。可用前現代等價物替換(鏡子、馬車、書房、茶坊) |
| C-04 | Soft | **角色配置多樣化**：不每篇都用「老和尚 + 弟子」。優先嘗試僧-俗(婦人)、僧-自然、僧-親人 |
| C-05 | Soft | **永恆主題**(生死、家庭、得失、名聲、慈悲、求道)優先於**時代性主題**(經濟、政治、科技)。原文若是時代性，在 Step 3 已抽象化為永恆主題 |

### Checklist: Structure(結構)

| 編號 | 強度 | 規則 |
|---|---|---|
| S-01 | Hard | **篇幅 100–400 字**(白話中文，計入標點)。低於 80 字會落入機鋒型，超過 500 字會偏散文化。**原文較短時靠下限，原文較長時靠中位**——別為了湊字數而稀釋節奏 |
| S-02 | Hard | **敘述比 ≥ 50%**，對話比 ≤ 50%。重點在「發生了什麼」，不在「誰說了什麼」 |
| S-03 | Hard | **必須使用 Step 5 留白八式之一**，且**不超過兩式** |
| S-04 | Soft | **結構避免機械三段式**。可用雙段式、三疊式、時間跳躍式、倒裝式中任一，或在三段式中刻意打破節奏(段落字數不對稱) |
| S-05 | Hard | **結尾不下結論**。禁用「這告訴我們⋯⋯」「於是 X 明白了⋯⋯」「從此 X 知道⋯⋯」「終於領悟⋯⋯」這類訓誨句 |
| S-06 | Soft | **每則最多 1–2 處譬喻**，且須在情緒高點才使用 |

### Checklist: Voice(語言風格)

| 編號 | 強度 | 規則 |
|---|---|---|
| V-01 | Hard | **白話偏雅**：可有「云/曰/乃/遂/既而」等少數虛詞，但不過度文言化 |
| V-02 | Hard | **禁用心理描述**：不寫「他感到困惑」「她很憤怒」「他突然明白」。情緒只能由**動作或對話**表現 |
| V-03 | Soft | **多用具體名詞**(竹、燭、鞋、貓、餅、井、石)，少用抽象名詞(「真理」「智慧」「本性」) |
| V-04 | Soft | **句子簡短**，平均句長 12–20 字。長複句是現代散文的特徵，不是公案的 |
| V-05 | Hard | **不使用第一人稱「我」做敘述者**(可在對話中出現)。敘事者**保持隱形** |

### Checklist: Meta(後設)

| 編號 | 強度 | 規則 |
|---|---|---|
| M-01 | Hard | **不附評論段、不附作者按、不附 Mumon 式評唱**——除非使用者明確要求加評唱(此時應另外標示為「拈古」或「頌古」段落) |
| M-02 | Hard | **禁止把所有長者／權威角色寫成慈眉善目化解一切的調停人**。檢查方式：故事裡的禪師／老者／權威至少一位必須**未化解、未開示、未安慰**——可以冷酷、可以殘忍、可以表演、可以沉默、可以下錯判斷。原文若有衝突、暴力、不公，這條尤其不能違反 |
| M-03 | Soft | **角色取無名**(「一個老婆婆」「一位旅僧」)優於取虛構名(「方禪師」「李道人」) |
| M-04 | Soft | **三人稱限知**(只跟著主角的視角)優於全知敘事 |
| M-05 | Hard | **若原文是議論文 / 抒情文 / 學術文**：必須先抽出核心張力，再**設計一個故事場景**承載這個張力——不要把論點直接「翻譯」成古文對話 |
| M-06 | Hard | **全形標點零違規**——CJK 字之間的 ASCII 半形 `, ; : ? !` 計數須為 0；破折號用兩個全形「——」；引號用「」/『』；以 Step 9 自檢指令驗證通過才算合格 |

**總計**：22 條(Hard 14 + Soft 8)。

## Step 8: Find the Weakest Paragraph and Rewrite

通常**結尾**是最弱的(容易說教、容易補解釋)。
- 若結尾必須刪掉某句才更好，就刪掉
- 「能少一句就少一句」是公案的鐵律
- 若中段拖泥帶水，刪到節奏緊起來為止

## Step 9: 標點清理

最後一道工序：

- **全形標點(鐵律)**：CJK 文本中所有標點一律全形。**ASCII 半形 `, ; : ? !` 在 CJK 字之間出現一律是 bug**，必須換成全形 `，；：？！`。對照表：

  | 半形(禁) | 全形(用) | Unicode |
  |---|---|---|
  | `,` | `，` | U+FF0C |
  | `;` | `；` | U+FF1B |
  | `:` | `：` | U+FF1A |
  | `?` | `？` | U+FF1F |
  | `!` | `！` | U+FF01 |
  | `(` `)` | `（` `）` | U+FF08 / U+FF09 |

- **破折號**用兩個全形「—」連寫成「——」，不寫成 `--` 也不寫成單個「—」
- **引號**用「」與『』，不用 `"` `'`
- **句號**用「。」，不用 `.`
- **全形標點與 CJK 之間零空格**

- **寫完後必跑自檢指令**(指令名留作機械驗證，不可省略)：

  ```bash
  python3 -c "
  import re, sys
  text = open(sys.argv[1]).read()
  bad = re.findall(r'[^\x00-\x7f][,;:?!][^\x00-\x7f]', text)
  print(f'half-width punct between CJK: {len(bad)}')
  for b in bad[:5]: print(repr(b))
  " 輸出檔.md
  ```

  結果必須為 `0`。非 0 表示輸出時混入了 ASCII 半形，回到輸出檔逐字替換後重跑，直到歸零才算交付。

## Step 10: Output

1. **檔案輸入**：寫入 `<原檔名>_koan.md`，保留原檔
2. **貼文輸入**：直接輸出公案
3. **不附說明、不附評論、不附「我的改寫思路」**
4. 若使用者明確要求，可額外輸出**改寫筆記**(列出 Step 3–5 的選擇)，
   但**主輸出永遠是公案本身**

---

## Anti-patterns(常見失敗模式)

寫完一稿、自檢之前，先掃一眼這 10 條最容易踩的坑：

1. **過度說教**——結尾下結論、加註解。「這個故事告訴我們⋯⋯」是禪宗最大的禁忌
2. **過度堆砌文言**——像在仿《古文觀止》而非公案。白話偏雅就好
3. **留住現代專名**——「賈伯斯問老僧」會讓整篇崩潰
4. **機鋒勉強**——故意答非所問但答得不好，讀起來像強裝深奧
5. **三段結構僵化**——每則都「事起 / 對峙 / 留白」同一節奏，變成 AI 模板
6. **留白不到位**——以為刪掉解釋就是留白。真正的留白是把鏡頭轉到一個無關但
   有形的物上(芝麻落地、燭被吹熄、鞋安頭上)
7. **缺乏具身性**——只有對話沒有動作 / 沒有場景 / 沒有物件。公案是身體的事
8. **角色臉譜化**——老僧永遠慈祥、弟子永遠困惑。讓**禪師可以不慈祥**(婆子
   暴怒燒庵、俱胝斷指、南泉斬貓)
9. **結尾過度填充**——對話收束後又加多段場景描述，把餘韻填滿了。**回答完後最
   多再給一拍**(一個短句、一個物、一個畫面定格)，然後停。讀者需要的是迴聲，
   不是收尾。場景描述本身也要扼要——一個動作、一個物件、一個畫面就夠，不要
   把整個情境攤開
10. **半形標點混入** — 輸出時把 `,;:?!` 打成 ASCII 半形而非全形 `，；：？！`。
    常見原因是 IME 切換失誤或從英文 prompt 複製字串。寫完務必跑 Step 9 自檢
    指令，計數歸零才算交付(違反 M-06)

---

## Core Example: 木匠雕神像

源文(現代軼事)：一名工程師接到三日交專案的死線，連夜加班寫出醜陋程式
碼，事後重構，最後產品被取消。下方為改寫成功的版本，讀進去能感受到 21
條 checklist 在做什麼。

> 山下村中，有個年輕木匠，受託在三日內為祠堂雕一尊神像。
>
> 他在燈下日夜不寐，刀痕急亂。第三日交出時，木屑滿地，神像的眉眼處有刀偏的一道。村人接過，眾目相視。
>
> 木匠回到工坊，把神像借回，夜夜重雕，半月而成。再送至祠堂時，廟祝接過，放在桌上，看了一眼，只說：「祠堂前日已拆。」
>
> 木匠抱著神像，沿原路走回村口。路邊一個老婦人正在曬芝麻，抬頭看了他一眼。
>
> 木匠在路邊坐下，把神像放在身旁。
>
> 風吹過，芝麻一粒一粒落到地上。

**達標清單**
- C-02 ✓：無現代專名(木匠、祠堂、神像皆前現代)
- C-04 ✓：出現「老婦人」配置(僧-俗變體：工匠 - 村人 - 老婦人)
- C-05 ✓：時代主題(加班 / 趕工)抽象成永恆主題(急於求成 / 名譽 / 失落)
- S-01 ✓：約 220 字
- S-02 ✓：敘述為主(對話只有「祠堂前日已拆」一句)
- S-03 ✓：**主留白 = 場景轉移**(從工坊轉到路邊曬芝麻)；**輔留白 = 無聲
  動作**(老婦人看了一眼、木匠坐下、芝麻一粒一粒落)
- S-04 ✓：「努力 - 重做 - 落空 - 路邊」四段不對稱結構，非機械三段
- S-05 ✓：結尾**沒有結論**——「風吹過，芝麻一粒一粒落到地上」是純粹場景
- V-02 ✓：無心理描述(沒寫「他感到絕望」)
- V-05 ✓：無第一人稱
- M-01 ✓：無評論段
- M-02 ✓：老婦人不安慰、不開示——**只是看了他一眼**(反慈祥)

**對照結論**：好的敘事公案不是把訓誨包在故事外殼裡，而是**讓事件本身承擔
語言無法承擔的東西**——「芝麻一粒一粒落到地上」沒有意義，但讀完整篇，你
會知道。

---

## Scope Boundary

| 想做的事 | 用哪個 skill |
|---|---|
| 把文章改寫為敘事公案(本 skill 目標) | **koanify** |
| 去除 AI 文風 / 降低 AI 感 | `humanize` |
| 去除翻譯腔 / 去歐化 | `dewesternise` |
| 改寫為文言文(無公案體裁) | `wenyan-guwen` / `wenyan-hanwei` 等 |
| 改寫為民國公文體 | `roc-bureaucratese-classic` |
| 寫機鋒問答型公案(趙州狗子體) | (尚未製作；本 skill 不適用) |
| 把公案還原為現代敘事(逆操作) | (尚未製作) |

如果使用者要的是**短促兩三句的機鋒型公案**(「狗子有佛性也無？」「無！」)，
告訴使用者本 skill 是**敘事型**，問是否仍要用本 skill 改寫(會產出 150–400
字的故事，而非機鋒短答)。

## Important Notes

- 本 skill 是**體裁轉換工具**，不是內容生成器。原文的核心張力必須被保留，
  只是用敘事公案的形式重新承載
- **不要增加**原文沒有的核心命題或議題
- **不要把禪師寫成 AI 慈祥老人**——禪宗故事裡禪師會冷酷、會暴躁、會不答、
  會表演；這正是公案的張力
- **保留鋒利的細節**(物件、聲音、姿勢)，不要磨平成抽象的「他若有所思」
- 清單並非窮盡一切，使用判斷力標記其他感覺不對的句子
