7.3 KiB
7.3 KiB
name, description
| name | description |
|---|---|
| skillset-update | Apply one change request across the whole jsc skill set — multiple skills in multiple domains in one pass. Ask the change details via decision tree, sync every domain repo from the Gitea canonical marketplace, apply the change per affected domain via sub agents, re-check against the guidelines checklist until it passes, open a PR per affected repo via jsc-git pr, then deploy the change into the current session, verify it runs, and append the change report to wiki SKILLSET_{HASH}. Use when a change spans multiple skills or domains; not for a single skill (use skill-update). |
skillset-update — apply one change across the skill set
Single source of guidelines: ../../references/guidelines.md.
Flow
- Ask for the change details via the
jsc-ask:askdecision tree: what rule or behavior changes, which skills and which domains are affected. Include three required checks before the affected-skill list is final: whether any deterministic input/output flow must move totools/, whether any detailed flow must run as a sub agent, and whether any wiki or Gitea flow must read inherited environment variables before asking the user. Every option states its impact scope (example: changing a shared flow step touches every skill that calls it). Completion condition: the affected-skill list and the three checks are agreed with the user. - Run
tools/sync-domains.shto sync every domain repo of the Gitea canonical marketplace. Completion condition: the script exits 0 and prints onedomain<TAB>pathline per marketplace domain — exit 0 is the only code that means every repo is present and current. Exit 3 means some repos were not updated: reconcile every path named on stderr (commit or stash the dirty tree, or fix the failing pull) and rerun; when the user confirms a dirty tree is intentional local work, record that decision and continue on the local version — never read exit 3 as current. Exit 2 means a domain could not be cloned and exit 1 means the canonical marketplace was unreadable — resolve either before continuing. - Apply the change to every affected skill — the modification part MUST run as a sub agent, one sub agent per affected domain repo: modify SKILL.md and related files and tools. Then run
tools/sync-skill-manifest.sh {domain-path}directly (no sub agent needed) for each affected domain repo to sync that domain README's 「Skills 目錄」 section and bump the version in all three manifests. Completion condition: every affected domain repo carries the change, the README sync, and the manifest bump. - Check every item of the guidelines.md audit checklist for each touched skill. On any failure, return to step 1: ask again and fix, until all items pass. Completion condition: every checklist item passes for every touched skill.
- Call
jsc-git:pronce per affected domain repo to open a Push Request. Completion condition: every affected repo has a PR URL, and all URLs are reported in one table with the format inreferences/pr-report.md. - Apply the batch change to the current working session, verify it works, then report:
- Force the change into the session — which of the two routes applies depends on where the change has reached, because the marketplace and
version-guard.shboth read each repository's default branch (master), sojsc-cli:deploycannot see anything that stopped atdevelop:- Every affected repo's PR is merged all the way to
master: calljsc-cli:deployin update mode so every installed CLI loads the new version of every affected plugin, and restart the CLI when it asks (the deploy writes$JSC_HOME/restart-required; see guidelines.md「部署後重啟閘門」). When the deploy cannot update a CLI, record which CLIs did load the new versions and carry on with one of those; when none did, stop and report the change as unverified. Completion condition:claude plugin list(or the equivalent command of another installed CLI) prints every affectedjsc-{domain}at the version its three manifests now carry. - Any affected repo is still short of
master(waiting on review, or merged only intodevelop): deploying is pointless and its completion condition is unreachable, so verify against the worktree instead — run the next sub-step against each/root/plugins/{domain}rather than the installed copies, mark the report as 「工作樹驗證、尚未部署」, and list every release PR that still has to merge before the change reaches any CLI. A change spanning several repos reaches the CLIs only when the last of them merges, so name them all. Completion condition: the verification sub-step passed against every affected worktree and every outstanding release PR is named in the report.
- Every affected repo's PR is merged all the way to
- Verify the function concretely: run
tools/list-skills.shand check the row of every touched skill against the change, then run every tool this change touched with real arguments and compare each exit code against its documented meaning. Invoke one touched skill per affected domain as/jsc-{domain}:{name}and confirm the CLI loads the changed SKILL.md body. 用jsc-cli/tools/detect-clis.sh偵測已安裝的測試環境 CLI;每個支援非互動 Prompt 的 CLI,都要對每個受影響 domain 實際送出一個最小 Prompt,呼叫一個被異動的技能,並記錄 CLI 結束碼與 stderr。Prompt 若因 CLI 工具、plugin 安裝、hook 接線、模型標籤表或設定而失敗,先跑jsc-cli:doctor,再用jsc-cli:setup修復待修項目,然後重跑同一個 Prompt。hook 冒煙測試若失敗,交給jsc-hooks:hooks-install,由它把 hook 接線或執行期錯誤轉給jsc-hooks:repair。若根因是技能組本身的規格、工具或 hook 實作,修正對應 domain,跑 manifest 同步與驗證,然後用jsc-git:pr develop開 PR;PR 送出後回到本步驟重跑同一個 Prompt。只有每個可測 CLI Prompt 都沒有非預期 stderr,或該 CLI 以明確原因列為不可測,才能停止。On any mismatch — a stale row, an exit code the tool's own documentation does not describe, an unchanged body, a prompt failure, or unexpected stderr — fix the cause and rerun this step from 6.1. Completion condition: every touched skill's row matches the change, every touched tool ran with an expected exit code, one command per affected domain loaded, every checkable test-environment CLI completed the prompt without unexpected stderr, and every untestable CLI has a stated reason. - Write the change report to wiki page
SKILLSET_{HASH}— this part MUST run as a sub agent, one sub agent per affected domain repo. Calljsc-gitea:wiki;{HASH}comes from that repo's{owner}/{repo}, and the wiki repo resolves throughJSC_WIKI_REPO_SKILLSETfirst, thenJSC_WIKI_REPO. Append a section for this change — date, 「批次更新」, the change request in one line, touched skills, changed files, PR URL, the step 6.2 verification result per item — and keep every earlier section. Add each page toSKILLSET_CONTENTSwhen it is new. When a write fails — no{owner}/{repo}resolves, orjsc-gitea:wikireports an API error — hand the page name and the unwritten entry back to the user and leave this step open; never close the flow on an unwritten report. Completion condition: every affected repo's page holds the new section plus all earlier sections, andSKILLSET_CONTENTSlinks them all.
- Force the change into the session — which of the two routes applies depends on where the change has reached, because the marketplace and