auto-claude-ideation-suite — 從 v1.0.0(壞的)到 v1.0.1(有效的)的完整技術分析。12 個問題,6 個根本原因,一個確定性修復。 auto-claude-ideation-suite — a complete technical breakdown from v1.0.0 (broken) to v1.0.1 (working). 12 issues, 6 root causes, one deterministic fix.
稽核識別出的問題分佈在三個嚴重性層級。最嚴重的(P0)直接造成功能靜默失效;P1 違反 Claude Code 插件規範;P2 留下維護債務。 The issues found by the audit fall across three severity levels. The most severe (P0) caused direct, silent functional failures; P1 violated Claude Code plugin spec; P2 left maintenance debt.
commands/ 資料夾 — 每個已記錄的斜線命令都不存在No commands/ folder — every documented slash command was fictionalnpx tsx 啟動 — 需要 dev 環境MCP server started with npx tsx — required dev environment.mcp.json + package.json)Two competing configurations (.mcp.json + package.json).ts 後綴 — 編譯後損壞TypeScript imports with .ts suffix — breaks after compilation.gitignore — 安裝者需自行建置Build artifact in .gitignore — installer must build manually/auto-claude-ideation-suite、/ideation、/roadmap、/qa4 real commands: /auto-claude-ideation-suite, /ideation, /roadmap, /qanode dist/mcp-server.js — 只需 NodeMCP server uses node dist/mcp-server.js — Node only.mcp.jsonSingle source of truth: .mcp.json.js — 編譯後正常All import suffixes changed to .js — correct after compilationauto-claude-ideation-suite(kebab-case)Skill name: auto-claude-ideation-suite (kebab-case)dist/ 已提交 — 安裝即用,無需建置dist/ committed — install and run, no build stepClaude Code 插件透過五個不同的機制擴展助手。每一層都必須正確連線,功能才能對使用者可見。修復後,所有五層都已連線。 A Claude Code plugin extends the assistant through five distinct mechanisms. Each layer must be wired correctly for the capability to be visible to the user. After the fix, all five layers are wired.
| # | 等級Sev. | 問題Issue | 影響Impact | 修復Fix |
|---|---|---|---|---|
| 01 | P0 | 缺少 commands/ 目錄Missing commands/ |
每個已記錄的斜線命令(/auto-claude-ideation-suite、/ideation、/roadmap、/qa)都不存在。使用者呼叫回退到機率性 skill 匹配。
Every documented slash command (/auto-claude-ideation-suite, /ideation, /roadmap, /qa) did not exist. User invocations fell back to probabilistic skill matching.
|
已新增ADDED |
| 02 | P0 | MCP 啟動用 npx tsxMCP boot via npx tsx |
.mcp.json 中的 command 欄位指定 npx tsx mcp-server.ts,需要 node_modules 存在。對非開發者安裝靜默失效。
command field in .mcp.json specified npx tsx mcp-server.ts, requiring node_modules to be present. Silent failure for non-developer installs.
|
已修復FIXED |
| 03 | P0 | 雙重設定衝突Duplicate config |
.mcp.json 和 package.json 各自定義 MCP 伺服器。Claude Code 只讀取 .mcp.json;package.json 塊是幽靈設定,製造混亂。
Both .mcp.json and package.json defined the MCP server. Claude Code reads only .mcp.json; the package.json block was a ghost config creating confusion.
|
已移除REMOVED |
| 04 | P0 | TypeScript .ts import 後綴TS .ts import suffix |
3 個 TypeScript 檔案引用了帶 .ts 後綴的模組,這在開發時有效但編譯後導致執行時 MODULE_NOT_FOUND 錯誤。
3 TypeScript files referenced modules with .ts suffixes, which works at dev time but causes runtime MODULE_NOT_FOUND errors post-compilation.
|
已修復FIXED |
| 05 | P0 | Windows 路徑相容性Windows path compat |
一個 path helper 使用了在 Windows 上有隱性問題的 Node API。在 path.resolve() 中使用 POSIX 分隔符假設,在 Win32 路徑解析中失效。
A path helper used a Node API with a subtle flaw on Windows. Implicit POSIX separator assumption in path.resolve() call breaks under Win32 path resolution.
|
已修復FIXED |
| 06 | P0 | 未宣告的 zod 相依Undeclared zod dep |
zod 在執行時被使用但未在 package.json 的 dependencies 中宣告,只透過傳遞依賴存在。新版本的相依可能移除它。
zod was used at runtime but not declared in package.json dependencies, only present transitively. A dep version bump could remove it.
|
已宣告DECLARED |
| 07 | P1 | Manifest 計數不正確Manifest count wrong |
plugin.json 聲稱 16 個代理,實際上 17 個。
plugin.json claimed 16 agents; there were 17.
|
已更正CORRECTED |
| 08 | P1 | 缺少 Manifest 欄位Missing manifest fields |
homepage 和 repository 欄位在每個其他 Claude Code 插件中都存在,但在這裡缺失。
homepage and repository fields present in every other Claude Code plugin, absent here.
|
已新增ADDED |
| 09 | P1 | 非標準 Skill 名稱Non-standard skill name |
Skill 名稱為 Auto Claude Ideation Suite(TitleCase + 空格),而慣例是 kebab-case。
Skill named Auto Claude Ideation Suite (TitleCase + spaces); convention is kebab-case.
|
已重命名RENAMED |
| 10 | P1 | 代理缺少 YAML frontmatterAgents lack YAML frontmatter |
17 個代理檔案都沒有 YAML frontmatter(name、description、tools)。在結構上它們只是文字,而非可按名稱呼叫的子代理。
None of the 17 agent files had YAML frontmatter (name, description, tools). Structurally they were text, not sub-agents addressable by name.
|
已新增ADDED |
| 11 | P2 | dist/ 在 .gitignore 中dist/ in .gitignore |
編譯後的 JavaScript 被排除在 git 之外。任何安裝插件的人在執行前必須先執行 npm run build。
Compiled JavaScript excluded from git. Anyone installing the plugin must run npm run build before it will work.
|
已提交COMMITTED |
| 12 | P2 | 無持續整合No CI | 沒有工作流驗證建置健康、插件結構或冒煙啟動。回歸靜默通過。 No workflow validating build health, plugin structure, or smoke boot. Regressions pass silently. | 已新增ADDED |
新增的 CI 工作流在每次 push 和 pull request 上執行。它在一個 self-hosted Mac Mini runner 上運行(ARM64 12核心,24 GB),避免了跨平台驗證差異。 The new CI workflow runs on every push and pull request. It targets a self-hosted Mac Mini runner (ARM64 12-core, 24 GB), avoiding cross-platform validation discrepancies.
npm ci(不是 npm install)確保鎖定檔案決定版本,不允許靜默升級。
Run npm ci (not npm install) on a clean state to ensure the lockfile determines versions, no silent upgrades allowed.
dist/ 下:mcp-server.js、tools.js、scanner.js、validator.js、state.js、utils.js。
Assert all 6 expected JavaScript files exist under dist/: mcp-server.js, tools.js, scanner.js, validator.js, state.js, utils.js.
timeout 3 啟動編譯後的伺服器,如果它崩潰則失敗(退出碼 1),如果它超時則通過(退出碼 124 = 健康的 stdio 伺服器)。
Start the compiled server with timeout 3, fail if it crashes (exit code 1), pass if it times out (exit code 124 = healthy stdio server).
commands/ 有 ≥ 4 個檔案、agents/ 有恰好 17 個、.claude-plugin/plugin.json 存在、每個代理的第 1 行是 ---(YAML frontmatter)。
Assert: commands/ has ≥ 4 files, agents/ has exactly 17, .claude-plugin/plugin.json exists, every agent's line 1 is --- (YAML frontmatter).
所有 12 個問題的修復都包含在一個原子 commit 中,以保持 git 歷史可讀。 All 12 fixes are contained in a single atomic commit to keep the git history readable.
commit f9e187c fix: align plugin to spec — slash commands, agent frontmatter, build pipeline Changes: + commands/auto-claude-ideation-suite.md (new — master slash command) + commands/ideation.md (new — /ideation entry) + commands/roadmap.md (new — /roadmap entry) + commands/qa.md (new — /qa <item-id> entry) + dist/*.js (new — committed build artifacts) + .github/workflows/ci.yml (new — Mac Mini self-hosted CI) .mcp.json (fix — node dist/mcp-server.js) package.json (removed duplicate mcp config block) src/*.ts (fix — .ts → .js import suffixes) src/utils.ts (fix — Windows path compat) package.json (fix — declare zod as dependency) skills/auto-claude-ideation-suite.md (fix — rename to kebab-case) agents/*.md × 17 (fix — add YAML frontmatter to all) .claude-plugin/plugin.json (fix — 16→17, +homepage, +repository) .gitignore (fix — remove dist/ exclusion) 3 files changed (content), 6 files added, 0 files deleted All CI checks passing on Mac Mini ARM64.
commands/ 中的一個真實檔案。Slash commands are deterministic, skills are probabilistic. Every named workflow needs a real file in commands/..mcp.json 和 package.json 都定義你的伺服器,其中一個是幽靈。One source of truth for config. If both .mcp.json and package.json define your server, one is a ghost.ls -la plugin/ 比閱讀程式碼更快。List folders first. The most fundamental plugin issues are often a missing directory. ls -la plugin/ is faster than reading code./foo 存在?ls commands/ 來確認。Check docs against reality. Documentation says /foo exists? Run ls commands/ to confirm.
「每次都有效」和「偶爾有效」之間的差距,幾乎完全是一個從未建立的資料夾。修復確定性層(commands/)將插件從完全依賴模型判斷的東西,變成了每次都轉動的旋鈕。
The gap between "works every time" and "sometimes works" was almost entirely a folder that had never been created. Fixing the deterministic layer (commands/) transformed the plugin from something entirely dependent on model judgement into a knob that turns every time.