maxsimcli 3.12.0 → 4.0.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 (178) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapters/index.d.ts +0 -11
  3. package/dist/adapters/index.d.ts.map +1 -1
  4. package/dist/adapters/index.js +4 -40
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/assets/CHANGELOG.md +17 -0
  7. package/dist/assets/dashboard/client/assets/{index-wtQDvXzr.js → index-C_eAetZJ.js} +60 -60
  8. package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +32 -0
  9. package/dist/assets/dashboard/client/index.html +2 -2
  10. package/dist/assets/dashboard/server.js +467 -271
  11. package/dist/assets/templates/agents/AGENTS.md +13 -1
  12. package/dist/assets/templates/agents/maxsim-debugger.md +2 -2
  13. package/dist/assets/templates/agents/maxsim-executor.md +5 -5
  14. package/dist/assets/templates/agents/maxsim-phase-researcher.md +2 -2
  15. package/dist/assets/templates/agents/maxsim-plan-checker.md +2 -2
  16. package/dist/assets/templates/agents/maxsim-planner.md +3 -3
  17. package/dist/assets/templates/commands/maxsim/add-todo.md +15 -5
  18. package/dist/assets/templates/commands/maxsim/discuss-phase.md +1 -0
  19. package/dist/assets/templates/commands/maxsim/init-existing.md +4 -0
  20. package/dist/assets/templates/commands/maxsim/new-project.md +4 -0
  21. package/dist/assets/templates/references/thinking-partner.md +41 -0
  22. package/dist/assets/templates/skills/batch-worktree/SKILL.md +137 -0
  23. package/dist/assets/templates/skills/brainstorming/SKILL.md +159 -0
  24. package/dist/assets/templates/skills/roadmap-writing/SKILL.md +198 -0
  25. package/dist/assets/templates/skills/sdd/SKILL.md +175 -0
  26. package/dist/assets/templates/skills/simplify/SKILL.md +48 -0
  27. package/dist/assets/templates/skills/using-maxsim/SKILL.md +6 -1
  28. package/dist/assets/templates/templates/acceptance-criteria.md +10 -0
  29. package/dist/assets/templates/templates/decisions.md +10 -0
  30. package/dist/assets/templates/templates/no-gos.md +9 -0
  31. package/dist/assets/templates/workflows/add-todo.md +89 -0
  32. package/dist/assets/templates/workflows/discuss-phase.md +85 -1
  33. package/dist/assets/templates/workflows/execute-phase.md +22 -2
  34. package/dist/assets/templates/workflows/execute-plan.md +166 -0
  35. package/dist/assets/templates/workflows/init-existing.md +116 -0
  36. package/dist/assets/templates/workflows/new-project.md +105 -1
  37. package/dist/assets/templates/workflows/plan-phase.md +3 -3
  38. package/dist/assets/templates/workflows/quick.md +2 -2
  39. package/dist/cli.cjs +1264 -882
  40. package/dist/cli.cjs.map +1 -1
  41. package/dist/cli.js +97 -74
  42. package/dist/cli.js.map +1 -1
  43. package/dist/core/artefakte.d.ts +12 -0
  44. package/dist/core/artefakte.d.ts.map +1 -0
  45. package/dist/core/artefakte.js +136 -0
  46. package/dist/core/artefakte.js.map +1 -0
  47. package/dist/core/commands.d.ts +13 -13
  48. package/dist/core/commands.d.ts.map +1 -1
  49. package/dist/core/commands.js +44 -57
  50. package/dist/core/commands.js.map +1 -1
  51. package/dist/core/config.d.ts +4 -3
  52. package/dist/core/config.d.ts.map +1 -1
  53. package/dist/core/config.js +14 -18
  54. package/dist/core/config.js.map +1 -1
  55. package/dist/core/context-loader.d.ts +20 -0
  56. package/dist/core/context-loader.d.ts.map +1 -0
  57. package/dist/core/context-loader.js +154 -0
  58. package/dist/core/context-loader.js.map +1 -0
  59. package/dist/core/core.d.ts +8 -2
  60. package/dist/core/core.d.ts.map +1 -1
  61. package/dist/core/core.js +47 -11
  62. package/dist/core/core.js.map +1 -1
  63. package/dist/core/dashboard-launcher.d.ts +1 -1
  64. package/dist/core/dashboard-launcher.d.ts.map +1 -1
  65. package/dist/core/dashboard-launcher.js +18 -15
  66. package/dist/core/dashboard-launcher.js.map +1 -1
  67. package/dist/core/frontmatter.d.ts +5 -5
  68. package/dist/core/frontmatter.d.ts.map +1 -1
  69. package/dist/core/frontmatter.js +21 -26
  70. package/dist/core/frontmatter.js.map +1 -1
  71. package/dist/core/index.d.ts +8 -3
  72. package/dist/core/index.d.ts.map +1 -1
  73. package/dist/core/index.js +23 -3
  74. package/dist/core/index.js.map +1 -1
  75. package/dist/core/init.d.ts +14 -14
  76. package/dist/core/init.d.ts.map +1 -1
  77. package/dist/core/init.js +93 -154
  78. package/dist/core/init.js.map +1 -1
  79. package/dist/core/milestone.d.ts +3 -3
  80. package/dist/core/milestone.d.ts.map +1 -1
  81. package/dist/core/milestone.js +9 -9
  82. package/dist/core/milestone.js.map +1 -1
  83. package/dist/core/phase.d.ts +9 -9
  84. package/dist/core/phase.d.ts.map +1 -1
  85. package/dist/core/phase.js +64 -68
  86. package/dist/core/phase.js.map +1 -1
  87. package/dist/core/roadmap.d.ts +4 -3
  88. package/dist/core/roadmap.d.ts.map +1 -1
  89. package/dist/core/roadmap.js +46 -109
  90. package/dist/core/roadmap.js.map +1 -1
  91. package/dist/core/skills.d.ts +19 -0
  92. package/dist/core/skills.d.ts.map +1 -0
  93. package/dist/core/skills.js +145 -0
  94. package/dist/core/skills.js.map +1 -0
  95. package/dist/core/start.d.ts +15 -0
  96. package/dist/core/start.d.ts.map +1 -0
  97. package/dist/core/start.js +80 -0
  98. package/dist/core/start.js.map +1 -0
  99. package/dist/core/state.d.ts +13 -13
  100. package/dist/core/state.d.ts.map +1 -1
  101. package/dist/core/state.js +119 -126
  102. package/dist/core/state.js.map +1 -1
  103. package/dist/core/template.d.ts +3 -3
  104. package/dist/core/template.d.ts.map +1 -1
  105. package/dist/core/template.js +12 -14
  106. package/dist/core/template.js.map +1 -1
  107. package/dist/core/types.d.ts +14 -2
  108. package/dist/core/types.d.ts.map +1 -1
  109. package/dist/core/types.js +8 -0
  110. package/dist/core/types.js.map +1 -1
  111. package/dist/core/verify.d.ts +10 -9
  112. package/dist/core/verify.d.ts.map +1 -1
  113. package/dist/core/verify.js +38 -48
  114. package/dist/core/verify.js.map +1 -1
  115. package/dist/core-TFSlUjV1.cjs +4312 -0
  116. package/dist/core-TFSlUjV1.cjs.map +1 -0
  117. package/dist/install/adapters.d.ts +2 -11
  118. package/dist/install/adapters.d.ts.map +1 -1
  119. package/dist/install/adapters.js +16 -154
  120. package/dist/install/adapters.js.map +1 -1
  121. package/dist/install/copy.d.ts +1 -10
  122. package/dist/install/copy.d.ts.map +1 -1
  123. package/dist/install/copy.js +5 -125
  124. package/dist/install/copy.js.map +1 -1
  125. package/dist/install/hooks.d.ts +4 -5
  126. package/dist/install/hooks.d.ts.map +1 -1
  127. package/dist/install/hooks.js +46 -71
  128. package/dist/install/hooks.js.map +1 -1
  129. package/dist/install/index.js +163 -226
  130. package/dist/install/index.js.map +1 -1
  131. package/dist/install/manifest.d.ts +5 -2
  132. package/dist/install/manifest.d.ts.map +1 -1
  133. package/dist/install/manifest.js +20 -26
  134. package/dist/install/manifest.js.map +1 -1
  135. package/dist/install/patches.d.ts +1 -2
  136. package/dist/install/patches.d.ts.map +1 -1
  137. package/dist/install/patches.js +4 -16
  138. package/dist/install/patches.js.map +1 -1
  139. package/dist/install/shared.d.ts +24 -18
  140. package/dist/install/shared.d.ts.map +1 -1
  141. package/dist/install/shared.js +65 -35
  142. package/dist/install/shared.js.map +1 -1
  143. package/dist/install/uninstall.d.ts +2 -3
  144. package/dist/install/uninstall.d.ts.map +1 -1
  145. package/dist/install/uninstall.js +24 -82
  146. package/dist/install/uninstall.js.map +1 -1
  147. package/dist/install.cjs +321 -1230
  148. package/dist/install.cjs.map +1 -1
  149. package/dist/mcp-server.cjs +38 -14
  150. package/dist/mcp-server.cjs.map +1 -1
  151. package/dist/skills-BOSxYUzf.cjs +6812 -0
  152. package/dist/skills-BOSxYUzf.cjs.map +1 -0
  153. package/package.json +1 -1
  154. package/dist/adapters/codex.d.ts +0 -19
  155. package/dist/adapters/codex.d.ts.map +0 -1
  156. package/dist/adapters/codex.js +0 -94
  157. package/dist/adapters/codex.js.map +0 -1
  158. package/dist/adapters/gemini.d.ts +0 -19
  159. package/dist/adapters/gemini.d.ts.map +0 -1
  160. package/dist/adapters/gemini.js +0 -96
  161. package/dist/adapters/gemini.js.map +0 -1
  162. package/dist/adapters/opencode.d.ts +0 -17
  163. package/dist/adapters/opencode.d.ts.map +0 -1
  164. package/dist/adapters/opencode.js +0 -111
  165. package/dist/adapters/opencode.js.map +0 -1
  166. package/dist/adapters/transforms/content.d.ts +0 -39
  167. package/dist/adapters/transforms/content.d.ts.map +0 -1
  168. package/dist/adapters/transforms/content.js +0 -125
  169. package/dist/adapters/transforms/content.js.map +0 -1
  170. package/dist/adapters/transforms/frontmatter.d.ts +0 -42
  171. package/dist/adapters/transforms/frontmatter.d.ts.map +0 -1
  172. package/dist/adapters/transforms/frontmatter.js +0 -204
  173. package/dist/adapters/transforms/frontmatter.js.map +0 -1
  174. package/dist/adapters/transforms/tool-maps.d.ts +0 -20
  175. package/dist/adapters/transforms/tool-maps.d.ts.map +0 -1
  176. package/dist/adapters/transforms/tool-maps.js +0 -64
  177. package/dist/adapters/transforms/tool-maps.js.map +0 -1
  178. package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"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"}
