92 Commits
Author SHA1 Message Date
jiantw83 3230d7c49d chore(manifest): 三份 plugin 資訊檔的版本號提升一階
What
- `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的版本號同步提升一個修訂號。

Why
- 本輪改了五個範本與四支技能的內文,安裝端要靠版本號才判得出手上的快取是舊的。
- 三份資訊檔的版本號必須一致,任一份沒跟上,不同 CLI 會各自認到不同版本。

How
- 三份檔案只動版本號那一個欄位,其餘內容不變。

Who
- 各支 CLI 的安裝與更新流程,以及版本守門檢查。
2026-09-02 17:21:10 +08:00
jiantw83 b7b1d8bb01 docs(skills): 四支階段技能的目錄頁讀取與寫入敘述同步條列版面
What
- `skills/plan`、`skills/analyze`、`skills/implement`、`skills/maintain`:目錄頁的讀取敘述改成從 H2 區塊取值,寫入敘述從「單列 upsert」改成單一 H2 區塊 upsert,鍵補上內容頁頁名這個引數,並註明第四個引數是區塊檔。
- `skills/maintain`:讀寫的鍵改成該存取庫的 `{owner}/{repo}`,因為這個型別沒有內容頁。
- `references/behaviors.md`:四支技能的關鍵步驟、外部呼叫與可驗證跡象同步,跡象從「留下那一列」改成留下那一個 H2 區塊。
- `references/consensus.md`:查已答問題那一條補上問答目錄頁也是條列式版面、要從區塊取值而不是表格列。
- `references/stage-report.md`:目錄頁也算寫入那一段補上「改動一個區塊也算寫過那一頁」,並統一用 `CONTENTS` 這個型別餵進去。
- `README.md`:四支技能的流程敘述與 wiki 規則段同步,並補上五個目錄頁的版面規則、鍵的落點與各頁鍵欄的正確序號。

Why
- 範本已經改成條列版面,技能內文還寫著「那一列」,執行時就會照舊敘述組出表格列,跟工具的單一區塊 upsert 對不上。
- 讀取端的敘述沒跟著改,技能會拿表格的解析方式去讀一頁條列,既有紀錄一筆都認不出來。
- 呼叫少帶鍵這個引數,工具無從判斷要換掉哪一個區塊,同一筆會被當成新的附加上去。
- 行為清單是稽核與驗證的比對基準,敘述沒跟上,稽核會拿舊描述判合規。

How
- 四支技能的呼叫一律寫成 `wiki-contents.sh upsert {TYPE} {鍵欄} "{鍵}" {區塊檔} [{範本}]`,各頁的鍵欄序號照線上那一頁實際的欄位排法寫定。
- 完成條件與可驗證跡象改用區塊的說法,連結範例改成 `- {欄位名}:[{頁名}]({連結})` 的形態。
- 只改敘述與說明,不動任何腳本;轉檔與 upsert 的實作在別的存取庫。

Who
- 本存取庫四支階段技能,以及讀這幾份說明檔決定共識判定與階段回報寫法的流程。
- 稽核與驗證流程改拿新的行為清單比對。
2026-09-02 17:21:10 +08:00
jiantw83 19d918f499 docs(templates): 五個目錄頁範本改成大標題加條列
What
- `templates/plan-contents.md`、`templates/analyze-contents.md`、`templates/repo-contents.md`、`templates/deliver-contents.md`、`templates/maintain-contents.md` 的版面從 markdown 表格改成一筆一個 H2 區塊,欄位改成標題底下的一層條列。
- 四個有內容頁的型別,H2 標題寫成該筆對應內容頁的實際頁名;`MAINTAIN` 沒有內容頁,標題改用該存取庫的 `{owner}/{repo}`。
- 各範本的引言補上版面段,並把寫入語意從「單列 upsert」改寫成單一區塊 upsert,末端的示範資料改成一個完整的 H2 區塊。
- 引言裡寫明鍵欄的語意與各頁的正確序號,並點出填錯的靜默後果。

Why
- 目錄頁是全部使用者共用的索引。表格一寬就得橫向捲、欄位一多就對不上表頭,而且併行寫入時只要有人少打一根豎線,整張表就散掉,別人那一筆跟著看不見。
- 條列式一筆一個區塊,寫入端只換自己那一塊,壞掉也只壞自己那一塊。
- `MAINTAIN` 整個型別只有目錄頁,硬套內容頁頁名當標題會指向一個不存在的頁;存取庫名不會漂移,當鍵一樣穩。
- 鍵欄填錯時工具不會報錯,既有那一筆會被當成新的附加到頁尾,同一筆變兩個區塊,舊區塊從此再也更新不到,所以範本要把序號寫死。

How
- 一頁固定三段:H1 頁名、`>` 引言、然後每一筆一個 H2 區塊;欄位格式 `- {欄位名}:{值}`,全形冒號,順序照原本的欄位從左到右,鍵那一欄照樣留一條。
- 寫入示例統一成 `wiki-contents.sh upsert {TYPE} {鍵欄} "{鍵}" {區塊檔} [{本範本}]`,並註明第四個引數是整個 H2 區塊的 markdown,不是列檔。
- 頁上不留任何 markdown 表格;內容頁範本不在本輪範圍,維持圖表優先。

Who
- 影響照這五個範本寫目錄頁的四支階段技能。
- 舊表格頁的自動轉檔與單一區塊 upsert 的實作不在本存取庫,本存取庫只提供範本與敘述。
2026-09-02 17:21:10 +08:00
jiantw83 109a53466c chore(plugin 版本): 三份 manifest 升版至 0.3.1 2026-09-02 16:01:18 +08:00
jiantw83 f38d1f3087 feat(狀態回報): 收尾寫一筆 skill-end 事件
現行紀錄只記「被叫用」,沒有成敗也沒有結束碼。跑完整輪的技能與開場就
中止的技能,在紀錄裡長得一模一樣。

start 由技能用量 hook 順手發,不必改技能文件。end 只能由技能自己在收尾
步驟寫——hook 接在技能工具呼叫上,而實際工作發生在之後的模型輪次,它在
原理上看不到成敗。有 start 沒有配對的 end,就是那一輪中止了。

status 五選一,每支技能各自寫明什麼情況選哪一個。找不到回報腳本就安靜
跳過,回報失敗一律不改變技能自己的結論。
2026-09-02 16:01:18 +08:00
jiantw83 4697bf433f chore(plugin 版本): 三份 manifest 升版至 0.3.0 2026-09-02 14:27:18 +08:00
jiantw83 f4e489ceb4 feat(link): 連結一律寫成 [文字](絕對網址),寫入前先驗證連得到
取消 [[頁名]] 與 [[顯示文字|頁名]] 兩種同 wiki 寫法,不再分「同存取庫」與
「跨存取庫」兩條規則。那種寫法只在自己那個 wiki 內解析,寫錯不報錯,畫面上
看起來像普通文字或死連結,巡不到也修不了。

連結寫進頁面前先過 jsc-gitea 的 link-check.sh,結束碼 0 才寫。驗證一律走 API,
不看網頁狀態碼:私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把
好連結判成壞的。認證失敗回 7,與死連結的 1 分開,免得金鑰一過期就把還在的頁
整批判死。
2026-09-02 14:27:18 +08:00
jiantw83 9e71474bfb feat(wiki): 五個目錄頁改走專用存取庫,補齊 wiki-url 退出碼分流
What:PLAN、ANALYZE、DELIVER、MAINTAIN、REPO 五個目錄頁改由 wiki-repo CONTENTS
解析並透過 wiki-contents.sh upsert 寫入,內容頁仍各走自己的型別。MAINTAIN 只有
目錄頁,整個型別都在專用存取庫。

Why:目錄頁與內容頁不再同庫,跨庫沒有 wiki 連結語法可用,一律改 wiki-url 的絕對
網址。原本四處取網址都沒有退出碼分流,5 被讀成空字串就寫出空連結,7 被讀成 4 就
把活著的頁當成沒寫成。

How:plan 與 analyze 會上階段鎖,而寫入閘門只看鎖不看路徑,所以流程要產的列檔與
暫存檔會被自己的閘門擋掉。兩支的限制段明寫這些檔一律用 heredoc 或 mktemp 產出。
wp-gate.sh 讀的是分析內容頁,維持走 ANALYZE,原地註明不得改成 CONTENTS。

Who:jsc-sdlc
2026-09-02 11:02:34 +08:00
jiantw83 41982760d4 chore(marketplace): 把 jsc-assist 登錄進統一 marketplace
What:
- 兩份 marketplace 檔各加一個 jsc-assist 條目,來源網址指向 assist 存放庫。

Why:
- 準則要求每個 domain 存放庫都帶同一份 marketplace 檔,任何一個存放庫都能當註冊入口。副本之間只要有一份沒跟上,稽核就會報出不一致。
- 正本少了這個條目,各 CLI 的安裝指令就找不到 jsc-assist,這個 domain 等於發佈不出去。

How:
- 條目由 meta 的 sync-marketplace.sh 產生,同時寫進正本與每個 domain 存放庫的副本,寫完逐檔比對位元組。這一支存放庫的兩份副本就是那一輪的產物。
- 條目依名稱排序,縮排與非 ASCII 描述的處理都交給同一支腳本,不手改 JSON。
- 這一批是從最新的預設分支重新產生的。前一輪的分支基底早於監控頁型別那批改動,直接合併會把那些改動回退掉,所以整批重做而不是解衝突。

Who:
助理 domain 落地的註冊步驟在這個存放庫的同步。
2026-09-01 12:50:04 +08:00
jiantw83 d4b1878967 Merge pull request '收攏 maintain 技能的 frontmatter 語法修正' (#50) from feat/cli-hook-rewire/main into develop 2026-09-01 00:58:44 +00:00
jiantw83 591263a2af Merge pull request '修正 maintain 技能 SKILL.md frontmatter 的 YAML 純量語法' (#49) from feat/cli-hook-rewire/quote-description into feat/cli-hook-rewire/main 2026-09-01 00:56:13 +00:00
jiantw83 c7d9777d04 fix(frontmatter): 修正 maintain 技能 SKILL.md frontmatter 的 YAML 純量語法錯誤
What:
- 修正 skills/maintain/SKILL.md frontmatter 裡 description 欄位的 YAML 語法錯誤。
- 整串 description 加上單引號,內部撇號改寫成兩個單引號,內容文字一個字都沒變。
- 同步更新 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三個 manifest 版本號,從 0.2.7 進到 0.2.8。

Why:
- description 內含「冒號加空白」,屬於未加引號的 YAML plain scalar,違反 YAML 語法規定。
- Antigravity 解析 frontmatter 時當場中斷,整支技能被靜默丟棄,沒有任何錯誤訊息;磁碟上 34 支技能,Antigravity 只認得 28 支。
- 準則要求 description 用英文撰寫,不能把「: 」改成全形冒號迴避語法問題,只能加引號修正。

How:
- 整串 description 值加上單引號,內部撇號寫成兩個單引號跳脫,其餘字元不動。
- 用 git show HEAD: 取出改前的原始值,把改後的單引號純量還原後做字串相等比對,確認逐字相同、字元數一致。
- 執行 ste100-lint.sh、check-behaviors.sh、lint-frontmatter.sh 三支檢查腳本,退出碼皆為 0;git diff --numstat 顯示只動了 frontmatter 那一行。

Who:
- 本次修到 sdlc 技能組的 maintain 技能,屬 SDLC 維運階段、定期維護已交付專案的功能。
2026-08-31 19:04:17 +08:00
jiantw83 e0e857b84a Merge pull request '收攏 sdlc 四支技能的行為清單,功能主幹併回 develop' (#47) from feat/skill-behaviors-and-version-block/main into develop 2026-08-31 08:10:41 +00:00
jiantw83 58a23769f0 Merge pull request '列出 analyze、implement、maintain、plan 四支技能的行為清單' (#46) from feat/skill-behaviors-and-version-block/behavior-list into feat/skill-behaviors-and-version-block/main 2026-08-31 08:09:28 +00:00
jiantw83 7127d7d932 chore(version): 三份 manifest 同步升版到 0.2.7
What:
- `.claude-plugin/plugin.json` 版本從 0.2.6 改成 0.2.7。
- `.codex-plugin/plugin.json` 版本從 0.2.6 改成 0.2.7。
- `plugin.json` 版本從 0.2.6 改成 0.2.7。

Why:
- 本次新增行為清單,屬於外部可見的異動,要升一版。
- 三份 manifest 服務不同的 CLI,版本必須一致。
- 版本一致,版本守衛才判得出這台機器該不該更新。

How:
- 只動三份檔案的 `version` 欄位,其他欄位一個位元組都沒改。
- 版號依既有規則進位一個修訂號。

Who:
- 安裝或更新 jsc-sdlc 外掛的使用者。
- 比對外掛版本的 jsc-hooks 版本守衛與 jsc-cli:deploy。
2026-08-31 13:49:26 +08:00
jiantw83 4b482aefc5 docs(behaviors): 新增四支技能的行為清單
What:
- 在既有的 `references/` 目錄下新增 `references/behaviors.md`。
- 分成 analyze、implement、maintain、plan 四節,對上 `skills/` 下的四支技能。
- 每節一張五列表:觸發時機、關鍵步驟、外部呼叫、完成條件、可驗證跡象。

Why:
- 技能驗證需要一份共同的參考基準。
- 基準留在文件裡,驗證就不必靠人腦記憶技能該有的行為。
- 清單放在技能自己的存取庫,技能改動與清單才會落在同一個 PR。
- 同一個 PR 就不會漂移,也不用跨存取庫開兩條 PR 互卡。

How:
- 逐支技能讀 SKILL.md,抽出行為填進五列表。
- 稽核時修正三列:analyze、plan、maintain 的階段鎖狀態檔原本寫成 `$JSC_HOME/wp/`。
- 三列改成實際路徑 `$JSC_HOME/sessions/{工作階段 id}.stage`。
- `$JSC_HOME/wp/` 只留給 implement 的工作包領取檔與 PR 鎖檔。
- 用 `sh /root/plugins/meta/tools/check-behaviors.sh /root/plugins/sdlc` 驗格式,退出碼 0。

Who:
- 使用 jsc-sdlc 四支技能的開發者。
- 執行技能驗證的 jsc-meta:skill-check。
- 日後異動這四支技能的維護者,要同步更新這一頁。
2026-08-31 13:49:26 +08:00
jiantw83 dfe4ed03ca chore(deps): 補上維護階段實際用到的相依外掛
維護階段的候選方法直接呼叫 jsc-pkg 更新套件,相依清單卻沒有列它。裝了本外掛不一定裝得到,跑到那一步才失敗。

- 三份外掛描述檔都補上 jsc-pkg。
- 提高 jsc-hooks 的版本下限。本次流程倚賴的寫入閘門與留言掃描要新版才有。
- 同步調高本外掛版本。
2026-08-31 11:10:30 +08:00
jiantw83 0bb00d2fb9 docs(sdlc): 說明同步實際流程
說明跟腳本、技能的實際行為對不上,讀的人會照舊做法走。

- 工作包閘門腳本的檔頭補上上鎖的工作包參數。不帶就沒有歸屬,歸屬比對對誰都放行。
- 腳本用法數量改成正確的五個。
- 四段技能摘要改寫成現在的流程:閘門與停止條件先跑、互不相依的動作併發、寫入閘門只有 claude 擋得住、認可前的留言掃描是其餘四支 CLI 唯一來得及的一道。
2026-08-31 11:10:30 +08:00
jiantw83 015ceb66d2 perf(sdlc): 停止條件與閘門移到最前面
過去先問來源分支、先產生工作證、先建 worktree,等跑到閘門才發現沒有可挑的項目。前面的決策樹、wiki 寫入、抓取遠端與改名全部白做。

- 實作先讀分析頁、先結清已開 PR 的留言,再逐一過相依閘門,只有通過的候選才進選項。來源分支與工作證都移到領到工作包之後。
- 分析先併行讀計畫與分析目錄,沒有可分析的計畫就直接停。分支隨計畫而變,所以等目標定了才問。
- 互不相依的呼叫改成併發:已開 PR 的狀態批次預取、每個候選的相依查詢同時發、多個存取庫的 worktree 一起建、兩道收尾稽核並列跑。
- 領取登錄不成功就不得開工。沒有登錄,存取庫就沒有歸屬紀錄,之後每一支 PR 都會被當成無人認領而放行。上鎖失敗同樣要停,否則下一個工作階段會在 PR 還沒合併時就被放行。
- 來源分支改成單鍵確認。放棄的是每輪都要使用者明講「來源分支同時是 PR 目標」這道確認;分析頁沒記錄、遠端找不到分支這兩種例外仍走完整決策樹。
- 把仍寫成中文的驗收計畫步驟改回英文,與其他步驟一致。
2026-08-31 11:10:30 +08:00
jiantw83 39a7e17b85 feat(contents): 目錄頁改為先讀回再附加
目錄頁的每一列都屬於別人的計畫、工作包或存取庫。過去照範本整頁覆寫,別人的列會直接消失,而且寫入不做合併,也沒有備份。

- 五份目錄範本都寫明寫入語意:先讀回整頁,已有的列就更新,沒有才附加。
- 規劃與維護技能加上讀取結束碼分支表。只有「頁面真的不存在」才准照範本建頁;金鑰失效或 API 失敗一律停下來回報,不得當成沒有頁面。
- wiki 讀或寫失敗就停止該階段,並指出是哪一頁、哪一個動作失敗,避免把沒存成功的頁面報成已存。
- 補上寫入閘門只有 claude 擋得住的事實,其餘四支 CLI 只能靠內文約束。
- 記下工作包閘門對規劃階段降為提醒後放棄的在製品上限。
- 維護階段先整批對齊各專案再逐一交給 sub agent,專案之間互不相依。
2026-08-31 11:10:30 +08:00
jiantw83 de7962a8c1 fix(gate): 閘門說明與實際行為對齊
兩份參考文件跟實際判定互相矛盾。照著做會漏掉收尾,或是擋錯階段。

- 模型閘門非零退出時,該回合仍要跑階段回報。提前停下來也要留紀錄,不然使用者看不到停在哪裡。
- 工作包閘門只擋分析與維護:規劃只印提醒就放行,實作一律放行。實作是結清那支 PR 的唯一路徑,擋了閘門就自己鎖死。
- 順帶把指向實作技能的步驟引用改成新的順序。
2026-08-31 11:10:30 +08:00
jiantw83 19d873d19a fix(analyze): 讓測試計畫符合 TDD 循環 2026-08-28 16:10:20 +08:00
jiantw83 7804247dd9 feat(analyze): 依使用者故事產生驗收計畫 2026-08-28 16:07:45 +08:00
jiantw83 309fe905a9 feat(analyze): 明確產生 TDD 測試計畫 2026-08-28 16:03:00 +08:00
jiantw83 b45958ed25 feat(manifest): 宣告 sdlc 技能相依版本 2026-08-28 11:59:16 +08:00
jiantw83 8381f334a1 fix(implement): 明確指定分析頁檢查工作包相依 2026-08-28 09:30:08 +08:00
jiantw83 39c087b31f chore(manifest): 三份 manifest 同步升版至 0.2.0
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份
manifest 的 version 由 0.1.9 改為 0.2.0。

Why:implement 的收尾多了一關 API 文件稽核,是使用者看得到的流程異動,次版號
要跟著進。版本沒跟著升,各 CLI 端的外掛版本護欄就分不出新舊,已安裝的使用者
也收不到更新。

How:三份 manifest 只改 version 欄位,其餘欄位維持原樣,三處版本號保持一致。

Who:jsc-sdlc 外掛的安裝與更新流程。
2026-08-27 15:41:38 +08:00
jiantw83 981cda6adf docs(sdlc): README 同步兩關收尾稽核與 jsc-review 的分工
What:README.md 的 implement 摘要,把原本一句「程式碼審查」換成兩關並列的收尾
稽核,寫明偵測、呼叫、跳過三條路徑與各自的退出碼;相關 domain 一節的 jsc-review
說明同步改成兩關,並註明專案支不支援 Swagger 由 swagger-detect.sh 判定、稽核
項目只寫在該技能。

Why:README 是使用者查一支技能做什麼的入口。技能正文改了流程,README 還停在
只有程式碼審查那版,讀的人會以為 API 文件稽核不存在,或以為那是另一支技能自己
的事。

How:只改 implement 摘要那一段的收尾環節,以及相關 domain 的那一行,其餘流程
敘述維持原樣。稽核項目在這裡一樣不重複列,指向 jsc-review:api-doc,避免同一份
判準散在三個檔案裡。

Who:jsc-sdlc 的存取庫說明文件。
2026-08-27 15:41:38 +08:00
jiantw83 9b48d16422 feat(implement): 收尾改成程式碼審查與 API 文件稽核兩關並列
What:skills/implement/SKILL.md 第 10 步改寫。原本只呼叫 code-review,現在拆成
並列的兩關:10.1 程式碼審查維持原判準,10.2 新增 API 文件稽核——先跑
jsc-review/tools/swagger-detect.sh,退出碼 0 就呼叫 jsc-review:api-doc,1 就
明確跳過並回報,2 就修好參數或路徑重跑。技能的 description 同步改寫。

Why:支援 Swagger 的專案,控制器文件沒補全就等於工作包沒做完。兩關並列而不是
一關套一關,是因為程式碼審查過了不代表 API 文件補齊了,反過來也一樣,任何一關
沒過工作包都不算完成。跳過一定要講出來:沒回報的跳過跟忘記做分不出來。退出碼
2 是偵測不出結果,既不算通過也不算跳過,硬當跳過會讓真的支援 Swagger 的專案
漏掉稽核。

How:改寫刻意只動第 10 步內部,用 10.1、10.2 子項編號,1 到 14 的頂層編號一個
都不動——references/deliver-formats.md 指的「步驟 7」、references/branch.md 指的
「步驟 4 與步驟 11」都還指得到原來的位置。稽核項目不抄一份過來,只寫「看
jsc-review:api-doc」,判準改動時不必兩邊同步。兩關的失敗都是修,不是放行:每一
輪修正都以 sub agent 在同一個 worktree 內進行,修完再稽核一次。

Who:jsc-sdlc 的 implement 技能,工作包的收尾稽核。
2026-08-27 15:41:38 +08:00
jiantw83 30c66dd1fd Merge pull request 'feat(sdlc): 工作包隔離、留言先取共識、盯 PR 到合併與每任務一筆日誌' (#30) from feat/sdlc-flow-rules/main into develop 2026-08-27 03:39:41 +00:00
jiantw83 fd433d5152 chore(manifest): 三份 manifest 版本升到 0.1.9
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.8 改為 0.1.9。

Why:本次為 `wp-gate.sh` 新增兩個子命令,並改了 `implement` 與 `maintain` 兩支技能的步驟,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。

How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。

Who:`jsc-sdlc` 外掛的套件描述檔。
2026-08-27 11:20:30 +08:00
jiantw83 77e7504982 docs(sdlc): 參考文件與 README 同步階梯、工作包隔離與日誌粒度
What:`references/branch.md` 新增「分支階梯與 base 推導」一節(只寫拿到 `jsc-git/tools/base-branch.sh --derive` 回應之後要做什麼)與「工作包隔離」一節(歸屬依據、狀態檔欄位、誰寫誰讀、查無歸屬放行、逃生門),閘門分工那一表補上 `claim`、`lock`、`owns`。`references/stage-report.md` 改寫暫存那一節,講明本節只適用於「還沒完成任何任務就停下」的階段。README 的工具表、`implement` 與 `maintain` 兩段說明、參考文件表與相依技能清單同步更新。

Why:階梯表與歸屬狀態檔的正本各有其處——階梯在 `jsc-meta` 的 `references/guidelines.md`,狀態檔格式在 `jsc-hooks`。抄第二份就會有兩份互相打架的規則,但完全不提又會讓實作階段不知道拿到 `7` 或「已建立功能主幹」時該做什麼。

How:兩節都只寫本階段要做的事,並把唯一來源用連結指出去。`branch.md` 的階梯那一節寫成一張「腳本回應 → 這個階段要做的事」對照表,`7` 明寫成「中止並問使用者,不退回 `develop`」。`stage-report.md` 補一句「暫存不等於已寫入」,因為日誌改成一個任務一筆之後,做完事情的階段本來就有日誌可連。

Who:讀 `jsc-sdlc` 參考文件與 README 的人,以及跑實作與維護兩階段的工作階段。
2026-08-27 11:20:30 +08:00
jiantw83 733b1a1a69 feat(maintain): 每個專案開完 PR 就寫一筆工作日誌
What:`maintain` 步驟 3 新增 3.5「一個專案的維護就是一個完成的任務」,PR 一開好就呼叫 `jsc-log:worklog` 寫一筆,原 3.5 順延為 3.6;步驟 5 的階段回報改成指向 3.5 寫的那幾筆,`--pending-file` 降級為「一個任務都沒完成就停下」時的備援。

Why:維護階段一次跑好幾個專案,原本整個階段結束才補一筆日誌。等到那時候,每個專案各自花掉多少時間、遇到什麼困難都已經混在一起,補出來的是一段概述而不是紀錄。

How:一個專案一筆,下一個專案的 sub agent 開工前要先寫完。條目一律附加到同一頁 `LOG_{HASH}`,`stage-report.sh --pending-file` 暫存的內容併進同一次寫入,寫成功才清除;暫存過的內容不算已寫入的日誌。

Who:跑 SDLC 維護階段的人,以及事後查某個專案上次維護做了什麼的人。
2026-08-27 11:20:29 +08:00
jiantw83 44682eaf25 feat(implement): 留言先取得共識、盯 PR 到合併、每個任務一筆日誌
What:`implement` 步驟 4 的留言處理拆細:動手前先跑 `wp-gate.sh owns` 確認 PR 是自己這一包的,接著走 `jsc-ask:ask` 決策樹對每一則留言取得共識才修,一輪修完立刻寫一筆工作日誌。步驟 6 領到包就跑 `wp-gate.sh claim`,步驟 11 的 `lock` 帶 `--wp`,開完 PR 先寫日誌再用 `jsc-gitea/tools/pr-watch.sh` 盯到合併,並依退出碼 `0`、`10`、`3`、`2` 分四條路走。Rules 新增「一個任務一筆日誌」一條,步驟 14 的日誌參數改為指向步驟 11 寫的那一筆。

Why:三件事原本都靠模型自己記。留言直接開修,等於把審查者的一句話自行解讀成一種改法,猜錯就多一輪審查;別包的 PR 沒人擋,跨工作階段就會互相踩;日誌等到階段結束才補一次,那時花費時間、token 用量與困難都已經散掉了。

How:留言文本留在 sub agent 裡,主代理只留決策與帳務。`pr-watch.sh` 收到 `10` 就回頭跑同一套留言流程(歸屬、共識、sub agent 修正、逐則結果、時間戳、日誌),跑完再盯一次,審查者要幾輪就幾輪;收到 `0` 再用 `wp-gate.sh check` 分辨已合併與被關掉沒合併,後者回報後停下,不算完成。時間戳一律寫回分析頁**既有**的 PR 欄,不加新欄,分析頁的欄位屬於 `analyze`。日誌一律附加到同一頁 `LOG_{HASH}`,`--pending-file` 暫存的內容併進同一次寫入,寫成功才清除——暫存不等於已寫入。

Who:跑 SDLC 實作階段的每個工作階段,以及接手同一份分析的下一個人。
2026-08-27 11:20:29 +08:00
jiantw83 b0dcdaab24 feat(wp-gate): 新增 claim 與 owns,把工作包歸屬寫進閘門
What:`tools/wp-gate.sh` 新增 `claim {owner}/{repo} {wp-number} [--analyze {分析頁頁名}]` 登錄領取、`owns {owner}/{repo} {index} [--wp {wp-number}]` 比對某支 PR 是不是自己這一包的;`lock` 新增 `--wp` 把 PR 掛到工作包名下;`check` 判定已合併時一併交回領取紀錄。新增狀態 `claimed`、`owned`、`foreign`、`unowned`,`foreign` 回 `1`,`owned` 與 `unowned` 回 `0`。

Why:同一份分析常有好幾包平行進行,每包各自的 worktree 與 PR。動任何一支 PR 之前要先確認它是自己這一包的,靠的必須是狀態檔而不是記憶——記憶跨不了工作階段。

How:歸屬一律以分析頁的工作包代號為準,不看分支名、不看 worktree 目錄名,那兩個都可能被改,改了也沒有徵兆。`WP-03`、`WP-3`、`3` 比對前先正規化成 `WP-03`,不然同一包的兩種寫法會被當成兩包。狀態檔的寫入一律轉呼叫 `jsc-hooks` 的 `sdlc-gate.sh`,本檔只讀不寫:兩邊各拼各的檔案,格式一改就對不上。查無歸屬(沒有領取紀錄、工作包還沒掛上 PR)一律 `unowned` 並放行只提醒,這與「查不到就擋」不衝突——那條講的是查得到卻查失敗,這條講的是根本還沒有歸屬可查。擋人時要講得出對方是誰,所以 `foreign` 會指出那支 PR 掛在哪一包名下。合併後交回領取紀錄前先確認領取檔登記的正是這一包,中途改領別包時直接交回會把還在進行的那一包的歸屬清掉。

Who:`jsc-sdlc:implement` 領包、開 PR 與處理留言的每一步,以及跨工作階段接手同一份分析的人。
2026-08-27 11:20:29 +08:00
jiantw83andClaude Opus 5 78fb70a099 fix(references): 修正 cpm-chart 的簡體字並同步 manifest 版本
What: 把 references/cpm-chart.md 第 14 行的「出现」改成正體「出現」,
並把三份 manifest 的版本由 0.1.7 bump 到 0.1.8。

Why: 存取庫文件一律用正體中文,簡體字會被 STE100 語言檢查擋下,也讓讀規則
的人分心。技能內容有異動就要 bump 版本,安裝端才拿得到新版。

How: 只換掉那一個字,句子其餘文意不動。接著跑 ste100-lint.sh 掃全庫的 .md、
.json 與程式碼檔,再用簡體字全表、U+FFFD、雙重編碼特徵與非 UTF-8 四項掃過每個
受版控的檔案,兩輪都零命中。最後用 sync-skill-manifest.sh 同步 plugin.json、
.claude-plugin/plugin.json、.codex-plugin/plugin.json。

Who: Jeffery

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 09:40:47 +08:00
jiantw83 868e4345e9 feat(manifest): 三份 manifest 版本升到 0.1.7
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 的 version 由 0.1.6 改為 0.1.7。
Why:本次為 implement、maintain 與 TDD 參考文件新增註解界線規則,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。
How:三份 manifest 只改 version 一個欄位,其餘內容不動,三份保持同一版號。
Who:jsc-sdlc 外掛的套件描述檔。
2026-08-26 19:00:56 +08:00
jiantw83 f503091655 feat(readme): README 同步 implement 與 maintain 的註解界線
What:README 的 implement 與 maintain 兩段說明各補一句註解界線,點出各自禁止寫進註解的追蹤資訊。
Why:README 是技能的對外說明,兩支技能已加規則,說明沒跟上就會讓使用者誤以為註解沒有限制。
How:兩段各補一句,內容與 SKILL.md 的指引一致,完整清單指向 jsc-review 的 references/comment-scope.md。
Who:jsc-sdlc 的 README 技能說明區塊。
2026-08-26 19:00:56 +08:00
jiantw83 31ba3f490a feat(tdd): TDD 循環規則新增註解只寫原因
What:references/tdd.md 的循環規則新增第 4 項「註解只寫原因」,並寫成單一待辦的完成條件。
Why:註解界線要在紅綠循環當下就守住,不能等到審查階段才回頭清,否則追蹤編號早已散進整包 diff。
How:規則只寫一句界線加完成條件,完整清單與白名單指向 jsc-review 的 references/comment-scope.md。
Who:jsc-sdlc 的 TDD 參考文件,implement 與 maintain 兩支技能共用。
2026-08-26 19:00:56 +08:00
jiantw83 e6e3e176ef feat(maintain): maintain 步驟加上註解界線規則
What:步驟 3 新增 3.3「註解只寫原因」,原 3.3、3.4 順延為 3.4、3.5。
Why:維護階段常改到既有註解,議題編號、commit hash、分支名、人名與 @ 提及很容易順手留在註解裡,讓註解變成追蹤記錄。
How:規則正文放在 jsc-review 的 references/comment-scope.md,本技能只寫指引與完成條件,不重複清單;並指向 jsc-hooks 的 comment-scope.sh 當寫檔後的即時警告。
Who:jsc-sdlc 的 maintain 技能。
2026-08-26 19:00:56 +08:00
jiantw83 cd95c22bd4 feat(implement): implement 步驟加上註解界線規則
What:步驟 9 新增 9.3「註解只寫原因」,原 9.3 順延為 9.4;步驟 10 交給 code-review 前先掃整包 diff。
Why:實作階段手上一直握著工作包編號、分析頁編號、待辦編號、分支名與 PR 編號,這些追蹤資訊很容易被寫進程式碼註解,讓註解變成文件索引。
How:規則正文放在 jsc-review 的 references/comment-scope.md,本技能只寫指引與完成條件,不重複清單;並指向 jsc-hooks 的 comment-scope.sh 當寫檔後的即時警告。
Who:jsc-sdlc 的 implement 技能。
2026-08-26 19:00:56 +08:00
jiantw83 87d73034c5 fix(implement): 工作包 PR 閘門改為只檢查候選工作包自身相依,並修正平行工作包共用 worktree 路徑衝突 2026-08-26 17:59:08 +08:00
jiantw83 a82f06b702 fix(analyze): 修正 CPM 甘特圖用小數天數的 dateFormat X 導致 Gitea 渲染 Invalid date,改用 dateFormat YYYY-MM-DD 錨點日期、整數小時與 after 串接 2026-08-26 15:33:04 +08:00
jiantw83andClaude Opus 5 4a4feaf6ef feat(sdlc): 四階段收尾一律回報
What:新增 tools/stage-report.sh 與 references/stage-report.md,四支階段技能各加一步收尾回報:模型能力標籤判定、工作日誌連結、所有寫入的 wiki 連結;實作階段再加工作目錄與來源、工作、目標三條分支。

Why:階段跑完該交代什麼是固定的,寫在內文靠模型自己記,少一項看不出來。沒寫工作日誌更是如此——內容只留在對話裡,換一個工作階段就沒了。

How:彙整搬到程式層。頁名換絕對網址、commit 數與推送狀態由 git 現查、來源分支在不在遠端也由腳本判定;模型閘門那一列只轉述 sdlc-gate.sh report,不自評。沒有工作日誌就警告使用者檢查,並把內容交給 jsc-log 的暫存區,下次寫日誌一併寫入。結束碼 1 是警告不是阻擋,提前停下來也要回報。

Who:跑 SDLC 四階段的人,以及接手看紀錄的人。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 09:19:43 +08:00
jiantw83 a52e47be80 chore(sdlc): 三份 manifest 同步升版到 0.1.5 2026-08-25 18:59:37 +08:00
jiantw83 f299d1706a docs(sdlc): 補上 wp-gate.sh 工具說明與兩層閘門分工 2026-08-25 18:59:37 +08:00
jiantw83 ec23f6ee12 feat(implement): 未合併 PR 改為程式層硬閘門,留言自動修正 2026-08-25 18:59:37 +08:00
jiantw83andClaude Opus 5 4dcf5a7401 chore(sdlc): 三份 manifest 同步升版並同步 marketplace 正本
What:三份 plugin manifest 版本同步 bump,兩份 marketplace 檔與 plugins/meta 正本對齊。

Why:準則要求技能異動必須同步升版;marketplace 副本必須與正本完全一致。

How:以 jsc-meta 的 tools/sync-skill-manifest.sh 升版,marketplace 檔由正本複製。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 14:58:54 +08:00
jiantw83andClaude Opus 5 821261ad9d docs(sdlc): 同步文件與參考資料
What:更新 README、AGENTS.md、templates 與 references,讓文件敘述與實際行為一致。

Why:稽核發現多處文件與程式行為分歧,違反「每個意義只有單一真實來源」。

How:以實際程式行為為準改寫敘述,重複的規則收成單一來源並以一行指引指過去。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 14:58:54 +08:00
jiantw83andClaude Opus 5 b78f7e8b3f fix(sdlc): 補齊稽核缺失並修掉護欄失效
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、
把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。

Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。
完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。

How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有
documented exit codes,並以真實執行驗證每條路徑。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 14:58:54 +08:00
jiantw83andClaude Opus 5 7efdb6fe39 chore(plugin 版本): 三份 manifest 升版至 0.1.2
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 13:03:17 +08:00
jiantw83andClaude Opus 5 b0a3fdb3fe docs(README): 同步閘門每次回報的規則
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 13:03:17 +08:00
jiantw83andClaude Opus 5 58792b60c7 feat(閘門回報): 模型能力標籤檢查結果每次都要回報使用者
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 13:03:17 +08:00
jiantw83andClaude Opus 5 ad64568cdf chore(plugin 版本): 三份 manifest 升版至 0.1.1
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 12:08:11 +08:00
jiantw83andClaude Opus 5 a5e6eec92c docs(README): 同步 PR 阻擋與留言檢查流程
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 12:08:11 +08:00
jiantw83andClaude Opus 5 3cc5bb5cd2 feat(PR 阻擋): PR 未合併不開下一包,檢查時一併讀留言並詢問是否修正
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 12:08:11 +08:00
jiantw83andClaude Opus 5 d8656a4ca3 chore(plugin 版本): 三份 manifest 升版至 0.1.0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:58:11 +08:00
jiantw83andClaude Opus 5 dacc9b86d5 docs(README): 同步一包一 PR 與來源分支即 PR 目標的說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:58:11 +08:00
jiantw83andClaude Opus 5 878d34b177 feat(一包一 PR): 每個工作包完成即 commit、push、PR 回來源分支
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:58:11 +08:00
jiantw83andClaude Opus 5 160e93f65a docs(README): 同步「一律以遠端為準」的分支規則
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:10:55 +08:00
jiantw83andClaude Opus 5 543fd8c695 feat(分支基準): 參考與來源分支一律取遠端 origin,動作前先 fetch
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:10:55 +08:00
jiantw83andClaude Opus 5 082104c550 chore(plugin 版本): 三份 manifest 升版至 0.0.9
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:04:33 +08:00
jiantw83andClaude Opus 5 9a85af6c4e docs(README): 同步 worktree 流程與分支規則說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:04:33 +08:00
jiantw83andClaude Opus 5 87af245d54 feat(worktree): 實作階段動程式碼前先從來源分支建立 worktree
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:04:33 +08:00
jiantw83andClaude Opus 5 c932ab2b36 chore(plugin 版本): 三份 manifest 升版至 0.0.8
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 18:54:19 +08:00
jiantw83andClaude Opus 5 2a1dcc59e9 fix(wiki 連結): 目錄頁連結方向修正、跨頁型改絕對網址、工作證不再假裝連結
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 18:54:19 +08:00
jiantw83andClaude Opus 5 1d186bf141 chore(plugin 版本): 三份 manifest 升版至 0.0.7
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 18:00:35 +08:00
jiantw83andClaude Opus 5 6fe31d1d1a docs(README): 安裝入口改為 plugins/meta 並補上遷移說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 18:00:35 +08:00
jiantw83andClaude Opus 5 b5f28e57f9 refactor(分支規則): 分支確認改用 sdlc 自帶的 references/branch.md,移除對 jsc-shared 的相依
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:37:12 +08:00
jiantw83andClaude Opus 5 4b5385175b chore(plugin 版本): 三份 manifest 升版至 0.0.6
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:24:31 +08:00
jiantw83andClaude Opus 5 811eae8fd0 docs(README): 補上交付頁型、共識規則與交付內容型別的說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:24:31 +08:00
jiantw83andClaude Opus 5 62fd2a6022 feat(交付與共識): 交付工作包獨立為 WP-01、新增交付內容型別與共識判定規則
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 17:24:31 +08:00
jiantw83andClaude Opus 5 9a6ca0f9ee chore(plugin 版本): 三份 manifest 升版至 0.0.5
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 16:05:19 +08:00
jiantw83andClaude Opus 5 ef4cbc8f88 docs(README): 更新階段閘門判定與分支確認說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 16:05:19 +08:00
jiantw83andClaude Opus 5 8df6948c5c feat(SDLC 階段): 閘門改為能力標籤程式判定,分析與實作先確認分支,交接工作包優先
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 16:05:18 +08:00
jiantw83 8d2b715995 refactor(sdlc): 消除四個 SDLC skill 間重複邏輯,改為委派唯一權威來源
What(做了什麼):
1. 移除 plan、analyze、implement 三個 skill 及 README.md 中各自重述的 wiki hash 演算法說明(原本各處都各自寫一遍「取 SHA-1 前 8 碼大寫十六進位,開頭若為數字或 A/B/C 則替換為 H 加後 7 碼」),改為統一指向唯一權威工具 jsc-gitea/tools/hash-id(透過 jsc-gitea:wiki 使用)。
2. 移除 plan、analyze、implement、maintain 四個 skill 中重複的 model chain fallback 選擇邏輯說明(原本各自描述「執行 jsc-cli/tools/model-config.sh get {stage},若印出 chain 則取目前 CLI 可用的第一個,fallback 依 chain 順序套用」),改為統一呼叫新的共用子指令 jsc-cli/tools/model-config.sh resolve {stage},由該子指令自行封裝解析邏輯(此 resolve 子指令由另一位 agent 同時在 sibling repo jsc-cli 開的配套 PR 新增,本 PR 依賴該 PR)。
3. implement/SKILL.md 移除自身多餘的「先解析環境變數」步驟(原第 2 步,手動檢查 JSC_WIKI_REPO_ANALYZE、JSC_WIKI_REPO、JSC_WIKI_REPO_QUESTION、GITEA_HOST、GITEA_TOKEN 後才詢問使用者),因為此解析已由 implement 其他步驟委派的 jsc-gitea:wiki 正確處理,屬於死重複邏輯;後續步驟由 2-8 重新編號為 2-7。
4. maintain/SKILL.md 在 frontmatter description 欄位加入明確的負向觸發說明,釐清此 skill 僅用於已交付、仍在維護窗口內的專案,「不適用於仍在實作中或尚未登錄於 MAINTAIN_CONTENTS 的專案」。
5. plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份版本號檔案,由 0.0.3 升版至 0.0.4。

Why(為什麼改):
四個 SDLC skill 各自重述相同的 hash 演算法與 model chain fallback 邏輯,違反 jsc-meta:skill-check 稽核準則中「單一權威來源」的要求,日後維護容易改一處漏一處;implement 的環境變數解析步驟與其他步驟委派的 jsc-gitea:wiki 功能重疊,屬死碼;maintain 的觸發時機描述不夠明確,容易被誤用在尚未進入維護窗口的專案上。

How(怎麼改的):
將重複邏輯抽離,改為指向或呼叫唯一權威工具/skill(jsc-gitea/tools/hash-id、jsc-cli/tools/model-config.sh resolve、jsc-gitea:wiki),移除 implement 中的死步驟並重新編號,於 maintain frontmatter 補上負向觸發描述,並同步升版三份 plugin.json。全程不改變任何對外行為,純屬重構。

Who(誰/哪個需求):
jsc-meta:skill-check 對 plan、analyze、implement、maintain 四個 SDLC skill 的例行合規稽核修正。
2026-08-24 14:50:22 +08:00
jiantw83 da64e97e28 fix(marketplace): 同步 marketplace.json 中繼資料至 canonical 版本
What(做了什麼):
修正 .claude-plugin/marketplace.json 與 .agents/plugins/marketplace.json 兩份 marketplace 清單,使其欄位與格式與 plugins/jsc 的 canonical marketplace.json 一致。.agents/plugins/marketplace.json 補上缺漏的頂層 description、owner 欄位,並為全部 11 個 plugin 項目(jsc-ask、jsc-cli、jsc-git、jsc-gitea、jsc-hooks、jsc-log、jsc-meta、jsc-pkg、jsc-review、jsc-sdlc)補上各自的繁體中文用途描述;.claude-plugin/marketplace.json 則將 jsc-meta 描述中的斜線寫法(「新建/更新/刪除技能」)改為 canonical 的頓號寫法(「新建、更新、刪除技能與技能準則」)。

Why(為什麼改):
兩份清單長期與 canonical marketplace.json 不同步,缺欄位與描述格式不一致,會造成各 AI CLI 讀到不完整或不一致的 plugin 資訊,也不符合 jsc-meta:skill-check 的稽核基準。

How(怎麼改的):
以 plugins/jsc 的 canonical marketplace.json 為基準逐欄比對,補齊缺漏欄位、統一描述文字格式,純屬中繼資料調整,不涉及任何 skill 行為邏輯變更。

Who(誰/哪個需求):
jsc-meta:skill-check 例行合規稽核中的 marketplace 中繼資料同步項目。
2026-08-24 14:50:12 +08:00
jiantw83andClaude Fable 5 923fb8e83e chore(manifest): 三份 plugin.json 版本升至 0.0.3
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 由 0.0.2 升為 0.0.3。

Why:本次加入指定模型閘門與 sdlc-gate 階段鎖定屬功能性變更,需要提升版本號讓各 AI CLI 的 plugin 更新機制偵測到新版並重新安裝。

How:同步修改三份 manifest 的 version 欄位,維持三處版本一致。

Who:jsc-sdlc plugin 的安裝與更新流程(jsc-cli:deploy 及各 CLI 原生 plugin 指令)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 11:37:01 +08:00
jiantw83andClaude Fable 5 91d88df37b docs(readme): 說明指定模型鏈閘門與 sdlc-gate 階段鎖定機制
What:README 開頭的階段模型檢查說明改寫:每次切換階段先以 jsc-cli/tools/model-config.sh get {stage} 解析指定模型鏈(專案 .jsc/models 優先於 $JSC_HOME/models.conf),未設定才退回能力標籤檢查;通過後由 jsc-hooks 的 sdlc-gate hook 鎖定模型直到下一階段重新上鎖。「相關 domain」清單同步更新:jsc-cli 條目補上指定模型鏈工具,新增 jsc-hooks 條目說明 sdlc-gate 階段模型鎖定。

Why:四個技能的閘門邏輯已改為指定模型優先、標籤備援並上鎖,README 若仍描述舊的「僅檢查能力標籤」流程會誤導使用者,也漏掉新依賴的 jsc-hooks domain。

How:改寫首段的階段檢查敘述,補明設定檔優先序與鎖定生效範圍(同一階段內換模型會被擋下);相關 domain 章節加入 jsc-hooks 連結並擴充 jsc-cli 條目。

Who:jsc-sdlc domain 的 README 文件,服務安裝與使用此技能組的使用者。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 11:36:49 +08:00
jiantw83andClaude Fable 5 2705771c20 feat(gate): 四階段模型閘門改為指定模型優先、能力標籤備援,並以 sdlc-gate 上鎖
What:plan、analyze、implement、maintain 四個 SKILL.md 的第一步從單純的能力標籤檢查,改為「模型閘門與階段上鎖」三段流程:先以 jsc-cli/tools/model-config.sh get {stage} 解析該階段的指定模型鏈,鏈上第一個當前 CLI 可用的模型即為必用模型;沒有設定指定模型時才退回 jsc-cli:models 的能力標籤檢查。閘門通過後執行 jsc-hooks/hooks/sdlc-gate.sh lock {stage} {current-model} 寫入鎖檔,並以 sdlc-gate.sh report 驗證。

Why:原本只驗能力標籤,同一標籤下模型可任意替換,階段中途換模型也無人攔阻,導致產出品質與可重現性不穩定。改為指定模型鏈優先可讓團隊明確指派每階段用哪個模型,標籤備援則保留未設定時的彈性;上鎖後由 hook 在每次 prompt 強制檢查,階段內換模型會被擋下。

How:每個技能的步驟一拆成三小步(解析模型鏈、驗證當前模型、上鎖並驗證鎖檔),各小步附完成條件;maintain 另加第四小步,明確規定只在換階段時重跑閘門,維護階段內跨專案不重複驗證。frontmatter description 同步更新。鎖定自 plan 起手生效,直到下一階段(如 analyze)的閘門重新上鎖前,強制沿用同一模型。

Who:jsc-sdlc 的 plan/analyze/implement/maintain 四個技能,及依賴其閘門行為的 jsc-hooks sdlc-gate hook。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 11:36:33 +08:00
jiantw83 1153f7f064 fix(wiki): 統一 SDLC wiki 頁命名與 ERROR 範本 2026-08-21 16:53:17 +00:00
jiantw83andClaude Fable 5 a245ae8eea chore(sdlc): 加入統一 jsc marketplace 副本(與正本一致,任一 repo 可作註冊入口)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:37:51 +08:00
jiantw83andClaude Fable 5 87557df539 style(sdlc): 中文並列改頓號
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:29:47 +08:00
jiantw83andClaude Fable 5 71bebc6848 docs(sdlc): translate SKILL.md into English per guidelines
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:29:47 +08:00
jiantw83andClaude Fable 5 9f606b277b style(sdlc): 依 STE100 擬人台灣感規則改寫語感
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:17:32 +08:00
jiantw83andClaude Fable 5 ebd1aa9eb9 docs(sdlc): AGENTS 語言規則改指向 jsc-meta 的 references/ste100.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:13:27 +08:00
jiantw83andClaude Fable 5 bc4aff7bf4 docs(sdlc): README 安裝/更新/移除改為每指令一行(五個 CLI)並為相關 domain 加上 repo 連結
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:03:40 +08:00
jiantw83andClaude Fable 5 8bc4ab4f83 chore(sdlc): 版本號改為 0.0.1 並移除個別 marketplace(統一為 jsc)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:03:40 +08:00
jiantw83andClaude Fable 5 daf49bdd28 docs(sdlc): 以統一格式改寫繁體中文 README 與 AGENTS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 13:08:43 +08:00
jiantw83andClaude Fable 5 167f62a35c feat(sdlc): 匯入 jsc-sdlc 技能組
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 13:08:43 +08:00
jiantw83andClaude Fable 5 bd81aa8152 chore(sdlc): 修正範本 manifest 與移除 hello 範例符合 sdlc 領域
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 13:08:18 +08:00
jiantw83 227878e65e Initial commit 2026-08-21 04:43:16 +00:00