Files
shared/skills/spec-node-src-layout/SKILL.md
jiantw83andClaude Sonnet 5 1030f9d403 feat(shared): 新增14個共用spec、models/todo工具與樣板產生器,收斂跨repo重複規範
依 todo.md 執行的規範治理專案:新增 spec-preflight 等 14 個共用規範(含
conventional-commit/pull-request/git-push/issue-read/todo-list/ask-user/
subagent/no-scratch-files/skill-invocation/script-path/action-scaffold/
node-src-layout/plugin-cli/model),擴充 spec-git-safety 與 spec-gitea(token
優先序、機密遮蔽、Wiki 頁名轉義規則);新增可執行 skill `models`(模型能力
查詢與標籤)與 `todo`(依指定模型產生/附加 todo.md);新增 plugin.meta.json
單一事實來源與 gen-plugin-files.mjs 樣板產生器,統一四個 repo 的 manifest/
README/AGENTS.md 並移除寫死的本機使用者路徑;新增 shared/scripts/lib 的
log/機密遮蔽三語言參考實作。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 06:02:30 +00:00

43 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: spec-node-src-layout
description: JSC plugins 共用「Node 主程式 src/ 收攏規範」:主程式改寫為 Node 之後,主程式入口及其 require/import 依賴鏈的 .js/.mjs/.cjs 檔集中收進 src/;明文排除工具設定檔(如 *.config.js)與 test/、tests/、scripts/ 目錄;搬移後必須更新所有引用該路徑的地方(require/import 相對路徑、package.json 的 main/bin/scripts/exports、action.yml/Dockerfile/entrypoint.sh 等指令檔內的路徑)。當其他 skill 內文引用 spec-node-src-layout 或 /jsc-shared:spec-node-src-layout、或需要把 Node 主程式的 .js 收進 src/ 時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。
---
# spec-node-src-layout — 共用 Node 主程式 src/ 收攏規範
主程式改寫(或確認)為 Node 之後,一律依以下規範把主程式及其依賴鏈收進 `src/`,不得另行約定不同的收攏範圍或排除規則。
## 收攏範圍
- 在專案根目錄建立 `src/`(若不存在)。
- 將**主程式入口及其 `require`/`import` 依賴鏈**的 `.js`/`.mjs`/`.cjs` 檔**移入 `src/`**,優先 `git mv` 保留歷史。
- 依賴鏈的判定只沿著專案自有原始碼的 `require`/`import` 遞迴展開,**排除** `node_modules`/`.git`/`.docs`/`dist`/`bin`/`obj` 與其他第三方依賴目錄。
- 主程式入口統一為 `src/index.js`(或 `src/<main>.js`)。
## 明文排除、不搬
以下檔案/目錄即使被主程式引用,仍**留在原位、不移入 `src/`**,因為外部工具依慣例路徑尋找它們,搬走會弄壞 lint/test/build 流程:
| 類型 | 範例 |
| --- | --- |
| 工具設定檔 | `*.config.js`(`eslint.config.js`/`jest.config.js`/`webpack.config.js` 等)、`.*rc.js`(husky/commitlint 等工具設定) |
| 測試目錄 | `test/`、`tests/` |
| 腳本目錄 | `scripts/` |
## 搬移後必須更新的引用
搬移完成後,逐一確認並更新所有引用該檔案舊路徑的地方,確保不破壞既有行為:
- 模組間的 `require`/`import` 相對路徑(包含被排除、留在原位但引用了搬入 `src/` 檔案的檔案,例如 `test/`/`scripts/` 內的引用路徑也要同步更新)。
- `package.json` 的 `main`/`bin`/`scripts`/`exports`(改指向 `src/...`)。
- 指令檔內對主程式路徑的引用:`action.yml` 的 `runs.main`/`runs.entrypoint`、`Dockerfile`、`entrypoint.sh` 等。
若 `src/` 下需要的相依尚未宣告,於對應的 `package.json` 補上;不擅自新增與功能無關的相依。
## 自我檢查
1. `src/` 內的主程式與其依賴鏈完整,沒有漏搬的中間模組(執行時不會因路徑找不到而失敗)。
2. 明文排除清單內的檔案/目錄確實留在原位。
3. 全專案搜尋舊路徑(檔名/相對路徑字串),確認沒有殘留引用。
4. 若環境可執行,實際跑一次主程式或既有測試/lint/build 指令驗證搬移未破壞行為;無法執行時說明原因並標註風險。