feat(shared): 新增14個共用spec、models/todo工具與樣板產生器,收斂跨repo重複規範

依 todo.md 執行的規範治理專案:新增 spec-preflight 等 14 個共用規範(含
conventional-commit/pull-request/git-push/issue-read/todo-list/ask-user/
subagent/no-scratch-files/skill-invocation/script-path/action-scaffold/
node-src-layout/plugin-cli/model),擴充 spec-git-safety 與 spec-gitea(token
優先序、機密遮蔽、Wiki 頁名轉義規則);新增可執行 skill `models`(模型能力
查詢與標籤)與 `todo`(依指定模型產生/附加 todo.md);新增 plugin.meta.json
單一事實來源與 gen-plugin-files.mjs 樣板產生器,統一四個 repo 的 manifest/
README/AGENTS.md 並移除寫死的本機使用者路徑;新增 shared/scripts/lib 的
log/機密遮蔽三語言參考實作。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 06:02:30 +00:00
co-authored by Claude Sonnet 5
parent d49ae1085d
commit 1030f9d403
38 changed files with 2329 additions and 139 deletions
+18 -1
View File
@@ -1,6 +1,6 @@
---
name: spec-git-safety
description: JSC plugins 共用「Git 安全操作規範」:不破壞既有工作(未提交變更先提醒、絕不 reset --hard/checkout -f/clean)、git mv 保留歷史、develop → master 後備分支選擇、pull --ff-only、保守解衝突。當其他 skill 內文引用 spec-git-safety 或 /jsc-shared:spec-git-safety、或執行任何會操作 git 工作區/分支的 JSC skill 時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。
description: JSC plugins 共用「Git 安全操作規範」:不破壞既有工作(未提交變更先提醒、絕不 reset --hard/checkout -f/clean)、git mv 保留歷史、develop → master 後備分支選擇、pull --ff-only、工作分支選擇(用 git remote show origin/origin/HEAD 判定遠端預設分支、develop 不存在時從遠端預設分支建立、只有來源與目標分支同名才開新分支)、保守解衝突、建立分支不覆蓋(時間戳或短 hash)。當其他 skill 內文引用 spec-git-safety 或 /jsc-shared:spec-git-safety、或執行任何會操作 git 工作區/分支的 JSC skill 時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。
---
# spec-git-safety — 共用 Git 安全操作規範
@@ -37,6 +37,23 @@ git switch develop 2>/dev/null || git switch -c develop --track origin/develop
- 切換後備分支屬不可忽略的狀態變更,需明確告知使用者已從原分支切換到哪個分支。
- 批次更新既有 repo 時用 `git pull --ff-only`;無法快進(本地與遠端分歧)→ 回報需人工處理,**不**自動 merge/rebase/reset。
## 工作分支選擇
判定遠端預設分支,以及是否需要為當前操作另開一條工作分支:
- **判定遠端預設分支**:優先用 `git symbolic-ref --quiet refs/remotes/origin/HEAD`(結果形如 `refs/remotes/origin/<預設分支>`),取不到時退而用 `git remote show origin`(找輸出中的 `HEAD branch:` 那行)。兩者都取不到 → 回報並停止,**不臆測** `master`/`main`。
- **`develop` 在遠端不存在時**,改由上一步判定出的遠端預設分支(通常是 `master`,但仍須以實測結果為準,不可不判定就固定假設)建立:
```bash
git switch -c develop "origin/<上一步判定出的遠端預設分支>"
```
- **只有來源分支與目標分支同名時才開新的工作分支**:
- 同名 → 不可在該分支上直接操作/commit,也不可直接把它 push 成目標分支。改從已更新到最新的目標分支建立新的工作分支,後續操作(修復、commit、push)都以新分支為準。
- 不同名 → 直接在目前分支操作,不另開分支;即使目前分支已存在對應的遠端分支,也照常在目前分支處理。
- 新工作分支的命名(避免覆蓋既有分支、加時間戳或短 hash)依下方「建立分支不覆蓋」規範辦理。
- 切換或建立分支皆屬不可忽略的狀態變更,需在輸出中明確告知使用者原因(例如「來源分支與目標分支同名」或「遠端沒有 develop,已從 `<預設分支>` 建立」)與結果的分支名稱。
## 保守解衝突
pull/merge/cherry-pick 發生衝突時: