Community寫作與編輯github.com

fangdididi/night-shift-steps

將操作程序、runbook、設定指南或安全說明改寫為受控語言風格,讓疲憊、緊張、非母語或初次使用者能準確跟隨,避免誤讀。

night-shift-steps 是什麼?

此工具適用於 AI 代理與開發者環境,能將含糊不清的程序文件改寫為清晰、無歧義的步驟。它借鑒航空與工業維護中的受控語言原則(短句、單一動詞、主動語態),以及設備標籤的安全訊息順序(信號詞、危害、後果、避免方法)。支援的規則包括每行一個動作、條件前置、安全警告、精確數值、消除模糊詞語等,並提供三層嚴格度(嚴格、預設、輕量)。它整合了 Python 腳本 `scripts/stepcheck.py` 進行 lint 檢查,能自動標記危險步驟、被動語態、過長句子等問題,並輸出「READY」「REWORK」「UNSAFE」三種結果。改寫流程包含填寫程序卡、列出關鍵事實、拆分步驟、放置安全訊息、添加結果與退出條件,以及使用腳本驗證。此技能適用於 runbook、事故劇本、硬體設定指南、SOP 等場景,但非用於散文或行銷文案。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fangdididi/night-shift-steps/tree/HEAD

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

夜班步驟

這是什麼

多數程序由已經熟悉工作的人撰寫。在辦公桌前閱讀沒問題;但在凌晨三點、嘈雜的房間、手機上、以第二語言閱讀、或害怕弄壞東西時,它們就失效了。這些失效是可預測的:一個步驟中隱藏了兩個動作、警告放在其所保護的步驟之後、條件句出現在句子末尾、被動句隱藏了必須行動的人、以及像「適當」這類讓讀者猜測的詞語。

這個技能將這類文字轉化為人能逐字遵循的步驟。它借鑒了航空與工業維護中使用的受控語言紀律(短句、每句一個動作、主動語態、一詞一義)、設備標籤上使用的安全訊息順序(信號詞、危害、後果、避免方法),以及在每個風險步驟後寫上預期結果的習慣,讓讀者知道何時應停止。

這不是「讓它聽起來像人話」的修飾。目標是無法被誤讀的程序,即使聽起來稍微平淡。

何時使用

  • Runbook、事件劇本、值班檢查清單、部署與回滾步驟。
  • 硬體、家用設備、實驗室設備或辦公室 IT 的設定或維修指南。
  • 標準操作程序(SOP)和交接記錄,供他人或下一班使用。
  • 將要進行機器翻譯或由非母語人士閱讀的指示。
  • 任何一個誤讀步驟可能導致資料遺失、金錢損失或人身傷害的文字。

不要用於論文、行銷文案或概念解釋。那些需要不同的語調。

規則(預設層級)

#規則限制或測試
R1每步一個動作無「,然後」、「然後」、分號或同一句中用「和」連接兩個動詞
R2指令句簡短英文 20 字,中文約 35 字元
R3描述句簡短英文 25 字,中文約 45 字元
R4祈使句、主動語態以動詞開頭。若非讀者本人,則指明執行者
R5條件在前「如果燈是紅色的,停車。」而非「停車,如果燈是紅色的。」
R6一詞一義將詞彙鎖定在詞彙表中。切勿為了變化而互換同義詞
R7精確數值帶單位的數字,標籤與螢幕或裝置上顯示的完全一致
R8安全訊息在步驟之前信號詞、危害、後果、該做什麼
R9風險步驟後的預期結果「結果:...」以及結果不同時該做什麼
R10無猜測詞語移除「適當」、「按需」、「確保」、「應該」、「剛好」

嚴格層級(用於安全關鍵或規範性文字):應用所有規則,無例外,不允許任何迴避詞語,並在每個步驟後加上結果行。 輕量層級(用於已經不錯的內部備註):僅應用 R1、R5、R8 和 R9。

信號詞

使用仍然正確的最低層級詞語。不要誇大。

  • DANGER:若忽略將導致死亡或重傷。
  • WARNING:可能導致死亡、重傷、或重要資料或金錢損失。
  • CAUTION:可能導致可修復的輕微傷害或損壞。
  • NOTICE:無受傷風險;僅有財產、資料或時間風險。

每條安全訊息包含三部分:危害是什麼、讀者忽略時會發生什麼、以及該做什麼。「小心」不是安全訊息。

