docs: CLAUDE.md 引用 HARD_RULES.md (禁止爆滿)

結構:
- CLAUDE.md: 精簡索引,只放引用連結
- docs/HARD_RULES.md: 詳細規則

這是早就溝通好的做法,不應該忘記。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-23 23:32:35 +08:00
parent dc30c70e57
commit 00d94ca71c
2 changed files with 163 additions and 24 deletions

View File

@@ -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 鏈路
---

154
docs/HARD_RULES.md Normal file
View File

@@ -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
// ❌ 禁止
<button>Submit</button>
// ✅ 正確
<button>{t('common.submit')}</button>
```
**原因:** 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` 索引