feat(code-action-node): 新增 Node(JavaScript)action 標準化 skill 並登錄 README
This commit is contained in:
@@ -42,6 +42,7 @@ code/
|
||||
│ ├── code-sync/ # 依擁有者批次 clone/更新 Gitea 專案
|
||||
│ ├── code-action-docker/ # action 容器化(Node 主程式)+ 串接 doc-funcs
|
||||
│ ├── code-action-composite/ # composite action 標準化 + 串接 doc-funcs
|
||||
│ ├── code-action-node/ # Node(JS)action 標準化(ncc 打包)+ 串接 doc-funcs
|
||||
│ └── code-image/ # Dockerfile 整理成六步流程 + 串接 doc-funcs
|
||||
├── AGENTS.md # 跨助理共用指引
|
||||
└── README.md
|
||||
@@ -134,7 +135,7 @@ git -C ~/jsc-plugin pull
|
||||
cp -r ~/jsc-plugin/skills/* ~/.config/opencode/skills/
|
||||
|
||||
# 移除
|
||||
rm -rf ~/.config/opencode/skills/{code-review-resolve,code-issues,code-nuget,code-sync,code-action-docker,code-action-composite,code-image}
|
||||
rm -rf ~/.config/opencode/skills/{code-review-resolve,code-issues,code-nuget,code-sync,code-action-docker,code-action-composite,code-action-node,code-image}
|
||||
```
|
||||
|
||||
> **Windows PowerShell**:`cp -r A B` → `Copy-Item A B -Recurse -Force`、`rm -rf X` → `Remove-Item X -Recurse -Force`、`~` → `$HOME`。
|
||||
@@ -228,6 +229,16 @@ rm -rf ~/.config/opencode/skills/{code-review-resolve,code-issues,code-nuget,cod
|
||||
- **Codex**:`$code-action-composite`,或 `$code-action-composite --action-dir ~/work/my-action`,或用 `/skills` 選單
|
||||
- **OpenCode**:描述需求(如「把這個 composite action 標準化,在 steps 最前面加一個會輸出 action 名稱/用途/更新時間的 step,最後跑 doc-funcs 補文件並重建 README」)自動觸發
|
||||
|
||||
### `code-action-node`
|
||||
|
||||
把 Gitea/GitHub「Node(JavaScript)action」專案標準化,再串接文件化流程。node action 由 **runner 內建 Node 直接執行 `runs.main`**(不需 Docker、啟動比 docker action 快),但 **runner 不會自動 `npm install`**——這是與 docker/composite 最大的差異。五階段:(A) 找出 action 專案、讀 `action.yml`/`action.yaml` 的 `name`/`description`、判斷主程式語言(無 manifest 可**問答式從零建立**);(B) 主程式**非 Node 則保守改寫為 Node**(高風險,先以 AskUserQuestion 確認,保留對外行為),並把**主程式依賴鏈**的 `.js` 集中到 **`src/`**(工具設定檔與測試目錄不搬)、同步更新 `require`/`import` 路徑、`package.json` 與 `action.yml`;(C) 對齊 `runs` 為 node action(`using: node24` + `main`,`--node-version` 可覆寫、runner 太舊退 `node20`),**`outputs` 去除 `value`**(node 只需 `description`,值於執行時寫入 `$GITHUB_OUTPUT`)、**`inputs` 由 runner 自動注入 `INPUT_*`**(不像 composite 需手動映射),並在**主程式入口最前面**以 `console.log` 輸出 action 名稱/用途/更新時間(Asia/Taipei `yyyy/MM/dd HH:mm:ss`;node action 無 `entrypoint.sh`,橫幅改在 JS 輸出);(D) 相依處理——**零相依**則 `main` 直接指 `src/index.js`,**有相依**則以 [`@vercel/ncc`](https://github.com/vercel/ncc) 打包成 `dist/index.js`、`main` 改指 `dist/index.js` 並**把 `dist/` commit 進 repo**(確認 `.gitignore` 未忽略);(E) 對整個專案**完整執行 `/jsc:doc-funcs`**(function 文件、`src/` 主程式與 `action.yml` 註解、重建 README)。開發中需要新參數時依**參數來源優先序**處理:主程式優先取 runner 注入的 `GITHUB_*`/`GITEA_*` 執行期環境變數,既有 `inputs` 以 `process.env.INPUT_*`(或 `core.getInput`)取用,無法取得才經使用者同意**新增 `inputs`**;`secrets`/`vars` **一律視為不可用**,需要時宣告為 `inputs` 由呼叫端 workflow 以 `with:` 傳入,未經同意不擅改 `inputs`/`outputs` 契約。skill 各檔的「更新時間」於最終階段(doc-funcs 完成後)**統一同步為同一時間戳**。
|
||||
|
||||
參數:`[--action-dir <action 根目錄>] [--node-version <node runtime>] [--main <主程式檔>]`(根目錄預設目前工作目錄;node 版本預設 `node24`;主程式自動判斷)。
|
||||
|
||||
- **Claude Code / Antigravity**:`/jsc:code-action-node`,或 `/jsc:code-action-node --action-dir ~/work/my-action --node-version node24`
|
||||
- **Codex**:`$code-action-node`,或 `$code-action-node --action-dir ~/work/my-action`,或用 `/skills` 選單
|
||||
- **OpenCode**:描述需求(如「把這個 action 主程式改成 node、主程式相關 js 收進 src/,對齊 action.yml 為 node action、在主程式最前面輸出 action 名稱/用途/更新時間,有相依就用 ncc 打包成 dist 並 commit,最後跑 doc-funcs 補文件並重建 README」)自動觸發
|
||||
|
||||
### `code-image`
|
||||
|
||||
把專案既有的 `Dockerfile` **整理成固定六步流程**,再串接文件化流程。三階段:(A) 找出專案根目錄、定位目標 `Dockerfile`(找不到則詢問、**不臆造**;要產生全新 action 容器請改用 `code-action-docker`),讀現有指令、判斷語言/生態與既有 base image/建置流程;(B) 在**保留建置行為**前提下,把指令重整/歸位為**六步流程**(參數處理 → 安裝套件 → 複製檔案 → 執行程序 → 縮小映像檔 → 設定入口):可調參數集中於檔首 `ARG`、相依描述先 `COPY` 以利 layer 快取、**多階段建置**讓 runtime 改用較小基底(`*-slim`/`*-alpine`/`distroless` 等)只帶執行所需產物;`ENTRYPOINT`/`CMD`/`EXPOSE`/`ENV` 等對外契約不動,**無法保證等價的重整先以 AskUserQuestion 確認**(可選最小重排或只補註解);(C) 對整個專案**完整執行 `/jsc:doc-funcs`**(`Dockerfile` 等指令檔逐行註解、function 文件、重建 README)。
|
||||
|
||||
Reference in New Issue
Block a user