diff --git a/CLAUDE.md b/CLAUDE.md
index 59b42ba8..5050fcbc 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -2,22 +2,11 @@
> Claude Code 自動載入,定義核心原則
-## 🔴🔴🔴 絕對禁止 (Hard Rules)
+## 🔴 絕對禁止 (Hard Rules)
-以下是**絕對不能違反**的鐵律,直接寫死在這:
+**做任何修改前,先讀對應的鐵律文件:**
-| 禁止項目 | 正確做法 | Memory 來源 |
-|---------|---------|-------------|
-| `runs-on: ubuntu-latest` | `runs-on: self-hosted` | feedback_github_billing.md |
-| Telegram `logOut()` | 先停舊 Bot 再換 Token | feedback_telegram_token_disaster.md |
-| 前端硬編碼文字 | 100% 使用 next-intl | feedback_i18n_zero_hardcode.md |
-| SQLite | PostgreSQL only | AWOOOI 憲法 |
-| CORS `*` | 嚴格白名單 | AWOOOI 憲法 |
-| 假數據 Demo | 真實 API 數據 | feedback_no_fake_data.md |
-| 刪除 OpenClaw | OpenClaw 是核心 | feedback_architecture_openclaw_core.md |
-| `git push --force` | 正常 push | 防禦性工程 |
-
-**違反以上任何一條 = 重大事故**
+→ [HARD_RULES.md](docs/HARD_RULES.md)
---
@@ -44,18 +33,14 @@
- `apps/web/` - Next.js 前端
- `k8s/` - Kubernetes 配置
-## 🛑 修改前檢查清單
+## 🛑 修改前
-**修改 `.github/workflows/` 前:**
-- [ ] 確認 `runs-on: self-hosted`,禁止 `ubuntu-latest`
+修改以下檔案前,**必須先讀** [HARD_RULES.md](docs/HARD_RULES.md):
-**修改 Telegram 相關前:**
-- [ ] 讀 `feedback_telegram_token_disaster.md`
-- [ ] 禁止呼叫 `logOut()`
-
-**修改 Incident/Approval 流程前:**
-- [ ] 確認 Telegram 通知鏈路完整
-- [ ] 確認 DB 寫入正常
+- `.github/workflows/*` → GitHub Billing 章節
+- `*telegram*` → Telegram Token 章節
+- `apps/web/**` → i18n 章節
+- Incident/Approval 流程 → 確認 Telegram + DB 鏈路
---
diff --git a/docs/HARD_RULES.md b/docs/HARD_RULES.md
new file mode 100644
index 00000000..2b529489
--- /dev/null
+++ b/docs/HARD_RULES.md
@@ -0,0 +1,154 @@
+# AWOOOI 絕對禁止規則 (Hard Rules)
+
+> 違反任何一條 = 重大事故
+
+## 快速索引
+
+| 主題 | 禁止 | 正確做法 | 詳細規則 |
+|------|------|---------|---------|
+| CI/CD | `ubuntu-latest` | `self-hosted` | [→ GitHub Billing](#github-billing) |
+| Telegram | `logOut()` | 先停後換 | [→ Telegram Token](#telegram-token) |
+| 前端 | 硬編碼文字 | `next-intl` | [→ i18n](#i18n) |
+| 資料庫 | SQLite | PostgreSQL | [→ DB](#database) |
+| CORS | `*` | 白名單 | [→ CORS](#cors) |
+| 數據 | 假數據 Demo | 真實 API | [→ No Fake Data](#no-fake-data) |
+| 架構 | 刪除 OpenClaw | OpenClaw 是核心 | [→ OpenClaw](#openclaw) |
+| Git | `--force` | 正常 push | [→ Git Safety](#git-safety) |
+
+---
+
+## GitHub Billing
+
+**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_github_billing.md`
+
+```yaml
+# ❌ 禁止
+runs-on: ubuntu-latest
+
+# ✅ 正確
+runs-on: self-hosted
+```
+
+**原因:** GitHub Actions 帳戶額度限制,必須用 192.168.0.110 的 self-hosted runner。
+
+---
+
+## Telegram Token
+
+**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_telegram_token_disaster.md`
+
+```python
+# ❌ 禁止 - 會導致 Token 永久失效
+await bot.log_out()
+
+# ✅ 正確流程
+1. 先停止舊 Bot 的 Long Polling
+2. 再切換新 Token
+```
+
+**原因:** 2026-03-23 災難事件,logOut 導致 Token 永久失效。
+
+---
+
+## i18n
+
+**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_i18n_zero_hardcode.md`
+
+```tsx
+// ❌ 禁止
+
+
+// ✅ 正確
+
+```
+
+**原因:** 100% 雙語支援 (zh-TW + en)。
+
+---
+
+## Database
+
+**Memory:** AWOOOI 憲法
+
+```python
+# ❌ 禁止
+DATABASE_URL = "sqlite:///..."
+
+# ✅ 正確
+DATABASE_URL = "postgresql+asyncpg://..."
+```
+
+**原因:** SQLite 無法支援生產環境並發。
+
+---
+
+## CORS
+
+**Memory:** AWOOOI 憲法
+
+```python
+# ❌ 禁止
+CORS_ORIGINS = ["*"]
+
+# ✅ 正確
+CORS_ORIGINS = ["https://awoooi.wooo.work", "http://localhost:3000"]
+```
+
+**原因:** 安全性要求。
+
+---
+
+## No Fake Data
+
+**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_no_fake_data.md`
+
+```tsx
+// ❌ 禁止
+const data = DEMO_DATA
+
+// ✅ 正確
+const { data } = useRealAPI()
+```
+
+**原因:** 假數據導致用戶無法看到真實系統狀態。
+
+---
+
+## OpenClaw
+
+**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_architecture_openclaw_core.md`
+
+```
+❌ 禁止: 淘汰、取代、或刪除 OpenClaw
+✅ 正確: OpenClaw 是 AWOOOI 產品核心,只能增強不能移除
+```
+
+**原因:** OpenClaw AI 是產品核心價值。
+
+---
+
+## Git Safety
+
+**Memory:** 防禦性工程
+
+```bash
+# ❌ 禁止
+git push --force
+git reset --hard
+git checkout -- .
+
+# ✅ 正確
+git push
+git revert
+```
+
+**原因:** 防止資料遺失。
+
+---
+
+## 如何新增規則
+
+1. 在此文件新增章節
+2. 更新快速索引表
+3. 在 Memory 新增對應 `feedback_*.md`
+4. 更新 `MEMORY.md` 索引