refactor(skills 共用規範): 抽出共用規範至 generic spec-*,以引用+一行 fallback 摘要取代重複內容
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
fc39c1254d
commit
7814e2edea
+13
-22
@@ -18,13 +18,18 @@ argument-hint: "[--target-dir <根目錄>] [--owner <擁有者,以逗號分隔>]
|
||||
|
||||
---
|
||||
|
||||
## 輸出規範(務必遵守)
|
||||
## 共用規範(generic plugin,必要前置)
|
||||
|
||||
- **語言**:所有面向使用者的輸出(擁有者清單、專案清單、進度、總結、反問)一律使用**繁體中文(台灣用語)**;僅識別字、檔名、git/curl 指令、API 路徑等技術標識保留原文,**不可**使用簡體字。
|
||||
- **編碼無亂碼**:凡輸出含繁體中文、全形標點、emoji,一律 **UTF-8(不含 BOM)**,不得出現問號方框或錯碼。
|
||||
- **Token 機密保護(極重要)**:gitea token 一律**從環境變數讀取**(如 `$GITEA_TOKEN`),**絕不**寫死在 skill、log 或任何輸出;**不可** echo 含 token 的指令或 URL。所有顯示給使用者的指令/錯誤訊息都要**遮蔽 token**(如以 `***` 取代)。clone 時帶 token 的 URL 用變數帶入、**不可印出**,且 clone 完成後要把 origin 還原成不含 token 的乾淨 URL(見 E3),避免 token 落地在 `.git/config`。
|
||||
- **自動執行原則**:除非使用者明確要求先確認,或遇到不可忽略的必要決策(例如缺 token、無法決定 gitea 主機、目標目錄不可寫、單一專案更新時工作區有未提交變更需使用者裁示),否則各階段只需輸出簡短計畫/進度後直接執行到完成。**唯一一定會中斷的點是階段 C 的擁有者多選**(除非已帶 `--owner`)。
|
||||
- **不破壞既有工作**:更新既有專案時若工作區有未提交變更而導致切換/pull 失敗,**停止該專案的更新並回報**,請使用者自行處理;**絕不**強制丟棄(不可 `reset --hard`/`checkout -f`/`clean`)。
|
||||
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到(generic plugin 未安裝)時,先詢問使用者是否安裝 generic plugin(`https://gitea.jsc.idv.tw/plugins/generic.git`),使用者不安裝則直接中斷本 skill**,不得只憑下方一行摘要繼續執行:
|
||||
|
||||
- `/jsc:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼。
|
||||
- `/jsc:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認。
|
||||
- `/jsc:spec-gitea`:`GITEA_TOKEN` 機密保護(不 echo、遮蔽、clone 後還原乾淨 origin)、API 分頁完整讀取、host 決定順序。
|
||||
- `/jsc:spec-git-safety`:不破壞既有工作(未提交變更不強切、絕不 `reset --hard`/`clean`)、develop → master 後備、`pull --ff-only`。
|
||||
|
||||
本 skill 特有補充:
|
||||
|
||||
- **必要決策**(會中斷詢問):缺 token、無法決定 gitea 主機、目標目錄不可寫、單一專案更新時工作區有未提交變更需使用者裁示。**唯一一定會中斷的點是階段 C 的擁有者多選**(除非已帶 `--owner`)。
|
||||
- **唯讀本意**:本 skill 只做 clone 與本機分支更新,**不 push、不改遠端、不刪本機未追蹤檔**。
|
||||
|
||||
---
|
||||
@@ -46,25 +51,11 @@ argument-hint: "[--target-dir <根目錄>] [--owner <擁有者,以逗號分隔>]
|
||||
|
||||
### A1. 確認 token
|
||||
|
||||
讀取環境變數 `GITEA_TOKEN`(或助理慣用的等價變數名)。
|
||||
|
||||
```bash
|
||||
[ -n "${GITEA_TOKEN}" ] && echo "GITEA_TOKEN 已設定" || echo "GITEA_TOKEN 未設定"
|
||||
```
|
||||
|
||||
- **未設定** → 回報「缺少 `GITEA_TOKEN` 環境變數,無法存取 Gitea API」並停止;提示使用者於環境變數提供 token(不要請使用者把 token 貼進對話)。
|
||||
- **不可** echo token 本身,只確認是否存在。
|
||||
依 `/jsc:spec-gitea` 確認 `GITEA_TOKEN`(只輸出「已設定/未設定」,不可 echo token 本身);**未設定** → 回報「缺少 `GITEA_TOKEN` 環境變數,無法存取 Gitea API」並停止(不要請使用者把 token 貼進對話)。
|
||||
|
||||
### A2. 決定 gitea 主機
|
||||
|
||||
依序決定主機(取第一個成功者):
|
||||
|
||||
1. 帶 `--host <主機>` → 直接採用。
|
||||
2. 否則讀環境變數 `$GITEA_HOST`(若有)。
|
||||
3. 否則若**目前工作目錄是 git repo** 且 `git remote get-url origin` 指向某 gitea 主機 → 取該 host。
|
||||
4. 以上皆無 → **詢問使用者** gitea 主機,**不臆測**。
|
||||
|
||||
主機僅取 host 部分(如 `gitea.jsc.idv.tw`),組 API base 為 `https://<host>/api/v1`。
|
||||
依 `/jsc:spec-gitea` 的 host 決定順序:`--host` → `$GITEA_HOST` → 目前 repo 的 origin → 詢問使用者(不臆測)。主機僅取 host 部分(如 `gitea.jsc.idv.tw`),組 API base 為 `https://<host>/api/v1`。
|
||||
|
||||
### A3. 決定目標根目錄
|
||||
|
||||
|
||||
Reference in New Issue
Block a user