feat(action skills): composite/docker action 標準化流程強化(參數優先序、從零建立、Dockerfile 修正) #6
@@ -44,7 +44,7 @@ code/
|
|||||||
│ ├── code-issues/ # 彙整議題 TODO(影響範圍小→大)+ 逐項實作 + 留言進度
|
│ ├── code-issues/ # 彙整議題 TODO(影響範圍小→大)+ 逐項實作 + 留言進度
|
||||||
│ ├── code-nuget/ # C# / .NET NuGet 套件更新 + build 驗證
|
│ ├── code-nuget/ # C# / .NET NuGet 套件更新 + build 驗證
|
||||||
│ ├── code-sync/ # 依擁有者批次 clone/更新 Gitea 專案
|
│ ├── code-sync/ # 依擁有者批次 clone/更新 Gitea 專案
|
||||||
│ ├── code-action-docker/ # 問答式打造 docker action(Node 主程式)+ 串接 doc-funcs
|
│ ├── code-action-docker/ # action 容器化(Node 主程式)+ 串接 doc-funcs
|
||||||
│ ├── code-action-composite/ # composite action 標準化 + 串接 doc-funcs
|
│ ├── code-action-composite/ # composite action 標準化 + 串接 doc-funcs
|
||||||
│ ├── code-image/ # Dockerfile 整理成六步流程 + 串接 doc-funcs
|
│ ├── code-image/ # Dockerfile 整理成六步流程 + 串接 doc-funcs
|
||||||
│ └── hello/ # 範例 skill:驗證安裝、新增 skill 的範本
|
│ └── hello/ # 範例 skill:驗證安裝、新增 skill 的範本
|
||||||
@@ -235,13 +235,13 @@ rm -rf ~/.config/opencode/skills/{code-review,code-review-archive,code-review-re
|
|||||||
|
|
||||||
### `code-action-docker`
|
### `code-action-docker`
|
||||||
|
|
||||||
以**互動問答從零打造** Gitea/GitHub「Docker 容器 action」(Node 主程式),再串接文件化流程。五階段:(1) **詢問 action 名稱**(用於 `action.yml` 的 `name`);(2) **詢問輸入與輸出參數**及其 description(盡量繁體中文、無亂碼;輸入含 required/default,實作對應 `INPUT_*` 環境變數與 `$GITHUB_OUTPUT`);(3) **詢問執行此流程的目標**,追問到可實作為止,整理**濃縮成一句話**(用於 `action.yml` 的 `description`,盡量繁體中文、無亂碼);(4) **依標準實作目標**——盡量以 **Node.js** 開發、程式檔**一律放 `src/`**(入口 `src/index.js`、共用 `src/logger.js`),**盡量詳細輸出訊息**且格式統一為 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息`(Asia/Taipei;無階段則移除該 `[]`;等級 `INF`/`WRN`/`ERR`/`TRC`/`DBG`;一行一則),並產生 `action.yml`、啟動前先輸出名稱/用途/更新時間的 `entrypoint.sh`、**使用最新 node 版本**的多階段建置 `Dockerfile`(預設 build 基底 `node:latest`、runtime `node:slim`);(5) **檢查是否有 doc-funcs 技能**:有則對整個專案**完整執行 `/jsc:doc-funcs`**(function 文件、`entrypoint.sh`/`Dockerfile` 逐行註解、重建 README),沒有則回報後結束。
|
把 Gitea/GitHub「Docker 容器 action」專案標準化為 **Node 主程式+容器化**,再串接文件化流程。五階段:(A) 找出 action 專案、讀 `action.yml`/`action.yaml` 的 `name`/`description`、判斷主程式語言;(B) 主程式**非 Node 則保守改寫為 Node**(高風險,先以 AskUserQuestion 確認,保留對外行為),並把所有 `.js` 集中到 **`src/`**、同步更新 `require`/`import` 路徑、`package.json` 與 `action.yml`;(C) 產生 `entrypoint.sh`,**啟動 node 前先輸出 action 名稱/用途/更新時間**(Asia/Taipei `yyyy/MM/dd HH:mm:ss`)再 `exec node`;(D) 依**六步流程**(參數處理 → 安裝套件 → 複製檔案 → 執行程序 → 縮小映像檔 → 設定入口)產生**使用最新 node 版本**的 `Dockerfile`,**每步內容依主程式(`src/`)實作量身決定**(先盤點相依/是否需 build/OS 層相依/入口檔再填對應步驟,用不到的不硬塞),預設 build 基底 `node:latest`、runtime `node:slim`、**多階段建置縮小映像**,`ENTRYPOINT` 指向 `entrypoint.sh`;(E) 對整個專案**完整執行 `/jsc:doc-funcs`**(function 文件、`entrypoint.sh`/`Dockerfile` 逐行註解、重建 README)。
|
||||||
|
|
||||||
參數:`[--action-dir <action 根目錄>] [--node-version <node tag>]`(根目錄預設目前工作目錄;node 版本預設最新;名稱/輸入輸出/目標以問答取得,呼叫時已口述者不再重問)。
|
參數:`[--action-dir <action 根目錄>] [--node-version <node tag>] [--main <主程式檔>] [--yes]`(根目錄預設目前工作目錄;node 版本預設最新;主程式自動判斷;`--yes` 略過一般確認,但主程式改寫與 doc-funcs 的實作詢問仍會中斷)。
|
||||||
|
|
||||||
- **Claude Code / Antigravity**:`/jsc:code-action-docker`,或 `/jsc:code-action-docker --action-dir ~/work/my-action --node-version 22`
|
- **Claude Code / Antigravity**:`/jsc:code-action-docker`,或 `/jsc:code-action-docker --action-dir ~/work/my-action --node-version 22`
|
||||||
- **Codex**:`$code-action-docker`,或 `$code-action-docker --action-dir ~/work/my-action`,或用 `/skills` 選單
|
- **Codex**:`$code-action-docker`,或 `$code-action-docker --action-dir ~/work/my-action`,或用 `/skills` 選單
|
||||||
- **OpenCode**:描述需求(如「幫我從零建一個 docker action:先問我名稱、輸入輸出參數與目標,用 node 實作放在 src/,訊息格式統一為 [時間][階段][等級],最後跑 doc-funcs 補文件並重建 README」)自動觸發
|
- **OpenCode**:描述需求(如「把這個 action 主程式改成 node、所有 js 收進 src/,產生會先輸出 action 名稱/用途/更新時間再啟動 node 的 entrypoint.sh、用最新 node 版本的 Dockerfile,最後跑 doc-funcs 補文件並重建 README」)自動觸發
|
||||||
|
|
||||||
### `code-action-composite`
|
### `code-action-composite`
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user