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 的例行合規稽核修正。
2.8 KiB
2.8 KiB
name: maintain description: SDLC maintenance stage. Gate on the designated model (model-config) or capability tags for the maintenance stage, lock the model via sdlc-gate, read projects still inside their maintenance window from MAINTAIN_CONTENTS, then run one sub agent per project: switch to develop or master, propose at least five maintenance actions, commit to a new branch, push, and PR. Update the last-maintained timestamp afterward. Use for periodic upkeep of delivered projects inside their maintenance window; not for projects still mid-implementation or not yet registered in MAINTAIN_CONTENTS.
maintain
Goal: run routine maintenance for every project in the maintenance contents page.
All wiki reads and writes go through jsc-gitea:wiki.
Steps
- Model gate and stage lock:
- Run
jsc-cli/tools/model-config.sh resolve maintainto get the required model; if it prints nothing, fall back to the 「SDLC 階段需求」 table fromjsc-cli:models(any listed model qualifies for maintenance). - If the current model is not the required model, or is missing from the mapping table, block the flow and tell the user which model to switch to. Completion condition: the current model satisfies the gate.
- Lock the stage: run
jsc-hooks/hooks/sdlc-gate.sh lock maintain {current-model}. From now until the next SDLC stage's gate runs, the sdlc-gate hook enforces this model on every prompt; switching models mid-stage gets blocked. Completion condition: the lock file is written, verified withsdlc-gate.sh report. - Run this gate only when the stage changes; inside the maintenance stage the lock already enforces the model, so never re-gate between projects.
- Run
- Read
MAINTAIN_CONTENTSviajsc-gitea:wikiand filter projects still inside their maintenance window: start date ≤ today, and (end date is NULL or ≥ today). - Every project MUST run as a sub agent with this flow:
- Switch the project to the
developbranch, falling back tomaster, and pull to latest. - Propose at least five maintenance methods and apply the ones that fit the project, for example:
- dependency updates (reuse
jsc-pkg:pkg-update) - security vulnerability scan and patching
- dead code and stale comment cleanup
- test coverage reinforcement
- docs and README synchronization
- build warning elimination
- dependency updates (reuse
- Commit the changes to a new branch per
jsc-git:commit, push, then open a PR back to develop or master perjsc-git:pr. - Update the project's last-maintained field (the zh-TW column 「前次維護時間」) in
MAINTAIN_CONTENTSto today.
- Switch the project to the
- The main agent reports the summary: maintenance methods applied per project, PR links, and failure reasons. The report and all generated wiki content, commits, and PR descriptions stay Traditional Chinese per the STE100 rule.