feat(install): validate agent CLI runtime registries
This commit is contained in:
@@ -33,7 +33,7 @@ tea-sdlc/
|
||||
├── scripts/ # 所有 Gitea / git 副作用的唯一出口(Node,零相依)
|
||||
├── templates/ # 議題、PR、報表、總覽網頁的輸出模板
|
||||
├── references/ # 規則正本:實作規範、註解格式、可行性檢查清單
|
||||
├── bin/tea-sdlc.js # 單一指令入口:install / uninstall / prompt / status
|
||||
├── bin/tea-sdlc.js # 單一指令入口:install / uninstall / prompt / status / verify / sdlc-version
|
||||
├── skills/ # 各助理原生 plugin 機制讀取的 skills(目前為空)
|
||||
├── .claude-plugin/ # Claude Code 的 plugin / marketplace manifest
|
||||
├── .codex-plugin/ # Codex 的 plugin manifest
|
||||
@@ -94,7 +94,7 @@ tea-sdlc install --dry-run
|
||||
| `claude`(Claude Code) | `~/.claude/` | `~/.claude/commands/sdlc-*.md` | command |
|
||||
| `codex`(Codex) | `~/.codex/` | `~/.codex/prompts/sdlc-*.md` | command |
|
||||
| `opencode`(OpenCode) | `~/.config/opencode/` | `~/.config/opencode/command/sdlc-*.md` | command |
|
||||
| `oh-my-pi` | `~/.omp/` | `~/.omp/commands/sdlc-*.md` | command |
|
||||
| `oh-my-pi` | `~/.omp/` | `~/.omp/agent/commands/sdlc-*.md` | command |
|
||||
| `antigravity`(Antigravity) | `~/.gemini/` | `~/.gemini/skills/sdlc-*/SKILL.md` | skill |
|
||||
| `kiro`(Kiro) | `~/.kiro/` | `~/.kiro/skills/sdlc-*/SKILL.md` | skill |
|
||||
| `copilot`(GitHub Copilot) | 專案裡的 `.github/` | `.github/skills/sdlc-*/SKILL.md` | skill |
|
||||
@@ -104,10 +104,13 @@ tea-sdlc install --dry-run
|
||||
|
||||
### 安裝完成等於驗過能用
|
||||
|
||||
寫完轉接檔之後,`install` 會把那條叫用鏈真的走一遍:**轉接檔 → PATH 上的 `tea-sdlc` → 流程正本**。
|
||||
它實際到 PATH 上把 `tea-sdlc` 找出來執行一次、取回一份正本逐字比對,再逐一比對每個平台的轉接檔
|
||||
存在且內容含正確的叫用行,結果放在輸出的 `verify` 裡,逐平台 pass/fail。**任一環不通,`install`
|
||||
就回 `ok:false`。** 這段完全不碰網路,也與 Gitea 登入、時間追蹤無關。
|
||||
寫完轉接檔之後,`install` 會把三層叫用鏈驗一遍:
|
||||
**轉接檔 → PATH 上的 `tea-sdlc` → AI Agent CLI 的 runtime registry**。
|
||||
它會確認 PATH 上的 `tea-sdlc` 能取回正本,並針對 Claude、Codex、oh-my-pi 與 OpenCode
|
||||
檢查其本機 command registry 是否包含全部六個流程。沒有安全、非互動 registry probe 的平台
|
||||
會明確回報 `not-supported`,不冒充驗證成功。結果放在輸出的 `verify.platforms[].runtime`:
|
||||
`status` 為 `pass`、`fail` 或 `not-supported`,並列出 `resolved`、`commands`、`missing`、
|
||||
`probe` 與 `remediation`。任何 `fail` 都讓 `install` 回 `ok:false`。
|
||||
|
||||
最脆弱的是中間那一環:套件裝在某個 Node 版本底下,換個版本就找不到了,而轉接檔本身看起來完全正常——
|
||||
沒有這道驗證,使用者要到第一次打 `/sdlc-plan` 才發現。
|
||||
@@ -119,9 +122,15 @@ tea-sdlc install --dry-run
|
||||
|
||||
`--dry-run` 不寫入任何轉接檔,也就沒有東西可驗,`verify` 會標成 `skipped` 並說明原因。
|
||||
|
||||
還沒裝 `git` 或 [`tea`](https://gitea.com/gitea/tea) 也可以先裝:轉接檔的產生不需要它們,
|
||||
安裝會把缺的東西列在輸出的 `missingBinaries` 與 `warning` 裡,但不會替你安裝,也不會因此中止。
|
||||
真正需要它們的是流程指令本身,跑之前補上即可。
|
||||
安裝後可單獨重跑不寫檔的完整驗證:
|
||||
|
||||
```bash
|
||||
tea-sdlc verify
|
||||
tea-sdlc verify --platform oh-my-pi
|
||||
```
|
||||
|
||||
`tea-sdlc sdlc-version` 是無副作用的健康檢查,回報目前 `tea-sdlc` 的版本、PATH 實際
|
||||
解析到的 executable,以及可用流程;它不執行 AI Agent,也不連網。
|
||||
|
||||
---
|
||||
|
||||
@@ -135,6 +144,8 @@ tea-sdlc install --dry-run
|
||||
| --- | --- |
|
||||
| 更新到最新版 | `npm i -g git+https://gitea.jsc.idv.tw/plugins/tea-sdlc.git` |
|
||||
| 指令數量變了之後重新佈署 | `tea-sdlc install` |
|
||||
| 重新驗證已部署的 AI Agent CLI | `tea-sdlc verify` |
|
||||
| 查版本、PATH executable 與流程 | `tea-sdlc sdlc-version` |
|
||||
| 查目前版本、正本位置與環境 | `tea-sdlc status` |
|
||||
| 只移除轉接檔(正本不動) | `tea-sdlc uninstall` |
|
||||
| 連套件一起移除 | `tea-sdlc uninstall` → `npm rm -g tea-sdlc` |
|
||||
|
||||
Reference in New Issue
Block a user