如何操作

  1. 填寫程序卡。 在編輯之前,寫下:目標狀態(「Disk 2 重建中」)、誰將遵循(角色、語言、條件如手套、噪音、手機螢幕、夜間)、他們擁有的東西(權限、工具、時間)、危險以及停止條件。對於無法推斷的任何事項,請詢問使用者。缺少停止條件是最常見的缺口。
  2. 列出必須保留的事實。 每個數字、單位、標籤、指令、順序限制、警告和條件。改寫必須包含所有這些內容且不新增任何內容。如果你認為某個值有誤,請標記它;不要默默修正。
  3. 拆分為動作。 讀者執行的一個動詞 = 一個步驟。導航也算(「前往 Storage」和「選擇 Disk 2」是兩個步驟)。將背景資訊移至簡短的「開始之前」段落。
  4. 改寫每個步驟。 動詞在前、條件在前、精確標籤以粗體或 程式碼 顯示、單位始終存在。替換所有隱藏執行者的被動語態:「金鑰被產生」變成「工具產生金鑰」,或者更好的是,讀者為產生金鑰所採取的步驟。
  5. 放置安全訊息。 對於每個涉及刪除、覆寫、關機、重啟、斷線、加熱、切割或加壓的步驟,將訊息直接放在該步驟上方。從上述階梯中選取信號詞。
  6. 添加結果和退出條件。 在每個風險或狀態改變的步驟之後,寫下讀者看到的情況,表示操作成功。如果結果可能不同,給出一行:「如果你看到 X,停止並前往恢復 A。」撰寫恢復部分。
  7. 鎖定詞彙表。 每樣東西挑選一個術語(例如「托盤」,而非「抽取盒」或「滑槽」)。如果程序將被維護,將其儲存為 glossary.json。
  8. Lint。 執行 python scripts/stepcheck.py lint procedure.md --glossary glossary.json。修復每個 UNSAFE 和 REWORK 的發現,或解釋為何某個是偽陽性。
  9. 進行字面走查。 僅閱讀編號步驟,假裝是完全按照每句話所述操作、不做更多事情的人。他們會在哪裡停下、猜測、或做出有害的事?修正那些地方。
  10. 返回 改寫後的程序,接著是簡短的變更清單(規則編號)、無法驗證的事實清單以及未解決的問題。

輔助腳本

scripts/stepcheck.py 是一個基於標準庫的 Markdown 程序 Python linter,支援英文或中文。

代碼嚴重程度意義
HAZARD-NO-WARNING硬性風險步驟上方無安全訊息
LATE-WARNING硬性安全訊息在所保護的步驟之後
WEAK-WARNING修復訊息未說明後果
LONG修復指令句超過限制
STACKED修復一個步驟中有超過一個動作
HIDDEN-ACTOR修復被動語態或「被」隱藏了執行者
HEDGE / VAGUE修復猜測詞語
CONDITION-LAST修復條件在動作之後
DRIFT修復使用了詞彙表中禁止的同義詞
NO-RESULT, LONG-DESC備註僅為建議

結局:READY(exit 0)、REWORK(exit 1)、UNSAFE(exit 2)。腳本使用詞彙清單和模式,因此有時會遺漏某些事項,有時也會標記出正確的句子。它從不取代步驟 9。

範例

改寫前:

  1. 如果 NAS 仍在運作,請將其關機。
  2. 拉出 Disk 2 的托盤,並將新磁碟放入。 CAUTION:舊磁碟可能很燙。

改寫後:

WARNING:在移除磁碟之前,請先將 NAS 關機。在運行中移除的磁碟可能會損壞第二個磁碟。 5. 按住電源按鈕 2 秒,將 NAS 關機。 結果:約 1 分鐘後,前方所有指示燈熄滅。 CAUTION:使用後的舊磁碟可能很燙。請握持托盤,否則可能燙傷手指。 6. 拉出 Disk 2 的托盤。 7. 將新磁碟放入托盤。

變更:R1(拆分步驟 4)、R5(透過將關機設為獨立步驟移除條件)、R8(警告上移並附加後果)、R9(添加結果)。完整檔案位於 examples/。

提示

  • 如果來源文字有誤,最清晰的改寫仍然有誤。在變更清單中標記可疑的值。
  • 保持指令、路徑和螢幕上的標籤逐字不變。圍繞著打錯的指令的清晰散文比原始文字更糟。
  • 需要長解釋的步驟通常是一個步驟加上一個前置的備註。
  • 連續編號步驟。不要在同一個程序中重新開始編號;使用不同的章節來處理恢復。
  • 當同時產出中文和英文版本時,將它們並排閱讀:每個步驟應一對一對應。
  • 切勿宣稱輸出符合任何官方受控語言標準。改說「以受控風格撰寫」。

相關技能