PR 標題改用繁體中文摘要,不再套用分支名 #25

Member

摘要

  • 需求描述:jsc-git:pr 步驟 7 原本規定 PR 標題等於分支名,也就是 ASCII slug,和技能組語言規則直接衝突。語言規則寫在 jsc-meta/references/ste100.md,適用範圍明列 PR 標題與描述,並由 jsc-hooks 的語言 hook 在程式層強制。使用者裁定標題讓位給語言規則:PR 標題改用一句繁體中文摘要,分支名維持 ASCII。步驟 8 的標題校準一併改掉,原本拿標題比對分支名,會把繁中標題每跑一次改回 slug 並通知所有審查者,現在只問標題還描述不描述得了 PR 目前的內容。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
skills/pr/SKILL.md 步驟 7 的標題來源從分支名改成步驟 3.2 的繁體中文摘要,完成條件加上「送出的標題不是分支名」。步驟 8 第一項改成拿 PR 目前的內容比對,並寫明分支名不進入這項比對。步驟 3.2 註明這句摘要就是 PR 標題,slug 只借它的意思。規則 4 補上標題與描述走相反規則,兩者互不套用。
references/behaviors.md pr 一節的關鍵步驟、完成條件、可驗證跡象要對得上新行為,否則行為清單和技能內文各說一套。
README.md pr 的技能說明同步新標題行為,讀 README 的人才看得出標題和分支名分工。
plugin.json 技能行為改了,版本要跟著動,各 CLI 才收得到更新。由 sync-skill-manifest.sh 升到 0.1.3。
.claude-plugin/plugin.json 同上,三份 manifest 版本必須一致。
.codex-plugin/plugin.json 同上,三份 manifest 版本必須一致。

設計重點

  • 分支名和標題分工:分支名給機器判階梯,由 tools/base-branch.sh 與 tools/slugify.sh 解析;標題給人看審查列表。
  • 衝突由標題讓位解決:語言規則有 hook 在程式層強制,技能內文擋不住,所以改技能內文而不是改規則。
  • 分支命名邏輯完全不動:tools/slugify.sh 與 tools/base-branch.sh 的行為維持原樣,分支名仍是 ASCII。
  • 校準改成內容比對:標題只問還描述不描述得了 PR 目前的內容,避免每跑一次就改寫標題並通知所有審查者。
  • 只改文件不改腳本:本次六個檔案都是說明與 manifest,沒有任何腳本行為變動。

測試結果

  • sh /root/plugins/meta/tools/check-behaviors.sh /root/plugins/git → 退出碼 0,「行為清單檢查通過:對上 2 支技能,五個欄位齊全」。
  • sh /root/plugins/meta/tools/ste100-lint.sh /root/plugins/git → 退出碼 0,無違規。
  • sh /root/plugins/meta/tools/lint-scripts.sh /root/plugins/git → 退出碼 0,「腳本檢查通過:3 支」。
  • sh /root/plugins/meta/tools/sync-skill-manifest.sh /root/plugins/git → 退出碼 0,三份 manifest 0.1.2 → 0.1.3。
  • sh /root/plugins/hooks/hooks/comment-scope.sh sweep → 退出碼 0。

前置 Push Request

## 摘要 - 需求描述:`jsc-git:pr` 步驟 7 原本規定 PR 標題等於分支名,也就是 ASCII slug,和技能組語言規則直接衝突。語言規則寫在 `jsc-meta/references/ste100.md`,適用範圍明列 PR 標題與描述,並由 `jsc-hooks` 的語言 hook 在程式層強制。使用者裁定標題讓位給語言規則:PR 標題改用一句繁體中文摘要,分支名維持 ASCII。步驟 8 的標題校準一併改掉,原本拿標題比對分支名,會把繁中標題每跑一次改回 slug 並通知所有審查者,現在只問標題還描述不描述得了 PR 目前的內容。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `skills/pr/SKILL.md` | 步驟 7 的標題來源從分支名改成步驟 3.2 的繁體中文摘要,完成條件加上「送出的標題不是分支名」。步驟 8 第一項改成拿 PR 目前的內容比對,並寫明分支名不進入這項比對。步驟 3.2 註明這句摘要就是 PR 標題,slug 只借它的意思。規則 4 補上標題與描述走相反規則,兩者互不套用。 | | `references/behaviors.md` | `pr` 一節的關鍵步驟、完成條件、可驗證跡象要對得上新行為,否則行為清單和技能內文各說一套。 | | `README.md` | `pr` 的技能說明同步新標題行為,讀 README 的人才看得出標題和分支名分工。 | | `plugin.json` | 技能行為改了,版本要跟著動,各 CLI 才收得到更新。由 `sync-skill-manifest.sh` 升到 0.1.3。 | | `.claude-plugin/plugin.json` | 同上,三份 manifest 版本必須一致。 | | `.codex-plugin/plugin.json` | 同上,三份 manifest 版本必須一致。 | ## 設計重點 - 分支名和標題分工:分支名給機器判階梯,由 `tools/base-branch.sh` 與 `tools/slugify.sh` 解析;標題給人看審查列表。 - 衝突由標題讓位解決:語言規則有 hook 在程式層強制,技能內文擋不住,所以改技能內文而不是改規則。 - 分支命名邏輯完全不動:`tools/slugify.sh` 與 `tools/base-branch.sh` 的行為維持原樣,分支名仍是 ASCII。 - 校準改成內容比對:標題只問還描述不描述得了 PR 目前的內容,避免每跑一次就改寫標題並通知所有審查者。 - 只改文件不改腳本:本次六個檔案都是說明與 manifest,沒有任何腳本行為變動。 ## 測試結果 - `sh /root/plugins/meta/tools/check-behaviors.sh /root/plugins/git` → 退出碼 0,「行為清單檢查通過:對上 2 支技能,五個欄位齊全」。 - `sh /root/plugins/meta/tools/ste100-lint.sh /root/plugins/git` → 退出碼 0,無違規。 - `sh /root/plugins/meta/tools/lint-scripts.sh /root/plugins/git` → 退出碼 0,「腳本檢查通過:3 支」。 - `sh /root/plugins/meta/tools/sync-skill-manifest.sh /root/plugins/git` → 退出碼 0,三份 manifest 0.1.2 → 0.1.3。 - `sh /root/plugins/hooks/hooks/comment-scope.sh sweep` → 退出碼 0。 ## 前置 Push Request - https://gitea.jsc.idv.tw/plugins/git/pulls/23
jiantw83 added 4 commits 2026-08-31 06:39:51 +00:00
What:新增 `references/behaviors.md`。檔內收錄 jsc-git 的 commit、pr 兩節,每節一張五列表,欄位為觸發時機、關鍵步驟、外部呼叫、完成條件、可驗證跡象。

