Files
doc/README.md
T

202 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# jsc — 跨 AI 助理文件化 Skill 集合
一個可同時被 **Claude Code、Codex、Antigravity、OpenCode** 安裝的文件化 skill 集合。
目前內含兩個實作型 skills`doc-docker` 用於整理 `docker-compose.yaml` 的行內註解與標題日期;`doc-funcs` 用於掃描專案 functions、建立 `.docs/` 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例。
核心是以 [Agent Skills`SKILL.md`](https://agentskills.io) 標準撰寫的共用 skills(唯一真實來源放在 `skills/`),
搭配各助理各自的 plugin manifest,讓**同一個 repo** 可用各家**原生 plugin CLI** 安裝。
在 Claude Code 與 Antigravity 中,skill 以 **`/jsc:` 前綴**呼叫(例如 `/jsc:doc-docker`)。
---
## 前綴與呼叫方式
| 助理 | 安裝方式 | 呼叫 | `/jsc:` 前綴 |
| --- | --- | --- | --- |
| Claude Code | `claude plugin`marketplace | `/jsc:<name>` 或自動觸發 | ✅ |
| Codex | `codex plugin`marketplace | `$<name>``/skills` 選單 | ❌(用 `$name` |
| Antigravity | `agy plugin install` | `/jsc:<name>` 或自動觸發 | ✅ |
| OpenCode | skills 目錄(複製/clone) | 描述需求自動觸發 | ❌(依名稱) |
> Codex 不支援自訂前綴(skill 以 `$name` 呼叫,例 `$doc-docker`);OpenCode 由模型依描述自動呼叫。兩者皆**不強制**前綴。
---
## 目錄結構
同一個 repo 同時帶四種 manifest,彼此以路徑隔離、互不干擾;四家都讀同一份 `skills/`
```
doc/
├── .claude-plugin/
│ ├── plugin.json # Claude 外掛定義(name: "jsc"
│ └── marketplace.json # Claude marketplacename: "doc"source 指向本 repo
├── .codex-plugin/
│ └── plugin.json # Codex 外掛定義(name: "jsc"skills: "./skills"
├── .agents/plugins/
│ └── marketplace.json # Codex marketplacename: "doc"url source 指向本 repo
├── plugin.json # Antigravity 外掛定義(name: "jsc"skills: "./skills/"
├── skills/ # ★ 唯一真實來源:所有 skills
│ ├── doc-docker/ # 對齊 docker-compose 註解(含 scripts/
│ │ ├── SKILL.md
│ │ └── scripts/
│ └── doc-funcs/SKILL.md # 為 function 補齊 XML 文件
├── AGENTS.md # 跨助理共用指引
└── README.md
```
---
## 安裝 / 更新 / 移除(各家原生 plugin CLI
> 指令中的 repo 網址:`https://gitea.jsc.idv.tw/plugins/doc.git`
>
> **Claude / Codex 從 git URL 安裝(會 clone 遠端),請先把本 repo `push` 到 gitea。**
> **Antigravity 的 `agy plugin install <url>` 目前只支援 github.com**gitea 請改用「clone + 本地路徑」(見 Antigravity 節)。
> 本機/離線:Claude 可用本地路徑加 marketplaceAntigravity 用本地路徑安裝。
### Claude Code
```bash
# 安裝
claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/doc.git
claude plugin install jsc@doc
# 更新
claude plugin marketplace update doc
claude plugin update jsc@doc
# 移除
claude plugin uninstall jsc@doc
claude plugin marketplace remove doc
```
- 工作階段內 slash 版(等價):把 `claude plugin` 換成 `/plugin`
- 本機開發(免 push):`claude plugin marketplace add C:\Users\h3285\source\repos.plugins\doc`(本地路徑)後再 install。
- **呼叫**`/jsc:<name>`(例 `/jsc:doc-docker`)。
### Codex
```bash
# 安裝
codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/doc.git
codex plugin add jsc@doc
# 更新(重新抓取 marketplace 的 git 快照)
codex plugin marketplace upgrade doc
# 移除
codex plugin remove jsc@doc
codex plugin marketplace remove doc
```
- 安裝 token `jsc@doc` = plugin 名(`.codex-plugin/plugin.json``name`@ marketplace 名(`.agents/plugins/marketplace.json``name`)。
- 本 repo 的 Codex marketplace 以 `url` 來源指向自己,故 Codex **一律從 gitea 安裝**(需先 push);安裝後重啟 Codex。
- **呼叫**`$<name>`(例 `$doc-docker`),或用 `/skills` 選單。
### Antigravity`agy`
> `agy plugin install <url>` 目前**只支援 github.com**gitea 等自架 git 不支援 URL 安裝,請先 `git clone` 再用**本地路徑**安裝。
```bash
# 安裝:clone 後用本地路徑
git clone https://gitea.jsc.idv.tw/plugins/doc.git ~/jsc-plugin
agy plugin install ~/jsc-plugin
# 更新(agy 無 update 子指令 → git pull 後重裝)
git -C ~/jsc-plugin pull
agy plugin uninstall jsc
agy plugin install ~/jsc-plugin
# 移除
agy plugin uninstall jsc
```
- 若把 skills 放到 GitHub,則可直接 `agy plugin install https://github.com/<owner>/<repo>`
- 其他:`agy plugin list``agy plugin enable jsc` / `disable jsc``agy plugin validate <path>`。安裝後重啟工作階段。
- **呼叫**`/jsc:<name>`(例 `/jsc:doc-docker`)或依描述自動觸發。
### OpenCode
OpenCode 的「plugin」是 TypeScript/npm 套件,不適用於 skill 包;skills 改用**目錄安裝**。
OpenCode 會讀 `~/.config/opencode/skills/`(也會讀 `~/.claude/skills/``~/.agents/skills/`)。
```bash
# 安裝
git clone https://gitea.jsc.idv.tw/plugins/doc.git ~/jsc-plugin
mkdir -p ~/.config/opencode/skills
cp -r ~/jsc-plugin/skills/* ~/.config/opencode/skills/
# 更新
git -C ~/jsc-plugin pull
cp -r ~/jsc-plugin/skills/* ~/.config/opencode/skills/
# 移除
rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs
```
> **Windows PowerShell**`cp -r A B` → `Copy-Item A B -Recurse -Force`、`rm -rf X` → `Remove-Item X -Recurse -Force`、`~` → `$HOME`。
- **呼叫**:直接描述需求,模型會依 skill 描述自動透過 skill 工具呼叫。
---
## 用 CLI 直接執行 skillheadless / 一次性)
安裝好之後,不必進互動介面,一行指令就能叫某個 skill 跑完並印出結果:
| 助理 | headless 指令 | 執行 `doc-docker` skill |
| --- | --- | --- |
| Claude Code | `claude -p "<prompt>"` | `claude -p "/jsc:doc-docker"` |
| Codex | `codex exec "<prompt>"` | `codex exec '$doc-docker'` |
| Antigravity | `agy -p "<prompt>"` | `agy -p "/jsc:doc-docker"` |
| OpenCode | `opencode run "<message>"` | `opencode run "整理 docker-compose 註解"` |
- Claude / Antigravity 支援 `/jsc:` 前綴,直接 `-p "/jsc:<name>"` 即可。
- Codex 以 `$<name>` 觸發;在 shell 請用**單引號**避免 `$` 被展開:`codex exec '$doc-docker'`
- OpenCode 沒有前綴,用自然語言描述需求,模型會自動透過 skill 工具呼叫。
- 帶引數就接在後面,例如 `claude -p "/jsc:doc-docker docker-compose.yaml"``codex exec '$doc-docker docker-compose.yaml'`
---
## Skills 目錄
> 此區塊列出本 plugin 內含的所有 skills(名稱/描述/使用方法)。
> 新增或修改 skill 後,請同步手動更新標記之間的內容。
<!-- JSC-SKILLS:START -->
### `doc-docker`
整理並對齊 `docker-compose.yaml` 的行內註解與標題區塊,優先透過內建 shell/awk 腳本批次處理或處理指定檔案。當使用者要對齊 docker-compose 註解、整理 compose 檔註解欄位、更新 compose 標題日期,或提到 docker-compose、dc-tidy、align_comments、註解對齊時使用此 skill。
- **Claude Code / Antigravity**`/jsc:doc-docker`
- **Codex**`$doc-docker`,或用 `/skills` 選單
- **OpenCode**:描述需求自動觸發
### `doc-funcs`
掃描目前專案所有可文件化的 function/method,建立 `.docs/doc-funcs-index.md` 與逐 function 草稿,再依草稿補齊 XML documentation comments,最後重建 README 專案列表、功能列表與使用範例;README 更新時間固定使用台灣時區(Asia/Taipei)與 `yyyy/MM/dd HH:mm:ss` 格式,專案列表會拆成「專案名稱/專案描述」、「專案名稱/參考專案列表」、「專案名稱/NuGet 套件列表」三張表,且專案名稱會連到 Gitea/GitHub 遠端上的專案資料夾;遇到跨專案或跨命名空間的同名型別時會在功能名稱補上模組/專案前綴,並會跳脫 Markdown 表格、link text、heading 中的 C# 泛型角括號,檢查功能列表連結與使用範例 anchor 一致後執行合適驗證。當使用者要補齊 function 文件、產生 XML doc、為每個 method 加 summary/param/remarks、建立 .docs 草稿,或提到 doc-funcs、function 文件化、XML documentation comments 時使用此 skill。
- **Claude Code / Antigravity**`/jsc:doc-funcs`
- **Codex**`$doc-funcs`,或用 `/skills` 選單
- **OpenCode**:描述需求自動觸發
<!-- JSC-SKILLS:END -->
---
## 新增一個 skill
1. 建立目錄:`mkdir -p skills/<your-skill-name>`
2. 編輯 `skills/<your-skill-name>/SKILL.md` 的 frontmatter
- `name`:小寫、數字、連字號(`-`),最長 64 字元。**這就是 Claude Code / Antigravity 的 `/jsc:<name>`**。
- `description`:第三人稱,寫清楚「何時用、何時不用」與觸發關鍵字 — 這是各助理自動載入的唯一依據。
3. 在內文寫下 skill 的具體步驟。
4. 手動把這個 skill 補進上方「Skills 目錄」區塊。
5. **bump 版本並 push**:四家都以 git 內容/版本判斷更新,請把 `.claude-plugin/plugin.json``.codex-plugin/plugin.json``plugin.json` 三個 manifest 的 `version` 一起 bumpcommit 後 push 到 gitea。
6. 讓各助理更新:
- Claude`claude plugin update jsc@doc`
- Codex`codex plugin marketplace upgrade doc`
- Antigravity`git -C ~/jsc-plugin pull && agy plugin uninstall jsc && agy plugin install ~/jsc-plugin`
- OpenCode`git pull` 後重新複製 `skills/`