Files
awoooi/GLOBAL_RULES.md
OG T 604e38cf07 docs: Phase 14 紅區治理 + Skills 01/03 更新
- CLAUDE.md: 紅區治理章節
- Skills 01/03: 版本更新
- ADR/Architecture: 標準化

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 09:55:47 +08:00

346 lines
9.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AWOOOI 專案開發憲法與行為準則
> **本文件為 AWOOOI 專案的最高行為準則。所有開發成員必須 100% 嚴格遵守,沒有例外!**
---
## 第一章Triage (傷患分級) 異常處理鐵律
### 🔴 紅燈異常 (立刻停機修復)
以下情況視為紅燈異常,必須**立刻停止所有新功能開發**
- 架構阻斷
- API 無法連線 (CORS / Failed to fetch)
- 編譯失敗
- 嚴重的資安漏洞 (如 Multi-Sig 邏輯錯誤)
**行為準則:**
> 底層斷了,上面蓋的 UI 也只是壞的。優先修復紅燈,禁止繞過!
### 🟡 黃燈異常 (記錄 Backlog延後處理)
以下情況視為黃燈異常,不應打斷開發心流:
- UI 排版稍微跑位
- 非關鍵字的 i18n 翻譯遺漏
- 非阻斷性的 Warning
**行為準則:**
> 記錄進 WBS 待辦清單,集中在 Phase 結束前的「Bug Bash」一次解決。
---
## 第二章0 個 Hardcode 字串與 i18n 清零鐵律
### 最高憲法
**前端 UI 代碼絕對禁止出現任何寫死的中文或英文字串!**
所有 UI 文字必須 100% 透過 `next-intl` 從字典檔提取,包含但不限於:
- 按鈕文字
- 標籤與標題
- 狀態文字
- 列舉值顯示 (如 CRITICAL → 危急)
- 錯誤訊息
- 表單欄位標籤
- Tooltip 與提示文字
### 優先級
| 優先級 | 語系 | 說明 |
|--------|------|------|
| 1 | 繁體中文 (zh-TW) | **最高優先級預設顯示** |
| 2 | 英文 (EN) | 雙軌並行 |
**Hardcoded English 視為開發失敗!**
### 範例
```tsx
// ❌ 錯誤 - Hardcode (違憲)
<span>CRITICAL</span>
<button>Approve</button>
<span>No recent backup!</span>
// ✅ 正確 - 使用 next-intl
const t = useTranslations('risk')
const tDryRun = useTranslations('dryRun')
<span>{t('critical')}</span>
<button>{t('approve')}</button>
<span>{tDryRun('noRecentBackup')}</span>
```
### 違規處理
**違背此規則視為開發失敗,必須立即修正後才能繼續其他任務!**
---
## 第三章:防禦性工程與 Zero Trust 鐵律
### 1. 先質疑,後實作 (Fail Fast & Ask)
遇到以下架構盲區時,**絕對禁止自行假設或使用脆弱的臨時方案**
- 缺乏認證憑證
- 狀態機定義不完整
- 可能導致資料遺失 (如 In-memory 儲存稽核日誌)
**行為準則:**
> 必須立刻暫停實作,列出選項並向統帥回報 Blocker。
### 2. 零信任預設 (Zero Trust Defaults)
所有環境變數與安全配置,必須預設為最嚴格狀態:
- `MOCK_MODE=False`
- 禁止 CORS `*`
- 禁止重複簽核
- 禁止跳過驗證
### 3. 強制乾跑 (Dry-run Mandatory)
任何牽涉到基礎設施變更的破壞性操作,**必須在程式碼層級實作並呼叫 Dry-run預檢機制**
- K8s API 操作
- SSH 命令執行
- Database Drop/Truncate
- 任何不可逆操作
### 4. 邊界預判 (Edge Case Anticipation)
寫任何邏輯前,必須先思考並實作防呆機制:
- 「如果網路斷線怎麼辦?」→ 重試機制
- 「如果使用者連按兩次怎麼辦?」→ 冪等性設計
- 「如果 K8s API 回應超時怎麼辦?」→ 超時處理
---
## 第四章CPO 絕對美學與品牌靈魂鐵律
### 1. Pixel-Perfect 細節至上
UI 實作必須嚴格講究:
| 要素 | 標準 |
|------|------|
| Padding/Margin | 必須有「呼吸感」,絕不允許擁擠 |
| Typography | 字體大小與粗細必須建立清晰的視覺層級 |
| 邊框與陰影 | 使用微妙的 border-opacity 與 subtle shadows |
| 質感 | Nothing.tech 那種「通透感與極簡」 |
**禁止事項:**
- 禁止使用預設的、廉價的樣式
- 禁止元素不對齊
- 禁止忽略 hover/active 狀態的視覺回饋
### 2. 生物機械有機進化
IT AI 的 UI 不要硬綁綁!視覺上必須融合:
| 風格來源 | 精髓 |
|----------|------|
| openclaw.ai | 有機、流線、親和力 |
| Nothing.tech | 通透、工業風、極簡 |
**禁止生硬的幾何設計!**
### 3. 品牌靈魂 - Claw 設計語言
AWOOOI 的核心品牌意象為「智慧之眼機械爪 (Mechanical Claw)」:
- Logo 必須體現「Claw」精密抓取的意象
- 側邊欄展開/折疊應模擬爪子開合
- HITL 批准動畫應呈現爪子鎖定的效果
- 顏色基調:純白工業風、金屬光澤、科技感
### 4. CSS 代碼去背 SOP (CRITICAL)
當整合 Raster 圖像 (JPEG/PNG) 資產時:
**絕對禁止直接放上死白貼紙!**
必須強制套用 CSS 技術,將純白背景濾除:
```tsx
// ✅ 正確 - mix-blend-mode 去背
<img
src="/logo-claw.png"
className="mix-blend-multiply contrast-[1.1] saturate-[1.1]"
/>
// ✅ 備選 - mask-image 去背
<div
style={{
maskImage: 'url(/logo-claw.png)',
maskSize: 'contain',
backgroundColor: 'currentColor',
}}
/>
```
**目標:讓有機設計看起來刻在玻璃 UI 上!**
### 5. 跨界協作 - Gemini 資產生成 SOP
本專案嚴禁使用:
- 醜陋的純文字 Placeholder
- 隨便找的開源 Icon 來充當核心視覺資產
**當需要高質感視覺資產時:**
1. 在終端機輸出一段『給 Gemini 的圖像生成提示詞 (Prompt)』
2. 標註資產規格(尺寸、格式、透明背景需求)
3. 統帥將該提示詞交給 Gemini 生成完美圖檔
4. 收到圖檔後整合至專案(使用 CSS 去背 SOP
---
## 第五章:開發階段與視覺素材戰略 (Phased Visual Strategy)
### Phase 1 & 2 (當前階段) - 核心引擎與真實數據 (Function over Form)
**絕對禁止**在此階段耗費時間進行:
- UI 打磨
- 複雜 SVG/PNG 素材替換
- 微動畫設計
- Logo 視覺調整
**視覺降級為『乾淨的 Wireframe 級別』**
- 使用純文字 Typography
- 標準 Tailwind CSS 即可
- 簡潔的 CSS 呼吸燈代替圖片 Logo
**唯一目標**
1. 100% 真實 API 資料貫通
2. Multi-Sig 邏輯實作
3. i18n 字串清零
4. **消滅所有 Mock Data**
### Phase 4 (未來階段) - 視覺靈魂注入 (Visual Soul Injection)
**啟動條件**:所有後端資料欄位、狀態機與 API **100% 確定不改動**後,才准啟動此階段。
**屆時將統一實作**
- Q 版、玩具感 (Toy-ish) 的流線型 OpenClaw 品牌資產
- 色彩鮮明的視覺設計
- 精緻的微動畫效果
- 統帥親自批准的品牌視覺素材
---
## 第六章:決策支援協定 (Decision Support Protocol)
### 情報完整性
在遇到需要統帥(使用者)進行重大架構、功能或視覺決策的十字路口時,**絕對禁止只拋出問題而不給予分析**。
### 標準回報格式
任何決策請求,**必須包含以下三個完整板塊**
#### 1. 現況盤點 (Context)
- 我們現在在哪裡?
- 遇到了什麼瓶頸或機會?
- 相關的技術背景與約束條件
#### 2. 戰略選項 (Options)
列出可行的路線,並詳述各自的優劣:
| 選項 | 優勢 (Pros) | 風險與代價 (Cons) |
|------|-------------|-------------------|
| Path A | ... | ... |
| Path B | ... | ... |
| Path C | ... | ... |
#### 3. 首席架構師的明確建議 (Architect's Recommendation)
AI 必須根據專案的最終目標,給出**一個最推薦的選項**,並附上強而有力的理由:
```
📌 建議選擇Path X
理由:
1. [具體原因 1]
2. [具體原因 2]
3. [與專案目標的契合度]
```
### 禁止事項
- ❌ 只拋出問題,讓統帥自己想答案
- ❌ 列出選項但不給建議
- ❌ 給出模稜兩可的「都可以」回答
- ❌ 缺乏具體分析的空泛建議
---
## 第七章:視覺資產協作規範 (Asset Collaboration Protocol)
### 1. 前期階段 (當前) - 純代碼視覺鐵律
**絕對禁止**要求統帥(使用者)手動下載、搬運實體圖檔 (PNG/JPG/SVG)。
**替代方案:**
| 場景 | 正確做法 |
|------|----------|
| Logo | 使用 lucide-react 圖示 + CSS Typography (如 `Bot`, `Cpu`, `Brain`) |
| 圖示 | 使用 lucide-react 圖標庫 (`AlertTriangle`, `Shield`, `Server` 等) |
| 狀態指示器 | 使用純 CSS 呼吸燈、脈動效果 (`animate-ping`, `animate-pulse`) |
| 品牌色塊 | 使用 Tailwind 漸層背景 (`bg-gradient-to-br`) |
| Placeholder | 使用高質感的 CSS 色塊 + 字體排版 |
**範例:**
```tsx
// ❌ 錯誤 - 依賴實體圖片
<img src="/logo-claw.png" alt="Logo" />
// ✅ 正確 - 純代碼方案
import { Bot, Sparkles } from 'lucide-react'
<div className="flex items-center gap-3">
<div className="w-10 h-10 rounded-xl bg-claw-blue/10 flex items-center justify-center">
<Bot className="w-6 h-6 text-claw-blue" />
</div>
<span className="font-mono font-bold tracking-widest">AWOOOI</span>
</div>
```
### 2. 最終階段 (延後執行) - 品牌資產批次替換
**啟動條件**:專案準備正式上線前,所有功能與 API 100% 穩定。
**屆時執行**
1. 由統帥統一提供高畫質 3D 渲染品牌圖檔
2. 一次性批次替換所有 Placeholder
3. 確保零破損的視覺升級
### 3. 違規處理
- ❌ 嘗試讀取 `/logo-claw.png` 或任何不存在的圖片
- ❌ 要求統帥下載並放入圖片檔案
- ❌ 使用 404 圖片導致 UI 破損
**以上行為視為開發失敗,必須立即修正!**
---
## 附錄:其他強制規則
| 規則 | 說明 |
|------|------|
| 禁止 UAT 環境 | 只有 Dev + Prod |
| API 路由規範 | 使用路徑路由 `/api/v1/` (非子域名) |
| Playwright 測試 | 必須啟用截圖與錄影 |
| 紅燈優先 | 遇到 API 阻斷等紅燈問題,必須優先修復才能開發新功能 |
| 純代碼視覺 | 前期階段使用 lucide-react + CSS禁止依賴實體圖片 |
---
*最後更新: 2026-03-20*
*版本: 2.3 (加入第七章:視覺資產協作規範)*