Files
shared/skills/spec-git-safety/SKILL.md
T
JefferyandClaude Opus 5 db492e6ba7 refactor(plugin 命名空間): plugin 更名 jsc-generic、hooks 只註冊自己擁有的 role
- 五份 manifest 的 name 由 jsc 改為 jsc-generic
- hooks/hooks.json 由合併超集改為只註冊 SessionStart(role_load)與 Stop(role_capture):worklog 的 hook 交還 jsc-doc
- hook 腳本搜尋路徑改指 jsc-generic
- role skill 更新 hooks 說明:改名後各 plugin 名稱獨立、互不覆蓋,不再需要三份同步;並註明不可再把別的 plugin 的 hook 寫進自己的 hooks.json
- skill 名稱不變(role、spec-*),指令引用改為 /jsc-generic: 前綴
- 版號 0.0.8 → 0.0.9

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 17:07:14 +08:00

53 lines
3.0 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.
---
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-generic: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,不可覆蓋。
- 建立新分支屬不可忽略的狀態變更,需明確告知使用者原因與新分支名稱。