diff --git a/skills/skill-delete/SKILL.md b/skills/skill-delete/SKILL.md index 12ca9d7..753b1a8 100644 --- a/skills/skill-delete/SKILL.md +++ b/skills/skill-delete/SKILL.md @@ -3,20 +3,20 @@ name: skill-delete description: Remove a skill from the jsc skill set safely. List skills, let the user pick, inventory every file referencing the skill via a sub agent, fix each affected file through decision-tree questions until guideline checks pass, then delete the skill and open a PR via jsc-git pr. Use only for removal; not for renaming (use skill-update). --- -# skill-delete — 刪除技能 +# skill-delete — delete a skill -準則單一來源:[`../../references/guidelines.md`](../../references/guidelines.md)。 +Single source of guidelines: [`../../references/guidelines.md`](../../references/guidelines.md). -## 流程 +## Flow -1. 列出技能組內含的所有技能:掃描 `jsc-*/skills/*/SKILL.md`。 -2. 讓使用者選擇要刪除的技能(選項標明影響範圍:被哪些技能引用、刪除後指令即失效)。 -3. 盤點與此技能關聯的所有檔案,此步驟**必須以 sub agent 執行**: - - `grep -r` 技能名稱與 `/jsc-{domain}:{name}`,掃過所有 jsc-* 存取庫 - - 其他 SKILL.md 的引用、domain README「Skills 目錄」、`plugins/jsc` 的兩份 marketplace.json、`tools/`、`jsc-hooks` 接線 -4. 逐檔執行: - 1. 判斷刪除技能後,該檔是否需要修正才能維持既有功能;**不需要修正就跳過**剩下的流程。 - 2. 依 `jsc-ask:ask` 決策樹詢問修正細節(改為呼叫替代技能?內聯流程?一併移除功能?),每個選項標明影響範圍。 - 3. 修正後依 guidelines.md「審核檢查清單」檢查;不符合就回到步驟 4.2。 -5. 刪除技能目錄 `skills/{name}/`,同步 domain README 與三份 manifest 的 version bump。 -6. 呼叫 `jsc-git:pr` 建立 Push Request。 +1. List every skill in the skill set: scan `jsc-*/skills/*/SKILL.md`. +2. Let the user pick the skill to delete. Options state the impact scope: which skills reference it, and that its command stops working after deletion. +3. Inventory every file related to the skill — this step MUST run as a sub agent: + - `grep -r` for the skill name and `/jsc-{domain}:{name}` across all jsc-* repositories + - References in other SKILL.md files, the domain README's 「Skills 目錄」 section, the two marketplace.json files in `plugins/jsc`, `tools/`, and the `jsc-hooks` wiring +4. For each affected file: + 1. Decide whether the file needs a fix to keep its current behavior after the deletion. If no fix is needed, **skip the rest of this loop**. + 2. Ask for fix details via the `jsc-ask:ask` decision tree (call a replacement skill? inline the flow? drop the feature too?). Every option states its impact scope. + 3. After fixing, check the guidelines.md audit checklist. On failure, return to step 4.2. +5. Delete the skill directory `skills/{name}/`, then sync the domain README and bump the version in all three manifests. +6. Call `jsc-git:pr` to open a Push Request. diff --git a/skills/skill-new/SKILL.md b/skills/skill-new/SKILL.md index b56d95e..ee3255d 100644 --- a/skills/skill-new/SKILL.md +++ b/skills/skill-new/SKILL.md @@ -3,24 +3,24 @@ name: skill-new description: Create a new skill in the jsc skill set. Ask skill details via decision tree, generate the skill under the right jsc-{domain} per guidelines.md (create the domain from the template repo if missing), then open a PR via jsc-git pr. Use when the user wants to add a skill; not for editing an existing one (use skill-update). --- -# skill-new — 新建技能 +# skill-new — create a skill -準則單一來源:[`../../references/guidelines.md`](../../references/guidelines.md)。 +Single source of guidelines: [`../../references/guidelines.md`](../../references/guidelines.md). -## 流程 +## Flow -1. 依 `jsc-ask:ask` 決策樹詢問技能細節,直到沒有疑慮: - - 目標(單一、與既有技能不重複;先掃 `jsc-*/skills/*/SKILL.md` 列出相近技能供比對,選項需標明「複用既有」與「新建」的影響範圍) - - 觸發時機(何時用、何時不用、觸發關鍵字) - - 輸入與輸出(是否有標準輸入輸出可下放 `tools/`;是否需要 gitea 操作,需要就讓技能使用 `jsc-gitea/tools/gitea.sh` + token) - - 所屬 domain(列出現有 `jsc-*` 供選擇) -2. 若 domain 不存在: - 1. 幫新 domain 想一個簡短的英文代表詞(一個單字為佳),與使用者確認。 - 2. 請使用者建立存取庫 `plugins/{domain}`,clone 後依 `https://gitea.jsc.idv.tw/plugins/template` 的結構建立內容:三份 plugin manifest(plugin 名 `jsc-{domain}`,版本從 `0.0.1` 開始)、`skills/`、README.md、AGENTS.md(不放 marketplace 檔)。 - 3. 把 plugin 條目(URL 來源指向新存取庫)加入 `plugins/jsc` 的 `.claude-plugin/marketplace.json` 與 `.agents/plugins/marketplace.json`。 -3. 依 guidelines.md 產生技能(此步驟**必須以 sub agent 執行**): - - `skills/{name}/SKILL.md`:英文 description(≤ 5 句、含觸發時機)、STE100 繁中內文 - - 可 hook 的規則放 `jsc-hooks`(不可散落本 domain);標準輸入輸出流程放 `tools/` - - 同步該 domain README 的「Skills 目錄」、三份 manifest 的 version bump -4. 依 guidelines.md「審核檢查清單」逐項自檢,不符就修正。 -5. 呼叫 `jsc-git:pr` 建立 Push Request。 +1. Ask for skill details via the `jsc-ask:ask` decision tree until no doubt remains: + - Goal (single and not duplicating an existing skill; first scan `jsc-*/skills/*/SKILL.md` and list similar skills for comparison — options must state the impact scope of "reuse existing" versus "create new") + - Trigger (when to use, when not to, trigger keywords) + - Input and output (can a standard input/output flow move down to `tools/`; does it need Gitea operations — if so, make the skill use `jsc-gitea/tools/gitea.sh` + token) + - Owning domain (list the existing `jsc-*` domains to choose from) +2. If the domain does not exist: + 1. Propose one short English word for the new domain (a single word preferred) and confirm it with the user. + 2. Ask the user to create the repository `plugins/{domain}`. Clone it, then build the content following the structure of `https://gitea.jsc.idv.tw/plugins/template`: three plugin manifests (plugin name `jsc-{domain}`, version starting at `0.0.1`), `skills/`, README.md, AGENTS.md (no marketplace files). + 3. Add the plugin entry (URL source pointing at the new repository) to `.claude-plugin/marketplace.json` and `.agents/plugins/marketplace.json` in `plugins/jsc`. +3. Generate the skill per guidelines.md — this step MUST run as a sub agent: + - `skills/{name}/SKILL.md`: entirely in English (description ≤ 5 sentences with trigger conditions; body in STE100-style English) + - Rules enforceable by hooks go to `jsc-hooks` (never scattered in this domain); standard input/output flows go to `tools/` + - Sync the domain README's 「Skills 目錄」 section and bump the version in all three manifests +4. Self-check every item of the guidelines.md audit checklist; fix anything that fails. +5. Call `jsc-git:pr` to open a Push Request. diff --git a/skills/skill-update/SKILL.md b/skills/skill-update/SKILL.md index 0e87dde..1239c3e 100644 --- a/skills/skill-update/SKILL.md +++ b/skills/skill-update/SKILL.md @@ -3,15 +3,15 @@ name: skill-update description: Update an existing skill in the jsc skill set. List all skills, let the user pick one, ask update details via decision tree, apply the change, re-check against the guidelines checklist until it passes, then open a PR via jsc-git pr. Use for modifying a skill; not for creating (skill-new) or removing (skill-delete). --- -# skill-update — 更新技能 +# skill-update — update a skill -準則單一來源:[`../../references/guidelines.md`](../../references/guidelines.md)。 +Single source of guidelines: [`../../references/guidelines.md`](../../references/guidelines.md). -## 流程 +## Flow -1. 列出技能組內含的所有技能:掃描 `jsc-*/skills/*/SKILL.md`,以「domain / 名稱 / description」清單呈現。 -2. 讓使用者選擇要更新的技能。 -3. 依 `jsc-ask:ask` 決策樹詢問更新細節(改目標?改觸發時機?改流程?下放 hook 或工具?),每個選項標明影響範圍(例:改名會使既有呼叫指令失效)。 -4. 更新技能(此步驟**必須以 sub agent 執行**):修改 SKILL.md 與關聯檔案,同步 domain README「Skills 目錄」與三份 manifest 的 version bump。 -5. 依 guidelines.md「審核檢查清單」逐項檢查;**不符合就回到步驟 3** 重新詢問並修正,直到全部通過。 -6. 呼叫 `jsc-git:pr` 建立 Push Request。 +1. List every skill in the skill set: scan `jsc-*/skills/*/SKILL.md` and present a "domain / name / description" list. +2. Let the user pick the skill to update. +3. Ask for update details via the `jsc-ask:ask` decision tree (change the goal? the trigger? the flow? move rules down to a hook or a tool?). Every option states its impact scope (example: renaming breaks the existing invocation command). +4. Update the skill — this step MUST run as a sub agent: modify SKILL.md and related files, sync the domain README's 「Skills 目錄」 section, and bump the version in all three manifests. +5. Check every item of the guidelines.md audit checklist. On any failure, **return to step 3**: ask again and fix, until all items pass. +6. Call `jsc-git:pr` to open a Push Request.