@liangjie559567/ultrapower 7.6.0 → 7.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +2 -2
  4. package/bridge/mcp-server.cjs +1 -0
  5. package/dist/lib/atomic-write.d.ts.map +1 -1
  6. package/dist/lib/atomic-write.js +2 -0
  7. package/dist/lib/atomic-write.js.map +1 -1
  8. package/dist/lib/logger.d.ts.map +1 -1
  9. package/dist/lib/logger.js +9 -4
  10. package/dist/lib/logger.js.map +1 -1
  11. package/dist/security/concurrency-control.d.ts +7 -0
  12. package/dist/security/concurrency-control.d.ts.map +1 -1
  13. package/dist/security/concurrency-control.js +22 -0
  14. package/dist/security/concurrency-control.js.map +1 -1
  15. package/docs/CLAUDE.md +2 -2
  16. package/docs/CODE_BASED_FLOW.md +12 -12
  17. package/docs/COMPATIBILITY.md +1 -1
  18. package/docs/FEATURES.md +16 -16
  19. package/docs/INSTALL.md +2 -2
  20. package/docs/MIGRATION.md +2 -2
  21. package/docs/OMC-CLAUDE.md +1 -1
  22. package/docs/REFERENCE.md +14 -14
  23. package/docs/UPGRADE_VERIFICATION.md +1 -1
  24. package/docs/agent-templates/README.md +2 -2
  25. package/docs/api/media/INSTALL.md +2 -2
  26. package/docs/api/media/MIGRATION.md +2 -2
  27. package/docs/api/media/REFERENCE.md +14 -14
  28. package/docs/api/media/mcp-server-usage.md +4 -4
  29. package/docs/architecture/ultrapower-flow-analysis.md +1 -1
  30. package/docs/getting-started/quickstart.md +1 -1
  31. package/docs/glossary.md +1 -1
  32. package/docs/guides/mcp-server-usage.md +4 -4
  33. package/docs/guides/tool-name-migration.md +12 -12
  34. package/docs/mcp/configuration.md +5 -5
  35. package/docs/mcp/performance.md +5 -5
  36. package/docs/mcp-compatibility-matrix.md +1 -1
  37. package/docs/partials/agent-tiers.md +24 -24
  38. package/docs/partials/features.md +1 -1
  39. package/docs/partials/verification-tiers.md +2 -2
  40. package/docs/plans/2026-02-24-superpowers-ultrapower-integration-design.md +2 -2
  41. package/docs/plans/2026-03-02-docs-comprehensive-update.md +16 -16
  42. package/docs/plans/2026-03-05-mcp-adoption-atomic-tasks.md +9 -9
  43. package/docs/plans/2026-03-16-tech-debt-fixes.md +222 -0
  44. package/docs/prd/bugs-pain-points-audit-dag.md +297 -297
  45. package/docs/prd/bugs-pain-points-audit-draft.md +154 -154
  46. package/docs/prd/bugs-pain-points-audit-manifest.md +650 -650
  47. package/docs/prd/bugs-pain-points-audit-rough.md +654 -654
  48. package/docs/reports/tech-debt-verification-2026-03-16.md +87 -0
  49. package/docs/reviews/bugs-pain-points-audit/review_critic.md +213 -213
  50. package/docs/reviews/bugs-pain-points-audit/review_domain.md +247 -247
  51. package/docs/reviews/bugs-pain-points-audit/review_product.md +189 -189
  52. package/docs/reviews/bugs-pain-points-audit/review_tech.md +382 -382
  53. package/docs/reviews/bugs-pain-points-audit/review_ux.md +161 -161
  54. package/docs/reviews/bugs-pain-points-audit/summary.md +129 -129
  55. package/docs/reviews/bugs-pain-points-audit/tech-debt-v7.6.0-code-review.md +328 -0
  56. package/docs/shared/agent-tiers.md +24 -24
  57. package/docs/shared/features.md +1 -1
  58. package/docs/shared/verification-tiers.md +2 -2
  59. package/docs/standards/runtime-protection.md +7 -0
  60. package/docs/troubleshooting.md +1 -1
  61. package/package.json +1 -1
