From 8050cf3a4eec63314337e11469600b77fee2de8a Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 31 Aug 2026 13:36:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(behaviors):=20=E6=96=B0=E5=A2=9E=20jsc?= =?UTF-8?q?-ask=20=E6=8A=80=E8=83=BD=E8=A1=8C=E7=82=BA=E6=B8=85=E5=96=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What:新增 `references/behaviors.md`。內含 ask 一節。該節是一張五列表,欄位為觸發時機、關鍵步驟、外部呼叫、完成條件、可驗證跡象。頁首說明這份清單的用途,並要求技能異動時在同一個 PR 內一起更新。 Why:技能驗證原本沒有共同的比對基準,驗證結果隨人而異。先盤點所有技能組,替每支技能寫下行為基準,驗證時直接比對這份清單。清單放在 jsc-ask 自己的 repo,不集中在 meta。技能改動與清單落在同一個 PR,內容才不會漂移,也不必跨 repo 開兩條 PR 互卡。 How:逐項讀過 ask 技能的現有流程,抽出五個面向填進表格。觸發時機同時寫下不叫用的情況。關鍵步驟依實際執行順序排列。外部呼叫列出腳本、技能、工具與範本。完成條件寫下成功標準與三種停止執行的情況。可驗證跡象寫成外部看得到的結果,例如 wiki 頁面多一節、內容頁時間戳更新,驗證時不必讀技能原始碼。表格格式由 `jsc-meta/tools/check-behaviors.sh` 在程式層檢查。 Who:jsc-ask 的 ask 技能,以及技能驗證流程。 --- references/behaviors.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 references/behaviors.md diff --git a/references/behaviors.md b/references/behaviors.md new file mode 100644 index 0000000..09f122e --- /dev/null +++ b/references/behaviors.md @@ -0,0 +1,13 @@ +# jsc-ask 技能行為清單 + +本頁記錄 jsc-ask 每支技能的行為基準,供技能驗證比對。技能異動時,在同一個 PR 內一起更新這一頁。 + +## ask + +| 項目 | 內容 | +| --- | --- | +| 觸發時機 | 任何 jsc 技能需要使用者做決定時叫用。答案已經寫在 `QUESTION_{HASH}` 且意圖相符時不叫用,直接採用舊答案。答案查得到程式碼、設定檔或環境變數時不叫用,自己去查。 | +| 關鍵步驟 | 確認目前工作的 `{owner}/{repo}`、執行 `jsc-gitea/tools/hash-id {owner}/{repo}` 取得 8 碼 `HASH`、每個工作階段解析一次 `QUESTION` wiki 存取庫、讀入 `QUESTION_CONTENTS` 與 `QUESTION_{HASH}` 並留成階段副本、把這一輪每一題標成「照紀錄回答」或「要問」、以決策樹選單一次問一個決策點且每個選項標明影響範圍、依答案決定下一題直到沒有疑慮、交一個 sub agent 先寫 `QUESTION_{HASH}` 再寫 `QUESTION_CONTENTS`、寫入後同步更新階段副本、把答案交回叫用的技能 | +| 外部呼叫 | `jsc-gitea/tools/hash-id`、`jsc-gitea:wiki`(`wiki-repo`、`wiki-get`、寫入)、AskUserQuestion 或等效選單、一個負責兩次 wiki 寫入的 sub agent;範本 `templates/question-record.md`、`templates/question-contents.md` | +| 完成條件 | 這一輪每一題都有答案,來源是紀錄或使用者;答案交回叫用的技能;有存取庫名稱時,sub agent 回報兩頁都寫成功,主代理接受那一次回報。沒有存取庫名稱時,問完直接交回答案,不寫任何頁。`hash-id` 找不到 SHA-1 工具、wiki 讀取非 exit 4 的失敗、重試後仍寫不進去,這三種情況停止執行並回報,其中寫入失敗仍把答案交回並註明沒有記錄。 | +| 可驗證跡象 | wiki `QUESTION_{HASH}` 頁尾多一節,開頭是使用者意圖,底下每題一張選項與影響範圍的表,附答案與時間;wiki `QUESTION_CONTENTS` 該存取庫那一列的「最後更新」變成這次執行的時間戳,沒有該列就新增一列。沒有 `{owner}/{repo}` 時無寫入跡象,只有回報內容。 | -- 2.53.0 From af2156ccfe56a3b27dae46379c92ffa92ca86e21 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 31 Aug 2026 13:36:11 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore(manifest):=20=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=B8=89=E4=BB=BD=20manifest=20=E7=89=88=E6=9C=AC=E8=87=B3=200?= =?UTF-8?q?.0.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What:把 `.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`、`plugin.json` 的 `version` 由 `0.0.8` 改成 `0.0.9`。三份檔案只動這一個欄位。 Why:本次新增技能行為清單,套件內容已經改變。版本號要一起進版,安裝端才收得到更新。三份 manifest 分別供不同 CLI 讀取,版本必須同號,否則使用者在不同 CLI 會讀到不一致的版本。 How:逐份 manifest 只改 `version` 這一個鍵,其餘欄位維持原樣。三份改成同一個版本號 0.0.9。版本進位採修補號,因為本次只新增參考文件,沒有改動技能行為。 Who:jsc-ask 套件的版本標示,以及 jsc-cli:deploy 的安裝與更新流程。 --- .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 3195d3b..0ef136d 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-ask", - "version": "0.0.8", + "version": "0.0.9", "description": "決策樹問詢與問詢紀錄(QUESTION_* wiki 頁)", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index fa1ed37..59a7191 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-ask", - "version": "0.0.8", + "version": "0.0.9", "description": "決策樹問詢與問詢紀錄(QUESTION_* wiki 頁)", "skills": "./skills", "jsc": { diff --git a/plugin.json b/plugin.json index 526d4d6..b62fb3a 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc-ask", - "version": "0.0.8", + "version": "0.0.9", "description": "決策樹問詢與問詢紀錄(QUESTION_* wiki 頁)", "skills": "./skills/", "jsc": { -- 2.53.0