Merge pull request 'feat: code-action-docker 新增參數來源優先序規則並升版 0.0.3' (#3) from develop into master

Reviewed-on: #3
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
This commit was merged in pull request #3.
This commit is contained in:
2026-07-15 10:55:11 +00:00
5 changed files with 16 additions and 5 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.0.2",
"version": "0.0.3",
"description": "JSC 程式碼工作流 pluginClaude Code / Codex / Antigravity / OpenCode),提供 RPG 攻防式 git diff review、裁決結果歸檔、Gitea AI review findings 修復/PR 流程、Gitea 議題 TODO 彙整與逐項實作、C# / .NET NuGet 套件更新、Gitea 專案批次同步,以及 action / Dockerfile 標準化流程;於 Claude Code 以 /jsc: 前綴呼叫。",
"skills": "./skills",
"author": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.0.2",
"version": "0.0.3",
"description": "JSC 程式碼工作流 plugin,提供 RPG 攻防式 git diff review、裁決結果歸檔、Gitea AI review findings 修復/PR 流程、Gitea 議題 TODO 彙整與逐項實作、C# / .NET NuGet 套件更新、Gitea 專案批次同步,以及 action / Dockerfile 標準化流程。",
"skills": "./skills"
}
+1 -1
View File
@@ -235,7 +235,7 @@ rm -rf ~/.config/opencode/skills/{code-review,code-review-archive,code-review-re
### `code-action-docker`
以**互動問答從零打造** GiteaGitHub「Docker 容器 action」(Node 主程式),再串接文件化流程。五階段:(1) **詢問 action 名稱**(用於 `action.yml``name`);(2) **詢問輸入與輸出參數**及其 description(盡量繁體中文、無亂碼;輸入含 requireddefault,實作對應 `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),沒有則回報後結束。
以**互動問答從零打造** GiteaGitHub「Docker 容器 action」(Node 主程式),再串接文件化流程。五階段:(1) **詢問 action 名稱**(用於 `action.yml``name`);(2) **詢問輸入與輸出參數**及其 description(盡量繁體中文、無亂碼;輸入含 requireddefault,實作對應 `INPUT_*` 環境變數與 `$GITHUB_OUTPUT`);(3) **詢問執行此流程的目標**,追問到可實作為止,整理**濃縮成一句話**(用於 `action.yml``description`,盡量繁體中文、無亂碼);(4) **依標準實作目標**——開發中需要新參數時**依序找 `${{ gitea.* }}``${{ secrets.* }}``${{ vars.* }}`,都沒有才詢問使用者是否加入 `inputs`**盡量以 **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),沒有則回報後結束。
參數:`[--action-dir <action 根目錄>] [--node-version <node tag>]`(根目錄預設目前工作目錄;node 版本預設最新;名稱/輸入輸出/目標以問答取得,呼叫時已口述者不再重問)。
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.0.2",
"version": "0.0.3",
"description": "JSC 程式碼工作流 plugin,提供 RPG 攻防式 git diff review、裁決結果歸檔、Gitea AI review findings 修復/PR 流程、Gitea 議題 TODO 彙整與逐項實作、C# / .NET NuGet 套件更新、Gitea 專案批次同步,以及 action / Dockerfile 標準化流程;於 Antigravity 以 /jsc: 前綴呼叫。",
"skills": "./skills/"
}
+12 -1
View File
@@ -1,6 +1,6 @@
---
name: code-action-docker
description: 以互動問答從零打造 GiteaGitHub「Docker 容器 action」:(1) 詢問 action 名稱(用於 action.yml 的 name);(2) 詢問輸入與輸出參數及其 description(盡量繁體中文、無亂碼);(3) 詢問執行此流程的目標,整理濃縮成一句話(用於 action.yml 的 description,盡量繁體中文、無亂碼);(4) 依標準實作目標——盡量以 Node.js 開發、程式檔一律放 `src/`、盡量詳細輸出訊息且格式統一為 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息`(無階段則移除該 `[]`,等級為 INF/WRN/ERR/TRC/DBG),並產生 action.ymlentrypoint.sh/最新 node 版本的 Dockerfile(5) 檢查是否有 doc-funcs 技能,有則完整執行 `/jsc:doc-funcs`,否則結束。當使用者說建立/產生一個 docker action、從零做一個容器 action、幫我問完需求後生出 action、把需求做成 node docker action,或提到 code-action-docker 時觸發。不適用於:composite action(用 code-action-composite)、只整理既有 Dockerfile(用 code-image)、非 action 專案。
description: 以互動問答從零打造 GiteaGitHub「Docker 容器 action」:(1) 詢問 action 名稱(用於 action.yml 的 name);(2) 詢問輸入與輸出參數及其 description(盡量繁體中文、無亂碼);(3) 詢問執行此流程的目標,整理濃縮成一句話(用於 action.yml 的 description,盡量繁體中文、無亂碼);(4) 依標準實作目標——開發中需要新參數時依 `${{ gitea.* }}` → `${{ secrets.* }}` → `${{ vars.* }}` 順序尋找、都沒有才詢問使用者是否加入 inputs;盡量以 Node.js 開發、程式檔一律放 `src/`、盡量詳細輸出訊息且格式統一為 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息`(無階段則移除該 `[]`,等級為 INF/WRN/ERR/TRC/DBG),並產生 action.ymlentrypoint.sh/最新 node 版本的 Dockerfile(5) 檢查是否有 doc-funcs 技能,有則完整執行 `/jsc:doc-funcs`,否則結束。當使用者說建立/產生一個 docker action、從零做一個容器 action、幫我問完需求後生出 action、把需求做成 node docker action,或提到 code-action-docker 時觸發。不適用於:composite action(用 code-action-composite)、只整理既有 Dockerfile(用 code-image)、非 action 專案。
argument-hint: "[--action-dir <action 根目錄>] [--node-version <node tag>]"
---
@@ -71,6 +71,17 @@ argument-hint: "[--action-dir <action 根目錄>] [--node-version <node tag>]"
依階段 1~3 收齊的需求實作 action,遵守以下標準:
### 4.0 開發中需要參數時的來源優先序
實作過程中發現需要某個參數(例如 repo 資訊、token、環境設定)而階段 2 的 `inputs` 沒有時,**依下列順序尋找來源,前者可用就不往後找**:
1. **`${{ gitea.* }}` context**runner 內建 context(如 `gitea.repository``gitea.ref``gitea.actor``gitea.token`);docker action 執行期對應 runner 注入的 `GITHUB_*``GITEA_*` 環境變數(如 `GITHUB_REPOSITORY``GITHUB_REF`),主程式直接讀 `process.env` 即可。
2. **`${{ secrets.* }}`**repoorg 的 secrets(機敏值:token、密碼、金鑰)。
3. **`${{ vars.* }}`**repoorg 的 variables(非機敏設定值)。
4. **以上都沒有** → 以 `AskUserQuestion` 詢問使用者**是否要把該參數加入 `inputs`**(加入則回到階段 2 規格補齊名稱/descriptionrequireddefault,並同步 `action.yml`);**不得臆測預設值或硬編碼**。
注意:`secrets.*``vars.*` 無法在 `action.yml``inputs.default` 直接引用,須由呼叫端 workflow 以 `with:``env:` 傳入(如 `with: token: ${{ secrets.MY_TOKEN }}`);採用這類來源時,在 README 使用範例中示範呼叫端如何帶入,機敏值一律不落地、不輸出明文(log 需遮蔽)。
### 4.1 盡量以 Node.js 開發,程式檔一律放 `src/`
- 主程式與所有模組**盡量以 Node.js 撰寫**;只有目標必須依賴外部工具時,才以 `child_process``execFileSync``spawnSync`)在 Node 內呼叫,不另寫 shellpython 主程式。