@@ -70,8 +70,8 @@ Edit `~/.claude/claude_desktop_config.json`:
70
70
  After configuration, restart Claude Desktop. The MCP server tools should appear in the tool list:
71
71
 
72
72
  ```
73
- mcp__plugin_ultrapower_t__ultrapower:lsp_hover
74
- mcp__plugin_ultrapower_t__ultrapower:lsp_goto_definition
73
+ mcp__plugin_ultrapower_t__lsp_hover
74
+ mcp__plugin_ultrapower_t__lsp_goto_definition
75
75
  mcp__plugin_ultrapower_t__ultrapower:ast_grep_search
76
76
  ... (64 tools total - each tool has both new and legacy names)
77
77
  ```
@@ -121,12 +121,12 @@ Restart Cursor. Check the MCP panel to confirm the server is connected and all 3
121
121
 
122
122
  Get type information at cursor position:
123
123
  ```
124
- Use mcp__plugin_ultrapower_t__ultrapower:lsp_hover with file and position
124
+ Use mcp__plugin_ultrapower_t__lsp_hover with file and position
125
125
  ```
126
126
 
127
127
  Find all references to a symbol:
128
128
  ```
129
- Use mcp__plugin_ultrapower_t__ultrapower:lsp_find_references to locate usage
129
+ Use mcp__plugin_ultrapower_t__lsp_find_references to locate usage
130
130
  ```
131
131
 
132
132
  ### AST Tools
@@ -17,29 +17,29 @@ Starting from v5.6.0, all ultrapower tools use the `ultrapower:` prefix instead
17
17
 
18
18
  ### LSP Tools
19
19
 
20
- * `lsp_hover` → `ultrapower:lsp_hover`
20
+ * `ultrapower:lsp_hover` → `ultrapower:lsp_hover`
21
21
 
22
- * `lsp_goto_definition` → `ultrapower:lsp_goto_definition`
22
+ * `ultrapower:lsp_goto_definition` → `ultrapower:lsp_goto_definition`
23
23
 
24
- * `lsp_find_references` → `ultrapower:lsp_find_references`
24
+ * `ultrapower:lsp_find_references` → `ultrapower:lsp_find_references`
25
25
 
26
- * `lsp_document_symbols` → `ultrapower:lsp_document_symbols`
26
+ * `ultrapower:lsp_document_symbols` → `ultrapower:lsp_document_symbols`
27
27
 
28
- * `lsp_workspace_symbols` → `ultrapower:lsp_workspace_symbols`
28
+ * `ultrapower:lsp_workspace_symbols` → `ultrapower:lsp_workspace_symbols`
29
29
 
30
- * `lsp_diagnostics` → `ultrapower:lsp_diagnostics`
30
+ * `ultrapower:lsp_diagnostics` → `ultrapower:lsp_diagnostics`
31
31
 
32
- * `lsp_diagnostics_directory` → `ultrapower:lsp_diagnostics_directory`
32
+ * `ultrapower:lsp_diagnostics_directory` → `ultrapower:lsp_diagnostics_directory`
33
33
 
34
- * `lsp_servers` → `ultrapower:lsp_servers`
34
+ * `ultrapower:lsp_servers` → `ultrapower:lsp_servers`
35
35
 
36
- * `lsp_prepare_rename` → `ultrapower:lsp_prepare_rename`
36
+ * `ultrapower:lsp_prepare_rename` → `ultrapower:lsp_prepare_rename`
37
37
 
38
- * `lsp_rename` → `ultrapower:lsp_rename`
38
+ * `ultrapower:lsp_rename` → `ultrapower:lsp_rename`
39
39
 
40
- * `lsp_code_actions` → `ultrapower:lsp_code_actions`
40
+ * `ultrapower:lsp_code_actions` → `ultrapower:lsp_code_actions`
41
41
 
42
- * `lsp_code_action_resolve` → `ultrapower:lsp_code_action_resolve`
42
+ * `ultrapower:lsp_code_action_resolve` → `ultrapower:lsp_code_action_resolve`
43
43
 
44
44
  ### State Tools
45
45
 
@@ -91,7 +91,7 @@ Location: `.claude/mcp.json` (workspace)
91
91
  "args": ["bridge/mcp-server.cjs"],
