Revert "fix(code-action-docker): 訊息格式對齊 doc-funcs 規範([階段][等級][時間]: 訊息,階段選填)"

This reverts commit fcecc558b2.
This commit is contained in:
Jeffery
2026-07-16 12:33:52 +08:00
parent 2d73b3121e
commit 32e7832527
+10 -10
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) 依標準實作目標——開發中需要新參數時依 `${{ gitea.* }}` → `${{ secrets.* }}` → `${{ vars.* }}` 順序尋找、都沒有才詢問使用者是否加入 inputs;盡量以 Node.js 開發、程式檔一律放 `src/`、盡量詳細輸出訊息且格式統一為 doc-funcs 規範的 `[階段][等級][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>]"
---
@@ -13,7 +13,7 @@ argument-hint: "[--action-dir <action 根目錄>] [--node-version <node tag>]"
| 1. 詢問 action 名稱 | 向使用者詢問 action 名稱 → 寫入 `action.yml``name` |
| 2. 詢問輸入與輸出參數 | 逐一收齊 `inputs``outputs`(名稱、description、required、default)→ description 盡量繁體中文、無亂碼 |
| 3. 詢問流程目標 | 詢問此 action 要達成什麼 → 整理並**濃縮成一句話**,經使用者確認後寫入 `action.yml``description`(盡量繁體中文、無亂碼) |
| 4. 實作目標 | 盡量以 **Node.js** 開發、程式檔**一律放 `src/`**;訊息詳細且格式統一為 `[階段][等級][時間]: 訊息`doc-funcs 規範);產生 `action.yml``entrypoint.sh`/最新 node 版本的 `Dockerfile` |
| 4. 實作目標 | 盡量以 **Node.js** 開發、程式檔**一律放 `src/`**;訊息詳細且格式統一為 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息`;產生 `action.yml``entrypoint.sh`/最新 node 版本的 `Dockerfile` |
| 5. 檢查 doc-funcs | 有 doc-funcs 技能 → 完整執行 `/jsc:doc-funcs`;沒有 → 回報後結束 |
---
@@ -91,15 +91,15 @@ argument-hint: "[--action-dir <action 根目錄>] [--node-version <node tag>]"
### 4.2 盡量詳細輸出訊息,格式統一
- 執行過程**盡量詳細輸出**:開始/結束、讀到的輸入、每個關鍵步驟、外部指令與結果、寫出的輸出、警告與錯誤。
- 每一則訊息格式固定為(與 doc-funcs 第 6 步的 `[{階段}?][{等級}][{時間}]: {訊息}` 規範一致)
- 每一則訊息格式固定為:
```
[階段][等級][yyyy/MM/dd HH:mm:ss]: 訊息
[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息
```
- **階段**:該訊息所屬的流程階段名稱(如 `讀取輸入`、`執行`、`寫出結果`),選填;**沒有階段時整個 `[階段]` 區塊移除**,即 `[等級][yyyy/MM/dd HH:mm:ss]: 訊息`。
- **等級**:必為 `INF``WRN``ERR``TRC``DBG` 其中之一(一般資訊 INF、警告 WRN、錯誤 ERR、細部追蹤 TRC、除錯 DBG)。
- **時間**:台灣時區(Asia/Taipei),固定 `yyyy/MM/dd HH:mm:ss`。
- **階段**:該訊息所屬的流程階段名稱(如 `讀取輸入`、`執行`、`寫出結果`);**沒有階段時整個 `[階段]` 區塊移除**,即 `[yyyy/MM/dd HH:mm:ss][等級]: 訊息`。
- **等級**:必為 `INF``WRN``ERR``TRC``DBG` 其中之一(一般資訊 INF、警告 WRN、錯誤 ERR、細部追蹤 TRC、除錯 DBG)。
- **一行一則訊息**:每則訊息獨立一行輸出,不得多則併成一坨。
- 在 `src/logger.js` 實作共用 logger(產生時間戳、組合前綴、`INF`/`WRN`/`ERR`/`TRC`/`DBG` 各一個方法、可帶階段名稱),主程式一律經由它輸出;`ERR` 走 `console.error`,其餘走 `console.log`。
- 錯誤處理:可預期錯誤輸出 `ERR` 訊息並 `process.exit(1)`;未捕捉例外亦須被攔截(`process.on('uncaughtException'/'unhandledRejection')`)以 `ERR` 格式輸出後非零結束。
@@ -136,9 +136,9 @@ runs:
set -e
# action 啟動訊息:名稱/用途/更新時間(此檔由 code-action-docker 產生)
echo "[啟動][INF][<產生當下 Asia/Taipei 時間>]: Action<action 名稱>"
echo "[啟動][INF][<產生當下 Asia/Taipei 時間>]: 用途:<action.yml 的 description>"
echo "[啟動][INF][<產生當下 Asia/Taipei 時間>]: 更新時間:<產生當下 Asia/Taipei 時間>"
echo "[<產生當下 Asia/Taipei 時間>][啟動][INF]: Action<action 名稱>"
echo "[<產生當下 Asia/Taipei 時間>][啟動][INF]: 用途:<action.yml 的 description>"
echo "[<產生當下 Asia/Taipei 時間>][啟動][INF]: 更新時間:<產生當下 Asia/Taipei 時間>"
# 啟動 node 主程式(以 exec 取代 shell,正確處理訊號與 exit code
exec node /action/src/index.js "$@"
@@ -197,7 +197,7 @@ ENTRYPOINT ["/action/entrypoint.sh"]
實作完成後,檢查目前環境是否有 **doc-funcs** 技能(可用 skill 清單中是否存在 `doc-funcs`,含 `/jsc:doc-funcs` 等帶前綴形式):
- **有** → 以階段 4 的 action 根目錄為目標,**完整執行 `/jsc:doc-funcs` 流程**(判斷語言 → 掃描 function 與指令檔 → 建立 `.docs/` 草稿 → 詢問使用者如何實作 → 寫回 → 保守優化 → 重建 README → 清理草稿 → 驗證)。doc-funcs 會涵蓋本次產出:`src/` 內各 function 的 JSDoc、`entrypoint.sh``Dockerfile` 逐行註解、重建 README;其「如何實作」詢問由使用者於該流程內裁示。本 skill 4.2 的訊息格式即 doc-funcs 第 6 步的 `[{階段}?][{等級}][{時間}]: {訊息}` 規範,兩者一致,doc-funcs 流程覆蓋指令檔時直接沿用
- **有** → 以階段 4 的 action 根目錄為目標,**完整執行 `/jsc:doc-funcs` 流程**(判斷語言 → 掃描 function 與指令檔 → 建立 `.docs/` 草稿 → 詢問使用者如何實作 → 寫回 → 保守優化 → 重建 README → 清理草稿 → 驗證)。doc-funcs 會涵蓋本次產出:`src/` 內各 function 的 JSDoc、`entrypoint.sh``Dockerfile` 逐行註解、重建 README;其「如何實作」詢問由使用者於該流程內裁示。既有訊息一律維持本 skill 4.2 的 `[yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息` 格式,不得被改寫成其他欄位順序
- **沒有** → 回報「未偵測到 doc-funcs 技能,略過文件化」後**結束**,不自行模擬 doc-funcs 流程。
---