refactor(shared): switch code skills to jsc-shared

This commit is contained in:
2026-07-31 17:36:08 +00:00
parent ae745a0ad4
commit 3a760a462e
8 changed files with 79 additions and 79 deletions
+11 -11
View File
@@ -16,15 +16,15 @@ argument-hint: "[--project-dir <專案根目錄>] [--dockerfile <Dockerfile 路
---
## 共用規範(generic plugin,必要前置)
## 共用規範(shared plugin,必要前置)
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到(generic plugin 未安裝)時,先詢問使用者是否安裝 generic plugin`https://gitea.jsc.idv.tw/plugins/generic.git`),使用者不安裝則直接中斷本 skill**,不得只憑下方一行摘要繼續執行:
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到(shared plugin 未安裝)時,先詢問使用者是否安裝 shared plugin`https://gitea.jsc.idv.tw/plugins/shared.git`),使用者不安裝則直接中斷本 skill**,不得只憑下方一行摘要繼續執行:
- `/jsc-generic:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼。
- `/jsc-generic:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認、不擴及無關檔案。
- `/jsc-generic:spec-git-safety`:不破壞既有工作(絕不 `reset --hard``clean`)。
- `/jsc-generic:spec-dockerfile`Dockerfile 六步流程、多階段建置、對外契約不動、自我檢查。
- `/jsc-generic:spec-doc-funcs-handoff`:最終階段完整執行 `/jsc-doc:funcs` 的標準流程。
- `/jsc-shared:spec-output`:繁體中文(台灣用語)、UTF-8(不含 BOM)無亂碼。
- `/jsc-shared:spec-execution`:自動執行原則(必要決策才中斷)、不臆測/需人工確認、不擴及無關檔案。
- `/jsc-shared:spec-git-safety`:不破壞既有工作(絕不 `reset --hard``clean`)。
- `/jsc-shared:spec-dockerfile`Dockerfile 六步流程、多階段建置、對外契約不動、自我檢查。
- `/jsc-shared:spec-doc-funcs-handoff`:最終階段完整執行 `/jsc-doc:funcs` 的標準流程。
本 skill 特有補充:
@@ -76,7 +76,7 @@ argument-hint: "[--project-dir <專案根目錄>] [--dockerfile <Dockerfile 路
## 階段 B:整理 Dockerfile 為六步流程
在**保留建置行為**的前提下,把目標 `Dockerfile` 的指令重整/歸位為 `/jsc-generic:spec-dockerfile` 定義的**固定六步流程**(參數處理 → 安裝套件 → 複製檔案 → 執行程序 → 縮小映像檔 → 設定入口),並採**多階段建置**縮小最終映像;各步要點(ARG 集中檔首、相依描述先 `COPY`、同層清理快取、`COPY --from` 逐項明列、搬移 runtime 需要的 `ENV``WORKDIR``EXPOSE``USER`)依該 spec。
在**保留建置行為**的前提下,把目標 `Dockerfile` 的指令重整/歸位為 `/jsc-shared:spec-dockerfile` 定義的**固定六步流程**(參數處理 → 安裝套件 → 複製檔案 → 執行程序 → 縮小映像檔 → 設定入口),並採**多階段建置**縮小最終映像;各步要點(ARG 集中檔首、相依描述先 `COPY`、同層清理快取、`COPY --from` 逐項明列、搬移 runtime 需要的 `ENV``WORKDIR``EXPOSE``USER`)依該 spec。
**重整原則(關鍵)**
@@ -84,7 +84,7 @@ argument-hint: "[--project-dir <專案根目錄>] [--dockerfile <Dockerfile 路
- **已是多階段** → 將既有各階段對應到六步(build 階段涵蓋 1–4、runtime 階段涵蓋 5–6),補齊缺漏的快取最佳化與清理,不破壞既有 `--from` 依賴。
- **單階段改多階段** → 僅在能可靠判斷 runtime 真正需要哪些產物時才做;無法可靠判斷時,**不臆測**,標 `# 需人工確認:runtime 需要的產物清單` 並回報,退回「最小重排+補註解」。
- **多階段不適用** → 若該映像本質上無法受益於多階段(例如純資料映像、最終就是要完整建置環境),保留單階段,於步驟 5 以註解說明「此映像不適用多階段縮小」,其餘步驟仍依序歸位。
- **對外契約不動**:依 `/jsc-generic:spec-dockerfile``ENTRYPOINT``CMD``EXPOSE``ENV``VOLUME``HEALTHCHECK``USER` 語意與原檔一致,只可調整位置與分層)。
- **對外契約不動**:依 `/jsc-shared:spec-dockerfile``ENTRYPOINT``CMD``EXPOSE``ENV``VOLUME``HEALTHCHECK``USER` 語意與原檔一致,只可調整位置與分層)。
- **`.dockerignore`**:若為了「複製檔案」步驟的正確性需要排除建置產物/`node_modules``.git`,可建立或補強 `.dockerignore`(僅新增排除項,不刪既有),並回報。
重整骨架(實際指令、base image、語言依階段 A 偵測結果填入;非 Node 專案請換成對應語言的安裝/建置指令與 runtime 基底):
@@ -120,7 +120,7 @@ COPY --from=build /app/<artifacts> ./<artifacts>
ENTRYPOINT [<entrypoint>]
```
- **自我檢查**:依 `/jsc-generic:spec-dockerfile` 的自我檢查清單(跨階段 `ARG` 重新宣告、runtime 帶齊產物、對外契約一致、路徑一致)。
- **自我檢查**:依 `/jsc-shared:spec-dockerfile` 的自我檢查清單(跨階段 `ARG` 重新宣告、runtime 帶齊產物、對外契約一致、路徑一致)。
- 此檔的「用途/更新日期」開頭註解區塊與逐行註解,於階段 C 由 `/jsc-doc:funcs` 的指令檔流程統一補齊/覆寫為標準格式;本階段先確保**建置行為**正確、六步結構清楚即可。
- **建置驗證**:若環境可執行 `docker build`,重整後做一次建置驗證(或至少 `docker build --check`/語法檢查)確認可建置;無法執行時明確說明原因並標註風險(階段 C funcs 第 11 步亦會做語法驗證)。
@@ -128,7 +128,7 @@ ENTRYPOINT [<entrypoint>]
## 階段 C:完整執行 /jsc-doc:funcs 處理流程
Dockerfile 六步整理完成後,以階段 A1 的專案根目錄為目標,依 `/jsc-generic:spec-doc-funcs-handoff` 對**整個專案**完整執行 `/jsc-doc:funcs` 流程(前置可用性檢查、完整流程、由使用者裁示實作方式、重建 README;本次整理的 `Dockerfile` 會被視為部署設定檔補齊標頭與逐行註解)。
Dockerfile 六步整理完成後,以階段 A1 的專案根目錄為目標,依 `/jsc-shared:spec-doc-funcs-handoff` 對**整個專案**完整執行 `/jsc-doc:funcs` 流程(前置可用性檢查、完整流程、由使用者裁示實作方式、重建 README;本次整理的 `Dockerfile` 會被視為部署設定檔補齊標頭與逐行註解)。
---