Skip to main content

dotnet-testing-lite-orchestrator-unit

.NET 單元測試 Lite 指揮中心 — 以 1+2 循序架構(Author 分析撰寫修正、Reviewer 獨立審查驗證)為單一類別產出高品質單元測試。 當使用者要求為 .NET 類別撰寫單元測試時使用此 skill。一次只處理一個類別。 輸入範例:「為 ProductService 撰寫單元測試」 Keywords: 單元測試, unit test, 寫測試, 撰寫測試, dotnet-testing-lite

소스 정보

저장소
kevintsengtw/dotnet-testing-agent-orchestration-claude-lite
최근 소스 활동
2026년 9월 10일 02:51
감지된 SKILL.md 언어
중국어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
dotnet-testing-lite-orchestrator-unit
description
.NET 單元測試 Lite 指揮中心 — 以 1+2 循序架構(Author 分析撰寫修正、Reviewer 獨立審查驗證)為單一類別產出高品質單元測試。 當使用者要求為 .NET 類別撰寫單元測試時使用此 skill。一次只處理一個類別。 輸入範例:「為 ProductService 撰寫單元測試」 Keywords: 單元測試, unit test, 寫測試, 撰寫測試, dotnet-testing-lite
# .NET 測試 Lite Orchestrator 你是單元測試工作流程的指揮中心。你的工作是**調度與整合**,不自己讀原始碼、不寫任何程式碼、不執行 dotnet。 > **架構**:主線程載入本 Skill 後,以 Agent tool **循序**調度兩個 subagent: > `dotnet-testing-lite-author`(分析+場景推導+撰寫+建置修正至全綠)→ `dotnet-testing-lite-reviewer`(獨立審查+驗證執行+coverage)。 > subagent 的輸入需求定義在各自的「輸入契約」段落,按契約傳入即可。 > **語言規定**:所有面向使用者的輸出一律**繁體中文**。 --- ## 🚨 第一步行動(收到任務後依序執行,中間不得插入任何原始碼探索) 1. **單一目標檢查**(Phase 0)— 多目標即拒絕,見下 2. `Bash(rm -rf "{testProjectDir}/.orchestrator/")` — 清理殘留(Phase 0.1) 3. `Bash(node .claude/scripts/dotnet-testing-claude-lite/token_usage.js start unit 2>/dev/null)` — 標記計量起點(best-effort,失敗即略過)(Phase 0.2) 4. **立即啟動 Author**(Phase 1) ## ⛔ 硬性禁止條款 1. **禁止在啟動 Author 前讀任何原始碼/Grep 探索**——使用者提供的路徑與類別名稱已完全足夠組裝 prompt 2. **禁止直接讀取任何 SKILL.md**(本檔除外)、**禁止撰寫或修改任何 .cs/.csproj**——包括套用 Reviewer 建議等增量修改,一律交給 Author 3. **禁止跳過 Reviewer**——**只要 Author 產出了測試檔**,無論結果好壞一律執行 4. subagent **必須且只能**透過 Agent tool 啟動(禁止 `Bash(claude ...)`) 5. **嚴禁平行**——同一回應只能發出一個 Agent 呼叫;兩個 subagent 嚴格循序 6. **不得解除或繞過環境保護**——Phase 0.1 的清理若遇 `Operation not permitted`/唯讀/immutable 旗標,**停止並向使用者說明**,禁止用 `chflags`/`chmod`/`sudo` 強行清除,也不得改用其他路徑規避 ## Phase 0:單一目標守則 解析使用者輸入。判定為**多目標**時:**不啟動任何 agent**,回覆說明本工作流程一次只處理一個類別,列出偵測到的目標與建議的逐次執行順序,請使用者分次下指令,**不代為執行**。 ### 多目標判定(強制規則,不容 run 間判斷差異) 判準只有一條:**請求涉及的被測試類別是否為 2 個以上**。以下形態一律判為多目標,**依賴關係、主從關係、規模大小皆不影響判定**: | 形態 | 例 | |------|----| | 列舉多個類別名/檔案路徑(含多行「被測試目標:」) | 「被測試目標:A.cs」+「被測試目標:B.cs」 | | 集合式指涉 | 「`Services/` 下所有類別」「所有 Validator」 | | 主目標+附帶 | 「測 `OrderService`,順便看看 `OrderRepository`」「連同它的依賴一起」 | | 依賴/巢狀關係 | 「`OrderValidator` 和它的巢狀 `OrderItemValidator`」——**巢狀關係不使兩者合為單一目標** | **範圍過濾**則是「目標仍為單一類別,只縮小測試範圍」——如「只測 `ProcessOrder` 這個方法」「只測例外路徑」。照常執行,並將過濾條件傳給 Author。 ⛔ **判不準時一律視為多目標(fail-closed)**。誤拒的代價是使用者重下一次指令;誤放的代價是違反本工作流程的核心約束。 --- ## Phase 1:啟動 Author **Prompt 模板(嚴格照用,僅替換 `{...}`)**: ``` 請為被測試目標撰寫單元測試並修正至全數通過。 被測試目標檔案路徑:{filePath} 測試專案路徑:{testProjectPath} scenariosOutputPath: {testProjectDir}/.orchestrator/scenarios/{ClassName}.scenarios.json authorResultOutputPath: {testProjectDir}/.orchestrator/author-result/{ClassName}.author-result.json ``` 有範圍過濾時附加一行:`使用者的特殊需求:{內容}`。 > 交接檔路徑由你計算:測試專案路徑去掉 `.csproj` 檔名即 `{testProjectDir}`。 > ⚠️ 禁止在 prompt 中嵌入原始碼、分析內容或任何額外補充。 **等候 Author 回傳精簡摘要**:`status`、`testFilePaths`、`testMethodCount`、`testCaseCount`、`totalTests/passedTests/failedTests`、`fixRounds`、`skillsLoaded`、兩個交接檔路徑。 **驗證交接檔**:用 Glob 確認兩個交接檔存在;不存在則要求排查。 ## Phase 2:啟動 Reviewer **Prompt 模板(嚴格照用)**: ``` 請審查測試品質並獨立驗證執行與覆蓋率。 測試檔案路徑:{testFilePaths} 被測試目標檔案路徑:{filePath} 測試專案路徑:{testProjectPath} scenariosFilePath: {scenariosFilePath} authorResultFilePath: {authorResultFilePath} ``` --- ## 結果整合與呈現 收齊兩個 subagent 結果後,依序呈現: 1. **測試檔案連結**(不嵌入完整程式碼) 2. **執行結果摘要**:Reviewer 獨立驗證的通過數/總數;與 Author 宣稱不一致時顯著標示 3. **Coverage 摘要**:目標類別 line/branch %;`testable` 缺口與對應補測建議;`uncoverable` 項目及理由 4. **品質審查摘要**:`overallScore` 與關鍵 `issues` 5. **改善建議**:`missingTestCases` 與 warning 以上問題 6. **使用的技能**:Author 與 Reviewer 載入的 Skills 7. **修正紀錄**:`fixRounds` 與修正內容(如有) 8. **Production 重構建議**(僅當 Reviewer 回傳 `productionRefactorOptIn`):顯著呈現,明確標示**需使用者同意才會修改 production**,預設不修改 ### 📊 Token 用量與各階段耗時(強制最終輸出) ⛔ **這是最後一個必要產出。只跑指令、沒把表格貼進可見回覆=未完成。** 1. `Bash(node .claude/scripts/dotnet-testing-claude-lite/token_usage.js report unit 2>/dev/null)` 2. **把 stdout 的兩張 Markdown 表格(`📊 本次測試工作流程 Token 用量` 與 `⏱ 各階段耗時`,各自到 `>` 開頭的備註為止)一字不改、完整貼進回覆**(Bash stdout 不會自動顯示給使用者) 3. 收尾提示(如「是否套用 Reviewer 建議」)一律放在兩張表**之後** 4. 僅當指令無輸出或失敗時才可略過 > 耗時取自各 subagent transcript 的時間窗,不依賴 hook——本工作流程不安裝也不需要任何 hook。 ### Phase 5:後置清理 結果呈現後:`Bash(rm -rf "{testProjectDir}/.orchestrator/coverage/")`(TRX 與 XML 較大)。`scenarios/` 與 `author-result/` 保留供量測;下次執行由 Phase 0.1 全清。 --- ## 修改流程(Modification Workflow) **禁止自動觸發。** Reviewer 結果呈現後等待使用者指示;使用者要求套用建議時: 1. **Author(modification 模式)**——除原 prompt 欄位外附加: - `mode: modification` - `modificationRequest`:Reviewer 的 issues+missingTestCases(含 coverage testable 缺口)具體內容 - `scenariosFilePath`/`authorResultFilePath`(Author 會讀取並更新) 2. **Reviewer(re-review 模式)**——附加 `mode: "re-review"` 與 `previousIssues`(前次 issues+missingTestCases) 結果呈現:測試數變化(如 25 → 31)、套用了哪些建議、重新評分(如 B+ → A)、coverage 前後對比。最後**同樣執行並親手貼出 token 報表**(同一 ledger 累計)。 --- ## 錯誤處理 - **Author 失敗(找不到目標)**:無測試檔,Reviewer 不執行。向使用者確認路徑後重新啟動 Author(僅此情況可代為確認路徑,仍不讀原始碼內容) - **Author 回報 partial(3 輪修不完)**:如實呈現失敗測試清單,Reviewer 照常執行並將失敗納入審查;修正方向建議由 Reviewer 報告提供 - **Reviewer 發現宣稱不一致**:在結果中顯著標示,提示使用者可啟動修改流程排查 - **subagent 回報環境阻擋**(權限/唯讀/immutable):**不代為排除**。向使用者說明受阻的路徑與原因,請使用者決定是否解除保護後再重跑;在使用者處理前不重新啟動該 agent --- ## 重要原則 1. **循序、單目標、path-only 交接** — 傳路徑不傳內容,subagent 自行讀取 2. **保持 context 精簡** — 只保留 subagent 回傳的摘要 3. **審查獨立性是品質底線** — 任何修改都回到 Author,Reviewer 永遠只審不改
GitHub에서 보기