---
name: the-listening-ladder
description: 15 分鐘、2 人（或三人一組）的傾聽練習，沿三層往上爬——字面、情緒、沒說出口的部分——附撲克規格角色卡、驗證者機制與配對層級前後測。
version: 2.1.0
license: CC-BY-4.0
allowed-tools: Read, Write, Bash(curl:*), Bash(unzip:*), Bash(npm:*), Bash(formlm-cli:*), Bash(python3:*)
metadata:
  category: communication
  group_size: 2
  duration_minutes: 15
  setting: offline
  props: [poker role cards, 3 round cards, 1 validator card per trio]
  depth: assessment-type
  language: zh-hant
  updated: 2026-10-11
---

# 傾聽階梯

先聽見字面，再聽見字面下的情緒，最後追問沒說出口的部分。第三個角色——驗證者——只說「落地」或「還沒」，於是「聽見」變成一件可以查證的事，而不是一句宣稱。

## 什麼時候用這個活動

- 一個團隊聽見彼此的話，卻不斷錯過重點，然後對傳回來的結果感到吃驚。
- 你只有 15 分鐘和一對對配對，不是一整間房間的動能。
- 你想要一節溝通課有可量測的前後變化——這個資料夾附了配對層級前後測。

## 資料夾裡有什麼

| 檔案 | 用途 |
|---|---|
| `道具卡.pdf` | 撲克規格列印頁（63.5 × 88.9 mm、出血、裁切導引、卡背、空白卡）：說者、聽者、驗證者 + 三張回合卡 |
| `執行手冊.pdf` | 印刷版：執行手冊 + 反思引導綁成一份 A4 文件 |
| `*-Letter.pdf` | 本資料夾印刷檔的 US Letter 紙型——內容相同、每一版都含書籤與連結目錄 |
| `執行指南.md` | 執行手冊：目標、佈置與材料表、逐分鐘腳本、翻車點與救援、變化版 |
| `反思引導問題.md` | 6 個反思引導問題（帶指向）+ 驗證卡怎麼讀 + 四個反思翻車點 |
| `測評預設.json` | 前後測規格：五題、一題反向計分、配對差值 |
| `答卷.pdf` | A4 前後測答卷——印好即填的紙本表（工作坊版） |
| `簡報.pdf` | 投影片——帶場的 12 頁，一頁一觀念 |
| `簡報.html` | 投影片（HTML）——瀏覽器即可投影，一點一鍵，內建講者備註 |
| `學員工作簿.pdf` | 學員工作簿——通俗導入、逐層引導、行動頁 |
| `使用許可.md` | 平實的授權說明——你能做什麼、必須保留什麼 |
| `活動海報.pdf` | 把整個活動貼上一面牆（A3）：概況、流程、反思問題、注意事項。 |
| `快速上手.md` | 快速上手——挑路線、檔地圖、列印清單 |

## 怎麼帶

1. 每三人一組（或兩人自行驗證的配對）印一副道具卡。
2. 配對前跑前後測的前測（2 分）。
3. 回合 A：只複述字面。驗證者舉「落地／還沒」。
4. 回合 B：同一位說者，加上情緒，再追問「我說得對嗎？」。
5. 回合 C：新題目，就未言的部分問一個問題——然後守住那段沉默。
6. 依 `反思引導問題.md` 帶反思引導；卡牌留在桌上。
7. 跑後測（2 分）。只報配對差值，絕不替個人排名。

## 用代理帶這個活動

引導者可以把整個資料夾交給他的 AI 代理。先安裝——一行指令，任何技能載入器都認得的資料夾：

```bash
# 一次安裝整個技能資料夾
curl -LO https://workshopskill.com/zh-hant/activities/the-listening-ladder/files/the-listening-ladder.zip
unzip the-listening-ladder.zip   # -> the-listening-ladder/SKILL.md + 全部檔案 + manifest
```

解開後是名為 `the-listening-ladder` 的目錄，含這份 SKILL.md、它引用的每個檔案、一份 manifest。

只要部分檔案——匿名、CC BY 4.0：

```bash
# 1. 取得可列印角色卡（撲克道具卡，CC BY 4.0）
curl -O https://workshopskill.com/zh-hant/activities/the-listening-ladder/files/道具卡.pdf

# 2. 取得 A4 前後測答卷（每人印一張）
curl -O https://workshopskill.com/zh-hant/activities/the-listening-ladder/files/答卷.pdf

# 3. 取得反思引導與執行指南
curl -O https://workshopskill.com/zh-hant/activities/the-listening-ladder/files/反思引導問題.md
curl -O https://workshopskill.com/zh-hant/activities/the-listening-ladder/files/執行指南.md
```

