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 CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <img src="./CovergioLogoTransparent.png" alt="Convergio Logo" width="200"/>
6
6
 
7
- **v2.1.0** | 60 Specialized Agents | Enterprise-Grade AI Ecosystem
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.0)
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.0)
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.0.0** | December 2025
379
+ **v2.1.2** | December 2025
378
380
 
379
381
  </div>
package/VERSION CHANGED
@@ -3,7 +3,7 @@
3
3
  # Follows Semantic Versioning 2.0.0 (https://semver.org/)
4
4
 
5
5
  # System Version
6
- SYSTEM_VERSION=2.1.0
6
+ SYSTEM_VERSION=2.1.2
7
7
 
8
8
  # Version Schema
9
9
  # AGENT_NAME=MAJOR.MINOR.PATCH[-PRERELEASE] TIMESTAMP
@@ -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 installation
148
+ // Check for existing content and ALWAYS backup if found
138
149
  const existingManifest = loadManifest();
139
- if (existingManifest.version && !skipBackup) {
140
- log(colors.yellow, `Existing installation found (v${existingManifest.version})`);
141
- log(colors.yellow, 'Creating backup before upgrade...\n');
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.0",
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/roberdan/MyConvergio",
14
+ "homepage": "https://github.com/Roberdan/MyConvergio",
15
15
  "bugs": {
16
- "url": "https://github.com/roberdan/MyConvergio/issues"
16
+ "url": "https://github.com/Roberdan/MyConvergio/issues"
17
17
  },
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "git+https://github.com/roberdan/MyConvergio.git"
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": "./bin/myconvergio.js"
25
+ "myconvergio": "bin/myconvergio.js"
26
26
  },
27
27
  "files": [
28
28
  "bin/",
@@ -29,7 +29,8 @@ const colors = {
29
29
  };
30
30
 
31
31
  function log(color, message) {
32
- console.log(`${color}${message}${colors.reset}`);
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 installation and backup
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, `Existing installation found (v${existingManifest.version})`);
137
- log(colors.yellow, 'Creating backup before upgrade...\n');
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
- console.log('');
185
+ process.stderr.write('\n');
165
186
  log(colors.green, '✅ MyConvergio installed successfully!');
166
- console.log('');
187
+ process.stderr.write('\n');
167
188
  log(colors.yellow, 'Your ~/.claude/CLAUDE.md was NOT modified.');
168
- console.log('Create your own configuration file if needed.\n');
169
- console.log('Run `myconvergio help` for available commands.\n');
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();