Files
git/README.md
T
jiantw83 7adee55dad docs(git): README 補上 PR 階梯與兩支技能的新行為
What:README 新增「PR 階梯」一節(兩種型別的階梯表、多層子功能的推導方式、推不出就回 `7` 中止、功能主幹自動建立),工具表補上 `base-branch.sh --derive` 與 `slugify.sh` 連叫兩次組多層分支名,`commit` 與 `pr` 兩段說明改寫成新行為。

Why:階梯與校準是這次的行為變更,README 是對外說明。說明沒跟上,使用者會照舊以為 base 可以自己挑、PR 要重開一支。

How:階梯表在 README 只寫一份摘要,唯一來源仍是 `jsc-meta` 的 `references/guidelines.md`。技能說明兩段各補上推導與校準兩件事,用詞與 SKILL.md 一致。

Who:讀 `jsc-git` 說明的人,以及要接 `base-branch.sh` 的其他 domain。
2026-08-27 11:20:28 +08:00

67 lines
5.2 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-git — Commit 與 Push Request
jsc 技能組的 git domain:把檔案變更依同類型與同需求或功能分組認可,並建立符合範本的 Push Request。
## 安裝、更新、移除
Marketplace 統一為 `jsc`(https://gitea.jsc.idv.tw/plugins/meta.git),安裝 token 為 `jsc-git@jsc`。每個指令一行:
| CLI | 安裝 | 更新 | 移除 |
| --- | --- | --- | --- |
| claude | `claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && claude plugin install jsc-git@jsc` | `claude plugin marketplace update jsc && claude plugin update jsc-git@jsc` | `claude plugin uninstall jsc-git@jsc` |
| codex | `codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && codex plugin add jsc-git@jsc` | `codex plugin marketplace upgrade jsc` | `codex plugin remove jsc-git@jsc` |
| copilot | `copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && copilot plugin install jsc-git@jsc` | `copilot plugin marketplace update jsc && copilot plugin update jsc-git@jsc` | `copilot plugin uninstall jsc-git@jsc` |
| antigravity | `git clone https://gitea.jsc.idv.tw/plugins/git.git ~/plugins/git && agy plugin install ~/plugins/git` | `git -C ~/plugins/git pull && agy plugin uninstall jsc-git && agy plugin install ~/plugins/git` | `agy plugin uninstall jsc-git` |
| kiro | `kiro-cli plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && kiro-cli plugin install jsc-git@jsc` | `kiro-cli plugin marketplace update jsc && kiro-cli plugin update jsc-git@jsc` | `kiro-cli plugin uninstall jsc-git@jsc` |
> antigravity 不支援 gitea URL 安裝,改用本地 clone 路徑。批次操作五個 CLI:使用 `/jsc-cli:deploy`。
> 舊入口 `plugins/jsc` 已移除,marketplace 正本移到 `plugins/meta`。marketplace 名稱仍是 `jsc`(取自 marketplace.json 的 `name` 欄位,與存取庫名無關),安裝 token 不變;已從舊入口安裝過的人先執行 `claude plugin marketplace remove jsc`,再依上表重新 add。
## 工具
| 檔案 | 用途 |
| --- | --- |
| `tools/base-branch.sh` | 決定 PR 基底分支。兩種模式:不帶旗標時,呼叫方傳入的分支最優先,沒傳才依序試 develop、main、master;`--derive [分支]` 從分支名推出階梯的上一階。一律確認分支存在於遠端,找不到就回傳非零。「沒傳」看參數個數,傳入空字串算錯誤,不會退回 develop |
| `tools/slugify.sh` | 把類型與英文短語組成 ASCII 分支名 `{type}/{slug}`;輸入含非 ASCII 或 slug 化後為空,就回傳非零並要求先翻譯成英文短語。第一個參數可以帶斜線,所以連叫兩次就組得出 `feat/{功能}/{子功能}` |
## PR 階梯
每個 PR 只往上一階開,禁止越級。基底一律由 `tools/base-branch.sh --derive` 推導,不手挑。
| Commit 類型 | 階梯 |
| --- | --- |
| feat、docs、style、refactor、perf、test、chore、revert | `{類型}/{功能}/{子功能}` → `{類型}/{功能}/main` → `develop` → `master` |
| fix | `fix/{修改}` → `develop` → `master` |
`{子功能}` 可以多層(例:`feat/a/b/c`),推導一律把最後一段換成 `main`。推不出唯一合法基底就回傳 7 並中止,由呼叫端問使用者,不猜也不退回 develop。功能主幹 `{類型}/{功能}/main` 不在遠端時,自動以 develop 為起點建立並推上去,再把建立了哪一條分支印到 stderr。
分支名只允許 ASCII(小寫、數字、連字號、斜線)。中文簡述先過 `tools/slugify.sh`,`--derive` 不收非 ASCII 分支名。
## Skills 目錄
呼叫方式:Claude / Antigravity `/jsc-git:{name}`;Codex `${name}`;Copilot / Kiro 描述需求自動觸發。
<!-- JSC-SKILLS:START -->
### `commit`
追蹤所有檔案變更,依 Commit 格式 `{類型}({需求 or 功能}): {訊息}` 將同類型與同需求的變更認可在一起。認可前先跑 `jsc-hooks` 的 `comment-scope.sh sweep` 掃過工作區,攔下夾帶文件相關資訊的註解;腳本不在本機就跳過並在回報中說明,不中止認可。訊息格式三選一:完整版(What/Why/How/Who)、簡易版(依 git diff 總結一句)、自訂。認可完成後,目前分支若已有開啟中的 PR,就交給 `pr` 校準標題、描述與前置 PR 依賴。
### `pr`
先認可所有變更,再依階梯命名目標分支、push、以範本描述建立 Gitea PR。基底分支由 `base-branch.sh --derive` 從分支名推出上一階;呼叫方傳入的基底與推導結果不同,就當成越級擋下並說明正確階梯,不會悄悄改目標。分支名只允許 ASCII:類型取 commit 優先度最高者,功能與標題先翻譯成英文短語再 slug 化。分支已有開啟中的 PR 時不重開,改成比對標題、描述、前置 PR 依賴三項,只有不一樣的那幾項才送出 API 呼叫。
<!-- JSC-SKILLS:END -->
## 範本
| 檔案 | 用途 |
| --- | --- |
| `templates/pr-description.md` | PR 描述:摘要、變更內容、設計重點、測試結果、前置 PR |
## 相關 domain
- [`jsc-gitea`](https://gitea.jsc.idv.tw/plugins/gitea):建立 PR(`tools/gitea.sh pr-create`)
- [`jsc-sdlc`](https://gitea.jsc.idv.tw/plugins/sdlc):PR 描述中的計畫頁與分析頁連結