92
92
  "disabled": false,
93
93
  "autoApprove": [
94
- "lsp_hover",
94
+ "ultrapower:lsp_hover",
95
95
  "state_read",
96
96
  "notepad_read"
97
97
  ]
@@ -137,8 +137,8 @@ Edit `src/mcp/timeout.ts`:
137
137
 
138
138
  ```typescript
139
139
  export const TOOL_TIMEOUTS: Record<string, number> = {
140
- lsp_hover: 30000,
141
- lsp_diagnostics: 60000,
140
+ ultrapower:lsp_hover: 30000,
141
+ ultrapower:lsp_diagnostics: 60000,
142
142
  ast_grep_search: 60000,
143
143
  ask_codex: 300000,
144
144
  ask_gemini: 300000
@@ -160,8 +160,8 @@ Skip permission prompts for trusted tools:
160
160
  "mcpServers": {
161
161
  "ultrapower": {
162
162
  "autoApprove": [
163
- "lsp_hover",
164
- "lsp_goto_definition",
163
+ "ultrapower:lsp_hover",
164
+ "ultrapower:lsp_goto_definition",
165
165
  "state_read",
166
166
  "notepad_read",
167
167
  "project_memory_read"
@@ -6,9 +6,9 @@
6
6
 
7
7
  | Tool | Cold Start | Warm | Notes |
8
8
  | ------ | ----------- | ------ | ------- |
9
- | `lsp_hover` | 150ms | 20ms | LSP server cached |
10
- | `lsp_diagnostics` | 300ms | 50ms | File-level |
11
- | `lsp_diagnostics_directory` | 2s | 500ms | Directory scan |
9
+ | `ultrapower:lsp_hover` | 150ms | 20ms | LSP server cached |
10
+ | `ultrapower:lsp_diagnostics` | 300ms | 50ms | File-level |
11
+ | `ultrapower:lsp_diagnostics_directory` | 2s | 500ms | Directory scan |
12
12
  | `ast_grep_search` | 100ms | 30ms | Pattern complexity varies |
13
13
  | `state_read` | 10ms | 5ms | JSON parse |
14
14
  | `notepad_read` | 15ms | 8ms | Markdown parse |
@@ -137,8 +137,8 @@ await mcp__plugin_ultrapower_t__lsp_diagnostics_directory({
137
137
 
138
138
  Output includes timing:
139
139
  ```