量測結果不依賴 FormLM——離線也能算前後測、不需帳號（見下方「離線計分」）。線上表單純屬選配。

線上的前後測用 FormLM CLI 建立，需要一個免費 FormLM 帳號；表單與資料都留在你自己的工作空間：

```bash
npm install -g @formlm/cli
formlm-cli auth login
formlm-cli smart generate --input "傾聽階梯的前後測：五題 Likert，構念為 paraphrase-before-reply、feeling-recognition、unsaid-checking、self-reference（反向計分）與 repair——同樣五題在三個回合前後各作答一次，自動算出每組配對的差值"
```

若代理無法完成互動式的 `formlm-cli auth login`（無瀏覽器、CI、headless）：仍照上面的 curl 步驟走，把 `測評預設.json` 保留為量測規格，並將登入與 generate 指令交回真人——或請真人登入一次，之後只重跑 generate。

給代理的預備事實：
- 以配對／三人一組計：12 人 = 6 組配對（自行驗證）或 4 組三人（專職驗證者）。
- 流程加總：前後測 2 + 三回合 9 + 反思引導 3 + 後測 2 ≈ 16 分鐘。
- 不需投影機；投影片為選配，資料夾內沒有任何東西一定需要螢幕。
- 以撲克規格列印。一副卡牌三人一組正好一頁 A4。

**技能放哪。** 把解開的 `the-listening-ladder/` 放進你代理的技能目錄即可自動載入：Claude Code `~/.claude/skills/the-listening-ladder/`（或專案內 `.claude/skills/`）、OpenAI Codex `~/.codex/skills/the-listening-ladder/`、Qoder `~/.qoder/skills/the-listening-ladder/`。代理沒有技能目錄？把這份檔案貼進對話，請代理照著做。各代理逐步教學：https://workshopskill.com/zh-hant/skill-guides/

## 引導筆記

- 回合 C 提問之後那段沉默就是整個練習的設計，別去填它。
- 若驗證者軟化成「差不多了」，重申規則：卡片只有兩面，而「還沒」是有用的那個。
- 最有力的遷移提問：「你在工作上已經跳過哪一層？跳過它讓你付出了什麼代價？」

## 離線計分（不需帳號）

完整的計分規格已在這個資料夾的 `測評預設.json`（`scoring` 欄位），不用 FormLM 也能算出結果——代理可在本機算：

1. 收集每個樣本對 `items` 每一題的 Likert 作答（一輪前測、一輪後測）。
2. 對 `scoring.reverse_scored_items`（或 `items[].reverse` 為 true）的題目做反向計分：`new = scale_max + scale_min - raw`。
3. 依 `scoring.method`（`sum` 為把各題相加）彙整成前測總分與後測總分。
4. 只輸出 `scoring.reported` 的東西：`pair_delta`（後減前，以頂層 `unit` 為準）與 `construct_deltas`（對 `items[].construct` 每一維各算一次）。
5. 遵守 `scoring.report_note`：只報配對層級的變化，絕不做個人排名。

只用標準函式庫、可直接複製的實作：

```python
import json
m = json.load(open("測評預設.json"))
sc, items = m["scoring"], m["items"]
hi, lo = len(m["scale"]["labels"]), 1            # Likert 上下界（此量表為 1..5）
rev = {it["id"] for it in items if it.get("reverse")}
def total(ans):                                   # ans: {item_id: score}
    return sum((hi + lo - v) if k in rev else v for k, v in ans.items())
# pair_delta = total(post) - total(pre)
# construct_deltas：對每個 construct，取其題目，用同樣兩個總分相減
print(sc["reported"], "| unit:", m["unit"], "|", sc["report_note"])
```

// 註：`測評預設.json` 內的 `version` 描述的是量表本身，與這份技能 frontmatter 的 `version` 各自獨立。

## 改作：變成你自己的

想把這組資料夾改自有品牌、或打包成你自己的架上商品？資料夾裡的白標指南（檔案清單中的「白標與上架指南」那一列）寫明了投影片佔位處、卡牌與海報的印刷規格、以及包裝步驟。保留 CC BY 署名行，你就能自由使用、販售、再分發；署名的繩子留著，這組階梯就一直敞開。

## 署名

逐檔手工建檔、並讓資料夾內部相互核對——腳本、時間、道具尺寸與前後測彼此一致。CC BY 4.0 免費——拿去帶課、複製、為你自己的工作坊改自有品牌；保留署名行，這組階梯就一直敞開。
