feat(spec 共用規範): 新增 9 個 spec-* 共用規範 skills(輸出/執行/Gitea/Git 安全/時間訊息/action 參數/Dockerfile/看板/doc-funcs 串接)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jeffery
2026-07-17 08:58:18 +08:00
co-authored by Claude Fable 5
parent 8f555734ca
commit 8ad1affc02
9 changed files with 332 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
---
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:spec-git-safety、或執行任何會操作 git 工作區/分支的 JSC skill 時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。
---
# spec-git-safety — 共用 Git 安全操作規範
所有 JSC skills 操作 git 工作區、分支與遠端時,一律遵守以下規範。
## 不破壞既有工作
- 改寫/覆寫/搬移檔案前,若工作區有未提交變更,先提醒使用者建議先 commit/備份。
- **絕不** `reset --hard``checkout -f``clean`,也不刪除使用者既有原始碼、不強制丟棄未提交變更。
- 未提交變更導致切換分支/pull/建立分支失敗時,**停止並回報**,請使用者先處理;不可強制丟棄。
- 目錄已存在且非預期內容(如非 git repo)→ 回報並略過,**不刪除、不覆蓋**。
## 移動檔案優先 `git mv`
- 搬移/改名檔案優先用 `git mv` 保留歷史。
- 大小寫不敏感的檔案系統上需兩段式改名(先 `git mv A A.tmp``git mv A.tmp a`)。
- 改名後必須同步更新專案內所有引用(設定檔、CI、文件連結),確保行為不變。
## develop → master 後備分支
需要基準/後備分支時(當前分支不在遠端、clone 後選工作分支、PR 目標後備),依序:
1. `origin/develop` 存在 → 用 `develop`
2. 否則 `origin/master` 存在 → 用 `master`
3. 兩者皆無 → 回報「找不到 develop/master」並停止或略過該項,**不臆測其他分支**。
切換寫法:
```bash
git switch develop 2>/dev/null || git switch -c develop --track origin/develop
```
- 切換後備分支屬不可忽略的狀態變更,需明確告知使用者已從原分支切換到哪個分支。
- 批次更新既有 repo 時用 `git pull --ff-only`;無法快進(本地與遠端分歧)→ 回報需人工處理,**不**自動 mergerebasereset。
## 保守解衝突
pullmergecherry-pick 發生衝突時:
1.`git status --porcelain` 與衝突標記定位衝突檔。
2. 讀取衝突檔脈絡,依專案現有行為與遠端變更做**最小合理整合**。
3. 可安全解決的衝突:編輯移除衝突標記,`git add -- <檔案...>` 標記已解決,完成 mergerebasecherry-pick 的必要步驟。
4. 無法安全判斷的衝突:**停止處理**,列出檔案、原因與需要使用者決策的點;不要硬選任一邊。
## 建立分支不覆蓋
- 新分支名稱需可讀且避免覆蓋既有分支;本地或遠端已存在同名分支時,換一個時間戳或短 hash,不可覆蓋。
- 建立新分支屬不可忽略的狀態變更,需明確告知使用者原因與新分支名稱。