140
- [debug] lsp_hover started
141
- [debug] lsp_hover completed in 23ms
140
+ [debug] ultrapower:lsp_hover started
141
+ [debug] ultrapower:lsp_hover completed in 23ms
142
142
  ```
143
143
 
144
144
  ### Measure Tool Calls
@@ -47,7 +47,7 @@ All community MCP server tools use the format: `mcp__servername__toolname`
47
47
 
48
48
  Internal OMC tools do not use namespace prefixes:
49
49
 
50
- * `lsp_*` - Language Server Protocol tools
50
+ * `ultrapower:lsp_*` - Language Server Protocol tools
51
51
 
52
52
  * `ast_grep_*` - AST manipulation tools
53
53
 
@@ -116,18 +116,18 @@ Task(subagent_type="ultrapower:explore",
116
116
 
117
117
  | 工具 | 类别 | 用途 | 是否分配给 Agent? |
118
118
  | ------ | ---------- | --------- | --------------------- |
119
- | `lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
120
- | `lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
121
- | `lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
122
- | `lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
123
- | `lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
124
- | `lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
125
- | `lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
126
- | `lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
127
- | `lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
128
- | `lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
129
- | `lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
130
- | `lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
119
+ | `ultrapower:lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
120
+ | `ultrapower:lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
121
+ | `ultrapower:lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
122
+ | `ultrapower:lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
123
+ | `ultrapower:lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
124
+ | `ultrapower:lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
125
+ | `ultrapower:lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
126
+ | `ultrapower:lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
127
+ | `ultrapower:lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
128
+ | `ultrapower:lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
129
+ | `ultrapower:lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
130
+ | `ultrapower:lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
131
131
  | `ast_grep_search` | AST | 基于 AST 的模式化结构代码搜索 | 是 |
132
132
  | `ast_grep_replace` | AST | 基于模式的结构化代码转换 | 是 |
133
133
  | `python_repl` | Data | 用于数据分析和计算的持久化 Python REPL | 是 |
@@ -154,30 +154,30 @@ Task(subagent_type="ultrapower:explore",
154
154
 
155
155
  | 工具 | 直接使用时机 |
156
156
  | ------ | --------------------- |
157
- | `lsp_hover` | 对话中快速查询类型 |
158
- | `lsp_goto_definition` | 分析过程中导航到符号定义 |
159
- | `lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
160
- | `lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
161
- | `lsp_code_actions` | 发现可用的重构操作 |
162
- | `lsp_code_action_resolve` | 获取特定代码操作的详情 |
163
- | `lsp_servers` | 检查语言服务器可用性 |
157
+ | `ultrapower:lsp_hover` | 对话中快速查询类型 |
158
+ | `ultrapower:lsp_goto_definition` | 分析过程中导航到符号定义 |
159
+ | `ultrapower:lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
160
+ | `ultrapower:lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
161
+ | `ultrapower:lsp_code_actions` | 发现可用的重构操作 |
162
+ | `ultrapower:lsp_code_action_resolve` | 获取特定代码操作的详情 |
163
+ | `ultrapower:lsp_servers` | 检查语言服务器可用性 |
164
164
 
165
165
  对于需要实现的复杂重命名或重构任务,委派给 `executor`(使用 `model="opus"`),它可以使用 `ast_grep_replace` 进行结构化转换。
166
166
 
167
167
  ### 工具选择指南
168
168
 
169
- * **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `lsp_document_symbols`/`lsp_workspace_symbols`
169
+ * **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `ultrapower:lsp_document_symbols`/`ultrapower:lsp_workspace_symbols`
170
170
 
171
- * **需要查找符号的所有用法?** 通过 `explore` 使用 `lsp_find_references`
171
+ * **需要查找符号的所有用法?** 通过 `explore` 使用 `ultrapower:lsp_find_references`
172
172
 
173
173
  * **需要结构化代码模式?**(如"查找所有匹配 X 形状的函数")通过 `explore`、`architect` 或 `code-reviewer` 使用 `ast_grep_search`
174
174
 
175
175
  * **需要结构化代码转换?** 通过 `executor`(使用 `model="opus"`)使用 `ast_grep_replace`
176
176
 
177
- * **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `lsp_diagnostics_directory`
177
+ * **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `ultrapower:lsp_diagnostics_directory`
178
178
 
179
- * **需要单文件错误检查?** 通过多个 agent 使用 `lsp_diagnostics`(参见矩阵)
179
+ * **需要单文件错误检查?** 通过多个 agent 使用 `ultrapower:lsp_diagnostics`(参见矩阵)
180
180
 
181
181
  * **需要数据分析/计算?** 通过 `scientist` 使用 `python_repl`
182
182
 
183
- * **需要快速类型信息或定义查询?** 直接使用 `lsp_hover`/`lsp_goto_definition`(orchestrator 直接工具)
183
+ * **需要快速类型信息或定义查询?** 直接使用 `ultrapower:lsp_hover`/`ultrapower:lsp_goto_definition`(orchestrator 直接工具)
@@ -59,7 +59,7 @@
59
59
 
60
60
  ## 目录诊断工具
61
61
 
62
- 通过 `lsp_diagnostics_directory` 工具进行项目级类型检查。
62
+ 通过 `ultrapower:lsp_diagnostics_directory` 工具进行项目级类型检查。
63
63
 
64
64
  **策略:**
65
65
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 层级 | 标准 | Agent | 模型 | 所需证据 |
8
8
  | ------ | ---------- | ------- | ------- | ------------------- |
9
- | **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | lsp_diagnostics 无错误 |
9
+ | **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | ultrapower:lsp_diagnostics 无错误 |
10
10
  | **STANDARD** | 默认(非 LIGHT 或 THOROUGH) | architect-medium | sonnet | diagnostics + 构建通过 |
11
11
  | **THOROUGH** | >20 个文件,或架构/安全变更 | architect | opus | 完整审查 + 所有测试 |
12
12
 
@@ -94,7 +94,7 @@ ELSE:
94
94
  | 声明 | 所需证据 |
95
95
  | ------- | ------------------- |
96
96
  | "已修复" | 显示现在通过的测试 |
97
- | "已实现" | lsp_diagnostics 无错误 + 构建通过 |
97
+ | "已实现" | ultrapower:lsp_diagnostics 无错误 + 构建通过 |
98
98
  | "已重构" | 所有测试仍然通过 |
99
99
  | "已调试" | 定位到 file:line 的根本原因 |
100
100
 
@@ -113,7 +113,7 @@ brainstorming 触发时的强制流程:
113
113
  verification-before-completion → [验证通过]
114
114
 
115
115
  阶段5b: 构建验证(新增)
116
- build-fixer → lsp_diagnostics_directory → [零错误]
116
+ build-fixer → ultrapower:lsp_diagnostics_directory → [零错误]
117
117
 
118
118
  阶段6: 部署测试
119
119
  qa-tester → ultraqa循环 → [全部通过]
@@ -282,7 +282,7 @@ brainstorming 触发时的强制流程:
282
282
 
283
283
  | Agent | 关键节点 | 主推 | 备选 | 推荐理由 |
284
284
  | --- | --- | --- | --- | --- |
285
- | `build-fixer` agent | lsp_diagnostics 零错误后 | `qa-tester` agent | `requesting-code-review` | 构建通过进入部署测试 |
285
+ | `build-fixer` agent | ultrapower:lsp_diagnostics 零错误后 | `qa-tester` agent | `requesting-code-review` | 构建通过进入部署测试 |
286
286
 
287
287
  ### 阶段6:部署测试
288
288
 
@@ -311,18 +311,18 @@ Total: **35 tools** exposed via `mcp__plugin_ultrapower_t__` prefix.
311
311
  ### LSP Tools (12)
312
312
 
313
313
  ```
