深度初始化技能
為整個程式碼庫建立完整、層級式的 AGENTS.md 說明文件。
核心概念
AGENTS.md 檔案作為 AI 可讀取的文件,可幫助代理理解:
- 每個目錄包含什麼
- 元件之間的關聯
- 在該區域工作的特殊指示
- 相依性與關係
層級標記系統
每個 AGENTS.md(根目錄除外)都包含一個父層參考標籤:
<!-- Parent: ../AGENTS.md -->
這會建立一個可導航的層級結構:
/AGENTS.md ← 根目錄(無父層標籤)
├── src/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
│ ├── src/components/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
│ └── src/utils/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
└── docs/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
AGENTS.md 模板
<!-- Parent: {relative_path_to_parent}/AGENTS.md -->
<!-- Generated: {timestamp} | Updated: {timestamp} -->
# {Directory Name}
## 用途
{一段說明此目錄內容及其角色的描述}
## 關鍵檔案
{列出每個重要檔案及其簡短說明}
| 檔案 | 說明 |
|------|------|
| `file.ts` | 簡短用途說明 |
## 子目錄
{列出每個子目錄及其簡短用途}
| 目錄 | 用途 |
|------|------|
| `subdir/` | 內容說明(參閱 `subdir/AGENTS.md`) |
## 給 AI 代理
### 在此目錄中工作
{給在此目錄中修改檔案的 AI 代理的特別指示}
### 測試需求
{如何測試此目錄的變更}
### 常見模式
{此處使用的程式碼模式或慣例}
## 相依性
### 內部
{此目錄依賴的程式碼庫其他部分}
### 外部
{使用的主要外部套件/函式庫}
<!-- MANUAL: 任何在手動新增的注意事項,重新產生時將保留在此行下方 -->
執行流程
步驟 1:對應目錄結構
Task(subagent_type="explore", model="haiku",
prompt="遞迴列出所有目錄。排除:node_modules、.git、dist、build、__pycache__、.venv、coverage、.next、.nuxt")
步驟 2:建立工作計畫
為每個目錄產生待辦事項,按深度層級組織:
Level 0: / (根目錄)
Level 1: /src, /docs, /tests
Level 2: /src/components, /src/utils, /docs/api
...
步驟 3:逐層產生
重要事項:先產生父層級,再產生子層級,以確保父層參考有效。
對每個目錄:
- 讀取目錄中的所有檔案
- 分析用途與關係
- 產生 AGENTS.md 內容
- 寫入檔案,並包含正確的父層參考
步驟 4:比較與更新(若已存在)
當 AGENTS.md 已存在時:
- 讀取現有內容
- 識別區塊:
- 自動產生的區塊(可更新)
- 手動區塊(
<!-- MANUAL -->保留)
- 比較:
- 新增了檔案嗎?
- 移除了檔案嗎?
- 結構變更了嗎?
- 合併:
- 更新自動產生的內容
- 保留手動註解
- 更新時間戳記
步驟 5:驗證層級結構
產生後,執行驗證檢查:
| 檢查項目 | 驗證方式 | 修正行動 |
|---|---|---|
| 父層參考可解析 | 讀取每個 AGENTS.md,檢查 <!-- Parent: --> 路徑是否存在 | 修正路徑或移除孤立檔案 |
| 無孤立 AGENTS.md | 比對 AGENTS.md 位置與目錄結構 | 刪除孤立檔案 |
| 完整性 | 列出所有目錄,檢查是否有 AGENTS.md | 產生遺漏的檔案 |
| 時間戳記為最新 | 檢查 <!-- Generated: --> 日期 | 重新產生過時的檔案 |
驗證腳本模式:
# 尋找所有 AGENTS.md 檔案
find . -name "AGENTS.md" -type f
# 檢查父層參考
grep -r "<!-- Parent:" --include="AGENTS.md" .
智慧委派
| 任務 | 代理 |
|---|---|
| 目錄對應 | explore |
| 檔案分析 | architect |
| 內容產生 | writer |
| AGENTS.md 寫入 | writer |
空目錄處理
遇到空的或近乎空的目錄時:
| 條件 | 行動 |
|---|---|
| 無檔案,無子目錄 | 跳過 - 不建立 AGENTS.md |
| 無檔案,有子目錄 | 建立僅包含子目錄列表的精簡版 AGENTS.md |
| 僅有產生的檔案(*.min.js, *.map) | 跳過或建立精簡版 AGENTS.md |
| 僅有設定檔 | 建立 AGENTS.md 說明設定用途 |
目錄容器範例精簡版 AGENTS.md:
<!-- Parent: ../AGENTS.md -->
# {Directory Name}
## 用途
用於組織相關模組的容器目錄。
## 子目錄
| 目錄 | 用途 |
|------|------|
| `subdir/` | 說明(參閱 `subdir/AGENTS.md`) |
平行化規則
- 同一層級的目錄:平行處理
- 不同層級:循序處理(上層先處理)
- 大型目錄:為每個目錄產生專屬代理
- 小型目錄:多個目錄批次交由同一個代理處理
品質標準
必須包含
- 準確的檔案說明
- 正確的父層參考
- 子目錄連結
- AI 代理指示
必須避免
- 通用的樣板文字
- 錯誤的檔案名稱
- 損壞的父層參考
- 遺漏重要檔案
輸出範例
根目錄 AGENTS.md
<!-- Generated: 2024-01-15 | Updated: 2024-01-15 -->
# my-project
## 用途
一個用於管理使用者任務並提供即時協作功能的網頁應用程式。
## 關鍵檔案
| 檔案 | 說明 |
|------|------|
| `package.json` | 專案相依性與腳本 |
| `tsconfig.json` | TypeScript 設定 |
| `.env.example` | 環境變數範本 |
## 子目錄
| 目錄 | 用途 |
|------|------|
| `src/` | 應用程式原始碼(參閱 `src/AGENTS.md`) |
| `docs/` | 說明文件(參閱 `docs/AGENTS.md`) |
| `tests/` | 測試套件(參閱 `tests/AGENTS.md`) |
## 給 AI 代理
### 在此目錄中工作
- 修改專案清單後,務必安裝相依性
- 使用 TypeScript 嚴格模式
- 遵循 ESLint 規則
### 測試需求
- 提交前執行測試
- 確保 >80% 覆蓋率
### 常見模式
- 使用匯出索引(index.ts)
- 偏好函式元件
## 相依性
### 外部
- React 18.x - UI 框架
- TypeScript 5.x - 型別安全
- Vite - 建置工具
<!-- MANUAL: 自訂專案注意事項可新增至此行下方 -->
巢狀 AGENTS.md
<!-- Parent: ../AGENTS.md -->
<!-- Generated: 2024-01-15 | Updated: 2024-01-15 -->
# components
## 用途
根據功能與複雜度組織的可重用 React 元件。
## 關鍵檔案
| 檔案 | 說明 |
|------|------|
| `index.ts` | 所有元件的匯出索引 |
| `Button.tsx` | 主要按鈕元件 |
| `Modal.tsx` | 模態對話框元件 |
## 子目錄
| 目錄 | 用途 |
|------|------|
| `forms/` | 表單相關元件(參閱 `forms/AGENTS.md`) |
| `layout/` | 佈局元件(參閱 `layout/AGENTS.md`) |
## 給 AI 代理
### 在此目錄中工作
- 每個元件有各自的檔案
- 使用 CSS Modules 進行樣式設定
- 透過 index.ts 匯出
### 測試需求
- 單元測試放在 `__tests__/` 子目錄中
- 使用 React Testing Library
### 常見模式
- Props 介面定義在元件上方
- 對需要直接操作 DOM 的元件使用 forwardRef
## 相依性
### 內部
- `src/hooks/` - 元件使用的自訂 Hook
- `src/utils/` - 工具函式
### 外部
- `clsx` - 條件式 class 名稱
- `lucide-react` - 圖示
<!-- MANUAL: -->
觸發更新模式
在已有 AGENTS.md 檔案的現有程式碼庫上執行時:
- 先偵測既有檔案
- 讀取並解析既有內容
- 分析目前的目錄狀態
- 產生既有狀態與目前狀態之間的差異
- 套用更新,同時保留手動區塊
效能考量
- 快取目錄列表 - 不要重複掃描相同目錄
- 批次處理小型目錄 - 一次處理多個
- 跳過未變更的目錄 - 若目錄未變更,則跳過重新產生
- 平行寫入 - 多個代理同時寫入不同檔案