opencode-idea 0.0.15 → 0.0.17
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.
- package/README.md +174 -62
- package/package.json +5 -1
- package/skills/idea-standalone/SKILL.md +37 -89
- package/skills/idea-standalone/assets/AGENTS.template.md +66 -0
- package/src/ide-guidance.js +61 -84
- package/src/ide-guidance.template.md +71 -0
- package/src/ide-launcher.js +24 -1
- package/src/mcp/enhance.js +59 -0
- package/src/mcp/idea-tool-defaults.js +155 -0
- package/src/mcp/idea.js +23 -4
- package/src/plugin.js +232 -52
- package/src/skill/loader.js +45 -8
- package/src/template.js +94 -0
- package/skills/idea-run-config/SKILL.md +0 -118
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: idea-run-config
|
|
3
|
-
description: "管理 JetBrains IDE 的 run configuration:在项目级 `.run/*.run.xml` 里创建、修改、删除运行配置。当用户要新建运行配置、修改或删除已有配置、把脚本或执行流程包成可运行的配置,或让 AI 执行用户手配的配置时使用。只操作项目级 `.run/` 文件,不碰 `.idea/workspace.xml`。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# JetBrains Run Configuration 管理
|
|
7
|
-
|
|
8
|
-
## 怎么操作:查询走 MCP,增删改走文件
|
|
9
|
-
|
|
10
|
-
| 动作 | 手段 |
|
|
11
|
-
| ----------------------------- | ------------------------------------------------------------------------- |
|
|
12
|
-
| 查看有哪些配置 / 判断是否生效 | **MCP 工具** `idea_get_run_configurations` |
|
|
13
|
-
| 新增 / 修改 / 删除 | **直接操作文件** `.run/<name>.run.xml` |
|
|
14
|
-
| 执行 / 调试 | **MCP 工具** `idea_execute_run_configuration` |
|
|
15
|
-
| 找同类型样本 | 只读 **`.run/`** 下的 `*.run.xml`(`idea_search_file` + `paths: [".run"]`) |
|
|
16
|
-
|
|
17
|
-
## 存放位置:只有 `.run/`
|
|
18
|
-
|
|
19
|
-
所有配置都写 **项目根 `.run/<name>.run.xml`**。
|
|
20
|
-
|
|
21
|
-
**只做项目级配置,不存在全局(IDE 级)配置** —— 所以永远不写 IDE 的全局配置目录,也不写 `.idea/workspace.xml`。
|
|
22
|
-
|
|
23
|
-
新建配置时 `.run/` 的结构:
|
|
24
|
-
|
|
25
|
-
```xml
|
|
26
|
-
|
|
27
|
-
<component name="ProjectRunConfigurationManager">
|
|
28
|
-
<configuration default="false" name="<名字>" type="<类型 ID>">
|
|
29
|
-
<option name="..." value="..."/>
|
|
30
|
-
<envs/>
|
|
31
|
-
<method v="2"/>
|
|
32
|
-
</configuration>
|
|
33
|
-
</component>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 铁律
|
|
37
|
-
|
|
38
|
-
1. 不要凭空写 option 名。先在 **`.run/` 里**找真实样本:
|
|
39
|
-
- 用 `idea_search_file` 传 `q="*.run.xml"` + `paths: [".run"]` 看项目里已有的配置(**只看 `.run/`**,不去翻 `.idea/`)。
|
|
40
|
-
- 没有目标类型 → 请用户在 IDEA 里新建一个配置,勾选 "Store as project file" 并**存到项目根的 `.run/`**,再读生成的 XML 当模板。
|
|
41
|
-
- 仍然没有 → 直接说明需要该类型的真实样本,不要猜 option 名。
|
|
42
|
-
2. 写完必须校验:
|
|
43
|
-
- **唯一判据**是 `idea_get_run_configurations` 里能看到它。**看不到就是错的** —— 不许用"应该生效了"结案。
|
|
44
|
-
- 看不到的常见原因(按概率):`type` 不是 IDE 当前启用的类型(**IDEA 会静默忽略整个文件,日志里也不报**)、根 component 名写错、
|
|
45
|
-
结构或 option 名不对。改掉重试。
|
|
46
|
-
- 能看到不等于能跑:`idea_execute_run_configuration` 传 `configurationName` 实跑一次确认。Shell Script 必须
|
|
47
|
-
`EXECUTE_IN_TERMINAL=false`,否则实跑直接失败(见"样本"一节)。
|
|
48
|
-
- IDE MCP 不可用 → 提示用户执行 `/open-in-idea` 后再校验,不要跳过校验当成成功。
|
|
49
|
-
3. 改配置用定向修改:只用 `idea_apply_patch` 改需要的那几行 option,不要整文件重写。
|
|
50
|
-
4. 删除配置 = 删除对应的 `.run/<name>.run.xml`;不要试图从 `.idea/workspace.xml` 里删。
|
|
51
|
-
|
|
52
|
-
## 常见字段
|
|
53
|
-
|
|
54
|
-
- `$PROJECT_DIR$`:项目根;`$MODULE_WORKING_DIR$`:模块目录。
|
|
55
|
-
- 环境变量:
|
|
56
|
-
|
|
57
|
-
```xml
|
|
58
|
-
|
|
59
|
-
<envs>
|
|
60
|
-
<env name="KEY" value="VALUE"/>
|
|
61
|
-
</envs>
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
- Before launch 流程:`<method v="2">` 里加 `Make` 选项会先构建。
|
|
65
|
-
|
|
66
|
-
## 起步参考 (不是契约;动手前一律以真实样本为准)
|
|
67
|
-
|
|
68
|
-
| 用途 | type | 关键 option |
|
|
69
|
-
| ---------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
70
|
-
| Shell 脚本 | `ShConfigurationType` | 内联脚本:`SCRIPT_TEXT` + `EXECUTE_SCRIPT_FILE=false`;脚本文件:`SCRIPT_PATH` + `EXECUTE_SCRIPT_FILE=true`;`INTERPRETER_PATH`;`SCRIPT_WORKING_DIRECTORY` |
|
|
71
|
-
| Java 应用 | `Application` | `MAIN_CLASS_NAME`;`WORKING_DIRECTORY`;`PROGRAM_PARAMETERS`;`VM_PARAMETERS` |
|
|
72
|
-
| JUnit | `JUnit` | `TEST_OBJECT`;`MAIN_CLASS_NAME`;`WORKING_DIRECTORY` |
|
|
73
|
-
| Gradle | `GradleRunConfiguration` | `ExternalProjectPath`;`TaskList` |
|
|
74
|
-
| npm | `js.build_tools.npm` | `package-json`;`command`;`scripts` |
|
|
75
|
-
| 串行流程 | `CompoundRunConfiguration` | `method` 里多个 `RunConfigurationTask`(带 `run_configuration_name` / `run_configuration_type`) |
|
|
76
|
-
|
|
77
|
-
### 样本:Shell Script(IDEA 自己生成的 `.run/*.run.xml`)
|
|
78
|
-
|
|
79
|
-
```xml
|
|
80
|
-
<component name="ProjectRunConfigurationManager">
|
|
81
|
-
<configuration default="false" name="Unnamed" type="ShConfigurationType" nameIsGenerated="true">
|
|
82
|
-
<option name="SCRIPT_TEXT" value="" />
|
|
83
|
-
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
|
84
|
-
<option name="SCRIPT_PATH" value="" />
|
|
85
|
-
<option name="SCRIPT_OPTIONS" value="" />
|
|
86
|
-
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
|
87
|
-
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
|
88
|
-
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
|
89
|
-
<option name="INTERPRETER_PATH" value="/bin/zsh" />
|
|
90
|
-
<option name="INTERPRETER_OPTIONS" value="" />
|
|
91
|
-
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
|
92
|
-
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
|
93
|
-
<envs />
|
|
94
|
-
<method v="2" />
|
|
95
|
-
</configuration>
|
|
96
|
-
</component>
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
要点:`INDEPENDENT_*` 三件套表示该字段**独立于模板**(true = 用本配置里的值)。**内联脚本**要 `EXECUTE_SCRIPT_FILE=false` 并填
|
|
100
|
-
`SCRIPT_TEXT`;**跑脚本文件**要 `EXECUTE_SCRIPT_FILE=true` 并填 `SCRIPT_PATH`(上面的样本是未配置的空模板,所以两处都是空串)。
|
|
101
|
-
|
|
102
|
-
AI 自己写的配置一律给 `EXECUTE_IN_TERMINAL=false`;用户已有的 `true` 配置要执行,先问要不要改。
|
|
103
|
-
|
|
104
|
-
## 命名
|
|
105
|
-
|
|
106
|
-
- 把 `name` 转成文件名:去掉 `/ \ : * ? " < > |` 等非法字符,写成 `.run/<净化后的名字>.run.xml`。
|
|
107
|
-
- 目标文件已存在时,先确认是要覆盖。
|
|
108
|
-
|
|
109
|
-
## 流程
|
|
110
|
-
|
|
111
|
-
1. **查现状**:`idea_get_run_configurations`(有哪些配置)。要找样本则在 `.run/` 里读 `*.run.xml`(限定 `paths: [".run"]`)。
|
|
112
|
-
2. **定结构**:有同类样本 → 照它的结构改写;没有 → 请用户在 IDEA 里建一个并**存到 `.run/`**;仍然没有 → 说明需要真实样本,
|
|
113
|
-
不猜 option 名。
|
|
114
|
-
3. **写文件**:`idea_create_new_file` 写 `.run/<name>.run.xml`。
|
|
115
|
-
4. **校验(必做)**:`idea_get_run_configurations` 必须能看到它 —— 看不到就是错的,不许用"应该生效了"结案。
|
|
116
|
-
5. **实跑(必做)**:`idea_execute_run_configuration` 传 `configurationName` 确认能跑(Shell Script 必须
|
|
117
|
-
`EXECUTE_IN_TERMINAL=false`)。
|
|
118
|
-
6. **改 / 删**:改 = `idea_apply_patch` 定向改 option,不要整文件重写;删 = 删除 `.run/<name>.run.xml`,再确认它从列表里消失。
|