From e01108732b898cce2f1bb2190edbaf56f6940f0c Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Aug 2026 16:50:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?docs(wiki=20skills):=20=E8=AA=BF=E6=95=B4?= =?UTF-8?q?=E8=A8=88=E7=95=AB=E8=88=87=E4=BB=A3=E8=BE=A6=20wiki=20?= =?UTF-8?q?=E8=A6=8F=E5=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/plan-wiki/SKILL.md | 40 +++++++++++++++++++-------------------- skills/todo-wiki/SKILL.md | 10 ++++++++++ 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/skills/plan-wiki/SKILL.md b/skills/plan-wiki/SKILL.md index b07a30f..954b963 100644 --- a/skills/plan-wiki/SKILL.md +++ b/skills/plan-wiki/SKILL.md @@ -1,19 +1,19 @@ --- name: plan-wiki -description: 逐步詢問使用者計畫內容,並把每一輪已確認的計畫草稿直接同步到指定 Gitea wiki 的目錄頁與計畫頁,全程不建立本機計畫檔、草稿檔、暫存 JSON body 或 wiki clone。使用者要建立計畫、把計畫加入 wiki 目錄、指定 Gitea wiki repo/目錄頁/計畫頁、要求邊問邊同步 wiki、要求計畫檔案不落地、或提到 plan-wiki、計畫 wiki、wiki 目錄頁時觸發。適用於:需求尚未完整、需要逐題釐清並保存到 wiki 的計畫文件。不適用於:產生本機 plan.md/todo.md、拆 Gitea issue(用 /jsc-doc:issues-analyze)、或非 Gitea wiki。 +description: 逐步詢問使用者計畫內容,持續釐清到系統規劃所需描述完整後,才把詳細分析同步到指定 Gitea wiki 的目錄頁與計畫頁,全程不建立本機計畫檔、草稿檔、暫存 JSON body 或 wiki clone。使用者要建立計畫、把計畫加入 wiki 目錄、指定 Gitea wiki repo/目錄頁/計畫頁、要求計畫檔案不落地、或提到 plan-wiki、計畫 wiki、wiki 目錄頁時觸發。適用於:需求尚未完整、需要逐題釐清並保存到 wiki 的計畫文件。不適用於:產生本機 plan.md/todo.md、產生代辦事項、拆 Gitea issue(用 /jsc-doc:issues-analyze)、或非 Gitea wiki。 argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫名稱>] [--page PLAN--] [--host ] [--yes]" --- # plan-wiki — 逐步建立計畫並同步到 Gitea wiki -把「逐步詢問 → 彙整計畫 → 同步 wiki 目錄與頁面 → 繼續詢問」固定成可重複流程。每次使用者回答一輪問題後,都必須把目前已確認內容同步到 Gitea wiki,直到使用者明確表示計畫完成;全程不建立本機計畫檔或草稿檔。 +把「逐步詢問 → 確認描述完整 → 詳細分析計畫 → 同步 wiki 目錄與頁面」固定成流程。必須一直重複詢問使用者,直到蒐集完系統規劃所需的所有描述;凡有疑問或缺口都要詢問,不得自行幻想。只有描述完整後,才可以把詳細分析寫入計畫頁;全程不建立本機計畫檔或草稿檔。 | 階段 | 動作 | | --- | --- | | A. 前置設定 | 確認 Gitea host、token、wiki repo、目錄頁、計畫名稱與計畫頁 | | B. 讀取 wiki 現況 | 讀取目錄頁與計畫頁,保留既有內容 | -| C. 逐步詢問 | 每輪只問 1~3 個必要問題,使用者回答後整理計畫草稿 | -| D. 同步 wiki | 每輪都更新目錄頁與計畫頁 | +| C. 逐步詢問 | 每輪只問 1~3 個必要問題,使用者回答後判斷是否仍有疑問 | +| D. 同步 wiki | 描述完整且已完成詳細分析後,更新目錄頁與計畫頁 | | E. 完成收斂 | 使用者確認計畫完成後輸出 wiki 連結與摘要 | ## 共用規範(必要前置) @@ -27,11 +27,12 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 - 本 skill 會寫入外部 Gitea wiki;目標 wiki repo 不明時必須詢問,不得臆測。 - 目錄頁 title 預設固定為 `CONTENTS`,不詢問使用者;只有使用者明確提供 `--index` 時才覆蓋預設值。 - 計畫頁 title 預設固定為 `PLAN-{yyyyMMdd}-{HASH}`,不詢問使用者;`yyyyMMdd` 使用 Asia/Taipei 當日日期,`HASH` 由已確認的計畫內容、計畫名稱或需求摘要產生穩定短雜湊並轉成全大寫。 -- 加入目錄頁時,先從計畫內容尋找系統名稱;若無明確系統名稱,依計畫目標產生一個精簡系統名稱。目錄標題使用 `{系統名稱}-計畫`,並連結到計畫頁。 +- 加入目錄頁時,先從計畫內容尋找系統名稱;若無明確系統名稱,依計畫目標產生一個精簡系統名稱。系統名稱必須是程式碼專案可使用的英文名稱,格式固定為大駝峰(PascalCase),只允許英文字母與數字,且必須以英文字母開頭,例如 `InventoryTracker`。無法可靠產生時必須詢問使用者,不得自行幻想。目錄標題使用 `{系統名稱}-計畫`,並連結到計畫頁。 - 目錄頁禁止整頁覆蓋:不存在時才新建;存在時必須保留既有內容,只修改本計畫既有列或在既有表格附加新列。 - **不落地絕對規則**:不得建立本機 `plan.md`、`todo.md`、`.md` 草稿、暫存 JSON body、wiki clone、或任何用來傳遞中間成果的檔案;中間成果只存在於對話內容與 Gitea wiki API request body。不得使用 `curl --data @file`。 - 使用者已用參數指定 `--wiki-repo`、`--index`、`--project`、`--page` 時跳過對應詢問。 -- 每一輪使用者回答後都要同步 wiki。同步失敗時停止下一輪詢問,先回報錯誤與待使用者處理的點。 +- 使用者已用 `--project` 指定計畫名稱時,仍需檢查是否符合 PascalCase 英文專案名稱;不符合時必須請使用者修正或授權轉換後的新名稱。 +- 不產生 `TODO`、待辦事項、checklist、工作清單或實作任務;計畫頁只描述系統規劃、決策、範圍、方案、風險與待確認事項。 - 不要求使用者把 token 貼進對話;token 依 `spec-gitea` 從環境變數或既有設定取得。 ## 參數 @@ -42,7 +43,7 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 | --- | --- | | `--wiki-repo` | Gitea wiki 所屬 repo,例如 `knowledges/Plan`。未帶且無法從目前 repo 推得時詢問使用者。 | | `--index` | 目錄頁 title;未帶時固定使用 `CONTENTS`,不詢問。 | -| `--project` | 計畫名稱;未帶時從計畫內容尋找或產生系統名稱,用於目錄列標題與摘要。 | +| `--project` | 計畫名稱/系統名稱;必須是程式碼專案可使用的 PascalCase 英文名稱。未帶時從計畫內容尋找或產生系統名稱,用於目錄列標題與摘要。 | | `--page` | 計畫頁 title;未帶時固定使用 `PLAN-{yyyyMMdd}-{HASH}`,不詢問。 | | `--host` | Gitea 主機,依 `spec-gitea` host 決定順序處理。 | | `--yes` | 略過一般性確認;不得略過目標 wiki 不明、寫入衝突或使用者尚未確認的計畫完成判斷。 | @@ -53,7 +54,7 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 2. 確認 `--wiki-repo` 是否為 `owner/repo` 格式;不符合時詢問使用者修正。 3. 確認目錄頁 title:未帶 `--index` 時固定使用 `CONTENTS`。 4. 確認計畫頁 title:未帶 `--page` 時固定使用 `PLAN-{yyyyMMdd}-{HASH}`。雜湊輸入優先使用已確認的計畫內容;內容不足時使用計畫名稱、來源摘要與當輪時間組合,輸出全大寫短雜湊。 -5. 確認系統名稱:先從 `--project`、計畫內容、需求來源或使用者回答尋找明確系統名稱;找不到時產生精簡系統名稱,不為此單獨詢問。 +5. 確認系統名稱:先從 `--project`、計畫內容、需求來源或使用者回答尋找明確系統名稱;系統名稱必須符合 PascalCase 英文專案名稱格式。找不到或無法可靠轉換時,必須詢問使用者,不得自行幻想。 6. 用 `GET /repos//` 驗證 token 對 repo 有權限;失敗時遮蔽機密後回報並停止。 ## 階段 B:讀取 wiki 現況 @@ -65,10 +66,10 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 ## 目錄頁格式 -目錄頁不存在時建立下列結構;更新既有目錄頁時禁止整頁覆蓋,必須保留既有標題、說明、表格與其他內容,只新增或更新本計畫相關列: +目錄頁不存在時建立下列結構;更新既有目錄頁時禁止整頁覆蓋,必須保留既有標題、說明、表格與其他內容,只新增或更新本計畫相關列。新建目錄頁的大標題(H1)使用系統名稱;若此 wiki 不是單一系統專用且無法確認系統名稱,使用 `# 代辦事項`: ```markdown -# CONTENTS +# <系統名稱或代辦事項> 計畫目錄。 @@ -96,13 +97,12 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 ## 方案 -## 待確認 +## 風險 -## TODO -- [ ] ... +## 待確認 ``` -已有計畫頁時保留使用者明確保留的內容;每輪只更新本 skill 管理的章節。需求不明的部分放在 `## 待確認`,不得自行補完。 +已有計畫頁時保留使用者明確保留的內容;只更新本 skill 管理的章節。需求不明的部分放在 `## 待確認`,不得自行補完。不得加入 `## TODO`、Markdown checklist 或任何代辦事項章節。 ## 階段 C:逐步詢問 @@ -116,16 +116,16 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 每輪回答後: -- 將回答整合進計畫頁。 -- 把仍不明確的點列入 `## 待確認`。 -- 產出或更新 `## TODO` checklist,格式依 `spec-todo-list`。 -- 詢問使用者下一輪問題前,先完成階段 D 的 wiki 同步。 +- 檢查目標、成功標準、使用者與情境、限制條件、功能範圍、不做範圍、資料流、外部依賴、里程碑、驗收項目、風險與待確認事項是否足以形成系統規劃。 +- 對所有仍不明確、互相矛盾或無法可靠推論的點,繼續詢問使用者;不得用「合理推測」補完。 +- 在描述完整前,不得把詳細分析寫入計畫頁。 +- 描述完整後,才整理計畫頁的目標、背景與限制、範圍、方案、風險與待確認;不得產生 TODO 或 checklist。 -使用者明確表示「完成」「先到這裡」「計畫完成」時,進入階段 E;不要再追問非必要細節。 +使用者明確表示「完成」「先到這裡」「計畫完成」時,先檢查系統規劃必要描述是否完整;若仍有必要缺口,必須列出缺口並繼續詢問。只有必要描述完整時,才能進入階段 D 與階段 E;不要再追問非必要細節。 ## 階段 D:同步 wiki -每輪同步順序固定: +描述完整並完成詳細分析後,同步順序固定: 1. 更新計畫頁。 2. 更新目錄頁:不存在才建立;存在時禁止整頁覆蓋,只修改既有 `<系統名稱>-計畫` 列,或在既有表格/頁末附加新列,確保有本計畫頁連結與摘要。 diff --git a/skills/todo-wiki/SKILL.md b/skills/todo-wiki/SKILL.md index ded0bfd..26f4cb5 100644 --- a/skills/todo-wiki/SKILL.md +++ b/skills/todo-wiki/SKILL.md @@ -35,6 +35,7 @@ argument-hint: "[--source <需求描述|檔案路徑|議題編號>] [--impl-mode - TODO 頁 title 預設固定為 `TODO-{yyyyMMdd}-{HASH}`,不詢問使用者;`yyyyMMdd` 使用 Asia/Taipei 當日日期,`HASH` 由需求彙整、關聯計畫或系統名稱產生穩定短雜湊並轉成全大寫。 - 必須詢問使用者是否需要把本 TODO 連結到計畫;使用者回答不需要時,不更新目錄頁,也不要把 TODO 加到目錄。 - 需要加入目錄頁時,目錄標題使用 `{關聯計畫的系統名稱}-代辦`,並連結到 TODO 頁。系統名稱優先從關聯計畫取得;若沒有關聯計畫,從需求內容尋找或產生系統名稱。 +- 目錄頁不存在而需要新建時,頁面 Markdown 的大標題(H1)必須是 `# <系統名稱>`;若無法確認系統名稱且使用者也未提供,使用 `# 代辦事項`。不得用 `# CONTENTS` 作為新建目錄頁的大標題。 - 目錄頁禁止整頁覆蓋:不存在時才新建;存在時必須保留既有內容,只修改本 TODO 既有列或在既有表格附加新列。 ## 參數 @@ -153,6 +154,15 @@ scope: <階段 2 產出的 scope> ``` 若既有目錄頁沒有 `| 頁面 | 內容 |` 表格,附加一段新的目錄表格到頁面末尾,不得刪除或重排既有內容。 +目錄頁不存在而新建時,內容格式如下;`<目錄大標題>` 必須依本 skill 特有補充使用系統名稱或 `代辦事項`,不是 wiki page title: + +```markdown +# <目錄大標題> + +| 頁面 | 內容 | +| --- | --- | +| [<關聯計畫的系統名稱>-代辦]() | todo wiki:<關聯計畫的系統名稱> 代辦——執行規則、需求彙整、分群任務與驗收條件 | +``` API 寫入方式: From 3ccf42b521192fff1291a812105c938a6ab4fdc8 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Aug 2026 16:50:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index a58bb30..f6b9c30 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-shared", - "version": "0.1.3", + "version": "0.1.4", "description": "JSC 跨 AI 助理共用規範 skills plugin(Claude Code / Codex / Antigravity / OpenCode / GitHub Copilot CLI),`skills/` 為唯一真實來源,並提供整組 plugin 的安裝/更新/移除管理(plugins-install 一次安裝或更新 jsc-code/jsc-doc/jsc-persona/jsc-shared,plugins-uninstall 一次移除四個 JSC plugin)。安裝與更新一律以 Gitea 遠端 repo 的 README 與檔案為準,不依賴既有本機存取庫;所有 skills 以 SKILL.md 為共通標準;於 Claude Code 以 /jsc-shared: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 3283fad..d32b03e 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-shared", - "version": "0.1.3", + "version": "0.1.4", "description": "JSC 跨 AI 助理共用規範 skills plugin,`skills/` 為唯一真實來源,並提供整組 plugin 的安裝/更新/移除管理(plugins-install 一次安裝或更新 jsc-code/jsc-doc/jsc-persona/jsc-shared,plugins-uninstall 一次移除四個 JSC plugin)。安裝與更新一律以 Gitea 遠端 repo 的 README 與檔案為準,不依賴既有本機存取庫;所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 9ec8303..01b5e51 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-shared", - "version": "0.1.3", + "version": "0.1.4", "description": "JSC 跨 AI 助理共用規範 skills plugin,`skills/` 為唯一真實來源,並提供整組 plugin 的安裝/更新/移除管理(plugins-install 一次安裝或更新 jsc-code/jsc-doc/jsc-persona/jsc-shared,plugins-uninstall 一次移除四個 JSC plugin)。安裝與更新一律以 Gitea 遠端 repo 的 README 與檔案為準,不依賴既有本機存取庫;所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc-shared: 前綴呼叫。", "skills": "./skills" } From ed95b46ac99d6c7c2ca1774ba765e2ded7e0d248 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Aug 2026 16:54:24 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs(wiki=20skills):=20=E7=A6=81=E6=AD=A2?= =?UTF-8?q?=20plan=20=E8=88=87=20todo=20=E6=B5=81=E7=A8=8B=E6=AA=94?= =?UTF-8?q?=E6=A1=88=E8=90=BD=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/plan-wiki/SKILL.md | 8 ++++---- skills/todo-wiki/SKILL.md | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/skills/plan-wiki/SKILL.md b/skills/plan-wiki/SKILL.md index 954b963..0c45e1f 100644 --- a/skills/plan-wiki/SKILL.md +++ b/skills/plan-wiki/SKILL.md @@ -1,12 +1,12 @@ --- name: plan-wiki -description: 逐步詢問使用者計畫內容,持續釐清到系統規劃所需描述完整後,才把詳細分析同步到指定 Gitea wiki 的目錄頁與計畫頁,全程不建立本機計畫檔、草稿檔、暫存 JSON body 或 wiki clone。使用者要建立計畫、把計畫加入 wiki 目錄、指定 Gitea wiki repo/目錄頁/計畫頁、要求計畫檔案不落地、或提到 plan-wiki、計畫 wiki、wiki 目錄頁時觸發。適用於:需求尚未完整、需要逐題釐清並保存到 wiki 的計畫文件。不適用於:產生本機 plan.md/todo.md、產生代辦事項、拆 Gitea issue(用 /jsc-doc:issues-analyze)、或非 Gitea wiki。 +description: 逐步詢問使用者計畫內容,持續釐清到系統規劃所需描述完整後,才把詳細分析同步到指定 Gitea wiki 的目錄頁與計畫頁,全程禁止本機檔案落地,不建立本機計畫檔、草稿檔、暫存 JSON body、附件暫存檔或 wiki clone。使用者要建立計畫、把計畫加入 wiki 目錄、指定 Gitea wiki repo/目錄頁/計畫頁、要求計畫檔案不落地、或提到 plan-wiki、計畫 wiki、wiki 目錄頁時觸發。適用於:需求尚未完整、需要逐題釐清並保存到 wiki 的計畫文件。不適用於:產生本機 plan.md/todo.md、產生代辦事項、拆 Gitea issue(用 /jsc-doc:issues-analyze)、或非 Gitea wiki。 argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫名稱>] [--page PLAN--] [--host ] [--yes]" --- # plan-wiki — 逐步建立計畫並同步到 Gitea wiki -把「逐步詢問 → 確認描述完整 → 詳細分析計畫 → 同步 wiki 目錄與頁面」固定成流程。必須一直重複詢問使用者,直到蒐集完系統規劃所需的所有描述;凡有疑問或缺口都要詢問,不得自行幻想。只有描述完整後,才可以把詳細分析寫入計畫頁;全程不建立本機計畫檔或草稿檔。 +把「逐步詢問 → 確認描述完整 → 詳細分析計畫 → 同步 wiki 目錄與頁面」固定成流程。必須一直重複詢問使用者,直到蒐集完系統規劃所需的所有描述;凡有疑問或缺口都要詢問,不得自行幻想。只有描述完整後,才可以把詳細分析寫入計畫頁;全程禁止本機檔案落地。 | 階段 | 動作 | | --- | --- | @@ -29,7 +29,7 @@ argument-hint: "[--wiki-repo ] [--index CONTENTS] [--project <計畫 - 計畫頁 title 預設固定為 `PLAN-{yyyyMMdd}-{HASH}`,不詢問使用者;`yyyyMMdd` 使用 Asia/Taipei 當日日期,`HASH` 由已確認的計畫內容、計畫名稱或需求摘要產生穩定短雜湊並轉成全大寫。 - 加入目錄頁時,先從計畫內容尋找系統名稱;若無明確系統名稱,依計畫目標產生一個精簡系統名稱。系統名稱必須是程式碼專案可使用的英文名稱,格式固定為大駝峰(PascalCase),只允許英文字母與數字,且必須以英文字母開頭,例如 `InventoryTracker`。無法可靠產生時必須詢問使用者,不得自行幻想。目錄標題使用 `{系統名稱}-計畫`,並連結到計畫頁。 - 目錄頁禁止整頁覆蓋:不存在時才新建;存在時必須保留既有內容,只修改本計畫既有列或在既有表格附加新列。 -- **不落地絕對規則**:不得建立本機 `plan.md`、`todo.md`、`.md` 草稿、暫存 JSON body、wiki clone、或任何用來傳遞中間成果的檔案;中間成果只存在於對話內容與 Gitea wiki API request body。不得使用 `curl --data @file`。 +- **不落地絕對規則**:全程禁止本機檔案落地。不得建立、更新、下載或暫存任何本機輸出/中介檔案,包含 `plan.md`、`todo.md`、`.md` 草稿、暫存 JSON body、附件暫存檔、wiki clone、或任何用來傳遞中間成果的檔案;中間成果只存在於對話內容、工具參數與 Gitea wiki API request body。不得使用 `curl --data @file`、`--data-binary @file` 或任何 `@file` 形式送出本機檔案。 - 使用者已用參數指定 `--wiki-repo`、`--index`、`--project`、`--page` 時跳過對應詢問。 - 使用者已用 `--project` 指定計畫名稱時,仍需檢查是否符合 PascalCase 英文專案名稱;不符合時必須請使用者修正或授權轉換後的新名稱。 - 不產生 `TODO`、待辦事項、checklist、工作清單或實作任務;計畫頁只描述系統規劃、決策、範圍、方案、風險與待確認事項。 @@ -135,7 +135,7 @@ API 寫入方式: - 建立新頁:`POST /repos///wiki/new`,body 帶 `title`、`content`、`message`。 - 更新既有頁:先查表取得 `sub_url`,再用 `PATCH /repos///wiki/page/`,body 帶 `title`、`content`、`message`。 -- request body 必須由工具呼叫或記憶中內容直接送出,不得先寫成本機 JSON 或 Markdown 檔。 +- request body 必須由工具呼叫、stdin、shell 變數或記憶中內容直接送出,不得先寫成本機 JSON、Markdown 或任何暫存檔;禁止所有 `@file` 形式。 - message 用繁體中文,例如 `更新 `。 若站台不支援 REST wiki 寫入端點,回報「此站台不支援不落地 wiki 寫入」並停止,不得改用 wiki git clone。 diff --git a/skills/todo-wiki/SKILL.md b/skills/todo-wiki/SKILL.md index 26f4cb5..a139f35 100644 --- a/skills/todo-wiki/SKILL.md +++ b/skills/todo-wiki/SKILL.md @@ -1,12 +1,12 @@ --- name: todo-wiki -description: 把「需求 → 分析 → 產生鎖定模型的 TODO 清單 → 同步到 Gitea wiki 目錄與頁面」固定成不落地檔案的流程:先依 `/jsc-shared:spec-model` 的「需求分析」任務挑出分析模型,當前模型不符就停止;接著讀取來源(需求描述、本機檔案,或走 `/jsc-shared:spec-issue-read` 讀取的 Gitea 議題)並釐清需求,任何不清楚之處依 `/jsc-shared:spec-ask-user` 詢問;再依「依清單實作」任務挑出實作模型或採用使用者指定;最後把帶 `model`/`model_alias`/`model_reason`/`analyzed_by`/`analyzed_at`/`scope` frontmatter 與強制規則區塊的 TODO 內容直接同步到指定 Gitea wiki 目錄頁與 todo 頁。當使用者說要把需求整理成 wiki TODO、同步 todo 到 Gitea wiki、需求轉 todo-wiki、指定模型 todo wiki、或提到 todo-wiki skill 時觸發。不適用於:產生本機 todo.md、把需求拆分成多個 Gitea 議題(用 `/jsc-doc:issues-analyze`)、實作既有 Gitea 議題的 TODO(用 `/jsc-code:issues`)。 +description: 把「需求 → 分析 → 產生鎖定模型的 TODO 清單 → 同步到 Gitea wiki 目錄與頁面」固定成禁止本機檔案落地的流程:先依 `/jsc-shared:spec-model` 的「需求分析」任務挑出分析模型,當前模型不符就停止;接著讀取來源(需求描述、本機檔案,或走 `/jsc-shared:spec-issue-read` 讀取的 Gitea 議題)並釐清需求,任何不清楚之處依 `/jsc-shared:spec-ask-user` 詢問;再依「依清單實作」任務挑出實作模型或採用使用者指定;最後把帶 `model`/`model_alias`/`model_reason`/`analyzed_by`/`analyzed_at`/`scope` frontmatter 與強制規則區塊的 TODO 內容直接同步到指定 Gitea wiki 目錄頁與 todo 頁。當使用者說要把需求整理成 wiki TODO、同步 todo 到 Gitea wiki、需求轉 todo-wiki、指定模型 todo wiki、或提到 todo-wiki skill 時觸發。不適用於:產生本機 todo.md、把需求拆分成多個 Gitea 議題(用 `/jsc-doc:issues-analyze`)、實作既有 Gitea 議題的 TODO(用 `/jsc-code:issues`)。 argument-hint: "[--source <需求描述|檔案路徑|議題編號>] [--impl-model ] [--wiki-repo ] [--wiki-index CONTENTS] [--wiki-project <關聯計畫或系統名稱>] [--wiki-page TODO--] [--append|--overwrite] [--yes]" --- # todo-wiki — 需求分析並同步指定模型 TODO 到 Gitea wiki -把「需求 → 分析 → 產生 TODO wiki 頁 → 交給指定模型實作」固定成七個階段。全程不建立本機 `todo.md`、草稿檔、暫存 JSON body 或 wiki clone;唯一輸出位置是指定 Gitea wiki。 +把「需求 → 分析 → 產生 TODO wiki 頁 → 交給指定模型實作」固定成七個階段。全程禁止本機檔案落地;唯一輸出位置是指定 Gitea wiki。 | 階段 | 做什麼 | 產出 | | --- | --- | --- | @@ -26,8 +26,8 @@ argument-hint: "[--source <需求描述|檔案路徑|議題編號>] [--impl-mode 本 skill 特有補充: -- **不落地絕對規則**:不得建立或更新本機 `todo.md`、`.md` 草稿、暫存 JSON body、wiki clone、或任何用來傳遞中間成果的檔案;中間成果只存在於對話內容與 Gitea wiki API request body。不得使用 `curl --data @file`。 -- `--source` 指向本機檔案時可以唯讀讀取來源檔;這不是輸出落地。`--source` 指向 Gitea 議題附件時,僅可依 `spec-issue-read` 的附件唯讀暫存例外讀取,讀完立即刪除。 +- **不落地絕對規則**:全程禁止本機檔案落地。不得建立、更新、下載或暫存任何本機輸出/中介檔案,包含 `todo.md`、`plan.md`、`.md` 草稿、暫存 JSON body、附件暫存檔、wiki clone、或任何用來傳遞中間成果的檔案;中間成果只存在於對話內容、工具參數與 Gitea wiki API request body。不得使用 `curl --data @file`、`--data-binary @file` 或任何 `@file` 形式送出本機檔案。 +- `--source` 指向本機既有檔案時可以唯讀讀取來源檔;這不是輸出落地,不得修改該來源檔或寫出衍生檔。`--source` 指向 Gitea 議題附件時,只能以 API/工具直接讀入記憶;若附件必須下載成暫存檔才能讀取,立刻停止並回報「附件需要檔案落地,違反本 skill 不落地規則」。 - 本 skill 產生的 wiki todo 頁就是 `spec-model` 第六節所述「帶 `model:` frontmatter 的清單檔」的源頭;本 skill 只負責產生與同步清單,不執行清單內容。 - 階段 1 的模型檢查針對「執行本 skill 分析工作的 agent 自己」;階段 3 選出的實作模型是寫進 wiki 頁給未來另一個 session 用。 - 目標 wiki repo 不明時必須詢問;不得因為目前工作目錄是某 repo 就臆測 wiki 目標。 @@ -168,7 +168,7 @@ API 寫入方式: - 建立新頁:`POST /repos///wiki/new`,body 帶 `title`、`content`、`message`。 - 更新既有頁:先查表取得 `sub_url`,再用 `PATCH /repos///wiki/page/`,body 帶 `title`、`content`、`message`。 -- request body 必須由工具呼叫或記憶中內容直接送出,不得先寫成本機 JSON 或 Markdown 檔。 +- request body 必須由工具呼叫、stdin、shell 變數或記憶中內容直接送出,不得先寫成本機 JSON、Markdown 或任何暫存檔;禁止所有 `@file` 形式。 不得自行猜測 Gitea wiki title 到 `sub_url` 的轉義規則;找既有頁一律查表。若 REST wiki 寫入端點不可用,回報「此站台不支援不落地 wiki 寫入」並停止,不得改用 wiki git clone。