feat(meta): 準則改為每個存取庫都帶統一 marketplace 副本並同步
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,9 +5,9 @@
|
|||||||
## 命名
|
## 命名
|
||||||
|
|
||||||
1. Plugin 名稱:`jsc-{domain}`,domain 用一個簡短的英文代表詞(例:`ask`、`sdlc`、`gitea`)。
|
1. Plugin 名稱:`jsc-{domain}`,domain 用一個簡短的英文代表詞(例:`ask`、`sdlc`、`gitea`)。
|
||||||
2. Marketplace 統一為 `jsc`,唯一承載存取庫為 `https://gitea.jsc.idv.tw/plugins/jsc.git`;安裝 token 一律 `jsc-{domain}@jsc`。各 domain 存取庫**不放** marketplace 檔。
|
2. Marketplace 統一為 `jsc`,正本在 `https://gitea.jsc.idv.tw/plugins/jsc.git`;安裝 token 一律 `jsc-{domain}@jsc`。**每個 domain 存取庫都帶同一份 marketplace 檔**(`.claude-plugin/marketplace.json` 與 `.agents/plugins/marketplace.json`,內容與正本完全一致),所以任何一個 repo 都能當註冊入口,互相覆蓋沒關係。
|
||||||
3. Skill 名稱:小寫、數字、連字號(`-`),最長 64 字元。名稱即指令(`/jsc-{domain}:{name}`)。
|
3. Skill 名稱:小寫、數字、連字號(`-`),最長 64 字元。名稱即指令(`/jsc-{domain}:{name}`)。
|
||||||
4. 每個 domain 是一個獨立存取庫 `https://gitea.jsc.idv.tw/plugins/{domain}.git`。新 domain 必須依 `https://gitea.jsc.idv.tw/plugins/template` 的結構建立新存取庫(三份 plugin manifest、`skills/`、`README.md`、`AGENTS.md`),並把 plugin 條目加入 `plugins/jsc` 的 `.claude-plugin/marketplace.json` 與 `.agents/plugins/marketplace.json`(URL 來源指向新存取庫)。
|
4. 每個 domain 是一個獨立存取庫 `https://gitea.jsc.idv.tw/plugins/{domain}.git`。新 domain 必須依 `https://gitea.jsc.idv.tw/plugins/template` 的結構建立新存取庫(三份 plugin manifest、`skills/`、`README.md`、`AGENTS.md`),並把 plugin 條目(URL 來源指向新存取庫)加入 `plugins/jsc` 正本的兩份 marketplace 檔,再把更新後的檔案**同步到所有 domain 存取庫**(含新存取庫自己)。
|
||||||
5. Git 分支名**只允許 ASCII**(`a-z0-9` 與 `/`、`-`);中文需求或標題先翻譯成英文短語再 slug 化。
|
5. Git 分支名**只允許 ASCII**(`a-z0-9` 與 `/`、`-`);中文需求或標題先翻譯成英文短語再 slug 化。
|
||||||
6. Manifest 版本號從 `0.0.1` 開始,三份 manifest 同步 bump。
|
6. Manifest 版本號從 `0.0.1` 開始,三份 manifest 同步 bump。
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Single source of guidelines: [`../../references/guidelines.md`](../../references
|
|||||||
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.
|
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:
|
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
|
- `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
|
- References in other SKILL.md files, the domain README's 「Skills 目錄」 section, the two marketplace.json files in `plugins/jsc` plus their synced copies in every domain repo, `tools/`, and the `jsc-hooks` wiring
|
||||||
4. For each affected file:
|
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**.
|
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.
|
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.
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ Single source of guidelines: [`../../references/guidelines.md`](../../references
|
|||||||
- Owning domain (list the existing `jsc-*` domains to choose from)
|
- Owning domain (list the existing `jsc-*` domains to choose from)
|
||||||
2. If the domain does not exist:
|
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.
|
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).
|
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.
|
||||||
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. Add the plugin entry (URL source pointing at the new repository) to `.claude-plugin/marketplace.json` and `.agents/plugins/marketplace.json` in `plugins/jsc` (the canonical copy), then sync the two updated files to every domain repository, including the new one. Every repo carries the same marketplace files, so any repo works as the registration entry point. The sync MUST run as a sub agent.
|
||||||
3. Generate the skill per guidelines.md — this step MUST run as a sub agent:
|
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)
|
- `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/`
|
- Rules enforceable by hooks go to `jsc-hooks` (never scattered in this domain); standard input/output flows go to `tools/`
|
||||||
|
|||||||
Reference in New Issue
Block a user