myconvergio 2.1.0 → 2.1.2
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 +6 -4
- package/VERSION +1 -1
- package/bin/myconvergio.js +79 -4
- package/package.json +5 -5
- package/scripts/postinstall.js +29 -8
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<img src="./CovergioLogoTransparent.png" alt="Convergio Logo" width="200"/>
|
|
6
6
|
|
|
7
|
-
**v2.1.
|
|
7
|
+
**v2.1.2** | 60 Specialized Agents | Enterprise-Grade AI Ecosystem
|
|
8
8
|
|
|
9
9
|
> *"Intent is human, momentum is agent"*
|
|
10
10
|
> — [The Agentic Manifesto](./AgenticManifesto.md)
|
|
@@ -36,7 +36,7 @@ MyConvergio is an **open-source collection** of 60 specialized Claude Code subag
|
|
|
36
36
|
|
|
37
37
|
Claude Code subagents are specialized AI assistants that can be invoked to handle specific types of tasks within the Claude Code environment. [Learn more in the official Anthropic documentation](https://docs.anthropic.com/en/docs/claude-code/sub-agents).
|
|
38
38
|
|
|
39
|
-
### Key Features (v2.1.
|
|
39
|
+
### Key Features (v2.1.2)
|
|
40
40
|
|
|
41
41
|
| Feature | Description |
|
|
42
42
|
|---------|-------------|
|
|
@@ -253,7 +253,7 @@ MyConvergio/
|
|
|
253
253
|
│ ├── version-manager.sh
|
|
254
254
|
│ └── bump-agent-version.sh
|
|
255
255
|
├── Makefile # Build and deploy commands
|
|
256
|
-
├── VERSION # System version (2.1.
|
|
256
|
+
├── VERSION # System version (2.1.2)
|
|
257
257
|
└── CLAUDE.md # Project instructions
|
|
258
258
|
```
|
|
259
259
|
|
|
@@ -267,6 +267,7 @@ MyConvergio/
|
|
|
267
267
|
myconvergio help # Show available commands
|
|
268
268
|
myconvergio install # Install/reinstall to ~/.claude/
|
|
269
269
|
myconvergio uninstall # Remove from ~/.claude/
|
|
270
|
+
myconvergio agents # List all agents with versions and model tiers
|
|
270
271
|
myconvergio version # Show version and installation status
|
|
271
272
|
```
|
|
272
273
|
|
|
@@ -315,6 +316,7 @@ All major decisions are documented in `docs/adr/`:
|
|
|
315
316
|
| ADR-008 | ConvergioCLI relationship |
|
|
316
317
|
| ADR-009 | Skills & Rules system |
|
|
317
318
|
| ADR-010 | ISE Engineering Playbook standard |
|
|
319
|
+
| ADR-011 | Modular Execution Plans and Security Framework |
|
|
318
320
|
|
|
319
321
|
---
|
|
320
322
|
|
|
@@ -374,6 +376,6 @@ For questions about commercial licensing: roberdan@fightthestroke.org
|
|
|
374
376
|
|
|
375
377
|
*Built with AI assistance in Milano, following the Agentic Manifesto principles*
|
|
376
378
|
|
|
377
|
-
**v2.
|
|
379
|
+
**v2.1.2** | December 2025
|
|
378
380
|
|
|
379
381
|
</div>
|
package/VERSION
CHANGED
package/bin/myconvergio.js
CHANGED
|
@@ -131,18 +131,37 @@ function createBackup() {
|
|
|
131
131
|
return null;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
function hasExistingContent() {
|
|
135
|
+
const dirs = ['agents', 'rules', 'skills'];
|
|
136
|
+
for (const dir of dirs) {
|
|
137
|
+
const dirPath = path.join(CLAUDE_HOME, dir);
|
|
138
|
+
if (fs.existsSync(dirPath) && fs.readdirSync(dirPath).length > 0) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
|
|
134
145
|
function install(skipBackup = false) {
|
|
135
146
|
log(colors.blue, 'Installing MyConvergio to ~/.claude/...\n');
|
|
136
147
|
|
|
137
|
-
// Check for existing
|
|
148
|
+
// Check for existing content and ALWAYS backup if found
|
|
138
149
|
const existingManifest = loadManifest();
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
150
|
+
const hasContent = hasExistingContent();
|
|
151
|
+
|
|
152
|
+
if (!skipBackup && hasContent) {
|
|
153
|
+
if (existingManifest.version) {
|
|
154
|
+
log(colors.yellow, `Upgrading from v${existingManifest.version}...`);
|
|
155
|
+
} else {
|
|
156
|
+
log(colors.yellow, 'Existing ~/.claude/ content detected.');
|
|
157
|
+
}
|
|
158
|
+
log(colors.yellow, 'Creating backup before installation...\n');
|
|
142
159
|
const backupDir = createBackup();
|
|
143
160
|
if (backupDir) {
|
|
144
161
|
log(colors.green, ` ✓ Backup created: ${backupDir}\n`);
|
|
145
162
|
}
|
|
163
|
+
} else if (!hasContent) {
|
|
164
|
+
log(colors.blue, 'Fresh installation to ~/.claude/\n');
|
|
146
165
|
}
|
|
147
166
|
|
|
148
167
|
const srcAgents = path.join(PACKAGE_ROOT, '.claude', 'agents');
|
|
@@ -253,6 +272,56 @@ function showVersion() {
|
|
|
253
272
|
console.log(` Skills: ${counts.skills > 0 ? counts.skills : colors.red + 'not installed' + colors.reset}`);
|
|
254
273
|
}
|
|
255
274
|
|
|
275
|
+
function listAgents() {
|
|
276
|
+
log(colors.blue, 'Installed Agents:\n');
|
|
277
|
+
|
|
278
|
+
const agentsDir = path.join(CLAUDE_HOME, 'agents');
|
|
279
|
+
if (!fs.existsSync(agentsDir)) {
|
|
280
|
+
log(colors.red, 'No agents installed. Run: myconvergio install');
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const categories = fs.readdirSync(agentsDir).filter(f =>
|
|
285
|
+
fs.statSync(path.join(agentsDir, f)).isDirectory()
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
let totalAgents = 0;
|
|
289
|
+
|
|
290
|
+
for (const category of categories.sort()) {
|
|
291
|
+
const categoryPath = path.join(agentsDir, category);
|
|
292
|
+
const agents = fs.readdirSync(categoryPath).filter(f =>
|
|
293
|
+
f.endsWith('.md') &&
|
|
294
|
+
!['CONSTITUTION.md', 'CommonValuesAndPrinciples.md', 'SECURITY_FRAMEWORK_TEMPLATE.md', 'MICROSOFT_VALUES.md'].includes(f)
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
if (agents.length === 0) continue;
|
|
298
|
+
|
|
299
|
+
log(colors.yellow, `\n${category}/`);
|
|
300
|
+
|
|
301
|
+
for (const agent of agents.sort()) {
|
|
302
|
+
const agentPath = path.join(categoryPath, agent);
|
|
303
|
+
const content = fs.readFileSync(agentPath, 'utf8');
|
|
304
|
+
|
|
305
|
+
// Extract version from YAML frontmatter
|
|
306
|
+
const versionMatch = content.match(/^version:\s*["']?([^"'\n]+)["']?/m);
|
|
307
|
+
const version = versionMatch ? versionMatch[1] : 'unknown';
|
|
308
|
+
|
|
309
|
+
// Extract model from YAML frontmatter
|
|
310
|
+
const modelMatch = content.match(/^model:\s*["']?([^"'\n]+)["']?/m);
|
|
311
|
+
const model = modelMatch ? modelMatch[1] : 'haiku';
|
|
312
|
+
|
|
313
|
+
const agentName = agent.replace('.md', '');
|
|
314
|
+
const modelColor = model === 'opus' ? colors.red : model === 'sonnet' ? colors.yellow : colors.reset;
|
|
315
|
+
|
|
316
|
+
console.log(` ${agentName.padEnd(45)} v${version.padEnd(8)} ${modelColor}${model}${colors.reset}`);
|
|
317
|
+
totalAgents++;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
console.log('');
|
|
322
|
+
log(colors.green, `Total: ${totalAgents} agents`);
|
|
323
|
+
}
|
|
324
|
+
|
|
256
325
|
function showHelp() {
|
|
257
326
|
console.log(`
|
|
258
327
|
${colors.blue}MyConvergio - Claude Code Subagents Suite${colors.reset}
|
|
@@ -263,11 +332,13 @@ ${colors.yellow}Usage:${colors.reset}
|
|
|
263
332
|
${colors.yellow}Commands:${colors.reset}
|
|
264
333
|
install Install/reinstall agents, rules, and skills to ~/.claude/
|
|
265
334
|
uninstall Remove all installed components from ~/.claude/
|
|
335
|
+
agents List all installed agents with versions
|
|
266
336
|
version Show version and installation status
|
|
267
337
|
help Show this help message
|
|
268
338
|
|
|
269
339
|
${colors.yellow}Examples:${colors.reset}
|
|
270
340
|
myconvergio install # Install or update components
|
|
341
|
+
myconvergio agents # List all agents with versions
|
|
271
342
|
myconvergio version # Check what's installed
|
|
272
343
|
myconvergio uninstall # Remove everything
|
|
273
344
|
|
|
@@ -290,6 +361,10 @@ switch (command) {
|
|
|
290
361
|
case 'remove':
|
|
291
362
|
uninstall();
|
|
292
363
|
break;
|
|
364
|
+
case 'agents':
|
|
365
|
+
case 'list':
|
|
366
|
+
listAgents();
|
|
367
|
+
break;
|
|
293
368
|
case 'version':
|
|
294
369
|
case '-v':
|
|
295
370
|
case '--version':
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "myconvergio",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "60 specialized Claude Code subagents for enterprise software development, strategic leadership, and organizational excellence",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
"enterprise",
|
|
12
12
|
"productivity"
|
|
13
13
|
],
|
|
14
|
-
"homepage": "https://github.com/
|
|
14
|
+
"homepage": "https://github.com/Roberdan/MyConvergio",
|
|
15
15
|
"bugs": {
|
|
16
|
-
"url": "https://github.com/
|
|
16
|
+
"url": "https://github.com/Roberdan/MyConvergio/issues"
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
|
-
"url": "git+https://github.com/
|
|
20
|
+
"url": "git+https://github.com/Roberdan/MyConvergio.git"
|
|
21
21
|
},
|
|
22
22
|
"license": "CC-BY-NC-SA-4.0",
|
|
23
23
|
"author": "Roberto D'Angelo <roberdan@fightthestroke.org>",
|
|
24
24
|
"bin": {
|
|
25
|
-
"myconvergio": "
|
|
25
|
+
"myconvergio": "bin/myconvergio.js"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
28
|
"bin/",
|
package/scripts/postinstall.js
CHANGED
|
@@ -29,7 +29,8 @@ const colors = {
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
function log(color, message) {
|
|
32
|
-
|
|
32
|
+
// Use stderr for npm postinstall visibility (npm suppresses stdout)
|
|
33
|
+
process.stderr.write(`${color}${message}${colors.reset}\n`);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
function copyRecursive(src, dest, installedFiles = []) {
|
|
@@ -111,6 +112,17 @@ function countDirs(dir) {
|
|
|
111
112
|
).length;
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
function hasExistingContent() {
|
|
116
|
+
const dirs = ['agents', 'rules', 'skills'];
|
|
117
|
+
for (const dir of dirs) {
|
|
118
|
+
const dirPath = path.join(CLAUDE_HOME, dir);
|
|
119
|
+
if (fs.existsSync(dirPath) && fs.readdirSync(dirPath).length > 0) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
|
|
114
126
|
function main() {
|
|
115
127
|
// Skip if running in CI or if MYCONVERGIO_SKIP_POSTINSTALL is set
|
|
116
128
|
if (process.env.CI || process.env.MYCONVERGIO_SKIP_POSTINSTALL) {
|
|
@@ -130,15 +142,24 @@ function main() {
|
|
|
130
142
|
return;
|
|
131
143
|
}
|
|
132
144
|
|
|
133
|
-
// Check for existing
|
|
145
|
+
// Check for existing content and ALWAYS backup if found
|
|
134
146
|
const existingManifest = loadManifest();
|
|
147
|
+
const hasContent = hasExistingContent();
|
|
148
|
+
|
|
135
149
|
if (existingManifest.version) {
|
|
136
|
-
log(colors.yellow, `
|
|
137
|
-
|
|
150
|
+
log(colors.yellow, `Upgrading from v${existingManifest.version}...`);
|
|
151
|
+
} else if (hasContent) {
|
|
152
|
+
log(colors.yellow, 'Existing ~/.claude/ content detected (not installed via npm).');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (hasContent) {
|
|
156
|
+
log(colors.yellow, 'Creating backup before installation...\n');
|
|
138
157
|
const backupDir = createBackup();
|
|
139
158
|
if (backupDir) {
|
|
140
159
|
log(colors.green, ` ✓ Backup created: ${backupDir}\n`);
|
|
141
160
|
}
|
|
161
|
+
} else {
|
|
162
|
+
log(colors.blue, 'Fresh installation to ~/.claude/\n');
|
|
142
163
|
}
|
|
143
164
|
|
|
144
165
|
const installedFiles = [];
|
|
@@ -161,12 +182,12 @@ function main() {
|
|
|
161
182
|
saveManifest(installedFiles, version);
|
|
162
183
|
log(colors.green, ` ✓ Saved manifest (${installedFiles.length} files)`);
|
|
163
184
|
|
|
164
|
-
|
|
185
|
+
process.stderr.write('\n');
|
|
165
186
|
log(colors.green, '✅ MyConvergio installed successfully!');
|
|
166
|
-
|
|
187
|
+
process.stderr.write('\n');
|
|
167
188
|
log(colors.yellow, 'Your ~/.claude/CLAUDE.md was NOT modified.');
|
|
168
|
-
|
|
169
|
-
|
|
189
|
+
process.stderr.write('Create your own configuration file if needed.\n');
|
|
190
|
+
process.stderr.write('Run `myconvergio help` for available commands.\n\n');
|
|
170
191
|
}
|
|
171
192
|
|
|
172
193
|
main();
|