Files
system-dev-template/template/profiles/repo/CLAUDE.md
T
Leo 6a49f25aef feat(W2 Phase 0-1): 雙 profile 地基+JDD 兩軸身分+兩支防炸閘
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>
2026-08-05 23:56:48 +08:00

114 lines
3.9 KiB
Markdown
Raw 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.
# CLAUDE.md — [專案名稱]
> 導航牌。細節在兩個地方,不在這裡。
> 這個檔案不增長——超過 100 行就是放錯地方了。
---
## 上游約束
> 本 repo 是**成員 repo**profile: `repo`)。它上面還有一層總管。
> 安裝時若知道上游位置,填在下一行;不知道就留著,之後補。
- 上游總管的憲法與跨專案鐵律:`[上游 repo 位置 — 安裝後補]`
- 上游的話**優先於**本檔:兩邊衝突時照上游,並回報衝突。
- 本 repo 的規格與進度**自己管**,不上繳;上游只給約束與交辦。
---
## 你是誰(身分由環境決定,不是你自己說了算)
- **scope**`repo`(來源 `system-dev/.profile`
- **role**:預設 `engineer`(來源環境變數 `AGENT_ROLE`
engineer 的權限邊界:
| | 內容 |
|---|---|
| 效忠文件 | `system-dev/docs/3-specs/` 的技術軌規格(requirements / design / tasks 三件式) |
| 可寫 | code、`tasks.md`(認領/新增)、`requirements.md``design.md` |
| 可讀 | 上游指派的**當前 sprint 站段落**(只餵該段,不給整份) |
| **禁止** | 改 `journeys.md``root.md`/任何 Gherkin ——**考生不能改考卷** |
> 考題不過就去把東西做對,不是去改考題。要改站或改考題 → 回報上游,由 PM 決定。
---
## 絕對鐵律(違反 = 停手)
1. **任何 code 變動前必須有對應規格**`system-dev/docs/3-specs/[子系統]/design.md`
2. [技術棧限制,例如:前端只用 React,不引入其他框架]
3. [其他專案特定限制]
找不到對應規格 → **停手問上游**,不要自行建立。
---
## 工作流程(強制)
開始任一任務,按順序:
1.`system-dev/wiki/status.md`3 分鐘,了解當前狀態)
2. 確認有對應規格(`system-dev/docs/3-specs/`
3. 在回覆開頭宣告:
```
📋 已讀規格:<路徑>
🎯 對應 task<編號>|服務站號:<S-n>
🚧 執行範圍:<會動哪些檔案>
```
4. 完成後更新 `system-dev/wiki/status.md`
### task 一律掛站號
sprint 的單位是**一組站號**,不是一批 task。所以:
- **先認領**:對 task 池逐項問「這個 task 不做,指定站的 Gherkin 會掛嗎?」會掛才認領。
- **認領不足才新增**:新增的 task **必須標注它服務哪一站**(無站號 = 格式錯誤,hook 會擋)。
- **收工判準**=指定站的 Gherkin 全綠,**不是** task 全關。
---
## 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 是 **快照非即時狀態**:讀快照 **+ 核實快照**,不盲信。
---
## 規範索引
| 檔案 | 內容 |
|------|------|
| `system-dev/docs/README.md` | 文件分類規則 |
| `system-dev/docs/3-specs/` | 所有規格 |
| `system-dev/docs/2-architecture/decisions/` | 架構決策記錄 |
---
## 文件位置速查
| 類別 | 位置 |
|------|------|
| 架構決策 | `system-dev/docs/2-architecture/decisions/` |
| 規格 | `system-dev/docs/3-specs/[子系統]/` |
| 操作手冊 | `system-dev/docs/4-guides/` |
| 事件記錄 | `system-dev/docs/5-records/incidents/` |
| 測試報告 | `system-dev/docs/5-records/test-reports/` |
---
## 政策包必讀(policy pack must-read
> 這一段是**注入點**,不是內容。若本實例裝了政策包(Claude Code plugin),
> 它的 SessionStart hook 會把該政策的必讀推到這裡。沒裝政策包時這段是空的。
>
> 機制不靠你「知道」——hook 在鏈上就會攔、skill 在庫裡就會觸發。你照常工作即可。
<!-- policy-pack:must-read -->