hardenlisted
Install: claude install-skill pei760730/KaiOS-ContentSystem
<!-- v2.0 → v2.1(2026-04-30):原 v2.0 stub 引用 distillation/SKILL.md phase=harden、但 distillation 在 Phase 6 第二輪退役後已成 v2.0 stub(workflow.md v2.25 §Distillation 三 phase 拆三層)。本次更新把 redirect 目標改為實際 live 路徑(command + lib)-->
<!-- 對應 docs/references/skill-architecture-principles.md v1.6 §第二輪退役執行 + workflow.md v2.25 §Distillation 三 phase 拆三層 -->
# harden v2.1(spec for `/harden` command)
> 本檔是 `/harden` 指令的 spec 參考。實際觸發 / 流程在 `.claude/commands/harden.md`、實作在 `scripts/ops/lib/hardening.harden_from_dialog()`。
> Claude 對話中執行 `/harden` 時會用 command 規格、不會 load 本 SKILL.md(command 直接呼叫 Python lib)。
---
## 觸發
Kai 在對話中:
- `/harden L-XXXX [path]`
- `升 L-XXXX 為 <path>`
- `硬化 L-XXXX`
或 Claude 觀察到 soft lesson 反覆出現、提議升 hardened、Kai 同意。
---
## 5 種硬化路徑
| path | 落點 | 適用 lesson 類型 |
|------|------|----------------|
| `test` | `tests/test_*.py` | 程式邏輯錯誤 / schema 違反 / 跨檔一致性 |
| `lint` | `scripts/lint/rules-lint.py` 新規則 | 文字模式 / 命名 / 引用一致性 |
| `claude_md` | `CLAUDE.md` 禁令 | 對話行為紅線 / always-on 規則 |
| `workflow_md` | `.claude/rules/workflow.md` 段落 | 流程 / 觸發條件 / 對話規範 |
| `brand_md` | `01-data-brain/brand.md` 對應 section | 品牌事實 / 競品紅線 / 禁忌邊界 |
---
## 流程(command 執行步驟)
1. Claude 讀 lesson `pattern` + `counter_pattern`、草擬 artifact 內容
2. 展示 draft + target path 給 Kai 確認
3. 呼叫 `scripts/ops/lib/hardening.harden_from_dialog()` → 寫檔 + validator
4. **成功**:lesson `stage = "hardened"`、寫 `data/[op]/hardening-archive.json`(source="dialog")
5. **失敗**:lesson 保留 `soft`、archive 不寫、回報原因(不污染狀態)
---
## 為什麼從 v1.x 升 v2.x
-