314
- lsp_hover — Type info and docs at position
315
- lsp_goto_definition — Jump to definition
316
- lsp_find_references — Find all usages
317
- lsp_document_symbols — File outline
318
- lsp_workspace_symbols — Cross-workspace symbol search
319
- lsp_diagnostics — Per-file errors/warnings
320
- lsp_diagnostics_directory — Project-level type check
321
- lsp_servers — List available language servers
322
- lsp_prepare_rename — Check if rename is valid
323
- lsp_rename — Preview multi-file rename
324
- lsp_code_actions — Available refactors/fixes
325
- lsp_code_action_resolve — Get action details
314
+ ultrapower:lsp_hover — Type info and docs at position
315
+ ultrapower:lsp_goto_definition — Jump to definition
316
+ ultrapower:lsp_find_references — Find all usages
317
+ ultrapower:lsp_document_symbols — File outline
318
+ ultrapower:lsp_workspace_symbols — Cross-workspace symbol search
319
+ ultrapower:lsp_diagnostics — Per-file errors/warnings
320
+ ultrapower:lsp_diagnostics_directory — Project-level type check
321
+ ultrapower:lsp_servers — List available language servers
322
+ ultrapower:lsp_prepare_rename — Check if rename is valid
323
+ ultrapower:lsp_rename — Preview multi-file rename
324
+ ultrapower:lsp_code_actions — Available refactors/fixes
325
+ ultrapower:lsp_code_action_resolve — Get action details
326
326
  ```
327
327
 
328
328
  Supported languages: TypeScript, Python, Rust, Go, C/C++, Java, JSON, HTML, CSS, YAML
@@ -860,17 +860,17 @@ Directives are the highest-priority memory: they survive context compression and
860
860
 
861
861
  ### LSP Tools (12)
862
862
 
863
- Require a running language server. Use `lsp_servers()` to check availability.
863
+ Require a running language server. Use `ultrapower:lsp_servers()` to check availability.
864
864
 
865
865
  ```typescript
866
866
  // Type info at cursor position
867
- lsp_hover({ file: "src/hooks/bridge.ts", line: 42, character: 15 })
867
+ ultrapower:lsp_hover({ file: "src/hooks/bridge.ts", line: 42, character: 15 })
868
868
 
