px2cc 2.1.2 → 2.2.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.
- package/README.md +27 -5
- package/cli.js +54 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
- 🎭 动态获取所有可用的系统角色和用户角色
|
|
9
9
|
- 🤖 支持安装为Claude Code Subagents (通过自然语言提及调用)
|
|
10
10
|
- ⚙️ 支持安装为Claude Code Commands (通过 `/command` 调用)
|
|
11
|
+
- 🏷️ 支持自定义Agent和Command的安装名字
|
|
11
12
|
- 🎨 友好的交互式界面
|
|
12
13
|
- 📁 自动创建和管理 `.claude` 目录结构
|
|
13
14
|
|
|
@@ -29,7 +30,8 @@ npx px2cc
|
|
|
29
30
|
然后按照交互式提示:
|
|
30
31
|
1. 选择要安装的PromptX角色
|
|
31
32
|
2. 选择安装类型(Agent 或 Command)
|
|
32
|
-
3.
|
|
33
|
+
3. 选择是否自定义安装名字(可选)
|
|
34
|
+
4. 确认安装
|
|
33
35
|
|
|
34
36
|
## 安装类型
|
|
35
37
|
|
|
@@ -46,6 +48,24 @@ npx px2cc
|
|
|
46
48
|
- **系统角色** 📦 - PromptX内置的专业角色
|
|
47
49
|
- **用户角色** 👤 - 用户自定义创建的角色
|
|
48
50
|
|
|
51
|
+
## 自定义命名
|
|
52
|
+
|
|
53
|
+
从 v2.2.0 开始支持自定义安装名字功能:
|
|
54
|
+
|
|
55
|
+
- **默认命名规则**:
|
|
56
|
+
- Agent: `角色名-agent` (如 `assistant-agent`)
|
|
57
|
+
- Command: `角色名` (如 `assistant`)
|
|
58
|
+
|
|
59
|
+
- **自定义命名**:
|
|
60
|
+
- 可以自由指定Agent或Command的名字
|
|
61
|
+
- 支持字母、数字、下划线和连字符
|
|
62
|
+
- 避免与现有文件重名冲突
|
|
63
|
+
|
|
64
|
+
- **使用场景**:
|
|
65
|
+
- 多版本管理:`assistant-v1`, `assistant-v2`
|
|
66
|
+
- 功能区分:`code-assistant`, `writing-assistant`
|
|
67
|
+
- 个人偏好:`my-helper`, `ai-buddy`
|
|
68
|
+
|
|
49
69
|
## 系统要求
|
|
50
70
|
|
|
51
71
|
- Node.js >= 16.0.0
|
|
@@ -67,7 +87,9 @@ $ px2cc
|
|
|
67
87
|
|
|
68
88
|
? 请选择要安装的PromptX角色: assistant (系统角色)
|
|
69
89
|
? 安装 assistant 为: Agent - 通过提及"assistant-agent subagent"调用
|
|
70
|
-
?
|
|
90
|
+
? 是否要自定义安装名字? Yes
|
|
91
|
+
? 请输入自定义Agent名字 (默认: assistant-agent): my-assistant
|
|
92
|
+
? 确认安装 assistant 为 my-assistant 到Claude Code? Yes
|
|
71
93
|
|
|
72
94
|
📖 加载 assistant 角色定义...
|
|
73
95
|
🔧 生成 assistant agent文件...
|
|
@@ -75,11 +97,11 @@ $ px2cc
|
|
|
75
97
|
✅ 角色安装完成!
|
|
76
98
|
|
|
77
99
|
📄 生成的文件:
|
|
78
|
-
- .claude/agents/assistant
|
|
100
|
+
- .claude/agents/my-assistant.md
|
|
79
101
|
|
|
80
102
|
🎉 现在你可以在Claude Code中使用:
|
|
81
|
-
Use the assistant
|
|
82
|
-
Have the assistant
|
|
103
|
+
Use the my-assistant subagent to help with my task
|
|
104
|
+
Have the my-assistant subagent review my code
|
|
83
105
|
|
|
84
106
|
💡 提示: 重启Claude Code以确保新配置生效
|
|
85
107
|
```
|
package/cli.js
CHANGED
|
@@ -191,16 +191,54 @@ async function showRoleMenu(systemRoles, userRoles, availableServers) {
|
|
|
191
191
|
}
|
|
192
192
|
]
|
|
193
193
|
},
|
|
194
|
+
{
|
|
195
|
+
type: 'confirm',
|
|
196
|
+
name: 'customName',
|
|
197
|
+
message: '是否要自定义安装名字?',
|
|
198
|
+
default: false
|
|
199
|
+
}
|
|
200
|
+
]);
|
|
201
|
+
|
|
202
|
+
let customName = '';
|
|
203
|
+
if (typeAnswer.customName) {
|
|
204
|
+
const nameAnswer = await inquirer.prompt([
|
|
205
|
+
{
|
|
206
|
+
type: 'input',
|
|
207
|
+
name: 'name',
|
|
208
|
+
message: typeAnswer.installType === 'agents'
|
|
209
|
+
? `请输入自定义Agent名字 (默认: ${roleAnswer.selectedRole.role}-agent):`
|
|
210
|
+
: `请输入自定义Command名字 (默认: ${roleAnswer.selectedRole.role}):`,
|
|
211
|
+
default: typeAnswer.installType === 'agents'
|
|
212
|
+
? `${roleAnswer.selectedRole.role}-agent`
|
|
213
|
+
: roleAnswer.selectedRole.role,
|
|
214
|
+
validate: (input) => {
|
|
215
|
+
if (!input.trim()) {
|
|
216
|
+
return '名字不能为空';
|
|
217
|
+
}
|
|
218
|
+
// 检查名字格式
|
|
219
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(input.trim())) {
|
|
220
|
+
return '名字只能包含字母、数字、下划线和连字符';
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
]);
|
|
226
|
+
customName = nameAnswer.name.trim();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const confirmAnswer = await inquirer.prompt([
|
|
194
230
|
{
|
|
195
231
|
type: 'confirm',
|
|
196
232
|
name: 'confirm',
|
|
197
|
-
message:
|
|
233
|
+
message: customName
|
|
234
|
+
? `确认安装 ${roleAnswer.selectedRole.role} 为 ${chalk.yellow(customName)} 到Claude Code?`
|
|
235
|
+
: '确认安装到Claude Code?',
|
|
198
236
|
default: true
|
|
199
237
|
}
|
|
200
238
|
]);
|
|
201
239
|
|
|
202
240
|
let selectedTools = [];
|
|
203
|
-
if (
|
|
241
|
+
if (confirmAnswer.confirm) {
|
|
204
242
|
// 选择MCP服务器和工具
|
|
205
243
|
selectedTools = await selectMCPServers(roleAnswer.selectedRole.role, availableServers);
|
|
206
244
|
}
|
|
@@ -208,7 +246,8 @@ async function showRoleMenu(systemRoles, userRoles, availableServers) {
|
|
|
208
246
|
return {
|
|
209
247
|
selectedRole: roleAnswer.selectedRole,
|
|
210
248
|
installType: typeAnswer.installType,
|
|
211
|
-
confirm:
|
|
249
|
+
confirm: confirmAnswer.confirm,
|
|
250
|
+
customName: customName,
|
|
212
251
|
selectedTools: selectedTools
|
|
213
252
|
};
|
|
214
253
|
}
|
|
@@ -229,7 +268,7 @@ function checkDirectory() {
|
|
|
229
268
|
}
|
|
230
269
|
|
|
231
270
|
// 安装角色
|
|
232
|
-
async function installRole(selectedRole, installType, claudeDir,
|
|
271
|
+
async function installRole(selectedRole, installType, claudeDir, selectedTools, customName = '') {
|
|
233
272
|
const roleName = selectedRole.role;
|
|
234
273
|
const results = {};
|
|
235
274
|
|
|
@@ -240,10 +279,12 @@ async function installRole(selectedRole, installType, claudeDir, manager, select
|
|
|
240
279
|
const processedContent = await processor.processRole(roleName, mode);
|
|
241
280
|
|
|
242
281
|
// 根据安装模式创建相应文件
|
|
282
|
+
const finalName = customName || (installType === 'agents' ? `${roleName}-agent` : roleName);
|
|
283
|
+
|
|
243
284
|
if (installType === 'agents') {
|
|
244
|
-
console.log(chalk.cyan(`🔧 生成 ${
|
|
285
|
+
console.log(chalk.cyan(`🔧 生成 ${finalName} subagent文件...`));
|
|
245
286
|
const agentConfig = {
|
|
246
|
-
name:
|
|
287
|
+
name: finalName,
|
|
247
288
|
description: `基于PromptX ${roleName}角色的专业AI助手 - 完整action实现`,
|
|
248
289
|
content: processedContent,
|
|
249
290
|
targetDir: claudeDir
|
|
@@ -260,15 +301,15 @@ async function installRole(selectedRole, installType, claudeDir, manager, select
|
|
|
260
301
|
if (!subagentResult.success) {
|
|
261
302
|
throw new Error(`创建Subagent失败: ${subagentResult.error}`);
|
|
262
303
|
}
|
|
263
|
-
results.agentFile = `${
|
|
264
|
-
results.usage = `Use the ${
|
|
304
|
+
results.agentFile = `${finalName}.md`;
|
|
305
|
+
results.usage = `Use the ${finalName} subagent to [任务描述]`;
|
|
265
306
|
}
|
|
266
307
|
|
|
267
308
|
if (installType === 'commands') {
|
|
268
|
-
console.log(chalk.cyan(`📋 生成 ${
|
|
309
|
+
console.log(chalk.cyan(`📋 生成 ${finalName} command文件...`));
|
|
269
310
|
|
|
270
311
|
const commandConfig = {
|
|
271
|
-
name:
|
|
312
|
+
name: finalName,
|
|
272
313
|
description: `基于PromptX ${roleName}角色的专业助手 - 完整action实现`,
|
|
273
314
|
content: processedContent,
|
|
274
315
|
targetDir: claudeDir
|
|
@@ -285,8 +326,8 @@ async function installRole(selectedRole, installType, claudeDir, manager, select
|
|
|
285
326
|
if (!commandResult.success) {
|
|
286
327
|
throw new Error(`创建Command失败: ${commandResult.error}`);
|
|
287
328
|
}
|
|
288
|
-
results.commandFile = `${
|
|
289
|
-
results.usage = `/${
|
|
329
|
+
results.commandFile = `${finalName}.md`;
|
|
330
|
+
results.usage = `/${finalName}`;
|
|
290
331
|
}
|
|
291
332
|
|
|
292
333
|
results.roleName = roleName;
|
|
@@ -348,7 +389,7 @@ export async function main() {
|
|
|
348
389
|
console.log(chalk.blue(`\n🎭 开始安装角色: ${selectedRole.role} (${installType})`));
|
|
349
390
|
|
|
350
391
|
// 安装角色
|
|
351
|
-
const result = await installRole(selectedRole, installType, claudeDir,
|
|
392
|
+
const result = await installRole(selectedRole, installType, claudeDir, selectedTools, selections.customName);
|
|
352
393
|
|
|
353
394
|
console.log(chalk.green.bold('\n✅ 角色安装完成!'));
|
|
354
395
|
console.log(`\n📄 生成的文件:`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "px2cc",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "CLI tool that implements complete PromptX Action flow in Claude Code - role activation, dependency loading, cognition networks & memory systems",
|
|
5
5
|
"main": "cli.js",
|
|
6
6
|
"type": "module",
|