6a49f25aef
SDD: docs/3-specs/jdd-dual-profile(draft → active,leo 2026-08-05 回「開工」)
範圍:總管指定的「防炸兩件 → Phase 0 → Phase 1」,Phase 2 以後未開工。
■ 防炸(排在所有 task 之前,因為它們炸的是既有的東西)
- check-no-instance-names.sh + instance-names.txt:框架範本不得混入實例專名
基線實測 22 行命中(非先前誤報的 20)→ 9 行無損泛化改寫、13 行檔級豁免記帳待 W3 搬走
拒絕假性清理(把專名換成模糊詞=資訊消失、分層問題還在)
- check-legacy-paths.sh:已發佈腳本引用的 35 條遠端路徑只增不移
舊實例跑的是舊腳本、路徑寫死;搬檔=整排 404 且不會有下一次更新來修它(1.16.0 前科)
■ Phase 0 地基
- template/manifest/{common,repo,orchestrator}.tsv:安裝清單單一真相源
修好 install/update 兩份硬編清單的既有漂移——install 從不裝 wiki-first-search /
subagent-wiki-guard / publish-lag-check / decisions-summary,但 update 會
⇒ 乾淨安裝反而拿不到 1.16/1.17/1.18 的招牌功能
- .claude/hooks/lib/role-lib.sh:scope×role 兩軸機械判定,零自陳
身分矩陣六組實測全通過,含「成員 repo × orchestrator」不存在的格子擋下
- .sdt-framework-dev:框架開發標記(官方沒有 --framework-dev 這個參數,實查非記憶)
■ Phase 1 雙 profile
- profiles/{repo,orchestrator}/CLAUDE.md 兩部憲法
- install.sh:--profile + 自動偵測+寫檔前確認、manifest 驅動、
CLAUDE.md 三段組裝(框架區/本地補充區界標+sha256)、.profile、.template-manifest、
settings.json 寫入 env.AGENT_ROLE 預設
- update.sh:漂移偵測(不覆蓋手改檔、另存 .new、白話清單)+ 基準快照隨更新前進
- template/CLAUDE.md 原路徑凍結留底(相容)
■ 順手修掉兩個舊 bug(都在本次要動的函式裡)
- add_if_missing 少了 mkdir -p ⇒ 新目錄的檔 curl 失敗但 VERSION 照升(2026-07 記「待回報」至今未修)
- 下載健全性只用 [ -s ]=非空即接受 ⇒ 404 頁面會無聲覆寫好檔
(SKILL.md 260→1 行的機制;同一支腳本的版本號那條路早就防了,檔案這條沒防)
■ 實測(非推論)
- G4 憲法分流:兩個乾淨環境各裝一次,orchestrator 版含 SDD 三件式關鍵字 0 次、
repo 版含上游指針 8 次;界標 4/4;sha 宣告與實算相符
- G7 CI 擋實例名:注入違規行 → fail 並指出 sdd-check.md:77,exit 1;還原後 exit 0
- 漂移偵測:手改兩支 hook → 正確報 2 支、手改內容保住、產 .new;
解掉後歸零;連跑三輪冪等
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
114 lines
5.0 KiB
Markdown
114 lines
5.0 KiB
Markdown
<!-- ⚠️ 相容凍結檔(1.19.0 起)
|
||
這份是「雙 profile」之前的舊憲法範本。**現役版本在 template/profiles/repo/CLAUDE.md**。
|
||
它留在這個路徑不動,唯一理由是向下相容:1.18.x 以前的實例跑的是**舊的** install.sh/
|
||
update.sh,路徑寫死指向這裡;一旦搬走,那些實例整排 404 ⇒ 更新機制本身壞掉,
|
||
而且不會有下一次更新來修它(1.16.0 已被同型問題咬過一次)。
|
||
機械保證:scripts/check-legacy-paths.sh。
|
||
要改憲法內容 → 改 profiles/repo/CLAUDE.md,不要改這裡。 -->
|
||
|
||
# CLAUDE.md — [專案名稱]
|
||
|
||
> 導航牌。細節在兩個地方,不在這裡。
|
||
> 這個檔案不增長——超過 100 行就是放錯地方了。
|
||
|
||
---
|
||
|
||
## 絕對鐵律(違反 = 停手)
|
||
|
||
1. **任何 code 變動前必須有對應 SDD**,且遵守 **SDD 生命週期鐵律**(全文:`system-dev/docs/3-specs/SDD-LIFECYCLE.md`):
|
||
- **單一活性**:任何時刻只有一份 `status: active` 的 SDD,所有任務對應它的 tasks
|
||
- **禁止自行建立 SDD**:找不到對應 → 停手問 [負責人]
|
||
- **規格層變更**:proposal 寫進 `3-specs/pending-changes.md`,等使用者「confirm」才動
|
||
- **開新 SDD**(confirm 後):先把舊 SDD 未完成任務搬進新 SDD,才准寫 code
|
||
- **session 開始**回報:「現行規格〈名稱〉+未完成任務 N+待裁決 proposal M」
|
||
2. [技術棧限制,例如:前端只用 React,不引入其他框架]
|
||
3. [其他專案特定限制]
|
||
|
||
---
|
||
|
||
## 工作流程(強制)
|
||
|
||
開始任一任務,按順序:
|
||
|
||
1. 讀 `system-dev/wiki/status.md`(3 分鐘,了解當前狀態)
|
||
2. 確認有對應 SDD(`system-dev/docs/3-specs/`)
|
||
3. 在回覆開頭宣告:
|
||
```
|
||
📋 已讀 SDD:<路徑>
|
||
🎯 對應 task:<編號>
|
||
🚧 執行範圍:<會動哪些檔案>
|
||
```
|
||
4. 完成後更新 `system-dev/wiki/status.md`
|
||
|
||
---
|
||
|
||
## 🔴 第一鐵律:wiki 是判準,不准跳過(2026-07-20/21 leo 兩度點破)
|
||
|
||
**要查任何東西之前,先搜尋 wiki——用 grep,不是只讀開頭幾行。**
|
||
|
||
> leo:「花很多力氣去產生 wiki,最重要的就是要可以查詢,**結果要查的時候就跳過,那就白寫了**。」
|
||
> 「重點是你自己的記憶對嗎?而你有按照規定去切實讀 wiki 嗎?」
|
||
|
||
```bash
|
||
grep -rin "<本題關鍵字>" system-dev/wiki/
|
||
```
|
||
|
||
**三條硬規則**:
|
||
1. **wiki 與程式碼/歷史文件衝突 → 以 wiki 為準**。程式碼反映「還沒清乾淨」,不等於「還在用」。
|
||
2. wiki 寫「不可動/待廢除/進行中」→ **讀它的解除條件並逐條核對**。那是當時狀態,不是永久禁令。
|
||
3. 翻原文後得到新結論 → **回頭更新 wiki**(wiki 過時是債,要還)。
|
||
|
||
**動外部系統(部署/curl/wrangler/acr/gh)前**:先找 repo 有沒有**現成腳本或 README 部署段**,
|
||
別自創方法。(實例:2026-07-21 明明有 `npx wrangler deploy` 這條驗過的路,卻自己 curl 硬幹踩坑。)
|
||
|
||
> hook `wiki-first-search.sh` 會在你查 code/下高風險指令時自動推 wiki 命中行;
|
||
> **但機制只是提醒,判斷是你的責任**。
|
||
|
||
|
||
## Wiki 讀取順序
|
||
|
||
| 檔案 | 時機 | 用途 |
|
||
|------|------|------|
|
||
| `system-dev/wiki/status.md` | session 開始第一件事 | 當前進度、下一步 |
|
||
| `system-dev/wiki/mistakes.md` | 做新功能前 | 已知誤解 + 快速檢查清單 |
|
||
| `system-dev/wiki/decisions-summary.md` | 遇到設計判斷時 | 架構決策快速查 |
|
||
|
||
> 開 session 由 `SessionStart` hook 自動注入 status 重點。沒自動接關 → 打 `/wiki-recall`。
|
||
> status/wiki 是 **快照非即時狀態**:讀快照 **+ 核實快照**,不盲信。
|
||
|
||
---
|
||
|
||
## 整理 wiki 的方法(採集規則所在地)
|
||
|
||
> 要「採集/改寫 wiki」時,完整規則(三層架構、frontmatter 標籤、typed-edge 三元組、**gloss 定義句**)
|
||
> 不在本檔,而在下表。**動手採集前先讀對應那份**,不要憑印象做。
|
||
|
||
| 由誰整理 | 規則檔(採集當下必讀) |
|
||
|----------|------------------------|
|
||
| **Claude Code(CC)** | `/wiki-init`(初始化/採集)、`/wiki-capture`(存結論),規則寫在指令內文 |
|
||
| **Claude.ai(Cowork)** | `system-dev/docs/SKILL.md`(skill `wiki-cowork-scan`),與 CC 共用同一套規則 |
|
||
|
||
兩條路徑**輸出格式相同、規則一致**:gloss、typed-edge、標籤的寫法在兩份裡都有,任一方整理過另一方不覆蓋。
|
||
|
||
---
|
||
|
||
## 規範索引
|
||
|
||
| 檔案 | 內容 |
|
||
|------|------|
|
||
| `system-dev/docs/README.md` | 文件分類規則 |
|
||
| `system-dev/docs/3-specs/` | 所有 SDD |
|
||
| `system-dev/docs/2-architecture/decisions/` | 架構決策記錄 |
|
||
|
||
---
|
||
|
||
## 文件位置速查
|
||
|
||
| 類別 | 位置 |
|
||
|------|------|
|
||
| 架構決策 | `system-dev/docs/2-architecture/decisions/` |
|
||
| SDD | `system-dev/docs/3-specs/[子系統]/` |
|
||
| 操作手冊 | `system-dev/docs/4-guides/` |
|
||
| 事件記錄 | `system-dev/docs/5-records/incidents/` |
|
||
| 測試報告 | `system-dev/docs/5-records/test-reports/` |
|