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:
33
CLAUDE.md
33
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 鏈路
|
||||
|
||||
---
|
||||
|
||||
|
||||
154
docs/HARD_RULES.md
Normal file
154
docs/HARD_RULES.md
Normal 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` 索引
|
||||
Reference in New Issue
Block a user