with one click
plan-start
// 建立 Notion 條目 + .spec/ 本地規劃目錄 + Git branch 的統一入口,含退出驗證(S1~S7)確保必填欄位完整。支援 feature 和 bug 兩種類型。當使用者提到「plan-start」、「新任務」、「開始規劃」時觸發此 Skill。
// 建立 Notion 條目 + .spec/ 本地規劃目錄 + Git branch 的統一入口,含退出驗證(S1~S7)確保必填欄位完整。支援 feature 和 bug 兩種類型。當使用者提到「plan-start」、「新任務」、「開始規劃」時觸發此 Skill。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | plan-start |
| description | 建立 Notion 條目 + .spec/ 本地規劃目錄 + Git branch 的統一入口,含退出驗證(S1~S7)確保必填欄位完整。支援 feature 和 bug 兩種類型。當使用者提到「plan-start」、「新任務」、「開始規劃」時觸發此 Skill。 |
在 Notion「任務追蹤工具」建立條目,同時在專案根目錄建立 .spec/{slug}/ 本地規劃目錄,並可選建立 Git branch。支援 Feature 和 Bug 兩種類型。
依 references/config-resolver.md 的漸進式載入邏輯讀取設定。本 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。
前置檢查:參照 bug-workflow plugin 的
references/prerequisites.md執行完整前置檢查(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 |
| 負責人 | 步驟 5 偵測到的 Notion 使用者(若有) |
Step A:使用 post-page 建立頁面(僅 properties,不帶 children)。
database_id 解析:
config.md中的 Data Source ID 不能直接用於post-page的parent.database_id。需先依照references/plan-common.md的「Notion database_id 解析」邏輯,呼叫retrieve-a-data-source取得底層database_id。
Step B:取得 page_id 後,使用 patch-block-children 追加 references/notion-page-template.md 的標準 8 區塊模板。
錯誤處理:
.spec/ 目錄照常建立,notion_page_id 留空使用 notion-create-pages,Properties 同 bug-start:
| 欄位 | 值 |
|---|---|
| 任務名稱 | 使用者提供的任務簡述 |
| 任務類型 | ["🐞 錯誤"] |
| 狀態 | 進行中 |
| 優先順序 | 使用者選擇 |
| 環境 | 使用者選擇 |
| 專案資料庫 | 關聯的專案頁面 URL |
| 負責人 | 步驟 5 偵測到的 Notion 使用者(若有) |
頁面 content 使用 bug-start 的標準模板。建立方式同 Feature 的兩步法(Step A + Step B),但模板內容改用 bug-start 的區塊。
檢查專案根目錄的 .gitignore,若不包含 .spec/ 則追加:
# Local spec files (managed by plan-* skills)
.spec/
Feature 類型:
mkdir -p .spec/{slug}
建立 README.md:
---
type: feature
name: {任務簡述}
slug: {slug}
status: 需求分析
notion_url: {Notion 頁面 URL}
notion_page_id: {Notion 頁面 ID}
branch: {Git branch 名稱,若後續建立}
tech_stack: {技術棧 ID,從 projects/{repo-id}.md 的 stack 欄位取得}
created: {當前日期 YYYY-MM-DD}
---
# {任務簡述}
## 需求描述
{使用者提供的描述,或待填寫}
Bug 類型:
mkdir -p .spec/{slug}
建立 README.md:
---
type: bug
name: {任務簡述}
slug: {slug}
status: 調查中
notion_url: {Notion 頁面 URL}
notion_page_id: {Notion 頁面 ID}
branch: {Git branch 名稱,若後續建立}
related_feature: {關聯的 feature slug,若有}
related_feature_notion: {關聯 feature 的 Notion URL,若有}
created: {當前日期 YYYY-MM-DD}
---
# {任務簡述}
## 問題描述
{使用者提供的描述,或待填寫}
本地 .spec/ 層關聯:
若使用者指定 --related <feature-slug>:
.spec/{feature-slug}/ 存在README.md 取得 notion_url、notion_page_idrelated_feature 和 related_feature_notion若未指定,嘗試智慧匹配:
.spec/ 下所有目錄的 README.md(type=feature 且 status 非「需求分析」)spec.md、arch.md、db.md 中的類別名和表名Notion 層 relation 關聯:
本地關聯成功後,同步建立 Notion 的「相關任務」self-relation:
README.md 取得 notion_page_id(已在本地關聯時讀取)notion-update-page 設定 Bug 頁面的「相關任務」:
{
"相關任務": {
"relation": [{"id": "<feature-notion-page-id>"}]
}
}
log.md,不阻擋流程若本地關聯未成功(.spec/ 中無匹配 feature),嘗試 Notion 層盲搜(同 /bug-start Step 6.7 邏輯):
API-query-data-source 查詢同專案的 Feature 條目(任務類型 contains 💬 功能要求)Feature Branch 偵測(同 /bug-start Step 6.8):
若成功關聯到 Feature(本地或 Notion 層),進一步偵測 Feature 的開發分支:
.spec/ README.md 取得 branch 欄位,或從 Notion 頁面讀取「修復分支」欄位git branch -a | grep -F "<branch-name>"讀取或建立 .spec/_index.md:
# 任務索引
## 進行中
| slug | 類型 | 名稱 | 狀態 | 分支 | Notion | 建立日期 |
|------|------|------|------|------|--------|---------|
| {slug} | {feature/bug} | {名稱} | {狀態} | {branch} | [連結]({url}) | {日期} |
## 已完成
| slug | 類型 | 名稱 | 完成日期 | Notion |
|------|------|------|---------|--------|
在「進行中」表格新增一列。
從專案設定檔讀取 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 分支建立).spec/{slug}/README.md 的 branch 欄位若
prod_branch未設定(舊專案),回退到從當前分支建立,並提示使用者執行/project-add補充分支設定。
在回傳結果前,逐項檢查以下退出條件,確保 Notion 條目與本地 .spec/ 的完整性。
對 Notion 欄位的驗證,一律用 notion-fetch 讀回頁面確認欄位有值,不信任 Agent 在步驟 6 的記憶。
| # | 檢查項目 | 驗證方式 | 失敗處理 |
|---|---|---|---|
| S1 | Notion 頁面已建立 | .spec/{slug}/README.md 的 notion_page_id 非空 | 若步驟 6 Step A 已失敗(走降級路徑)→ 降為 ⚠️ WARN,提示稍後用 /plan-sync 補建;否則重試建立 |
| S2 | 專案資料庫已設定 | notion-fetch 讀回頁面,確認「專案資料庫」relation 欄位非空 | 從 projects/{repo-id}.md 取得 notion_page_id,用 notion-update-page 補上 relation |
| S3 | 修復分支已設定 | .spec/{slug}/README.md 的 branch 欄位非空 且 notion-fetch 確認「修復分支」欄位非空 | 見下方 S3 特殊處理 |
| S4 | 開發階段已設定(僅 Feature) | Feature → notion-fetch 確認「開發階段」欄位 = 需求分析;Bug → 跳過此項 | 用 notion-update-page 補上 |
| S5 | 負責人已設定 | notion-fetch 確認「負責人」欄位非空 | 僅提示「負責人未自動設定,請至 Notion 手動指派」 |
| S6 | .spec/ 目錄已建立 | .spec/{slug}/README.md 存在 | 重試建立 |
| S7 | _index.md 已更新 | .spec/_index.md 包含新 slug | 重試寫入 |
S1 條件式降級:步驟 6 的設計允許 Notion API 不可用時繼續建立本地
.spec/(offline-first)。若步驟 6 Step A 已失敗,S1 不應阻擋整個流程,改為 WARN 並記錄。僅在 Step A 成功(頁面應已建立)但notion_page_id為空時才視為 BLOCK。
若步驟 9 使用者選擇了「否,稍後再建立」,退出驗證時 必須再次確認(即使在 auto mode 下,強制詢問):
⚠️ 修復分支尚未建立。
Notion 的「修復分支」欄位將為空,可能影響團隊協作(其他成員無法從 Notion 得知開發分支)。
確定不建立分支嗎?
1. 建立分支(回到步驟 9 流程)
2. 確定跳過,我稍後自己建立
選 1 → 回到步驟 9 的建立流程。 選 2 → S3 標記為 ⚠️ WARN(不阻擋),繼續。
S1 在步驟 6 Step A 已失敗(Notion 不可用)時,降級為 ⚠️ WARN。 S3 在使用者明確確認跳過後,降級為 ⚠️ WARN。 S4 對 Bug 類型自動跳過(Bug 不設定開發階段)。
驗證失敗時,Agent 自行修復(補呼叫 notion-update-page 等),不要求使用者手動操作。僅在自動修復也失敗時才提示使用者。
寫入 .spec/{slug}/log.md 並在回傳結果中顯示:
退出驗證結果:
✅ S1 Notion 頁面已建立
✅ S2 專案資料庫:{專案名稱}
✅ S3 修復分支:{branch}
✅ S4 開發階段:需求分析
⚠️ S5 負責人未自動設定(email 不匹配)
✅ S6 .spec/{slug}/ 已建立
✅ S7 _index.md 已更新
結論:{全部通過 / 有 N 項 WARN,建議處理後再進 plan-spec}
任務已建立!
📋 Notion 頁面:{URL}
📁 本地規劃:.spec/{slug}/
🔀 Git branch:{branch}(若有)
📊 類型:{Feature / Bug}
退出驗證結果:
{✅/⚠️} S1 Notion 頁面已建立
{✅/⚠️} S2 專案資料庫:{專案名稱}
{✅/⚠️} S3 修復分支:{branch}
{✅/⚠️} S4 開發階段:{階段}
{✅/⚠️} S5 負責人:{姓名 或 未設定}
{✅/⚠️} S6 .spec/{slug}/ 已建立
{✅/⚠️} S7 _index.md 已更新
結論:{摘要}
後續可使用:
• /plan-spec — 技術規格
• /plan-db — DB 設計
• /plan-arch — 架構設計
• /plan-build — Agent Teams 產生程式碼
• /plan-review — Agent Teams 審查
• /plan-status — 查看所有任務狀態
• /plan-close — 結案並同步 Notion
.spec/ 目錄名稱和 Git branch 名稱,一旦建立就很難改。中文翻譯成英文時,優先用專案中已有的術語(如 LineBC 專案中的「推播」→ push 而非 broadcast),保持與 codebase 一致。_index.md 破壞了表格格式(缺少 | 或對齊跑掉),後續 /plan-status 讀取會解析失敗。寫入時確保表格格式正確。bug-start 的完全一致。如果 bug-start 更新了模板但 plan-start 沒跟上,會導致 /bug-close 找不到預期的區塊標題。.spec/ 到 .gitignore 時,如果檔案末尾沒有換行,新增的行會和最後一行黏在一起。追加前確認末尾有換行。notion-update-page 設定「相關任務」relation 時,id 欄位要填 page ID(UUID 格式),不是頁面 URL。.spec/ README.md 的 notion_page_id 就是正確的值。.spec/ 中的 related_feature 和 Notion 的「相關任務」是兩個獨立的關聯。使用者在 Notion 手動刪除關聯不會更新 .spec/,反之亦然。這是已知的 offline-first 限制。/plan-setup 或 /bug-setup.spec/ 目錄已存在同名 slug:加數字後綴或詢問使用者.spec/ 目錄,notion_page_id 留空,提示使用者可稍後用 /plan-sync 補建/plan-sync 補寫 body