Why:技能驗證原本沒有共同的比對基準,只能回頭讀 SKILL.md 逐段推敲。清單放在 jsc-git 自己的 repo,技能改動與清單走同一個 PR,不會互相漂移,也不用跨 repo 開兩條 PR 互卡。

How:逐支技能盤點行為並寫成固定格式。節標題用技能名稱、欄位順序固定,格式由 `jsc-meta/tools/check-behaviors.sh` 在程式層檢查。觸發時機同時寫該叫用與不該叫用的情形,把 commit 與 pr 的邊界標清楚。外部呼叫逐一列出腳本、`git` 指令、`gitea.sh` 子命令與被叫用的技能。可驗證跡象寫成外部觀察得到的結果,並明講兩支技能都不寫 wiki 頁。

Who:jsc-git 的 commit、pr 兩支技能,供技能驗證使用。日後任何技能異動都要在同一個 PR 內同步更新這一頁。
What:把 `.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`、`plugin.json` 的 `version` 從 `0.1.1` 改成 `0.1.2`。

Why:本 repo 新增 `references/behaviors.md`,內容有變就要出新版。三份 manifest 分別給 Claude、Codex 與根目錄讀取,版本必須一致,否則版本檢查會判定不相符。

How:只動 `version` 一個欄位,三份檔案改成相同的 0.1.2。描述、技能路徑、`jsc.requires` 的相依範圍都不動。

Who:jsc-git 這個 plugin 的版本標示,供各 CLI 的 plugin 版本檢查使用。
What:
- `jsc-git:pr` 步驟 7 的 PR 標題改成一句繁體中文摘要,不再等於分支名。
- 步驟 8 的標題校準改成只問標題還描述不描述得了 PR 目前的內容。
- 步驟 3.2 註明摘要就是 PR 標題,規則 4 補上標題與分支名互不套用。
- `references/behaviors.md` 的 pr 一節與 README 的 pr 說明同步新行為。

Why:
- 語言規則明列 PR 標題與描述一律繁體中文,且有 hook 在程式層強制,技能內文擋不住。
- 審查列表全是長串 ASCII slug,看不出這條 PR 改了什麼。
- 分支名給機器判階梯,標題給人看,兩者本來就承擔不同任務。
- 舊校準拿分支名比對標題,每跑一次就把繁中標題改回 slug,還通知所有審查者。

How:
- 步驟 7 改寫標題來源,並在完成條件加上「送出的標題不是分支名」。
- 步驟 8 第一項改成內容比對,寫明分支名不進入這項比對。
- 分支名維持 ASCII,`tools/slugify.sh` 與 `tools/base-branch.sh` 的行為不動。

Who:
- 使用者裁定標題讓位給語言規則,jsc-git 修改代理執行。
What:
- 三份 plugin manifest 的 version 由 0.1.2 升到 0.1.3。

Why:
- `pr` 技能的標題行為改了,版本要跟著動,各 CLI 才收得到更新。

How:
- 跑 `sh /root/plugins/meta/tools/sync-skill-manifest.sh /root/plugins/git`,退出碼 0。

Who:
- jsc-git 修改代理執行。
jiantw83 merged commit 717561fa08 into feat/skill-behaviors-and-version-block/main 2026-08-31 08:09:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/git#25