chore(骨架): 把模板 scaffold 換成 tea-sdlc 骨架
五份 manifest 的 name、description、homepage、repository 由 jsc-template 改指向 tea-sdlc,版本另起為 0.0.1;移除範例用的 skills/hello 並清掉 AGENTS.md 與 README.md 對它的引用。 建立後續工作包要落腳的四個目錄(prompts、scripts、templates、references) 並以 .gitkeep 納入版控;AGENTS.md 改寫為 tea-sdlc 的模組邊界與慣例,腳本 介面契約不複寫而指回議題 #1,避免正本分家。 新增 package.json 作為測試入口(node --test,Node 內建執行器,無任何相依 套件);.gitignore 加入測試暫存目錄 .tmp/ 與 node_modules/。 Closes #2 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "template",
|
||||
"name": "tea-sdlc",
|
||||
"plugins": [
|
||||
{
|
||||
"name": "jsc-template",
|
||||
"name": "tea-sdlc",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://gitea.jsc.idv.tw/plugins/template.git"
|
||||
"url": "https://gitea.jsc.idv.tw/plugins/tea-sdlc.git"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"name": "template",
|
||||
"description": "JSC 跨 AI 助理共用 skills 的 Claude Code marketplace。",
|
||||
"name": "tea-sdlc",
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組的 Claude Code marketplace。",
|
||||
"owner": {
|
||||
"name": "JSC"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "jsc-template",
|
||||
"name": "tea-sdlc",
|
||||
"source": "./",
|
||||
"description": "JSC 共用 skills(跨 AI 助理)"
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "jsc-template",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc-template: 前綴呼叫。",
|
||||
"name": "tea-sdlc",
|
||||
"version": "0.0.1",
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組(Claude Code / Codex / Antigravity / OpenCode / Copilot / Kiro / oh-my-pi)。流程正本為平台中立 markdown,由 install.js 產生各平台轉接檔。",
|
||||
"skills": "./skills",
|
||||
"author": {
|
||||
"name": "JSC"
|
||||
},
|
||||
"homepage": "https://gitea.jsc.idv.tw/plugins/template",
|
||||
"repository": "https://gitea.jsc.idv.tw/plugins/template.git",
|
||||
"keywords": ["template", "skills", "cross-tool", "jsc"]
|
||||
"homepage": "https://gitea.jsc.idv.tw/plugins/tea-sdlc",
|
||||
"repository": "https://gitea.jsc.idv.tw/plugins/tea-sdlc.git",
|
||||
"keywords": ["sdlc", "gitea", "tea", "workflow", "cross-tool", "jsc"]
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsc-template",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板。所有 skills 以 SKILL.md 為共通標準。",
|
||||
"name": "tea-sdlc",
|
||||
"version": "0.0.1",
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組。流程正本為平台中立 markdown,所有外部呼叫下沉到零相依 Node 腳本。",
|
||||
"skills": "./skills"
|
||||
}
|
||||
|
||||
@@ -8,3 +8,9 @@ Thumbs.db
|
||||
# 暫存
|
||||
*.tmp
|
||||
*.log
|
||||
|
||||
# 測試產生的暫存(stub server 的紀錄、臨時 git repo、臨時家目錄)
|
||||
.tmp/
|
||||
|
||||
# 本 repo 不依賴任何外部套件,node_modules 不該出現;若因手誤產生則忽略
|
||||
node_modules/
|
||||
|
||||
@@ -1,15 +1,29 @@
|
||||
# jsc-template — 共用 Skills(跨 AI 助理)
|
||||
# tea-sdlc — 以 tea 驅動 SDLC 全流程的跨平台指令組
|
||||
|
||||
本 repo 是一組以 **Agent Skills(`SKILL.md`)** 標準撰寫的共用 skills,可同時被 Claude Code、Codex、Antigravity、OpenCode 使用。
|
||||
本 repo 提供六個顯式指令(`/sdlc-plan`、`/sdlc-analyze`、`/sdlc-feat`、`/sdlc-fix`、`/sdlc-sync`、`/sdlc-report`),
|
||||
把軟體開發流程的各階段固定成可重複的步驟。流程正本只寫一份平台中立 markdown,
|
||||
由 `install.js` 產生 Claude Code、Codex、Antigravity、Copilot、Kiro、oh-my-pi、OpenCode 各自的薄轉接檔。
|
||||
|
||||
## 給 AI 助理的指引
|
||||
> 目前處於骨架階段:目錄已就位,六個指令與腳本尚未實作。進度見
|
||||
> [議題 #1](https://gitea.jsc.idv.tw/plugins/tea-sdlc/issues/1) 底下的工作包。
|
||||
|
||||
- 所有可用的 skills 位於本 repo 的 `skills/<name>/SKILL.md`。
|
||||
- 在處理任務前,先比對使用者需求與各 skill `SKILL.md` frontmatter 的 `description`,若相符請載入並依其步驟執行。
|
||||
- **呼叫慣例**:在 Claude Code 與 Antigravity 中,這些 skill 以 `/jsc-template:<name>` 呼叫;Codex 以 `$<name>`、OpenCode 由模型依描述自動觸發 — 兩者沒有 `/jsc-template:` 前綴,不需強制加。
|
||||
- 完整清單與每個 skill 的用途,請見 `README.md` 的「Skills 目錄」。
|
||||
## 模組邊界
|
||||
|
||||
改動時請先確認要動的東西屬於哪一層,不要讓職責外溢到相鄰目錄。
|
||||
|
||||
| 目錄 | 職責 | 邊界 |
|
||||
| --- | --- | --- |
|
||||
| `prompts/` | 流程正本(`sdlc-{plan,analyze,feat,fix,sync,report}.md`),唯一的事實來源 | 平台中立 markdown,不含任何平台專屬語法 |
|
||||
| `scripts/` | 所有副作用(Gitea API、git、檔案系統)的唯一出口 | Node、零外部套件,僅用內建 `fetch` / `child_process` / `fs` |
|
||||
| `templates/` | 所有產出格式(議題、PR、報表、總覽網頁) | 以 `{{變數}}` 佔位,不含邏輯 |
|
||||
| `references/` | 規則正本(實作規範、註解格式對照表、可行性檢查清單) | 由流程正本指名讀取,不自行散落於 prompts |
|
||||
| `install.js` | 平台偵測與轉接檔產生 | 唯一知道各平台目錄結構的地方 |
|
||||
| `skills/` | 各助理原生 plugin 機制讀取的 skills | 目前為空;指令以轉接檔形式佈署 |
|
||||
|
||||
## 慣例
|
||||
|
||||
- 新增 skill 一律放在 `skills/<name>/`,且 `<name>` 使用小寫與連字號。
|
||||
- `description` 要寫清楚觸發條件(何時用、何時不用),這是跨助理自動載入的唯一依據。
|
||||
- **零外部套件**:`package.json` 不得出現 `dependencies` 或 `devDependencies`。測試用 Node 內建 `node:test` + `node:assert`。
|
||||
- **契約以議題為正本**:腳本的 flag 介面、JSON 輸出形狀、前置檢查與路徑定位規則,正本在[議題 #1](https://gitea.jsc.idv.tw/plugins/tea-sdlc/issues/1),實作時以該處為準;本檔不複寫,以免兩邊走鐘。
|
||||
- **測試**:`npm test`(等同 `node --test`)。測試產生的暫存一律寫到 `.tmp/`,該目錄已被 git 忽略,也不會被測試探索掃到。
|
||||
- **不改目標專案**:本 plugin 只讀目標專案的程式碼,不寫入目標專案的 `CLAUDE.md` 或任何設定檔。
|
||||
- **不自動觸發**:所有指令僅由使用者明確叫用;skill/command 的 `description` 統一以「僅由 /sdlc-xxx 指令叫用。」起頭。
|
||||
|
||||
@@ -1,228 +1,150 @@
|
||||
# jsc-template — 跨 AI 助理 Plugin 模板
|
||||
# tea-sdlc
|
||||
|
||||
一個可同時被 **Claude Code、Codex、Antigravity、OpenCode、GitHub Copilot** 安裝的 plugin 模板。
|
||||
核心是以 [Agent Skills(`SKILL.md`)](https://agentskills.io) 標準撰寫的共用 skills(唯一真實來源放在 `skills/`),
|
||||
搭配各助理各自的 plugin manifest,讓**同一個 repo** 可用各家**原生 plugin CLI** 安裝。
|
||||
在 Claude Code 與 Antigravity 中,skill 以 **`/jsc-template:` 前綴**呼叫(例如 `/jsc-template:hello`)。
|
||||
以 [tea](https://gitea.com/gitea/tea) 與 Gitea REST API 驅動 **SDLC 全流程**的跨平台指令組。
|
||||
把規劃、分析、實作、修正、整併、工時回報六個階段,固定成可重複、可被任何 coding agent 執行的流程。
|
||||
|
||||
- **流程正本只有一份**:平台中立 markdown 放在 `prompts/`,改規則不會出現各平台版本分歧。
|
||||
- **副作用集中**:所有對 Gitea 與 git 的呼叫下沉到 `scripts/` 的零相依 Node 腳本,統一 JSON 輸入輸出。
|
||||
- **產出有固定形狀**:議題、PR、報表一律套 `templates/` 的模板。
|
||||
|
||||
> **目前處於骨架階段。** 目錄與 manifest 已就位,六個指令與腳本尚未實作。
|
||||
> 完整需求見[議題 #1](https://gitea.jsc.idv.tw/plugins/tea-sdlc/issues/1),實作進度見其底下的工作包。
|
||||
|
||||
---
|
||||
|
||||
## 前綴與呼叫方式
|
||||
## 六個指令
|
||||
|
||||
| 助理 | 安裝方式 | 呼叫 | `/jsc-template:` 前綴 |
|
||||
| --- | --- | --- | --- |
|
||||
| Claude Code | `claude plugin`(marketplace) | `/jsc-template:<name>` 或自動觸發 | ✅ |
|
||||
| Codex | `codex plugin`(marketplace) | `$<name>` 或 `/skills` 選單 | ❌(用 `$name`) |
|
||||
| Antigravity | `agy plugin install` | `/jsc-template:<name>` 或自動觸發 | ✅ |
|
||||
| OpenCode | skills 目錄(複製/clone) | 描述需求自動觸發 | ❌(依名稱) |
|
||||
| GitHub Copilot CLI | `copilot plugin`(marketplace) | 自然語言或 plugin skills | ❌(無 `/jsc-template:` 前綴) |
|
||||
|
||||
> Codex 不支援自訂前綴(skill 以 `$name` 呼叫);OpenCode 由模型依描述自動呼叫;Copilot CLI 透過原生 plugin 安裝後以自然語言或 plugin skills 使用。三者皆**不強制**前綴。
|
||||
| 指令 | 做什麼 |
|
||||
| --- | --- |
|
||||
| `/sdlc-plan` | 把一段口語需求變成結構化的需求議題 |
|
||||
| `/sdlc-analyze` | 逐題把可行性疑點問到共識,據以產出工作包 |
|
||||
| `/sdlc-feat` | 領取工作包、開分支、逐項實作並開 PR |
|
||||
| `/sdlc-fix` | 處理 PR 上的留言 |
|
||||
| `/sdlc-sync` | 把散落在留言裡的決策整併回議題描述 |
|
||||
| `/sdlc-report` | 產出週/月/年工時報表 |
|
||||
|
||||
---
|
||||
|
||||
## 目錄結構
|
||||
|
||||
同一個 repo 同時帶四種 manifest,彼此以路徑隔離、互不干擾;各助理都讀同一份 `skills/`。
|
||||
|
||||
```
|
||||
template/
|
||||
├── .claude-plugin/
|
||||
│ ├── plugin.json # Claude 外掛定義(name: "jsc-template")
|
||||
│ └── marketplace.json # Claude marketplace(name: "template",source 指向本 repo)
|
||||
├── .codex-plugin/
|
||||
│ └── plugin.json # Codex 外掛定義(name: "jsc-template",skills: "./skills")
|
||||
├── .agents/plugins/
|
||||
│ └── marketplace.json # Codex marketplace(name: "template",url source 指向本 repo)
|
||||
├── plugin.json # Antigravity 外掛定義(name: "jsc-template",skills: "./skills/")
|
||||
├── skills/ # ★ 唯一真實來源:所有 skills
|
||||
│ └── hello/SKILL.md
|
||||
├── AGENTS.md # 跨助理共用指引
|
||||
tea-sdlc/
|
||||
├── prompts/ # ★ 流程正本:六個指令的平台中立 markdown
|
||||
├── scripts/ # 所有 Gitea / git 副作用的唯一出口(Node,零相依)
|
||||
├── templates/ # 議題、PR、報表、總覽網頁的輸出模板
|
||||
├── references/ # 規則正本:實作規範、註解格式、可行性檢查清單
|
||||
├── skills/ # 各助理原生 plugin 機制讀取的 skills(目前為空)
|
||||
├── .claude-plugin/ # Claude Code 的 plugin / marketplace manifest
|
||||
├── .codex-plugin/ # Codex 的 plugin manifest
|
||||
├── .agents/plugins/ # Codex 的 marketplace manifest
|
||||
├── plugin.json # Antigravity 的 plugin manifest
|
||||
├── package.json # 僅用於測試入口,無任何相依套件
|
||||
├── AGENTS.md # 給 AI 助理的模組邊界與慣例
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 前置需求
|
||||
|
||||
| 需求 | 用途 | 備註 |
|
||||
| --- | --- | --- |
|
||||
| Node.js ≥ 20 | 執行 `scripts/` 與測試 | 不自動安裝,缺少時腳本印出指引並中止 |
|
||||
| git | 分支與 commit 操作 | 同上 |
|
||||
| [`tea`](https://gitea.com/gitea/tea) 並已登入 | Gitea 議題、標籤、Milestone、留言、工時 | `tea login add` |
|
||||
| 目標 repo 已開啟時間追蹤 | 工時碼錶 | Settings → Advanced Settings → Enable Time Tracker |
|
||||
| 帳號對目標 repo 的 issues unit 有寫入權 | 建立與更新議題 | Gitea 的 unit 權限獨立於 push 權限 |
|
||||
|
||||
---
|
||||
|
||||
## 安裝 / 更新 / 移除(各助理)
|
||||
|
||||
> 指令中的 repo 網址換成你的:`https://gitea.jsc.idv.tw/plugins/template.git`
|
||||
>
|
||||
> **Claude / Codex 從 git URL 安裝(會 clone 遠端),請先把本 repo `push` 到 gitea。**
|
||||
> **Antigravity 的 `agy plugin install <url>` 目前只支援 github.com**;gitea 請改用「clone + 本地路徑」(見 Antigravity 節)。
|
||||
> 本機/離線:Claude 可用本地路徑加 marketplace;Antigravity 用本地路徑安裝。
|
||||
|
||||
> **⚠ 從 0.0.1 升上來的人請先移除再安裝。** 0.0.2 起 marketplace 名由 `jsc-plugins` 改為 `template`
|
||||
> (舊名與 `jsc-persona` 的 marketplace 撞名)。各助理以 `<plugin 名>@<marketplace 名>` 當安裝識別鍵,
|
||||
> 改名後是兩筆獨立條目,**不能用 update 遷移**:
|
||||
>
|
||||
> ```bash
|
||||
> claude plugin uninstall jsc-template@jsc-plugins
|
||||
> claude plugin marketplace remove jsc-plugins # 若你沒有裝 jsc-persona 才移除,它也用這個名字
|
||||
> claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/template.git
|
||||
> claude plugin install jsc-template@template
|
||||
> ```
|
||||
>
|
||||
> 移除後記得清掉 `~/.claude/settings.json` 裡 `enabledPlugins` 的舊鍵 `jsc-template@jsc-plugins`,
|
||||
> 並重開工作階段。Codex/Copilot 同理(`remove`/`uninstall` 後重新 `add`+`install`)。
|
||||
> 以下為 plugin 機制的安裝方式。指令本身之後會改由 `install.js` 產生各平台轉接檔佈署,
|
||||
> 屆時本節會一併更新。
|
||||
|
||||
### Claude Code
|
||||
|
||||
```bash
|
||||
# 安裝
|
||||
claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/template.git
|
||||
claude plugin install jsc-template@template
|
||||
claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/tea-sdlc.git
|
||||
claude plugin install tea-sdlc@tea-sdlc
|
||||
|
||||
# 更新
|
||||
claude plugin marketplace update template
|
||||
claude plugin update jsc-template@template
|
||||
claude plugin marketplace update tea-sdlc
|
||||
claude plugin update tea-sdlc@tea-sdlc
|
||||
|
||||
# 移除
|
||||
claude plugin uninstall jsc-template@template
|
||||
claude plugin marketplace remove template
|
||||
claude plugin uninstall tea-sdlc@tea-sdlc
|
||||
claude plugin marketplace remove tea-sdlc
|
||||
```
|
||||
|
||||
- 工作階段內 slash 版(等價):把 `claude plugin` 換成 `/plugin`。
|
||||
- 本機開發(免 push):`claude plugin marketplace add C:\Users\h3285\source\repos.plugins\template`(本地路徑)後再 install。
|
||||
- **呼叫**:`/jsc-template:<name>`(例 `/jsc-template:hello`)。
|
||||
工作階段內 slash 版(等價):把 `claude plugin` 換成 `/plugin`。
|
||||
本機開發(免 push):`claude plugin marketplace add /root/plugins/tea-sdlc`(本地路徑)後再 install。
|
||||
|
||||
### Codex
|
||||
|
||||
```bash
|
||||
# 安裝
|
||||
codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/template.git
|
||||
codex plugin add jsc-template@template
|
||||
codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/tea-sdlc.git
|
||||
codex plugin add tea-sdlc@tea-sdlc
|
||||
|
||||
# 更新(重新抓取 marketplace 的 git 快照)
|
||||
codex plugin marketplace upgrade template
|
||||
codex plugin marketplace upgrade tea-sdlc
|
||||
|
||||
# 移除
|
||||
codex plugin remove jsc-template@template
|
||||
codex plugin marketplace remove template
|
||||
codex plugin remove tea-sdlc@tea-sdlc
|
||||
codex plugin marketplace remove tea-sdlc
|
||||
```
|
||||
|
||||
- 安裝 token `jsc-template@template` = plugin 名(`.codex-plugin/plugin.json` 的 `name`)@ marketplace 名(`.agents/plugins/marketplace.json` 的 `name`)。
|
||||
- 本 repo 的 Codex marketplace 以 `url` 來源指向自己,故 Codex **一律從 gitea 安裝**(需先 push);安裝後重啟 Codex。
|
||||
- **呼叫**:`$<name>`(例 `$hello`),或用 `/skills` 選單。
|
||||
安裝 token `tea-sdlc@tea-sdlc` = plugin 名(`.codex-plugin/plugin.json` 的 `name`)@ marketplace 名(`.agents/plugins/marketplace.json` 的 `name`)。安裝後重啟 Codex。
|
||||
|
||||
### Antigravity(`agy`)
|
||||
|
||||
> `agy plugin install <url>` 目前**只支援 github.com**;gitea 等自架 git 不支援 URL 安裝,請先 `git clone` 再用**本地路徑**安裝。
|
||||
> `agy plugin install <url>` 目前只支援 github.com;Gitea 等自架 git 請先 clone 再用本地路徑安裝。
|
||||
|
||||
```bash
|
||||
# 安裝:clone 後用本地路徑
|
||||
git clone https://gitea.jsc.idv.tw/plugins/template.git ~/plugins/template
|
||||
agy plugin install ~/plugins/template
|
||||
git clone https://gitea.jsc.idv.tw/plugins/tea-sdlc.git ~/plugins/tea-sdlc
|
||||
agy plugin install ~/plugins/tea-sdlc
|
||||
|
||||
# 更新(agy 無 update 子指令 → git pull 後重裝)
|
||||
git -C ~/plugins/template pull
|
||||
agy plugin uninstall jsc-template
|
||||
agy plugin install ~/plugins/template
|
||||
|
||||
# 移除
|
||||
agy plugin uninstall jsc-template
|
||||
git -C ~/plugins/tea-sdlc pull
|
||||
agy plugin uninstall tea-sdlc
|
||||
agy plugin install ~/plugins/tea-sdlc
|
||||
```
|
||||
|
||||
- 若把 skills 放到 GitHub,則可直接 `agy plugin install https://github.com/<owner>/<repo>`。
|
||||
- 其他:`agy plugin list`、`agy plugin enable jsc-template` / `disable jsc-template`、`agy plugin validate <path>`。安裝後重啟工作階段。
|
||||
- **呼叫**:`/jsc-template:<name>`(例 `/jsc-template:hello`)或依描述自動觸發。
|
||||
### GitHub Copilot CLI
|
||||
|
||||
```bash
|
||||
copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/tea-sdlc.git
|
||||
copilot plugin install tea-sdlc@tea-sdlc
|
||||
|
||||
# 更新
|
||||
copilot plugin marketplace update tea-sdlc
|
||||
copilot plugin update tea-sdlc@tea-sdlc
|
||||
|
||||
# 移除
|
||||
copilot plugin uninstall tea-sdlc@tea-sdlc
|
||||
copilot plugin marketplace remove tea-sdlc
|
||||
```
|
||||
|
||||
### OpenCode
|
||||
|
||||
OpenCode 的「plugin」是 TypeScript/npm 套件,不適用於 skill 包;skills 改用**目錄安裝**。
|
||||
OpenCode 的「plugin」是 TypeScript/npm 套件,不適用於本 repo;改用目錄安裝。
|
||||
OpenCode 會讀 `~/.config/opencode/skills/`(也會讀 `~/.claude/skills/`、`~/.agents/skills/`)。
|
||||
|
||||
```bash
|
||||
# 安裝
|
||||
git clone https://gitea.jsc.idv.tw/plugins/template.git ~/plugins/template
|
||||
git clone https://gitea.jsc.idv.tw/plugins/tea-sdlc.git ~/plugins/tea-sdlc
|
||||
mkdir -p ~/.config/opencode/skills
|
||||
cp -r ~/plugins/template/skills/* ~/.config/opencode/skills/
|
||||
|
||||
# 更新
|
||||
git -C ~/plugins/template pull
|
||||
cp -r ~/plugins/template/skills/* ~/.config/opencode/skills/
|
||||
|
||||
# 移除
|
||||
rm -rf ~/.config/opencode/skills/hello
|
||||
cp -r ~/plugins/tea-sdlc/skills/* ~/.config/opencode/skills/
|
||||
```
|
||||
|
||||
> **Windows PowerShell**:`cp -r A B` → `Copy-Item A B -Recurse -Force`、`rm -rf X` → `Remove-Item X -Recurse -Force`、`~` → `$HOME`。
|
||||
|
||||
- **呼叫**:直接描述需求,模型會依 skill 描述自動透過 skill 工具呼叫。
|
||||
---
|
||||
|
||||
### GitHub Copilot CLI
|
||||
|
||||
Copilot CLI 支援與 Claude Code 類似的原生 plugin / marketplace 指令,可直接從 marketplace 安裝、更新與移除本 plugin。
|
||||
## 開發
|
||||
|
||||
```bash
|
||||
# 安裝
|
||||
copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/template.git
|
||||
copilot plugin install jsc-template@template
|
||||
|
||||
# 更新
|
||||
copilot plugin marketplace update template
|
||||
copilot plugin update jsc-template@template
|
||||
|
||||
# 移除
|
||||
copilot plugin uninstall jsc-template@template
|
||||
copilot plugin marketplace remove template
|
||||
npm test # 等同 node --test,使用 Node 內建測試執行器,無任何外部套件
|
||||
```
|
||||
|
||||
- 安裝 token `jsc-template@template` = plugin 名(plugin manifest 的 `name`)@ marketplace 名。
|
||||
- `copilot plugin marketplace add` 支援 GitHub `owner/repo`、git URL 與本地路徑;Gitea repo 可用上方 HTTPS URL。
|
||||
- **呼叫**:在 Copilot CLI 中用自然語言描述需求,例如 `copilot -i "跑 hello 確認 plugin 裝好了"`。
|
||||
|
||||
---
|
||||
|
||||
## 用 CLI 直接執行 skill(headless / 一次性)
|
||||
|
||||
安裝好之後,不必進互動介面,一行指令就能叫某個 skill 跑完並印出結果:
|
||||
|
||||
| 助理 | headless 指令 | 執行 `hello` skill |
|
||||
| --- | --- | --- |
|
||||
| Claude Code | `claude -p "<prompt>"` | `claude -p "/jsc-template:hello"` |
|
||||
| Codex | `codex exec "<prompt>"` | `codex exec '$hello'` |
|
||||
| Antigravity | `agy -p "<prompt>"` | `agy -p "/jsc-template:hello"` |
|
||||
| OpenCode | `opencode run "<message>"` | `opencode run "用 hello skill 打個招呼"` |
|
||||
| GitHub Copilot CLI | `copilot -p "<message>"` | `copilot -p "用 hello skill 打個招呼"` |
|
||||
|
||||
- Claude / Antigravity 支援 `/jsc-template:` 前綴,直接 `-p "/jsc-template:<name>"` 即可。
|
||||
- Codex 以 `$<name>` 觸發;在 shell 請用**單引號**避免 `$` 被展開:`codex exec '$hello'`。
|
||||
- OpenCode 與 Copilot 沒有前綴,用自然語言描述需求;Copilot CLI 會讀取已安裝 plugin 提供的 skills。
|
||||
- 帶引數就接在後面,例如 `claude -p "/jsc-template:hello 參數"`、`codex exec '$hello 參數'`。
|
||||
|
||||
---
|
||||
|
||||
## Skills 目錄
|
||||
|
||||
> 此區塊列出本 plugin 內含的所有 skills(名稱/描述/使用方法)。
|
||||
> 新增或修改 skill 後,請同步手動更新標記之間的內容。
|
||||
|
||||
<!-- JSC-SKILLS:START -->
|
||||
|
||||
### `hello`
|
||||
|
||||
範例 skill,用來驗證 jsc plugin 是否安裝成功,也是新增 skill 的範本。當使用者輸入 hello、想測試 plugin、或想看 skill 模板長什麼樣子時觸發;回覆一句問候並簡述此 plugin 的用途。
|
||||
|
||||
- **Claude Code / Antigravity**:`/jsc-template:hello`
|
||||
- **Codex**:`$hello`,或用 `/skills` 選單
|
||||
- **OpenCode / GitHub Copilot CLI**:描述需求自動觸發
|
||||
|
||||
<!-- JSC-SKILLS:END -->
|
||||
|
||||
---
|
||||
|
||||
## 新增一個 skill
|
||||
|
||||
1. 複製範本:`cp -r skills/hello skills/<your-skill-name>`
|
||||
2. 編輯 `skills/<your-skill-name>/SKILL.md` 的 frontmatter:
|
||||
- `name`:小寫、數字、連字號(`-`),最長 64 字元。**這就是 Claude Code / Antigravity 的 `/jsc-template:<name>`**。
|
||||
- `description`:第三人稱,寫清楚「何時用、何時不用」與觸發關鍵字 — 這是各助理自動載入的唯一依據。
|
||||
3. 在內文寫下 skill 的具體步驟。
|
||||
4. 手動把這個 skill 補進上方「Skills 目錄」區塊。
|
||||
5. **bump 版本並 push**:各助理都以 git 內容/版本判斷更新,請把 `.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`、`plugin.json` 三個 manifest 的 `version` 一起 bump,commit 後 push 到 gitea。
|
||||
6. 讓各助理更新:
|
||||
- Claude:`claude plugin update jsc-template@template`
|
||||
- Codex:`codex plugin marketplace upgrade template`
|
||||
- Antigravity:`git -C ~/jsc-plugin pull && agy plugin uninstall jsc-template && agy plugin install ~/jsc-plugin`
|
||||
- OpenCode:`git pull` 後重新複製 `skills/`
|
||||
- Copilot:`copilot plugin marketplace update template && copilot plugin update jsc-template@template`
|
||||
測試產生的暫存一律寫到 `.tmp/`(已被 git 忽略,也不會被測試探索掃到)。
|
||||
模組邊界與其餘慣例見 [`AGENTS.md`](./AGENTS.md)。
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "tea-sdlc",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組。",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node --test"
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsc-template",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc-template: 前綴呼叫。",
|
||||
"name": "tea-sdlc",
|
||||
"version": "0.0.1",
|
||||
"description": "以 tea 驅動 SDLC 全流程的跨平台指令組:規劃、分析、實作、修正、整併、工時回報。",
|
||||
"skills": "./skills/"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
name: hello
|
||||
description: 範例 skill,用來驗證 jsc plugin 是否安裝成功,也是新增 skill 的範本。當使用者輸入 hello、想測試 plugin、或想看 skill 模板長什麼樣子時觸發;回覆一句問候並簡述此 plugin 的用途。
|
||||
---
|
||||
|
||||
# hello(範例 skill)
|
||||
|
||||
這是 `jsc-template` plugin 的範例 skill。它有兩個用途:
|
||||
|
||||
1. **驗證安裝** — 跨各家 AI 助理確認 skill 已被正確載入。
|
||||
2. **作為範本** — 複製這個資料夾即可新增一個新的 skill。
|
||||
|
||||
## 呼叫方式
|
||||
|
||||
| 助理 | 呼叫方式 |
|
||||
| --- | --- |
|
||||
| Claude Code | `/jsc-template:hello` |
|
||||
| Antigravity | `/jsc-template:hello`,或描述需求自動觸發 |
|
||||
| Codex | 在提示詞輸入 `$hello`,或用 `/skills` 選單 |
|
||||
| OpenCode | 直接描述需求,模型會透過 skill 工具自動呼叫 |
|
||||
| GitHub Copilot CLI | 直接描述需求,Copilot 會讀取已安裝 plugin 的 skills |
|
||||
|
||||
## 行為
|
||||
|
||||
當這個 skill 被觸發時:
|
||||
|
||||
1. 回覆「Hello from **jsc** 👋」。
|
||||
2. 用一句話說明 `jsc-template` 是一個跨 AI 助理的共用 skill 集合。
|
||||
3. 提示使用者可以在 README 的「Skills 目錄」查看所有可用的 skills。
|
||||
|
||||
## 如何以此為範本新增 skill
|
||||
|
||||
1. 複製 `skills/hello/` 為 `skills/<your-skill-name>/`。
|
||||
2. 修改 `SKILL.md` 的 frontmatter:
|
||||
- `name`:小寫、數字、連字號(`-`),最長 64 字元。**這個名稱會成為 Claude Code / Antigravity 的 `/jsc-template:<name>` 指令**。
|
||||
- `description`:第三人稱,寫清楚「什麼時候該用、什麼時候不該用」與觸發關鍵字 — 各家助理靠這段文字決定是否自動載入。
|
||||
3. 在內文寫下 skill 的具體步驟。
|
||||
4. 手動把新 skill 補進 README 的「Skills 目錄」區塊。
|
||||
Reference in New Issue
Block a user