@@ -57,37 +57,13 @@ const uninstall_js_1 = require("./uninstall.js");
57
57
  // Parse args
58
58
  const args = process.argv.slice(2);
59
59
  const argv = (0, minimist_1.default)(args, {
60
- boolean: ['global', 'local', 'opencode', 'claude', 'gemini', 'codex', 'both', 'all', 'uninstall', 'help', 'version', 'force-statusline', 'network'],
60
+ boolean: ['global', 'local', 'claude', 'uninstall', 'help', 'version', 'force-statusline', 'network'],
61
61
  string: ['config-dir'],
62
62
  alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },
63
63
  });
64
64
  const hasGlobal = !!argv['global'];
65
65
  const hasLocal = !!argv['local'];
66
- const hasOpencode = !!argv['opencode'];
67
- const hasClaude = !!argv['claude'];
68
- const hasGemini = !!argv['gemini'];
69
- const hasCodex = !!argv['codex'];
70
- const hasBoth = !!argv['both']; // Legacy flag, keeps working
71
- const hasAll = !!argv['all'];
72
66
  const hasUninstall = !!argv['uninstall'];
73
- // Runtime selection - can be set by flags or interactive prompt
74
- let selectedRuntimes = [];
75
- if (hasAll) {
76
- selectedRuntimes = ['claude', 'opencode', 'gemini', 'codex'];
77
- }
78
- else if (hasBoth) {
79
- selectedRuntimes = ['claude', 'opencode'];
80
- }
81
- else {
82
- if (hasOpencode)
83
- selectedRuntimes.push('opencode');
84
- if (hasClaude)
85
- selectedRuntimes.push('claude');
86
- if (hasGemini)
87
- selectedRuntimes.push('gemini');
88
- if (hasCodex)
89
- selectedRuntimes.push('codex');
90
- }
91
67
  const banner = '\n' +
