refactor(code): 接上 shared 共用規範,去除重抄段落並補模型檢查串接
依 todo.md 執行的規範治理專案:action-composite/action-docker/action-node/ image/issues/nuget/review-resolve/sync/target 九個 skill 改為引用 shared 新增的共用 spec(conventional-commit、pull-request、git-push、 git-safety 分支選擇、issue-read、todo-list、ask-user、action-scaffold、 node-src-layout、skill-invocation),移除大量重抄內容(review-resolve/ target 光是 commit/PR/push 三塊就精簡約 175 行);target/issues 補上讀到 帶 model: frontmatter 清單檔時依 /jsc-shared:spec-model 做模型檢查的規則。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+22
-43
@@ -18,21 +18,15 @@ argument-hint: "[--tool <tea|api>] [--repo <owner/repo>] [--issues <編號,以
|
||||
|
||||
---
|
||||
|
||||
## 絕對準則(不可違反)
|
||||
## 共用規範(必要前置)
|
||||
|
||||
- **不建立任何草稿檔**:不寫 `.docs/`、不寫暫存檔、不用本機檔案傳遞中間結果。需求彙整、TODO 排序、實作進度、驗證結果等所有中間成果,一律留在**對話內容**,並透過 `tea` 或 Gitea API **保存到議題描述或議題留言**。唯一例外是階段 E 在議題範圍內對**目標 repo 原始碼**的正常程式修改。
|
||||
- **盡量使用表格或圖形**:依 `/jsc-shared:spec-output` — 面向使用者的輸出與寫入議題的內容(需求彙整、TODO 列表、進度回報),優先以 Markdown 表格與 Mermaid 圖呈現,忠實反映議題內容、不得杜撰。
|
||||
|
||||
## 共用規範(shared plugin,必要前置)
|
||||
|
||||
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到(shared plugin 未安裝)時,先詢問使用者是否安裝 shared plugin(`https://gitea.jsc.idv.tw/plugins/shared.git`),使用者不安裝則直接中斷本 skill**,不得只憑下方一行摘要繼續執行:
|
||||
|
||||
- `/jsc-shared:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼、API body 以 UTF-8 JSON 檔帶入且換行為實際換行。
|
||||
- `/jsc-shared:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認、已知資訊跳過詢問。
|
||||
- `/jsc-shared:spec-gitea`:tea/API 工具選擇與檢查、`GITEA_TOKEN` 機密保護(不 echo、遮蔽)、不依賴 `jq`、API 分頁完整讀取。
|
||||
先載入 `/jsc-shared:spec-preflight` 並依其流程處理;載入不到即代表 shared plugin 未安裝,
|
||||
依該 spec 詢問使用者是否安裝 `https://gitea.jsc.idv.tw/plugins/shared.git`,不安裝則中斷本 skill。
|
||||
本 skill 需要的規範:`spec-output`、`spec-execution`、`spec-gitea`、`spec-no-scratch-files`、`spec-issue-read`、`spec-todo-list`、`spec-skill-invocation`、`spec-model`
|
||||
|
||||
本 skill 特有補充:
|
||||
|
||||
- 階段 E 在議題範圍內對**目標 repo 原始碼**的正常程式修改,是 `spec-no-scratch-files` 不落地準則的**唯一例外**(不算草稿檔)。
|
||||
- **必要決策**(會中斷詢問):工具皆不可用、專案不明、議題編號缺失、TODO 與需求衝突需人工裁示、實作失敗需使用者決策。
|
||||
- 階段 A/B/C 的詢問在「可跳過條件」成立時**必須跳過**,不要重複確認已知資訊。
|
||||
|
||||
@@ -54,7 +48,7 @@ argument-hint: "[--tool <tea|api>] [--repo <owner/repo>] [--issues <編號,以
|
||||
|
||||
**若使用者已透過 `--tool` 或對話明確選定工具,跳過詢問**,只做該工具的可用性驗證。
|
||||
|
||||
依 `/jsc-shared:spec-gitea` 的工具選擇流程執行:檢查 `tea`(`command -v tea`、`tea login list`)與 `GITEA_TOKEN`(只輸出「已設定/未設定」)→ 以表格呈現檢查結果後詢問使用者要用 `tea` 或 `api` → 兩種方式都不可用則回報並停止(不要請使用者把 token 貼進對話)。
|
||||
依 `/jsc-shared:spec-gitea` 的工具選擇流程執行。
|
||||
|
||||
## 階段 B:確認議題所在專案(已知則跳過)
|
||||
|
||||
@@ -81,49 +75,34 @@ argument-hint: "[--tool <tea|api>] [--repo <owner/repo>] [--issues <編號,以
|
||||
|
||||
對每一個選定議題執行:
|
||||
|
||||
### D1. 讀取議題完整內容
|
||||
### D1. 讀取議題完整內容並彙整需求
|
||||
|
||||
- 讀取 `title`、`body`、`state`、`labels`、`milestone`、`assignees` 與**所有留言**:
|
||||
- `tea`:`tea issues <index> --repo <owner>/<repo> --comments`
|
||||
- `api`:`GET {base}/issues/{index}` 與 `GET {base}/issues/{index}/comments`
|
||||
- 留言中若有需求補充、變更或取消,必須納入需求彙整,並以最新留言為準。
|
||||
依 `/jsc-shared:spec-issue-read` 讀取議題完整內容(描述、所有留言、所有附件)並彙整需求;`title`/`state`/`labels`/`milestone`/`assignees` 一併取得供階段 B/C 與後續留言引用。
|
||||
|
||||
### D2. 彙整需求並盤點既有 TODO
|
||||
### D2. 盤點既有 TODO 並產生排序後的 TODO 列表
|
||||
|
||||
- 把議題描述與留言整理成**需求彙整**:目標、驗收條件、限制條件;只做歸納,不編造議題未提及的需求,不確定處標註「需人工確認」。
|
||||
- 盤點議題描述中既有的 Markdown checklist(`- [ ]` / `- [x]`)作為既有 TODO;已勾選項目視為已完成,不重做。
|
||||
依 `/jsc-shared:spec-todo-list` 盤點議題描述既有 TODO、產生新 TODO(格式、可驗收性、禁止編造、依影響範圍小→大排序、舉證 `path:line` 或需求語句)。
|
||||
|
||||
### D3. 產生排序後的 TODO 列表
|
||||
|
||||
- 每項 TODO 必須**可執行、可驗收**,並評估其**影響範圍**(預計修改的檔案/模組數與波及面):
|
||||
|
||||
| 影響範圍 | 定義(參考) |
|
||||
| --- | --- |
|
||||
| XS | 單一檔案內的局部修改(文案、設定值、小修正) |
|
||||
| S | 單一檔案或單一函式的邏輯調整 |
|
||||
| M | 同一模組內跨多檔案的修改 |
|
||||
| L | 跨模組修改或介面/契約變更 |
|
||||
| XL | 跨專案、資料結構或流程性的大改動 |
|
||||
|
||||
- **依影響範圍由小到大排序**(XS → XL);範圍相同時,前置依賴在前。
|
||||
- **勾稽需求覆蓋度**:逐條比對需求彙整與 TODO 列表;若既有 TODO **不足以達成議題描述與需求**,補上缺漏的 TODO(標註「新增」)。
|
||||
- **勾稽需求覆蓋度**:逐條比對 D1 需求彙整與 TODO 列表;若既有 TODO **不足以達成議題描述與需求**,補上缺漏的 TODO(標註「新增」)。
|
||||
- 有助理解時,在留言或描述中加入 Mermaid 流程圖呈現 TODO 之間的依賴與執行順序。
|
||||
|
||||
### D4. 缺漏 TODO 附加到議題描述
|
||||
### D3. 缺漏 TODO 附加到議題描述
|
||||
|
||||
- 若 D3 有新增 TODO,用 `tea` 或 API **更新議題描述**:保留原描述內容,於既有 `## TODO` 區塊補上新項目;沒有該區塊時在描述最後加上 `## TODO`:
|
||||
- 若 D2 有新增 TODO,依 `/jsc-shared:spec-todo-list` 的區塊格式規則,用 `tea` 或 API **更新議題描述**:
|
||||
- `tea`:`tea issues edit <index> --repo <owner>/<repo> --description <更新後全文>`(tea 版本不支援時改用 API)
|
||||
- `api`:`PATCH {base}/issues/{index}`,body 以 UTF-8 JSON 檔帶入 `{"body": "..."}`
|
||||
- 更新前先向使用者以表格摘要「新增了哪些 TODO、為什麼需要」;帶 `--yes` 時直接執行並回報。
|
||||
- 沒有新增 TODO 時不改動議題描述。
|
||||
|
||||
若議題描述或其中的 TODO 清單帶有等價於 `model:` frontmatter 的模型宣告(或本 skill 未來擴充為讀取帶 `model:` frontmatter 的檔案),依 `/jsc-shared:spec-model` 的『讀到帶 `model:` frontmatter 的清單檔時的檢查義務』先做模型檢查,再進入階段 E。
|
||||
|
||||
## 階段 E:逐項實作 TODO,每完成一項留言到議題
|
||||
|
||||
依 D3 排序(多議題時先完成一個議題的所有 TODO,再進入下一個議題;有跨議題依賴時先處理被依賴者)逐項執行:
|
||||
依 D2 排序(多議題時先完成一個議題的所有 TODO,再進入下一個議題;有跨議題依賴時先處理被依賴者)逐項執行:
|
||||
|
||||
1. **實作**:在本機 repo 依 TODO 內容實作,只修改該 TODO 必要範圍;發現需要擴大範圍或牽動其他 TODO 時,先停止並詢問使用者。
|
||||
2. **驗證**:執行適合專案的建置/測試/驗證;失敗時修正到通過,無法通過則記錄原因並在留言中標註「待人工處理」。
|
||||
3. **更新議題描述**:把該 TODO 的 checkbox 由 `- [ ]` 勾成 `- [x]`(同 D4 的更新方式)。
|
||||
3. **更新議題描述**:把該 TODO 的 checkbox 由 `- [ ]` 勾成 `- [x]`(同 D3 的更新方式);勾選與留言回報依 `/jsc-shared:spec-todo-list` 的完成回報規則。
|
||||
4. **留言進度到議題**(每完成一項就留言,不可累積到最後一次補):
|
||||
- `tea`:`tea comment <index> --repo <owner>/<repo> <內容>`
|
||||
- `api`:`POST {base}/issues/{index}/comments`,body 以 UTF-8 JSON 檔帶入
|
||||
@@ -150,8 +129,8 @@ argument-hint: "[--tool <tea|api>] [--repo <owner/repo>] [--issues <編號,以
|
||||
|
||||
格式:`[--tool <tea|api>] [--repo <owner/repo>] [--issues <編號,以逗號分隔>] [--host <gitea 主機>] [--yes]` — 全部可省略;省略時依階段 A/B/C 詢問(已知資訊一律跳過詢問)。token 一律由環境變數 `GITEA_TOKEN` 提供。
|
||||
|
||||
| 助理 | 呼叫 |
|
||||
| --- | --- |
|
||||
| Claude Code / Antigravity | `/jsc-code:issues`,或 `/jsc-code:issues --tool api --repo plugins/code --issues 12,15 --yes` |
|
||||
| Codex | `$issues`,或 `$issues --tool tea --repo plugins/code --issues 12`,或用 `/skills` 選單 |
|
||||
| OpenCode | 描述需求(如「用 GITEA_TOKEN 讀 plugins/code 的 12、15 號議題,整理需求成 TODO 依影響範圍小到大排序、缺的補進議題描述,然後逐項實作、每完成一項留言進度」)自動觸發 |
|
||||
各助理呼叫方式依 `/jsc-shared:spec-skill-invocation`(本 skill 為 `/jsc-code:issues`),常用範例:
|
||||
|
||||
- Claude Code / Antigravity:`/jsc-code:issues`,或 `/jsc-code:issues --tool api --repo plugins/code --issues 12,15 --yes`
|
||||
- Codex:`$issues`,或 `$issues --tool tea --repo plugins/code --issues 12`,或用 `/skills` 選單
|
||||
- OpenCode:描述需求(如「用 GITEA_TOKEN 讀 plugins/code 的 12、15 號議題,整理需求成 TODO 依影響範圍小到大排序、缺的補進議題描述,然後逐項實作、每完成一項留言進度」)自動觸發
|
||||
|
||||
Reference in New Issue
Block a user