plan-start
建立 Notion 條目 + .spec/{slug}/(plan.md 骨架 + state.json)+ Git branch 的統一任務入口(支援 feature 與 bug),含退出驗證確保必填欄位完整。當使用者提到 /plan-start、「開新 CREW 任務」、「建立規劃任務」時觸發此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
建立 Notion 條目 + .spec/{slug}/(plan.md 骨架 + state.json)+ Git branch 的統一任務入口(支援 feature 與 bug),含退出驗證確保必填欄位完整。當使用者提到 /plan-start、「開新 CREW 任務」、「建立規劃任務」時觸發此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
CREW 環境健診 —— 一次性檢查 CREW 所有必要與選配依賴(Node/Git/Notion MCP/Agent Teams/瀏覽器 MCP/config/專案註冊/CLAUDE.md),列出綠黃紅燈與修法。當使用者提到 /crew-doctor、「CREW 環境健診」、「CREW 為什麼不能用」時觸發此 Skill。
瀏覽與探索已有的 .spec/ 規劃文件 —— 深度閱讀、跨任務比較、模式搜尋。當使用者提到 /plan-browse、「瀏覽 .spec 規劃」、「看之前的規劃設計」時觸發此 Skill。
從 .spec/{slug}/plan.md 以 Agent Teams leader-delegate 模式產生程式碼,含退出驗證與錨點有效性檢查,Leader 只協調不寫 code。當使用者提到 /plan-build、「從 spec 產生程式碼」、「plan-build 產碼」時觸發此 Skill。
結案前先跑文件漂移硬關卡(FAIL 擋、WARN 需明示放行),通過後蓋章 verified_at_commit、提交 Git、批次同步 plan.md 與 deploy.sql 到 Notion。當使用者提到 /plan-close、「feature 結案」、「同步 spec 到 Notion 並結案」時觸發此 Skill。
智慧推薦 CREW 當前任務下一步 —— 呼叫 crew-state.py 讀 state.json 算出下一個 /plan-* 指令並轉成人話。當使用者提到 /plan-next、「CREW 下一步指令」、「這個 spec 接下來做什麼」時觸發此 Skill。
CREW 規劃 —— spec / db / arch 三個 pass 把決策與驗收條件寫進 .spec/{slug}/plan.md,DB 設計另產 deploy.sql(零 Notion 呼叫)。當使用者提到 /plan、「CREW 完整規劃」、「一次跑完 spec/db/arch」時觸發此 Skill。
| name | plan-start |
| description | 建立 Notion 條目 + .spec/{slug}/(plan.md 骨架 + state.json)+ Git branch 的統一任務入口(支援 feature 與 bug),含退出驗證確保必填欄位完整。當使用者提到 /plan-start、「開新 CREW 任務」、「建立規劃任務」時觸發此 Skill。 |
| argument-hint | <任務簡述> [選項] |
在 Notion「任務追蹤工具」建立條目,同時在專案根目錄建立 .spec/{slug}/(plan.md 骨架 + state.json),並可選建立 Git branch。支援 Feature 和 Bug 兩種類型。
本 skill 是 plan.md 骨架的唯一建立者。骨架用 Write 寫一次,之後所有階段一律用 Edit 對錨點插入 —— 章節契約與寫入紀律見 plugin 根目錄
references/plan-common.md(相對 SKILL.md 為../../references/)。 紀律護欄:../../references/discipline-preamble.md。
依 plugin 根目錄 references/config-resolver.md(相對 SKILL.md 為 ../../references/)的漸進式載入邏輯讀取設定。本 Skill 需要:
config.md(Notion IDs)projects/{repo-id}.md(專案對應、技術棧 ID)Bug 類型還需檢查 bug-workflow 設定檔(~/.claude-company/bug-workflow-config.md 或 ~/.claude/bug-workflow-config.md)。
若設定目錄不存在,提示使用者先執行 /plan-setup 或 /bug-setup。
前置檢查:參照 plugin 根目錄
references/prerequisites.md(相對 SKILL.md 為../../references/)執行完整前置檢查(CLAUDE.md + 設定目錄 + 專案註冊)。
使用者會以以下格式觸發:
/plan-start <任務簡述> [選項]
類型推斷:
/plan-start feature 推播標籤查詢 或 /plan-start bug SSO 登入錯誤Bug 關聯選項:
--related <feature-slug>:手動指定關聯的 feature自動偵測環境:
git branch --show-current 2>/dev/null || echo ""
pwd
git remote get-url origin 2>/dev/null || echo ""
Git Repo 識別碼解析規則:
intumit(公司 GitLab)→ 只取 {group}/{repo}{host}/{group}/{repo}.git 後綴自動專案對應:用 Git Repo 識別碼轉換為檔名(/ → --),檢查 projects/{sanitized-id}.md 是否存在。匹配失敗則進入互動式選擇。
高 / 中 / 低小 / 中 / 大測試 / UAT / 正式高 / 中 / 低從任務簡述產生英文 slug:
push-tag-query).spec/{slug}/ 不存在,若存在則加數字後綴在建立 Notion 條目前,自動偵測負責人以填入「負責人」(people 類型)欄位:
git config user.email 2>/dev/null || echo ""
notion-get-users 取得 Notion 工作區使用者列表注意:
notion-get-users回傳的使用者物件包含id、name、person.email等欄位。比對時使用person.email。
使用 notion-create-pages 在「任務追蹤工具」建立,Properties:
| 欄位 | 值 |
|---|---|
| 任務名稱 | 使用者提供的任務簡述 |
| 任務類型 | ["💬 功能要求"] |
| 狀態 | 進行中 |
| 優先順序 | 使用者選擇 |
| 難度 | 使用者選擇 |
| 開發階段 | 需求分析 |
| 專案資料庫 | 關聯的專案頁面 URL |
| 負責人 | 「偵測負責人」一節偵測到的 Notion 使用者(若有) |
Step A:使用 post-page 建立頁面(僅 properties,不帶 children)。
database_id 解析:
config.md中的 Data Source ID 不能直接用於post-page的parent.database_id。需先依照 plugin 根目錄references/plan-common.md(相對 SKILL.md 為../../references/)的「Notion database_id 解析」邏輯,呼叫retrieve-a-data-source取得底層database_id。
Step B:取得 page_id 後,使用 patch-block-children 追加 plugin 根目錄 references/notion-page-template.md(相對 SKILL.md 為 ../../references/)的標準 8 區塊模板。
錯誤處理:
.spec/ 目錄照常建立,notion.page_id 留空/plan-sync 補寫使用 notion-create-pages,Properties 同 bug-start:
| 欄位 | 值 |
|---|---|
| 任務名稱 | 使用者提供的任務簡述 |
| 任務類型 | ["🐞 錯誤"] |
| 狀態 | 進行中 |
| 優先順序 | 使用者選擇 |
| 環境 | 使用者選擇 |
| 專案資料庫 | 關聯的專案頁面 URL |
| 負責人 | 「偵測負責人」一節偵測到的 Notion 使用者(若有) |
頁面 content 使用以下內嵌標準模板(與 bug-workflow plugin 的 bug-start 區塊結構一致,若使用者已安裝 bug-workflow,可自行比對其 skills/bug-start/SKILL.md 是否有更新;本 plugin 為獨立安裝,不跨 plugin 引用,故在此就地維護一份):
## 🔴 問題描述
- **通報來源**:
- **發生時間**:{當前日期時間}
- **重現步驟**:
1. ...
2. ...
- **預期行為**:
- **實際行為**:
- **錯誤截圖**:
---
## 🔍 調查過程
### 關鍵 Log
### 相關 SQL 查詢
### 初步判斷
---
## 🧠 根因分析
- **問題根因**:
- **問題檔案**:
- **問題程式碼**:
---
## ✅ 修復方案
- **修改檔案清單**:
- **修改說明**:
- **修改後程式碼**:
- **修復 Commit**:
- **修復分支**:
---
## 🧪 驗證
- [ ] 本地測試通過
- [ ] UAT 驗證通過
- [ ] 正式環境確認
- [ ] 通報者確認問題已解決
---
## 📝 經驗教訓
- **學到什麼**:
- **如何預防**:
建立方式同 Feature 的兩步法(Step A + Step B),但 Step B 追加的是上方內嵌模板,而非 references/notion-page-template.md。
檢查專案根目錄的 .gitignore,若不包含 .spec/ 則追加:
# Local spec files (managed by plan-* skills)
.spec/
mkdir -p .spec/{slug}
用 Write 建立 .spec/{slug}/plan.md,內容就是下方骨架(六個章節、六個 HTML 錨點註解,各節留空)。
type 依步驟 1 的推斷填 feature 或 bug;verified_at_commit 與 verified_at 留空(只有 /plan-drift 與 /plan-close 能寫)。
---
slug: {slug}
name: {任務簡述}
type: {feature|bug}
verified_at_commit:
verified_at:
drift_policy: normal
---
# {任務簡述}
> {使用者提供的一句話需求/問題描述;沒有就留「(待 /plan 補)」}
## 目標與範圍 <!-- crew:goal owner=spec -->
## 驗收條件 <!-- crew:ac owner=spec -->
## 決策紀錄 <!-- crew:dec append-only -->
## 已知取捨與風險 <!-- crew:risk append-only -->
## 指路 <!-- crew:map append-only -->
## 檢查報告摘要 <!-- crew:rep append-only -->
🔴 本 skill 是唯一能用 Write 碰 plan.md 的地方。骨架寫完後,本 skill 自己也只能用 Edit 對錨點註解那一行插入內容。
🔴 不要在骨架裡塞需求全文、API 表、欄位清單或範例錨點 —— 章節內容由 /plan 的三個 pass 依 references/plan-common.md「章節契約」填入。
🔴 不建立其他任何文件檔;一個任務只有 plan.md + state.json(+ DB 階段才產生的 deploy.sql)。
流程狀態不寫進 plan.md,一律由單一寫者 crew-state.py 建立與更新:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/crew-state.py" init \
--slug {slug} --name "{任務簡述}" --type {feature|bug} \
--notion-page-id {Notion 頁面 ID,沒有就省略} \
--commit "$(git rev-parse HEAD 2>/dev/null)"
init 會把 start 標為 done、phase 設為 start。exit 1(slug 已存在)→ 確認是否重複建立;exit 3(環境問題)→ 修好再重跑,不要改用手寫 JSON。
本地 .spec/ 層關聯:
若使用者指定 --related <feature-slug>:
.spec/{feature-slug}/plan.md 存在crew-state.py list --all --format json 取得該 feature 的 notion.page_id- 來源 feature:{feature-slug}(Notion:{URL})(依寫入紀律用 Edit 對 crew:map 錨點插入)若未指定,嘗試智慧匹配:
crew-state.py list --all --format json 取得所有 type=feature 的任務plan.md 的「目標與範圍」「決策紀錄」「指路」內容Notion 層 relation 關聯:
本地關聯成功後,同步建立 Notion 的「相關任務」self-relation:
state.json 取得 notion.page_id(已在本地關聯時讀取)notion-update-page 設定 Bug 頁面的「相關任務」:
{
"相關任務": {
"relation": [{"id": "<feature-notion-page-id>"}]
}
}
若本地關聯未成功(.spec/ 中無匹配 feature),嘗試 Notion 層盲搜(同 /bug-start「自動關聯來源 Feature」一節邏輯):
API-query-data-source 查詢同專案的 Feature 條目(任務類型 contains 💬 功能要求)Feature Branch 偵測(同 /bug-start「偵測來源 Feature Branch」一節):
若成功關聯到 Feature(本地或 Notion 層),進一步偵測 Feature 的開發分支:
state.json 取得 git.branch,或從 Notion 頁面讀取「修復分支」欄位git branch -a | grep -F "<branch-name>"從專案設定檔讀取 prod_branch(PROD 分支),作為新分支的基準:
是否建立 Git branch?
1. 是,建立 {feature|hotfix}/{slug}(從 {prod_branch} 分支)
2. 是,自訂分支名稱
3. 否,稍後再建立
若選擇建立:
git checkout {prod_branch} && git pull && git checkout -b {type}/{slug}
(feature → feature/{slug},bug → hotfix/{slug},從 PROD 分支建立)python3 "${CLAUDE_PLUGIN_ROOT}/scripts/crew-state.py" set \
--slug {slug} --branch {分支名} --base {prod_branch}
若
prod_branch未設定(舊專案),回退到從當前分支建立,並提示使用者執行/project-add補充分支設定。
在回傳結果前,逐項檢查以下退出條件。
對 Notion 欄位的驗證,一律用 notion-fetch 讀回頁面確認欄位有值,不信任 Agent 在「建立 Notion 條目」一節的記憶。
對本地狀態的驗證,一律用 script 判定,不用肉眼看檔案:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/crew-state.py" validate --slug {slug} --expect-phase start
| # | 檢查項目 | 驗證方式 | 失敗處理 |
|---|---|---|---|
| S1 | Notion 頁面已建立 | crew-state.py list --slug {slug} --format json 的 notion.page_id 非空 | 若「建立 Notion 條目」一節 Step A 已失敗(走降級路徑)→ 降為 ⚠️ WARN,提示稍後用 /plan-sync 補建;否則重試建立 |
| S2 | 專案資料庫已設定 | notion-fetch 讀回頁面,確認「專案資料庫」relation 欄位非空 | 從 projects/{repo-id}.md 取得 notion_page_id,用 notion-update-page 補上 relation |
| S3 | 修復分支已設定 | list 輸出的 git.branch 非空 且 notion-fetch 確認「修復分支」欄位非空 | 見下方 S3 特殊處理 |
| S4 | 開發階段已設定(僅 Feature) | Feature → notion-fetch 確認「開發階段」欄位 = 需求分析;Bug → 跳過此項 | 用 notion-update-page 補上 |
| S5 | 負責人已設定 | notion-fetch 確認「負責人」欄位非空 | 僅提示「負責人未自動設定,請至 Notion 手動指派」 |
| S6 | plan.md 骨架完整 | .spec/{slug}/plan.md 存在,且六個錨點註解(crew:goal crew:ac crew:dec crew:risk crew:map crew:rep)各出現一次 | 缺哪節就用 Edit 補回該節標題行,不要重寫整檔 |
| S7 | state.json 已建立且合法 | crew-state.py validate --slug {slug} --expect-phase start exit 0 | exit 1 → 依訊息修正後重跑;仍失敗 → crew-state.py rebuild --slug {slug} |
S1 條件式降級:「建立 Notion 條目」一節的設計允許 Notion API 不可用時繼續建立本地
.spec/(offline-first)。若該節 Step A 已失敗,S1 不應阻擋整個流程,改為 WARN 並記錄。僅在 Step A 成功(頁面應已建立)但頁面 ID 為空時才視為 BLOCK。
若「建立 Git branch」一節使用者選擇了「否,稍後再建立」,退出驗證時 必須再次確認(即使在 auto mode 下,強制詢問):
⚠️ 修復分支尚未建立。
Notion 的「修復分支」欄位將為空,可能影響團隊協作(其他成員無法從 Notion 得知開發分支)。
確定不建立分支嗎?
1. 建立分支(回到「建立 Git branch」一節流程)
2. 確定跳過,我稍後自己建立
選 1 → 回到「建立 Git branch」一節的建立流程。 選 2 → S3 標記為 ⚠️ WARN(不阻擋),繼續。
S1 在「建立 Notion 條目」一節 Step A 已失敗(Notion 不可用)時,降級為 ⚠️ WARN。 S3 在使用者明確確認跳過後,降級為 ⚠️ WARN。 S4 對 Bug 類型自動跳過(Bug 不設定開發階段)。
驗證失敗時,Agent 自行修復(補呼叫 notion-update-page、重跑 crew-state.py 等),不要求使用者手動操作。僅在自動修復也失敗時才提示使用者。
驗證結果只在對話輸出(不落檔;事件流由 state.json 的 history 承接):
任務已建立!
📋 Notion 頁面:{URL}
📁 本地任務:.spec/{slug}/(plan.md + state.json)
🔀 Git branch:{branch}(若有)
📊 類型:{Feature / Bug}
退出驗證結果:
{✅/⚠️} S1 Notion 頁面已建立
{✅/⚠️} S2 專案資料庫:{專案名稱}
{✅/⚠️} S3 修復分支:{branch}
{✅/⚠️} S4 開發階段:{階段}
{✅/⚠️} S5 負責人:{姓名 或 未設定}
{✅/⚠️} S6 plan.md 骨架六節齊全
{✅/⚠️} S7 state.json 驗證通過(phase=start)
結論:{摘要}
後續可使用:
• /plan — 完整規劃(spec → db → arch 三個 pass 寫進 plan.md)
• /plan spec|db|arch — 只跑其中一個 pass
• /plan-build — Agent Teams 產生程式碼
• /plan-next — 不確定下一步時問它
• /plan-status — 查看所有任務狀態
• /plan-close — 結案並同步 Notion
.spec/ 目錄名稱和 Git branch 名稱,一旦建立就很難改。中文翻譯成英文時,優先用專案中已有的術語(如範例專案中的「推播」→ push 而非 broadcast),保持與 codebase 一致。<!-- crew:xxx --> 註解不可改寫、不可對齊調整、不可翻譯。改掉一個字,後續 pass 的 Edit 就找不到插入點,crew-state.py rebuild 也會誤判階段。crew-state.py。直接編輯 state.json 會繞過原子寫入與併發鎖;寫進 plan.md frontmatter 則會製造第二套狀態。bug-start 的完全一致。如果 bug-start 更新了模板但 plan-start 沒跟上,會導致 /bug-close 找不到預期的區塊標題。.spec/ 到 .gitignore 時,如果檔案末尾沒有換行,新增的行會和最後一行黏在一起。追加前確認末尾有換行。notion-update-page 設定「相關任務」relation 時,id 欄位要填 page ID(UUID 格式),不是頁面 URL。state.json 的 notion.page_id 就是正確的值。start 組 —— 本 skill 是完整入口(Notion + .spec/ + branch);只要建 Notion bug 條目用 /bug-start。
/bug-start/plan/plan-explore/project-add/plan-setup 或 /bug-setupcrew-state.py init 的 --commit 省略.spec/ 目錄已存在同名 slug:加數字後綴或詢問使用者(不要用 init --force 覆蓋別人的狀態檔).spec/{slug}/,Notion 頁面 ID 留空,提示使用者可稍後用 /plan-sync 補建/plan-sync 補寫 body