92
68
  chalk_1.default.cyan(figlet_1.default.textSync('MAXSIM', { font: 'ANSI Shadow' })
93
69
  .split('\n')
@@ -99,12 +75,20 @@ const banner = '\n' +
99
75
  chalk_1.default.dim('v' + shared_js_1.pkg.version) +
100
76
  '\n' +
101
77
  ' A meta-prompting, context engineering and spec-driven\n' +
102
- ' development system for Claude Code, OpenCode, Gemini, and Codex.\n';
78
+ ' development system for Claude Code.\n';
103
79
  // Parse --config-dir argument
104
80
  const explicitConfigDir = argv['config-dir'] || null;
105
81
  const hasHelp = !!argv['help'];
106
82
  const hasVersion = !!argv['version'];
107
83
  const forceStatusline = !!argv['force-statusline'];
84
+ // Reject deprecated multi-runtime flags
85
+ const deprecatedFlags = ['opencode', 'gemini', 'codex', 'both', 'all'];
86
+ for (const flag of deprecatedFlags) {
87
+ if (argv[flag]) {
88
+ console.error(`Error: The --${flag} flag is no longer supported. MAXSIM v2.0 is Claude Code only.`);
89
+ process.exit(1);
90
+ }
91
+ }
108
92
  // Show version if requested (before banner for clean output)
109
93
  if (hasVersion) {
110
94
  console.log(shared_js_1.pkg.version);
@@ -113,17 +97,15 @@ if (hasVersion) {
113
97
  console.log(banner);
114
98
  // Show help if requested
115
99
  if (hasHelp) {
116
- console.log(` ${chalk_1.default.yellow('Usage:')} npx maxsimcli [options]\n\n ${chalk_1.default.yellow('Options:')}\n ${chalk_1.default.cyan('-g, --global')} Install globally (to config directory)\n ${chalk_1.default.cyan('-l, --local')} Install locally (to current directory)\n ${chalk_1.default.cyan('--claude')} Install for Claude Code only\n ${chalk_1.default.cyan('--opencode')} Install for OpenCode only\n ${chalk_1.default.cyan('--gemini')} Install for Gemini only\n ${chalk_1.default.cyan('--codex')} Install for Codex only\n ${chalk_1.default.cyan('--all')} Install for all runtimes\n ${chalk_1.default.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\n ${chalk_1.default.cyan('-c, --config-dir <path>')} Specify custom config directory\n ${chalk_1.default.cyan('-h, --help')} Show this help message\n ${chalk_1.default.cyan('--force-statusline')} Replace existing statusline config\n\n ${chalk_1.default.yellow('Examples:')}\n ${chalk_1.default.dim('# Interactive install (prompts for runtime and location)')}\n npx maxsimcli\n\n ${chalk_1.default.dim('# Install for Claude Code globally')}\n npx maxsimcli --claude --global\n\n ${chalk_1.default.dim('# Install for Gemini globally')}\n npx maxsimcli --gemini --global\n\n ${chalk_1.default.dim('# Install for Codex globally')}\n npx maxsimcli --codex --global\n\n ${chalk_1.default.dim('# Install for all runtimes globally')}\n npx maxsimcli --all --global\n\n ${chalk_1.default.dim('# Install to custom config directory')}\n npx maxsimcli --codex --global --config-dir ~/.codex-work\n\n ${chalk_1.default.dim('# Install to current project only')}\n npx maxsimcli --claude --local\n\n ${chalk_1.default.dim('# Uninstall MAXSIM from Codex globally')}\n npx maxsimcli --codex --global --uninstall\n\n ${chalk_1.default.yellow('Notes:')}\n The --config-dir option is useful when you have multiple configurations.\n It takes priority over CLAUDE_CONFIG_DIR / GEMINI_CONFIG_DIR / CODEX_HOME environment variables.\n`);
100
+ console.log(` ${chalk_1.default.yellow('Usage:')} npx maxsimcli [options]\n\n ${chalk_1.default.yellow('Options:')}\n ${chalk_1.default.cyan('-g, --global')} Install globally (to config directory)\n ${chalk_1.default.cyan('-l, --local')} Install locally (to current directory)\n ${chalk_1.default.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\n ${chalk_1.default.cyan('-c, --config-dir <path>')} Specify custom config directory\n ${chalk_1.default.cyan('-h, --help')} Show this help message\n ${chalk_1.default.cyan('--force-statusline')} Replace existing statusline config\n\n ${chalk_1.default.yellow('Examples:')}\n ${chalk_1.default.dim('# Interactive install (prompts for location)')}\n npx maxsimcli\n\n ${chalk_1.default.dim('# Install globally')}\n npx maxsimcli --global\n\n ${chalk_1.default.dim('# Install to current project only')}\n npx maxsimcli --local\n\n ${chalk_1.default.dim('# Install to custom config directory')}\n npx maxsimcli --global --config-dir ~/.claude-work\n\n ${chalk_1.default.dim('# Uninstall MAXSIM globally')}\n npx maxsimcli --global --uninstall\n\n ${chalk_1.default.yellow('Notes:')}\n The --config-dir option is useful when you have multiple configurations.\n It takes priority over the CLAUDE_CONFIG_DIR environment variable.\n`);
117
101
  process.exit(0);
118
102
  }
119
- async function install(isGlobal, runtime = 'claude') {
120
- const isOpencode = runtime === 'opencode';
121
- const isGemini = runtime === 'gemini';
122
- const isCodex = runtime === 'codex';
123
- const dirName = (0, shared_js_1.getDirName)(runtime);
103
+ async function install(isGlobal) {
104
+ const runtime = 'claude';
105
+ const dirName = (0, shared_js_1.getDirName)();
124
106
  const src = shared_js_1.templatesRoot;
125
107
  const targetDir = isGlobal
126
- ? (0, shared_js_1.getGlobalDir)(runtime, explicitConfigDir)
108
+ ? (0, shared_js_1.getGlobalDir)(explicitConfigDir)
127
109
  : path.join(process.cwd(), dirName);
128
110
  const locationLabel = isGlobal
129
111
  ? targetDir.replace(os.homedir(), '~')
@@ -131,63 +113,37 @@ async function install(isGlobal, runtime = 'claude') {
131
113
  const pathPrefix = isGlobal
132
114
  ? `${targetDir.replace(/\\/g, '/')}/`
133
115
  : `./${dirName}/`;
134
- let runtimeLabel = 'Claude Code';
135
- if (isOpencode)
136
- runtimeLabel = 'OpenCode';
137
- if (isGemini)
138
- runtimeLabel = 'Gemini';
139
- if (isCodex)
140
- runtimeLabel = 'Codex';
141
- console.log(` Installing for ${chalk_1.default.cyan(runtimeLabel)} to ${chalk_1.default.cyan(locationLabel)}\n`);
116
+ console.log(` Installing for ${chalk_1.default.cyan('Claude Code')} to ${chalk_1.default.cyan(locationLabel)}\n`);
142
117
  const failures = [];
118
+ // Detect prior install via manifest — used for re-run safety
119
+ const existingManifest = (0, manifest_js_1.readManifest)(targetDir);
120
+ const isAlreadyCurrent = existingManifest !== null && existingManifest.version === shared_js_1.pkg.version;
121
+ if (existingManifest !== null) {
122
+ const { complete, missing } = (0, shared_js_1.verifyInstallComplete)(targetDir, runtime, existingManifest);
123
+ if (!complete) {
124
+ console.log(` ${chalk_1.default.yellow('!')} Previous install (v${existingManifest.version}) is incomplete — ${missing.length} missing file(s). Re-installing.`);
125
+ }
126
+ else if (isAlreadyCurrent) {
127
+ console.log(` ${chalk_1.default.dim(`Version ${shared_js_1.pkg.version} already installed — upgrading in place`)}`);
128
+ }
129
+ }
143
130
  // Save any locally modified MAXSIM files before they get wiped
144
131
  (0, patches_js_1.saveLocalPatches)(targetDir);
145
132
  // Clean up orphaned files from previous versions
146
133
  (0, hooks_js_1.cleanupOrphanedFiles)(targetDir);
147
- // OpenCode uses command/ (flat), Codex uses skills/, Claude/Gemini use commands/maxsim/
134
+ // Claude uses commands/maxsim/
148
135
  let spinner = (0, ora_1.default)({ text: 'Installing commands...', color: 'cyan' }).start();
149
- if (isOpencode) {
150
- const commandDir = path.join(targetDir, 'command');
151
- fs.mkdirSync(commandDir, { recursive: true });
152
- const maxsimSrc = path.join(src, 'commands', 'maxsim');
153
- (0, copy_js_1.copyFlattenedCommands)(maxsimSrc, commandDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);
154
- if ((0, shared_js_1.verifyInstalled)(commandDir, 'command/maxsim-*')) {
155
- const count = fs
156
- .readdirSync(commandDir)
157
- .filter((f) => f.startsWith('maxsim-')).length;
158
- spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${count} commands to command/`);
159
- }
160
- else {
161
- spinner.fail('Failed to install commands');
162
- failures.push('command/maxsim-*');
163
- }
164
- }
165
- else if (isCodex) {
166
- const skillsDir = path.join(targetDir, 'skills');
167
- const maxsimSrc = path.join(src, 'commands', 'maxsim');
168
- (0, copy_js_1.copyCommandsAsCodexSkills)(maxsimSrc, skillsDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);
169
- const installedSkillNames = (0, copy_js_1.listCodexSkillNames)(skillsDir);
170
- if (installedSkillNames.length > 0) {
171
- spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillNames.length} skills to skills/`);
172
- }
173
- else {
174
- spinner.fail('Failed to install skills');
175
- failures.push('skills/maxsim-*');
176
- }
136
+ const commandsDir = path.join(targetDir, 'commands');
137
+ fs.mkdirSync(commandsDir, { recursive: true });
138
+ const maxsimSrc = path.join(src, 'commands', 'maxsim');
139
+ const maxsimDest = path.join(commandsDir, 'maxsim');
140
+ (0, copy_js_1.copyWithPathReplacement)(maxsimSrc, maxsimDest, pathPrefix, explicitConfigDir, true);
141
+ if ((0, shared_js_1.verifyInstalled)(maxsimDest, 'commands/maxsim')) {
142
+ spinner.succeed(chalk_1.default.green('\u2713') + ' Installed commands/maxsim');
177
143
  }
178
144
  else {
179
- const commandsDir = path.join(targetDir, 'commands');
180
- fs.mkdirSync(commandsDir, { recursive: true });
181
- const maxsimSrc = path.join(src, 'commands', 'maxsim');
182
- const maxsimDest = path.join(commandsDir, 'maxsim');
183
- (0, copy_js_1.copyWithPathReplacement)(maxsimSrc, maxsimDest, pathPrefix, runtime, explicitConfigDir, true);
184
- if ((0, shared_js_1.verifyInstalled)(maxsimDest, 'commands/maxsim')) {
185
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed commands/maxsim');
186
- }
187
- else {
188
- spinner.fail('Failed to install commands/maxsim');
189
- failures.push('commands/maxsim');
190
- }
145
+ spinner.fail('Failed to install commands/maxsim');
146
+ failures.push('commands/maxsim');
191
147
  }
192
148
  // Copy maxsim directory content (workflows, templates, references) with path replacement
193
149
  spinner = (0, ora_1.default)({ text: 'Installing workflows and templates...', color: 'cyan' }).start();
@@ -201,7 +157,7 @@ async function install(isGlobal, runtime = 'claude') {
201
157
  const subdirSrc = path.join(src, subdir);
202
158
  if (fs.existsSync(subdirSrc)) {
203
159
  const subdirDest = path.join(skillDest, subdir);
204
- (0, copy_js_1.copyWithPathReplacement)(subdirSrc, subdirDest, pathPrefix, runtime, explicitConfigDir);
160
+ (0, copy_js_1.copyWithPathReplacement)(subdirSrc, subdirDest, pathPrefix, explicitConfigDir);
205
161
  }
206
162
  }
207
163
  if ((0, shared_js_1.verifyInstalled)(skillDest, 'maxsim')) {
@@ -231,16 +187,7 @@ async function install(isGlobal, runtime = 'claude') {
231
187
  let content = fs.readFileSync(path.join(agentsSrc, entry.name), 'utf8');
232
188
  const dirRegex = /~\/\.claude\//g;
233
189
  content = content.replace(dirRegex, pathPrefix);
234
- content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(runtime, explicitConfigDir));
235
- if (isOpencode) {
236
- content = (0, index_js_1.convertClaudeToOpencodeFrontmatter)(content);
237
- }
238
- else if (isGemini) {
239
- content = (0, index_js_1.convertClaudeToGeminiAgent)(content);
240
- }
241
- else if (isCodex) {
242
- content = (0, index_js_1.convertClaudeToCodexMarkdown)(content);
243
- }
190
+ content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(explicitConfigDir));
244
191
  fs.writeFileSync(path.join(agentsDest, entry.name), content);
245
192
  }
246
193
  }
@@ -252,15 +199,20 @@ async function install(isGlobal, runtime = 'claude') {
252
199
  failures.push('agents');
253
200
  }
254
201
  }
255
- // Copy skills to agents/skills/ directory
202
+ // Remove legacy agents/skills/ directory (skills moved to skills/ in v1.x)
203
+ const legacySkillsDir = path.join(targetDir, 'agents', 'skills');
204
+ if (fs.existsSync(legacySkillsDir)) {
205
+ fs.rmSync(legacySkillsDir, { recursive: true });
206
+ console.log(` ${chalk_1.default.green('\u2713')} Removed legacy agents/skills/ directory`);
207
+ }
208
+ // Copy skills to skills/ directory
256
209
  const skillsSrc = path.join(src, 'skills');
257
210
  if (fs.existsSync(skillsSrc)) {
258
211
  spinner = (0, ora_1.default)({ text: 'Installing skills...', color: 'cyan' }).start();
259
- const skillsDest = path.join(targetDir, 'agents', 'skills');
212
+ const skillsDest = path.join(targetDir, 'skills');
260
213
  // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)
261
214
  if (fs.existsSync(skillsDest)) {
262
- const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion'];
263
- for (const skill of builtInSkills) {
215
+ for (const skill of shared_js_1.builtInSkills) {
264
216
  const skillDir = path.join(skillsDest, skill);
265
217
  if (fs.existsSync(skillDir)) {
266
218
  fs.rmSync(skillDir, { recursive: true });
@@ -278,7 +230,7 @@ async function install(isGlobal, runtime = 'claude') {
278
230
  let content = fs.readFileSync(skillMd, 'utf8');
279
231
  const dirRegex = /~\/\.claude\//g;
280
232
  content = content.replace(dirRegex, pathPrefix);
281
- content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(runtime, explicitConfigDir));
233
+ content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(explicitConfigDir));
282
234
  fs.writeFileSync(skillMd, content);
283
235
  }
284
236
  }
@@ -286,11 +238,11 @@ async function install(isGlobal, runtime = 'claude') {
286
238
  const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })
287
239
  .filter(e => e.isDirectory()).length;
288
240
  if (installedSkillDirs > 0) {
289
- spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillDirs} skills to agents/skills/`);
241
+ spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillDirs} skills to skills/`);
290
242
  }
291
243
  else {
292
244
  spinner.fail('Failed to install skills');
293
- failures.push('agents/skills');
245
+ failures.push('skills');
294
246
  }
295
247
  }
296
248
  // Copy CHANGELOG.md
@@ -330,38 +282,36 @@ async function install(isGlobal, runtime = 'claude') {
330
282
  else {
331
283
  failures.push('VERSION');
332
284
  }
333
- if (!isCodex) {
334
- // Write package.json to force CommonJS mode for MAXSIM scripts
335
- const pkgJsonDest = path.join(targetDir, 'package.json');
336
- fs.writeFileSync(pkgJsonDest, '{"type":"commonjs"}\n');
337
- console.log(` ${chalk_1.default.green('\u2713')} Wrote package.json (CommonJS mode)`);
338
- // Install maxsim-tools.cjs binary
339
- const toolSrc = path.resolve(__dirname, 'cli.cjs');
340
- const binDir = path.join(targetDir, 'maxsim', 'bin');
341
- const toolDest = path.join(binDir, 'maxsim-tools.cjs');
342
- if (fs.existsSync(toolSrc)) {
343
- fs.mkdirSync(binDir, { recursive: true });
344
- fs.copyFileSync(toolSrc, toolDest);
345
- console.log(` ${chalk_1.default.green('\u2713')} Installed maxsim-tools.cjs`);
346
- }
347
- else {
348
- console.warn(` ${chalk_1.default.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);
349
- failures.push('maxsim-tools.cjs');
350
- }
351
- // Install mcp-server.cjs
352
- const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');
353
- const mcpDest = path.join(binDir, 'mcp-server.cjs');
354
- if (fs.existsSync(mcpSrc)) {
355
- fs.mkdirSync(binDir, { recursive: true });
356
- fs.copyFileSync(mcpSrc, mcpDest);
357
- console.log(` ${chalk_1.default.green('\u2713')} Installed mcp-server.cjs`);
358
- }
359
- else {
360
- console.warn(` ${chalk_1.default.yellow('!')} mcp-server.cjs not found — MCP server not installed`);
361
- }
362
- // Install hooks
363
- (0, hooks_js_1.installHookFiles)(targetDir, runtime, isGlobal, failures);
285
+ // Write package.json to force CommonJS mode for MAXSIM scripts
286
+ const pkgJsonDest = path.join(targetDir, 'package.json');
287
+ fs.writeFileSync(pkgJsonDest, '{"type":"commonjs"}\n');
288
+ console.log(` ${chalk_1.default.green('\u2713')} Wrote package.json (CommonJS mode)`);
289
+ // Install maxsim-tools.cjs binary
290
+ const toolSrc = path.resolve(__dirname, 'cli.cjs');
291
+ const binDir = path.join(targetDir, 'maxsim', 'bin');
292
+ const toolDest = path.join(binDir, 'maxsim-tools.cjs');
293
+ if (fs.existsSync(toolSrc)) {
294
+ fs.mkdirSync(binDir, { recursive: true });
295
+ fs.copyFileSync(toolSrc, toolDest);
296
+ console.log(` ${chalk_1.default.green('\u2713')} Installed maxsim-tools.cjs`);
297
+ }
298
+ else {
299
+ console.warn(` ${chalk_1.default.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);
300
+ failures.push('maxsim-tools.cjs');
301
+ }
302
+ // Install mcp-server.cjs
303
+ const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');
304
+ const mcpDest = path.join(binDir, 'mcp-server.cjs');
305
+ if (fs.existsSync(mcpSrc)) {
306
+ fs.mkdirSync(binDir, { recursive: true });
307
+ fs.copyFileSync(mcpSrc, mcpDest);
308
+ console.log(` ${chalk_1.default.green('\u2713')} Installed mcp-server.cjs`);
309
+ }
310
+ else {
311
+ console.warn(` ${chalk_1.default.yellow('!')} mcp-server.cjs not found — MCP server not installed`);
364
312
  }
313
+ // Install hooks
314
+ (0, hooks_js_1.installHookFiles)(targetDir, isGlobal, failures);
365
315
  // Copy dashboard
366
316
  const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');
367
317
  if (fs.existsSync(dashboardSrc)) {
@@ -393,19 +343,37 @@ async function install(isGlobal, runtime = 'claude') {
393
343
  }
394
344
  }
395
345
  // Write .mcp.json for Claude Code MCP server auto-discovery
396
- if (!isOpencode && !isCodex && !isGemini) {
397
- const mcpJsonPath = isGlobal
398
- ? path.join(targetDir, '..', '.mcp.json')
399
- : path.join(process.cwd(), '.mcp.json');
400
- let mcpConfig = {};
401
- if (fs.existsSync(mcpJsonPath)) {
346
+ const mcpJsonPath = isGlobal
347
+ ? path.join(targetDir, '..', '.mcp.json')
348
+ : path.join(process.cwd(), '.mcp.json');
349
+ let mcpConfig = {};
350
+ let skipMcpConfig = false;
351
+ if (fs.existsSync(mcpJsonPath)) {
352
+ // Back up existing .mcp.json before modification
353
+ fs.copyFileSync(mcpJsonPath, mcpJsonPath + '.bak');
354
+ try {
355
+ mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
356
+ }
357
+ catch {
358
+ // Corrupted .mcp.json — warn user
359
+ console.warn(` ${chalk_1.default.yellow('!')} .mcp.json is corrupted (invalid JSON). Backup saved to .mcp.json.bak`);
360
+ let startFresh = true;
402
361
  try {
403
- mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
362
+ startFresh = await (0, prompts_1.confirm)({
363
+ message: '.mcp.json is corrupted. Start with a fresh config? (No = abort MCP setup)',
364
+ default: true,
365
+ });
404
366
  }
405
367
  catch {
406
- // Corrupted file start fresh
368
+ // Non-interactivedefault to starting fresh
369
+ }
370
+ if (!startFresh) {
371
+ console.log(` ${chalk_1.default.yellow('!')} Skipping .mcp.json configuration`);
372
+ skipMcpConfig = true;
407
373
  }
408
374
  }
375
+ }
376
+ if (!skipMcpConfig) {
409
377
  const mcpServers = mcpConfig.mcpServers ?? {};
410
378
  mcpServers['maxsim'] = {
411
379
  command: 'node',
@@ -421,70 +389,32 @@ async function install(isGlobal, runtime = 'claude') {
421
389
  process.exit(1);
422
390
  }
423
391
  // Write file manifest for future modification detection
424
- (0, manifest_js_1.writeManifest)(targetDir, runtime);
392
+ (0, manifest_js_1.writeManifest)(targetDir);
425
393
  console.log(` ${chalk_1.default.green('\u2713')} Wrote file manifest (${manifest_js_1.MANIFEST_NAME})`);
426
394
  // Report any backed-up local patches
427
- (0, patches_js_1.reportLocalPatches)(targetDir, runtime);
428
- if (isCodex) {
429
- return {
430
- settingsPath: null,
431
- settings: null,
432
- statuslineCommand: null,
433
- runtime,
434
- };
435
- }
395
+ (0, patches_js_1.reportLocalPatches)(targetDir);
436
396
  // Configure statusline and hooks in settings.json
437
- const { settingsPath, settings, statuslineCommand } = (0, hooks_js_1.configureSettingsHooks)(targetDir, runtime, isGlobal);
438
- // Enable experimental agents for Gemini CLI
439
- if (isGemini) {
440
- if (!settings.experimental) {
441
- settings.experimental = {};
442
- }
443
- const experimental = settings.experimental;
444
- if (!experimental.enableAgents) {
445
- experimental.enableAgents = true;
446
- console.log(` ${chalk_1.default.green('\u2713')} Enabled experimental agents`);
447
- }
448
- }
397
+ const { settingsPath, settings, statuslineCommand } = (0, hooks_js_1.configureSettingsHooks)(targetDir, isGlobal);
449
398
  return { settingsPath, settings, statuslineCommand, runtime };
450
399
  }
451
- /**
452
- * Prompt for runtime selection (multi-select)
453
- */
454
- async function promptRuntime() {
455
- const selected = await (0, prompts_1.checkbox)({
456
- message: 'Which runtime(s) would you like to install for?',
457
- choices: [
458
- { name: 'Claude Code ' + chalk_1.default.dim('(~/.claude)'), value: 'claude', checked: true },
459
- { name: 'OpenCode ' + chalk_1.default.dim('(~/.config/opencode)') + ' — open source, free models', value: 'opencode' },
460
- { name: 'Gemini ' + chalk_1.default.dim('(~/.gemini)'), value: 'gemini' },
461
- { name: 'Codex ' + chalk_1.default.dim('(~/.codex)'), value: 'codex' },
462
- ],
463
- validate: (choices) => choices.length > 0 || 'Please select at least one runtime',
464
- });
465
- return selected;
466
- }
467
400
  /**
468
401
  * Prompt for install location
469
402
  */
470
- async function promptLocation(runtimes) {
403
+ async function promptLocation() {
471
404
  if (!process.stdin.isTTY) {
472
405
  console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to global install') + '\n');
473
406
  return true; // isGlobal
474
407
  }
475
- const pathExamples = runtimes
476
- .map((r) => (0, shared_js_1.getGlobalDir)(r, explicitConfigDir).replace(os.homedir(), '~'))
477
- .join(', ');
478
- const localExamples = runtimes.map((r) => `./${(0, shared_js_1.getDirName)(r)}`).join(', ');
408
+ const globalPath = (0, shared_js_1.getGlobalDir)(explicitConfigDir).replace(os.homedir(), '~');
479
409
  const choice = await (0, prompts_1.select)({
480
410
  message: 'Where would you like to install?',
481
411
  choices: [
482
412
  {
483
- name: 'Global ' + chalk_1.default.dim(`(${pathExamples})`) + ' — available in all projects',
413
+ name: 'Global ' + chalk_1.default.dim(`(${globalPath})`) + ' — available in all projects',
484
414
  value: 'global',
485
415
  },
486
416
  {
487
- name: 'Local ' + chalk_1.default.dim(`(${localExamples})`) + ' — this project only',
417
+ name: 'Local ' + chalk_1.default.dim('(./.claude)') + ' — this project only',
488
418
  value: 'local',
489
419
  },
490
420
  ],
@@ -492,7 +422,7 @@ async function promptLocation(runtimes) {
492
422
  return choice === 'global';
493
423
  }
494
424
  /**
495
- * Prompt whether to enable Agent Teams (Claude only, experimental feature)
425
+ * Prompt whether to enable Agent Teams (experimental feature)
496
426
  */
497
427
  async function promptAgentTeams() {
498
428
  console.log();
@@ -506,35 +436,26 @@ async function promptAgentTeams() {
506
436
  });
507
437
  }
508
438
  /**
509
- * Install MAXSIM for all selected runtimes
439
+ * Install MAXSIM for Claude Code
510
440
  */
511
- async function installAllRuntimes(runtimes, isGlobal, isInteractive) {
512
- const results = [];
513
- for (const runtime of runtimes) {
514
- const result = await install(isGlobal, runtime);
515
- results.push(result);
516
- }
517
- const statuslineRuntimes = ['claude', 'gemini'];
518
- const primaryStatuslineResult = results.find((r) => statuslineRuntimes.includes(r.runtime));
441
+ async function installForClaude(isGlobal, isInteractive) {
442
+ const result = await install(isGlobal);
519
443
  let shouldInstallStatusline = false;
520
- if (primaryStatuslineResult && primaryStatuslineResult.settings) {
521
- shouldInstallStatusline = await (0, hooks_js_1.handleStatusline)(primaryStatuslineResult.settings, isInteractive, forceStatusline);
444
+ if (result.settings) {
445
+ shouldInstallStatusline = await (0, hooks_js_1.handleStatusline)(result.settings, isInteractive, forceStatusline);
522
446
  }
523
- // Prompt for Agent Teams if Claude is in the selected runtimes
447
+ // Prompt for Agent Teams
524
448
  let enableAgentTeams = false;
525
- if (isInteractive && runtimes.includes('claude')) {
449
+ if (isInteractive) {
526
450
  enableAgentTeams = await promptAgentTeams();
527
451
  }
528
- for (const result of results) {
529
- const useStatusline = statuslineRuntimes.includes(result.runtime) && shouldInstallStatusline;
530
- // Apply Agent Teams setting for Claude
531
- if (result.runtime === 'claude' && enableAgentTeams && result.settings) {
532
- const env = result.settings.env ?? {};
533
- env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';
534
- result.settings.env = env;
535
- }
536
- (0, hooks_js_1.finishInstall)(result.settingsPath, result.settings, result.statuslineCommand, useStatusline, result.runtime, isGlobal);
452
+ // Apply Agent Teams setting
453
+ if (enableAgentTeams && result.settings) {
454
+ const env = result.settings.env ?? {};
455
+ env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';
456
+ result.settings.env = env;
537
457
  }
458
+ (0, hooks_js_1.finishInstall)(result.settingsPath, result.settings, result.statuslineCommand, shouldInstallStatusline, isGlobal);
538
459
  }
539
460
  // Main logic
540
461
  // Subcommand routing — intercept before install flow
@@ -545,6 +466,35 @@ const subcommand = argv._[0];
545
466
  await (0, dashboard_js_1.runDashboardSubcommand)(argv);
546
467
  return;
547
468
  }
469
+ // Skill management subcommands
470
+ if (subcommand === 'skill-list' || subcommand === 'skill-install' || subcommand === 'skill-update') {
471
+ const { cmdSkillList, cmdSkillInstall, cmdSkillUpdate } = await import('../core/skills.js');
472
+ const { CliOutput, writeOutput, CliError } = await import('../core/core.js');
473
+ const cwd = process.cwd();
474
+ try {
475
+ if (subcommand === 'skill-list') {
476
+ cmdSkillList(cwd, false);
477
+ }
478
+ else if (subcommand === 'skill-install') {
479
+ cmdSkillInstall(cwd, argv._[1], false);
480
+ }
481
+ else if (subcommand === 'skill-update') {
482
+ cmdSkillUpdate(cwd, argv._[1], false);
483
+ }
484
+ }
485
+ catch (thrown) {
486
+ if (thrown instanceof CliOutput) {
487
+ writeOutput(thrown);
488
+ process.exit(0);
489
+ }
490
+ if (thrown instanceof CliError) {
491
+ console.error('Error: ' + thrown.message);
492
+ process.exit(1);
493
+ }
494
+ throw thrown;
495
+ }
496
+ return;
497
+ }
548
498
  if (hasGlobal && hasLocal) {
549
499
  console.error(chalk_1.default.yellow('Cannot specify both --global and --local'));
550
500
  process.exit(1);
@@ -558,32 +508,19 @@ const subcommand = argv._[0];
558
508
  console.error(chalk_1.default.yellow('--uninstall requires --global or --local'));
559
509
  process.exit(1);
560
510
  }
561
- const runtimes = selectedRuntimes.length > 0 ? selectedRuntimes : ['claude'];
562
- for (const runtime of runtimes) {
563
- (0, uninstall_js_1.uninstall)(hasGlobal, runtime, explicitConfigDir);
564
- }
565
- }
566
- else if (selectedRuntimes.length > 0) {
567
- if (!hasGlobal && !hasLocal) {
568
- const isGlobal = await promptLocation(selectedRuntimes);
569
- await installAllRuntimes(selectedRuntimes, isGlobal, true);
570
- }
571
- else {
572
- await installAllRuntimes(selectedRuntimes, hasGlobal, false);
573
- }
511
+ (0, uninstall_js_1.uninstall)(hasGlobal, explicitConfigDir);
574
512
  }
575
513
  else if (hasGlobal || hasLocal) {
576
- await installAllRuntimes(['claude'], hasGlobal, false);
514
+ await installForClaude(hasGlobal, false);
577
515
  }
578
516
  else {
579
517
  if (!process.stdin.isTTY) {
580
- console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to Claude Code global install') + '\n');
581
- await installAllRuntimes(['claude'], true, false);
518
+ console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to global install') + '\n');
519
+ await installForClaude(true, false);
582
520
  }
583
521
  else {
584
- const runtimes = await promptRuntime();
585
- const isGlobal = await promptLocation(runtimes);
586
- await installAllRuntimes(runtimes, isGlobal, true);
522
+ const isGlobal = await promptLocation();
523
+ await installForClaude(isGlobal, true);
587
524
  }
588
525
  }
589
526
  })().catch((err) => {