From eb9c7080afbf4760b32327b3f9419d6bc792a258 Mon Sep 17 00:00:00 2001 From: Hank Date: Wed, 14 Oct 2026 20:39:43 +0800 Subject: [PATCH] =?UTF-8?q?chore(claude):=20=E6=96=B0=E5=A2=9E=20AC=20?= =?UTF-8?q?=E5=B0=8D=E6=87=89=E6=B8=AC=E8=A9=A6=E8=A6=8F=E5=89=87=E8=88=87?= =?UTF-8?q?=20branch-and-propose=20skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/branch-and-propose/SKILL.md | 26 ++++++++++++++++++++++ CLAUDE.md | 6 +++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 .claude/skills/branch-and-propose/SKILL.md diff --git a/.claude/skills/branch-and-propose/SKILL.md b/.claude/skills/branch-and-propose/SKILL.md new file mode 100644 index 0000000..bc604a5 --- /dev/null +++ b/.claude/skills/branch-and-propose/SKILL.md @@ -0,0 +1,26 @@ +--- +name: branch-and-propose +description: 開始規劃新功能時觸發,自動從 master 同步並建立新分支,接著進入 OpenSpec 提案流程。當使用者說「規劃新功能」「開新的 spec」「開始做 XXX 功能」「幫我開一個新分支做 XXX」時使用。 +argument-hint: [功能名稱] +--- + +## Instructions + +1. 確認目前 git 狀態是否乾淨(`git status`);若有未提交的變更,先詢問使用者要 stash 還是先提交,不可直接覆蓋。 +2. 執行以下指令同步 master: + ``` + git checkout master + git pull VPS master + ``` +3. 若使用者的請求中沒有明確功能名稱,先詢問功能名稱,並轉換為符合團隊命名慣例的分支名稱(英文、kebab-case,例如 `feature/dive-log-export`)。 +4. 建立並切換新分支: + ``` + git checkout -b feature/<功能名稱> + ``` +5. 分支建立完成後,向使用者確認分支已就緒,接著**必須**執行 `/opsx:propose <功能名稱>`(`<功能名稱>` 沿用步驟 3 決定的名稱)建立本次功能的 spec 提案草稿,不要自行用其他方式產生 proposal。 +6. spec 草稿完成後,依照 CLAUDE.md 的「OpenSpec 工作流規則 → Task 執行前」清單,確認 Acceptance Criteria 是否已定義且對應測試任務,未對應者提醒使用者補上,不進入實作階段。 + +## Notes + +- 這個 skill 只負責「開分支 → 交接給 OpenSpec 流程」,不涉及 spec 內容本身的產出邏輯,避免與 CLAUDE.md 裡的 OpenSpec 規則重複維護。 +- 若專案的預設分支不是 `master`(例如 `main`),使用前請調整步驟 2、3 中的分支名稱。 diff --git a/CLAUDE.md b/CLAUDE.md index cd280f6..4ebf6ec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ -# CLAUDE.MD — 全域開發規則 +# CLAUDE.MD ## 語言設定 @@ -21,6 +21,7 @@ - 禁止在未確認 spec 對應關係的情況下開始實作 - 禁止使用 raw SQL query(除非有明確說明理由) - 禁止在前端直接使用 `innerHTML` 渲染未經處理的使用者輸入 +- 禁止在 Acceptance Criteria 未對應測試任務的情況下開始實作 --- @@ -108,7 +109,7 @@ 每次執行 task 前,先確認: 1. 這個 task 對應哪一條 spec?(必須能指向具體文件與段落) -2. Acceptance Criteria 是否已定義且可測量? +2. Acceptance Criteria 是否已定義且可測量?每一條是否已對應至少一項測試任務(單元測試或 Feature 測試)?未對應者禁止進入實作階段。 3. 這個 task 完成後,哪些 spec 文件需要同步更新? ### Task 執行後 @@ -118,6 +119,7 @@ - 實作結果是否與 spec 描述一致 - 如有偏差,列出偏差點並詢問是否更新 spec - **必須告知 spec 同步狀態**:這個改動有沒有影響現有 spec 描述的行為?需要更新哪個文件? +- 測試是否涵蓋本次變更的 Acceptance Criteria?未涵蓋者需說明原因 ---