869
869
  // Find all usages
870
- lsp_find_references({ file: "src/lib/validateMode.ts", symbol: "assertValidMode" })
870
+ ultrapower:lsp_find_references({ file: "src/lib/validateMode.ts", symbol: "assertValidMode" })
871
871
 
872
872
  // Project-wide diagnostics
873
- lsp_diagnostics_directory({ directory: "src/", includeWarnings: false })
873
+ ultrapower:lsp_diagnostics_directory({ directory: "src/", includeWarnings: false })
874
874
  ```
875
875
 
876
876
  ### AST Tools (2)
@@ -162,11 +162,11 @@ npm install --save-dev @types/node
162
162
 
163
163
  **步骤:**
164
164
  1. 创建 `src/mcp/adapters/lsp-adapter.ts`
165
- 2. 转换 lsp_hover, lsp_goto_definition, lsp_find_references
166
- 3. 转换 lsp_document_symbols, lsp_workspace_symbols
167
- 4. 转换 lsp_diagnostics, lsp_diagnostics_directory
168
- 5. 转换 lsp_servers, lsp_prepare_rename, lsp_rename
169
- 6. 转换 lsp_code_actions, lsp_code_action_resolve
165
+ 2. 转换 ultrapower:lsp_hover, ultrapower:lsp_goto_definition, ultrapower:lsp_find_references
166
+ 3. 转换 ultrapower:lsp_document_symbols, ultrapower:lsp_workspace_symbols
167
+ 4. 转换 ultrapower:lsp_diagnostics, ultrapower:lsp_diagnostics_directory
168
+ 5. 转换 ultrapower:lsp_servers, ultrapower:lsp_prepare_rename, ultrapower:lsp_rename
169
+ 6. 转换 ultrapower:lsp_code_actions, ultrapower:lsp_code_action_resolve
170
170
 
171
171
  **验收:**
172
172
 
@@ -380,7 +380,7 @@ npm install --save-dev @types/node
380
380
  1. 创建 `src/mcp/tool-resolver.ts`
381
381
  2. 实现 `resolveTool(name: string)` 函数
382
382
  3. 支持带前缀:`mcp__plugin_ultrapower_t__lsp_hover`
383
- 4. 支持不带前缀:`lsp_hover`
383
+ 4. 支持不带前缀:`ultrapower:lsp_hover`
384
384
  5. 支持命名空间:`ultrapower:lsp_hover`
385
385
 
386
386
  **验收:**
@@ -530,8 +530,8 @@ npm install --save-dev @types/node
530
530
  **依赖:** 1.4.1
531
531
 
532
532
  **步骤:**
533
- 1. 测试 `lsp_hover` 调用
534
- 2. 测试 `lsp_diagnostics` 调用
533
+ 1. 测试 `ultrapower:lsp_hover` 调用
534
+ 2. 测试 `ultrapower:lsp_diagnostics` 调用
535
535
  3. 验证参数传递正确
536
536
  4. 验证返回结果格式
537
537
 
@@ -581,7 +581,7 @@ npm install --save-dev @types/node
581
581
  **步骤:**
582
582
  1. 使用旧前缀调用工具:`mcp__plugin_ultrapower_t__lsp_hover`
583
583
  2. 使用新前缀调用工具:`ultrapower:lsp_hover`
584
- 3. 使用无前缀调用工具:`lsp_hover`
584
+ 3. 使用无前缀调用工具:`ultrapower:lsp_hover`
585
585
  4. 验证三种方式都能成功
586
586
 
587
587
  **验收:**
@@ -0,0 +1,222 @@
1
+ # Technical Debt Fixes Implementation Plan
2
+
3
+ > **For Claude:** REQUIRED SUB-SKILL: Use ultrapower:executing-plans to implement this plan task-by-task.
4
+
5
+ **Goal:** Fix 4 identified technical debt items from architecture assessment (TD-1 to TD-4)
6
+
7
+ **Architecture:** Prioritize P0 test stability, then address P1 deprecation warnings and platform compatibility, finally unify atomic write protection
8
+
9
+ **Tech Stack:** TypeScript, Vitest, Node.js fs module, cross-platform file operations
10
+
11
+ ---
12
+
13
+ ## Task 1: Fix P0 Test Timeout Issues (TD-1)
14
+
15
+ **Priority:** P0 - Blocking CI pipeline
16
+
17
+ **Files:**
18
+ - Modify: `src/features/__tests__/mcp-integration.test.ts:9`
19
+ - Modify: `src/features/mcp-autodiscovery/__tests__/performance.test.ts:7`
20
+
21
+ **Step 1: Increase timeout for MCP integration tests**
22
+
23
+ ```typescript
24
+ // src/features/__tests__/mcp-integration.test.ts
25
+ beforeAll(async () => {
26
+ contextManager = new UnifiedContextManager();
27
+ await contextManager.initialize();
28
+ }, 30000); // Increase from 10000 to 30000ms
29
+ ```
30
+
31
+ **Step 2: Increase timeout for performance tests**
32
+
33
+ ```typescript
34
+ // src/features/mcp-autodiscovery/__tests__/performance.test.ts
35
+ beforeAll(async () => {
36
+ // Setup code
37
+ }, 30000); // Increase from 10000 to 30000ms
38
+ ```
39
+
40
+ **Step 3: Run tests to verify fixes**
41
+
42
+ Run: `npm test -- mcp-integration.test.ts performance.test.ts`
43
+ Expected: All tests pass without timeout
44
+
45
+ **Step 4: Commit**
46
+
47
+ ```bash
48
+ git add src/features/__tests__/mcp-integration.test.ts src/features/mcp-autodiscovery/__tests__/performance.test.ts
49
+ git commit -m "fix(test): increase timeout for MCP integration tests to 30s
50
+
51
+ Resolves TD-1: Test timeout issues blocking CI pipeline"
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Task 2: Remove LSP Tool Deprecation Warnings (TD-2)
57
+
58
+ **Priority:** P1 - User experience and maintenance
59
+
60
+ **Files:**
61
+ - Modify: `src/tools/lsp-tools.ts`
62
+ - Modify: `docs/REFERENCE.md`
63
+ - Modify: `README.md`
64
+
65
+ **Step 1: Update all documentation to use new naming**
66
+
67
+ Search and replace in documentation:
68
+ - `ultrapower:lsp_diagnostics` → `ultrapower:lsp_diagnostics`
69
+ - `ultrapower:lsp_hover` → `ultrapower:lsp_hover`
70
+ - (repeat for all 12 LSP tools)
71
+
72
+ **Step 2: Add deprecation timeline to CHANGELOG**
73
+
74
+ ```markdown
75
+ ## [Unreleased]
76
+
77
+ ### Deprecated
78
+ - Old LSP tool naming (without `ultrapower:` prefix) will be removed in v8.0.0
79
+ - Users should migrate to new naming: `ultrapower:lsp_*`
80
+ ```
81
+
82
+ **Step 3: Verify no old naming in docs**
83
+
84
+ Run: `grep -r "ultrapower:lsp_diagnostics" docs/ README.md`
85
+ Expected: No matches (all should use `ultrapower:lsp_diagnostics`)
86
+
87
+ **Step 4: Commit**
88
+
89
+ ```bash
90
+ git add docs/ README.md CHANGELOG.md
91
+ git commit -m "docs: migrate LSP tool naming to ultrapower: prefix
92
+
93
+ Resolves TD-2: Prepare for v8.0.0 deprecation removal"
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Task 3: Add Windows Platform Compatibility Tests (TD-3)
99
+
100
+ **Priority:** P1 - Platform compatibility
101
+
102
+ **Files:**
103
+ - Create: `tests/platform/windows-atomic-write.test.ts`
104
+ - Modify: `src/lib/atomic-write.ts`
105
+
106
+ **Step 1: Create Windows-specific test file**
107
+
108
+ ```typescript
109
+ // tests/platform/windows-atomic-write.test.ts
110
+ import { describe, it, expect } from 'vitest';
111
+ import { atomicWriteJsonSyncWithRetry } from '../../src/lib/atomic-write';
112
+ import { existsSync, readFileSync } from 'node:fs';
113
+ import { join } from 'node:path';
114
+
115
+ describe.skipIf(process.platform !== 'win32')('Windows atomic write', () => {
116
+ it('should handle locked files gracefully', async () => {
117
+ const testPath = join(process.cwd(), '.test-windows-lock.json');
118
+ const data = { test: 'value' };
119
+
120
+ // Write should succeed even if file is temporarily locked
121
+ atomicWriteJsonSyncWithRetry(testPath, data);
122
+
123
+ expect(existsSync(testPath)).toBe(true);
124
+ const content = JSON.parse(readFileSync(testPath, 'utf-8'));
125
+ expect(content).toEqual(data);
126
+ });
127
+ });
128
+ ```
129
+
130
+ **Step 2: Run Windows tests**
131
+
132
+ Run: `npm test -- windows-atomic-write.test.ts`
133
+ Expected: Tests pass on Windows, skipped on other platforms
134
+
135
+ **Step 3: Document platform differences**
136
+
137
+ Add to `docs/standards/runtime-protection.md`:
138
+
139
+ ```markdown
140
+ ### Windows Platform Notes
141
+
142
+ - `renameSync` is not atomic when target file is locked
143
+ - Directory-level `fsync` silently fails
144
+ - Use `maxRetries` parameter in `atomicWriteJsonSyncWithRetry` for robustness
145
+ ```
146
+
147
+ **Step 4: Commit**
148
+
149
+ ```bash
150
+ git add tests/platform/windows-atomic-write.test.ts docs/standards/runtime-protection.md
151
+ git commit -m "test(platform): add Windows atomic write compatibility tests
152
+
153
+ Resolves TD-3: Windows platform compatibility validation"
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Task 4: Unify Atomic Write Protection (TD-4)
159
+
160
+ **Priority:** P2 - Consistency and safety
161
+
162
+ **Files:**
163
+ - Modify: `src/hooks/subagent-tracker/index.ts`
164
+
165
+ **Step 1: Replace immediate write with atomic write**
166
+
167
+ ```typescript
168
+ // src/hooks/subagent-tracker/index.ts
169
+ import { atomicWriteJsonSyncWithRetry } from '../../lib/atomic-write';
170
+
171
+ // Replace this:
172
+ // writeFileSync(statePath, JSON.stringify(state, null, 2), "utf-8");
173
+
174
+ // With this:
175
+ atomicWriteJsonSyncWithRetry(statePath, state);
176
+ ```
177
+
178
+ **Step 2: Remove writeTrackingStateImmediate function**
179
+
180
+ Remove the `writeTrackingStateImmediate()` function entirely, replace all calls with `atomicWriteJsonSyncWithRetry`.
181
+
182
+ **Step 3: Run tests to verify no regressions**
183
+
184
+ Run: `npm test -- subagent-tracker`
185
+ Expected: All tests pass
186
+
187
+ **Step 4: Update difference documentation**
188
+
189
+ Remove D-07 from `docs/standards/runtime-protection.md` (no longer a difference).
190
+
191
+ **Step 5: Commit**
192
+
193
+ ```bash
194
+ git add src/hooks/subagent-tracker/index.ts docs/standards/runtime-protection.md
195
+ git commit -m "refactor(hooks): unify atomic write protection in subagent-tracker
196
+
197
+ Resolves TD-4: Remove immediate write bypass, use atomic write consistently"
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Verification Checklist
203
+
204
+ After completing all tasks:
205
+
206
+ - [ ] All tests pass: `npm test`
207
+ - [ ] No TypeScript errors: `npm run build`
208
+ - [ ] No lint errors: `npm run lint`
209
+ - [ ] CI pipeline passes on GitHub Actions
210
+ - [ ] Documentation updated for all changes
211
+ - [ ] CHANGELOG.md includes all fixes
212
+
213
+ ---
214
+
215
+ ## Estimated Timeline
216
+
217
+ - Task 1 (P0): 30 minutes
218
+ - Task 2 (P1): 1 hour
219
+ - Task 3 (P1): 2 hours
220
+ - Task 4 (P2): 1 hour
221
+
222
+ **Total:** ~4.5 hours