@uniswap/ai-toolkit-nx-claude 0.5.30-next.1 → 0.5.30-next.3

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 (31) hide show
  1. package/README.md +28 -27
  2. package/dist/cli-generator.cjs +4 -10
  3. package/dist/generators/addons/CLAUDE.md +91 -91
  4. package/dist/generators/addons/generator.cjs +13 -338
  5. package/dist/generators/addons/schema.json +1 -32
  6. package/dist/index.cjs +25 -1180
  7. package/dist/packages/ai-toolkit-nx-claude/src/cli-generator.d.ts +1 -2
  8. package/dist/packages/ai-toolkit-nx-claude/src/cli-generator.d.ts.map +1 -1
  9. package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/addon-registry.d.ts.map +1 -1
  10. package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.d.ts.map +1 -1
  11. package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/generator.d.ts.map +1 -1
  12. package/dist/packages/ai-toolkit-nx-claude/src/index.d.ts +0 -1
  13. package/dist/packages/ai-toolkit-nx-claude/src/index.d.ts.map +1 -1
  14. package/generators.json +0 -5
  15. package/package.json +2 -3
  16. package/dist/generators/hooks/CLAUDE.md +0 -378
  17. package/dist/generators/hooks/README.md +0 -220
  18. package/dist/generators/hooks/generator.cjs +0 -1265
  19. package/dist/generators/hooks/schema.json +0 -41
  20. package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts +0 -52
  21. package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts.map +0 -1
  22. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/cli-parser.d.ts +0 -2
  23. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/cli-parser.d.ts.map +0 -1
  24. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/dependency-checker.d.ts +0 -46
  25. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/dependency-checker.d.ts.map +0 -1
  26. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/generator.d.ts +0 -9
  27. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/generator.d.ts.map +0 -1
  28. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/install-orchestrator.d.ts +0 -55
  29. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/install-orchestrator.d.ts.map +0 -1
  30. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/repo-manager.d.ts +0 -63
  31. package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/repo-manager.d.ts.map +0 -1
@@ -131,10 +131,10 @@ async function validateAddonRequirements(addonId) {
131
131
  }
132
132
  }
133
133
  if (addon.requirements?.commands) {
134
- const { execSync: execSync4 } = require("child_process");
134
+ const { execSync: execSync3 } = require("child_process");
135
135
  for (const cmd of addon.requirements.commands) {
136
136
  try {
137
- execSync4(`which ${cmd}`, { stdio: "ignore" });
137
+ execSync3(`which ${cmd}`, { stdio: "ignore" });
138
138
  } catch {
139
139
  errors.push(`Required command '${cmd}' not found`);
140
140
  }
@@ -153,53 +153,6 @@ var init_addon_registry = __esm({
153
153
  import_path = require("path");
154
154
  import_os = require("os");
155
155
  ADDON_REGISTRY = [
156
- {
157
- id: "spec-workflow-mcp",
158
- name: "Spec Workflow MCP",
159
- description: "MCP server for spec-driven development workflow with dashboard support",
160
- type: "mcp-server",
161
- packageName: "@uniswap/spec-workflow-mcp",
162
- mcp: {
163
- serverName: "spec-workflow",
164
- command: "npx",
165
- args: ["@uniswap/spec-workflow-mcp@latest"],
166
- supportsDashboard: true,
167
- defaultPort: 50014
168
- },
169
- projectSetup: {
170
- repositoryUrl: "https://github.com/Uniswap/spec-workflow-mcp.git",
171
- configSourcePath: "configs",
172
- targetDirectory: ".spec-workflow"
173
- },
174
- requirements: {
175
- node: ">=22.0.0",
176
- commands: ["git", "npm"]
177
- }
178
- },
179
- {
180
- id: "graphite-mcp",
181
- name: "Graphite MCP",
182
- description: "MCP server for Graphite stacked pull request workflows",
183
- type: "mcp-server",
184
- packageName: "gt",
185
- mcp: {
186
- serverName: "graphite",
187
- command: "gt",
188
- args: ["mcp"]
189
- }
190
- },
191
- {
192
- id: "nx-mcp",
193
- name: "Nx MCP",
194
- description: "MCP server for Nx monorepo workspace management",
195
- type: "mcp-server",
196
- packageName: "nx-mcp",
197
- mcp: {
198
- serverName: "nx-mcp",
199
- command: "npx",
200
- args: ["-y", "nx-mcp@latest"]
201
- }
202
- },
203
156
  {
204
157
  id: "slack-mcp",
205
158
  name: "Slack MCP",
@@ -216,30 +169,6 @@ var init_addon_registry = __esm({
216
169
  }
217
170
  }
218
171
  },
219
- {
220
- id: "notion-mcp",
221
- name: "Notion MCP",
222
- description: "MCP server for Notion workspace management (HTTP)",
223
- type: "mcp-server",
224
- packageName: "notion",
225
- mcp: {
226
- serverName: "notion",
227
- transport: "http",
228
- url: "https://mcp.notion.com/mcp"
229
- }
230
- },
231
- {
232
- id: "linear-mcp",
233
- name: "Linear MCP",
234
- description: "MCP server for Linear issue tracking (HTTP)",
235
- type: "mcp-server",
236
- packageName: "linear",
237
- mcp: {
238
- serverName: "linear",
239
- transport: "http",
240
- url: "https://mcp.linear.app/mcp"
241
- }
242
- },
243
172
  {
244
173
  id: "github-mcp",
245
174
  name: "GitHub MCP",
@@ -267,19 +196,6 @@ var init_addon_registry = __esm({
267
196
  url: "https://mcp.figma.com/mcp"
268
197
  }
269
198
  },
270
- {
271
- id: "chrome-devtools-mcp",
272
- name: "Chrome DevTools MCP",
273
- description: "MCP server for Chrome DevTools Protocol",
274
- type: "mcp-server",
275
- packageName: "chrome-devtools-mcp",
276
- mcp: {
277
- serverName: "chrome-devtools",
278
- command: "npx",
279
- args: ["chrome-devtools-mcp@latest"],
280
- env: {}
281
- }
282
- },
283
199
  {
284
200
  id: "vercel-mcp",
285
201
  name: "Vercel MCP",
@@ -350,7 +266,7 @@ var require_schema = __commonJS({
350
266
  items: [
351
267
  {
352
268
  value: "all",
353
- label: "All recommended MCP servers (12 servers)"
269
+ label: "All recommended MCP servers (6 servers)"
354
270
  },
355
271
  {
356
272
  value: "specific",
@@ -365,18 +281,10 @@ var require_schema = __commonJS({
365
281
  items: {
366
282
  type: "string",
367
283
  enum: [
368
- "spec-workflow-mcp",
369
- "graphite-mcp",
370
- "nx-mcp",
371
284
  "slack-mcp",
372
- "universe-mcp",
373
- "linear-mcp",
374
- "notion-mcp",
375
285
  "github-mcp",
376
286
  "figma-mcp",
377
- "chrome-devtools-mcp",
378
287
  "vercel-mcp",
379
- "supabase-mcp",
380
288
  "aws-log-analyzer-mcp",
381
289
  "pulumi-mcp"
382
290
  ]
@@ -385,24 +293,6 @@ var require_schema = __commonJS({
385
293
  "prompt-type": "multiselect",
386
294
  "prompt-message": "\u{1F50C} Select MCP servers to install"
387
295
  },
388
- dashboardMode: {
389
- type: "string",
390
- description: "Dashboard startup mode",
391
- enum: ["always", "manual"],
392
- default: "always",
393
- "prompt-message": "\u{1F4CA} When should the spec-workflow dashboard start?",
394
- "prompt-type": "select",
395
- "prompt-items": [
396
- { value: "always", label: "Always (auto-start on Claude launch)" },
397
- { value: "manual", label: "Manual (start via command only)" }
398
- ]
399
- },
400
- port: {
401
- type: "number",
402
- description: "Dashboard port (default: auto)",
403
- default: 0,
404
- "prompt-message": "\u{1F50C} Dashboard port (0 for auto)"
405
- },
406
296
  force: {
407
297
  type: "boolean",
408
298
  description: "Force installation even if already exists",
@@ -413,11 +303,6 @@ var require_schema = __commonJS({
413
303
  description: "Skip installation verification",
414
304
  default: false
415
305
  },
416
- projectPath: {
417
- type: "string",
418
- description: "Path to the project where spec-workflow should be installed",
419
- "x-skip-prompt": true
420
- },
421
306
  dry: {
422
307
  type: "boolean",
423
308
  description: "Dry run mode",
@@ -966,91 +851,11 @@ async function installMcpServer(options) {
966
851
  };
967
852
  }
968
853
 
969
- // packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.ts
854
+ // packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.ts
970
855
  var import_child_process2 = require("child_process");
971
856
  var import_fs2 = require("fs");
972
857
  var import_path2 = require("path");
973
858
  var import_os2 = require("os");
974
- var import_fs3 = require("fs");
975
- async function setupSpecWorkflow(projectPath, options) {
976
- const targetPath = projectPath || process.cwd();
977
- const targetDir = (0, import_path2.join)(targetPath, ".spec-workflow");
978
- console.log(`
979
- \u{1F4C1} Setting up spec-workflow in: ${targetPath}`);
980
- const isUpdate = (0, import_fs2.existsSync)(targetDir);
981
- if (options.dryRun) {
982
- console.log("[DRY-RUN] Would create/update directory: " + targetDir);
983
- console.log("[DRY-RUN] Would clone repository: @uniswap/spec-workflow-mcp");
984
- console.log("[DRY-RUN] Would copy/update configuration files");
985
- console.log("[DRY-RUN] Would add .spec-workflow/ to .gitignore");
986
- return {
987
- success: true,
988
- message: "[DRY-RUN] Spec-workflow setup simulated successfully",
989
- projectPath: targetPath
990
- };
991
- }
992
- if (isUpdate) {
993
- if (!options.force) {
994
- const { confirm } = await require("enquirer").prompt({
995
- type: "confirm",
996
- name: "confirm",
997
- message: `.spec-workflow directory already exists. Update configuration files from repository?`,
998
- initial: true
999
- });
1000
- if (!confirm) {
1001
- return {
1002
- success: false,
1003
- message: "Installation cancelled by user",
1004
- projectPath: targetPath
1005
- };
1006
- }
1007
- }
1008
- console.log(
1009
- "\u{1F4DD} Updating configuration files in existing .spec-workflow directory..."
1010
- );
1011
- } else {
1012
- console.log("\u{1F4C1} Creating .spec-workflow directory...");
1013
- (0, import_fs2.mkdirSync)(targetDir, { recursive: true });
1014
- }
1015
- const tempDir = (0, import_path2.join)((0, import_os2.tmpdir)(), `spec-workflow-${Date.now()}`);
1016
- console.log("\u{1F504} Cloning spec-workflow repository...");
1017
- const cloneResult = await cloneRepository(
1018
- "https://github.com/Uniswap/spec-workflow-mcp.git",
1019
- tempDir
1020
- );
1021
- if (!cloneResult.success) {
1022
- return {
1023
- success: false,
1024
- message: cloneResult.error || "Failed to clone repository",
1025
- projectPath: targetPath
1026
- };
1027
- }
1028
- console.log("\u{1F4CB} Copying configuration files...");
1029
- const configSourcePath = (0, import_path2.join)(tempDir, "configs");
1030
- const copyResult = await copyConfigFiles(configSourcePath, targetDir);
1031
- console.log("\u{1F9F9} Cleaning up temporary files...");
1032
- (0, import_fs2.rmSync)(tempDir, { recursive: true, force: true });
1033
- if (!copyResult.success) {
1034
- return {
1035
- success: false,
1036
- message: copyResult.error || "Failed to copy configuration files",
1037
- projectPath: targetPath
1038
- };
1039
- }
1040
- console.log("\u{1F4DD} Updating .gitignore...");
1041
- const gitignoreResult = await updateGitignore(targetPath, ".spec-workflow/");
1042
- if (!gitignoreResult.success) {
1043
- console.warn("\u26A0\uFE0F Warning:", gitignoreResult.message);
1044
- } else {
1045
- console.log("\u2705", gitignoreResult.message);
1046
- }
1047
- return {
1048
- success: true,
1049
- message: isUpdate ? "The spec-workflow configuration has been updated with the latest templates and settings" : "The spec-workflow package has been added to the project with automatic agent orchestration enabled",
1050
- projectPath: targetPath,
1051
- createdFiles: copyResult.copiedFiles
1052
- };
1053
- }
1054
859
  async function cloneRepository(repositoryUrl, targetDir) {
1055
860
  try {
1056
861
  if (!(0, import_fs2.existsSync)(targetDir)) {
@@ -1093,97 +898,12 @@ async function cloneRepository(repositoryUrl, targetDir) {
1093
898
  };
1094
899
  }
1095
900
  }
1096
- async function updateGitignore(projectPath, pattern) {
1097
- const gitignorePath = (0, import_path2.join)(projectPath, ".gitignore");
1098
- try {
1099
- let gitignoreContent = "";
1100
- if ((0, import_fs2.existsSync)(gitignorePath)) {
1101
- gitignoreContent = (0, import_fs2.readFileSync)(gitignorePath, "utf8");
1102
- }
1103
- const lines = gitignoreContent.split("\n");
1104
- const patternExists = lines.some((line) => {
1105
- const trimmedLine = line.trim();
1106
- return trimmedLine === pattern || trimmedLine === pattern.replace(/\/$/, "");
1107
- });
1108
- if (patternExists) {
1109
- return {
1110
- success: true,
1111
- message: `.gitignore already contains ${pattern}`
1112
- };
1113
- }
1114
- const updatedContent = gitignoreContent.trim() === "" ? pattern : `${gitignoreContent.trim()}
1115
-
1116
- # Spec workflow configuration
1117
- ${pattern}`;
1118
- (0, import_fs2.writeFileSync)(gitignorePath, updatedContent + "\n", "utf8");
1119
- return {
1120
- success: true,
1121
- message: `Added ${pattern} to .gitignore`
1122
- };
1123
- } catch (error) {
1124
- console.error("\u274C Failed to update .gitignore:", error.message);
1125
- return {
1126
- success: false,
1127
- message: `Failed to update .gitignore: ${error.message}`
1128
- };
1129
- }
1130
- }
1131
- async function copyConfigFiles(sourceDir, targetDir) {
1132
- try {
1133
- let listFiles2 = function(dir, baseDir = dir, sourceBase = sourceDir) {
1134
- const files = fs2.readdirSync(dir);
1135
- for (const file of files) {
1136
- const filePath = (0, import_path2.join)(dir, file);
1137
- const stat = fs2.statSync(filePath);
1138
- if (stat.isDirectory()) {
1139
- listFiles2(filePath, baseDir, sourceBase);
1140
- } else {
1141
- const relativePath = filePath.replace(baseDir + "/", "");
1142
- const sourceFile = (0, import_path2.join)(sourceBase, relativePath);
1143
- if ((0, import_fs2.existsSync)(sourceFile)) {
1144
- copiedFiles.push(relativePath);
1145
- }
1146
- }
1147
- }
1148
- };
1149
- var listFiles = listFiles2;
1150
- if (!(0, import_fs2.existsSync)(sourceDir)) {
1151
- return {
1152
- success: false,
1153
- message: "Source directory not found",
1154
- error: `The configs directory was not found in the cloned repository`
1155
- };
1156
- }
1157
- (0, import_fs3.cpSync)(sourceDir, targetDir, { recursive: true });
1158
- const fs2 = require("fs");
1159
- const copiedFiles = [];
1160
- listFiles2(targetDir, targetDir, sourceDir);
1161
- return {
1162
- success: true,
1163
- message: "Configuration files copied successfully",
1164
- copiedFiles
1165
- };
1166
- } catch (error) {
1167
- console.error("\u274C File copy failed:", error.message);
1168
- return {
1169
- success: false,
1170
- message: "Failed to copy configuration files",
1171
- error: error.message
1172
- };
1173
- }
1174
- }
1175
-
1176
- // packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.ts
1177
- var import_child_process3 = require("child_process");
1178
- var import_fs4 = require("fs");
1179
- var import_path3 = require("path");
1180
- var import_os3 = require("os");
1181
901
  async function setupAwsLogAnalyzer(options) {
1182
- const targetPath = (0, import_path3.join)((0, import_os3.homedir)(), ".aws-log-analyzer-mcp");
1183
- const serverPath = (0, import_path3.join)(targetPath, "src", "cw-mcp-server");
902
+ const targetPath = (0, import_path2.join)((0, import_os2.homedir)(), ".aws-log-analyzer-mcp");
903
+ const serverPath = (0, import_path2.join)(targetPath, "src", "cw-mcp-server");
1184
904
  console.log(`
1185
905
  \u{1F4C1} Setting up AWS Log Analyzer MCP in: ${targetPath}`);
1186
- const isUpdate = (0, import_fs4.existsSync)(targetPath);
906
+ const isUpdate = (0, import_fs2.existsSync)(targetPath);
1187
907
  if (options.dryRun) {
1188
908
  console.log("[DRY-RUN] Would clone repository to: " + targetPath);
1189
909
  console.log("[DRY-RUN] MCP server would run from: " + serverPath);
@@ -1214,10 +934,10 @@ async function setupAwsLogAnalyzer(options) {
1214
934
  }
1215
935
  }
1216
936
  console.log("\u{1F504} Updating AWS Log Analyzer repository...");
1217
- (0, import_fs4.rmSync)(targetPath, { recursive: true, force: true });
937
+ (0, import_fs2.rmSync)(targetPath, { recursive: true, force: true });
1218
938
  }
1219
939
  console.log("\u{1F4C1} Creating installation directory...");
1220
- (0, import_fs4.mkdirSync)(targetPath, { recursive: true });
940
+ (0, import_fs2.mkdirSync)(targetPath, { recursive: true });
1221
941
  console.log("\u{1F504} Cloning AWS Log Analyzer repository...");
1222
942
  const cloneResult = await cloneRepository(
1223
943
  "https://github.com/awslabs/Log-Analyzer-with-MCP.git",
@@ -1232,7 +952,7 @@ async function setupAwsLogAnalyzer(options) {
1232
952
  }
1233
953
  console.log("\u{1F4E6} Installing Python dependencies with uv...");
1234
954
  try {
1235
- (0, import_child_process3.execSync)("uv sync", {
955
+ (0, import_child_process2.execSync)("uv sync", {
1236
956
  cwd: targetPath,
1237
957
  stdio: "inherit",
1238
958
  encoding: "utf8"
@@ -1251,10 +971,10 @@ async function setupAwsLogAnalyzer(options) {
1251
971
  };
1252
972
  }
1253
973
  function getAwsLogAnalyzerPath() {
1254
- return (0, import_path3.join)((0, import_os3.homedir)(), ".aws-log-analyzer-mcp");
974
+ return (0, import_path2.join)((0, import_os2.homedir)(), ".aws-log-analyzer-mcp");
1255
975
  }
1256
976
  function getAwsLogAnalyzerServerPath() {
1257
- return (0, import_path3.join)(getAwsLogAnalyzerPath(), "src", "cw-mcp-server");
977
+ return (0, import_path2.join)(getAwsLogAnalyzerPath(), "src", "cw-mcp-server");
1258
978
  }
1259
979
 
1260
980
  // packages/ai-toolkit-nx-claude/src/generators/addons/generator.ts
@@ -1282,8 +1002,6 @@ async function generator(tree, schema) {
1282
1002
  selectionMode: schema.selectionMode || "all",
1283
1003
  force: schema.force || false,
1284
1004
  skipVerification: schema.skipVerification || false,
1285
- dashboardMode: schema.dashboardMode || "always",
1286
- port: schema.port || 0,
1287
1005
  dry: schema.dry || false,
1288
1006
  installMode: "default",
1289
1007
  installationType: schema.installationType || "global",
@@ -1349,31 +1067,6 @@ async function installSelectedAddons(tree, options) {
1349
1067
  continue;
1350
1068
  }
1351
1069
  await installMcpAddon(addon, options);
1352
- if (addon.id === "spec-workflow-mcp" && addon.projectSetup && i === selectedAddons.length - 1) {
1353
- const { setupProject } = await require("enquirer").prompt({
1354
- type: "confirm",
1355
- name: "setupProject",
1356
- message: "\u{1F4C1} Would you like to set up spec-workflow configuration for a particular project?",
1357
- initial: true
1358
- });
1359
- if (setupProject) {
1360
- const { projectPath } = await require("enquirer").prompt({
1361
- type: "input",
1362
- name: "projectPath",
1363
- message: "\u{1F4C1} Enter the project path where spec-workflow config should be added:",
1364
- initial: process.cwd(),
1365
- result: (value) => value || process.cwd()
1366
- });
1367
- options.projectPath = projectPath;
1368
- if (options.dryRun) {
1369
- console.log(`
1370
- \u{1F4C1} [DRY-RUN] Would set up project configuration at: ${projectPath}`);
1371
- }
1372
- await installProjectSetup(addon, options);
1373
- } else if (options.dryRun) {
1374
- console.log("\n\u{1F4C1} [DRY-RUN] Skipping project configuration (user chose not to set up)");
1375
- }
1376
- }
1377
1070
  results.push({ addon, success: true });
1378
1071
  } catch (error) {
1379
1072
  console.error(` \u274C Failed: ${error instanceof Error ? error.message : String(error)}`);
@@ -1484,14 +1177,6 @@ async function installMcpAddon(addon, options) {
1484
1177
  console.log("\n\u{1F527} Installing MCP server...");
1485
1178
  }
1486
1179
  const additionalArgs = [];
1487
- if (addon.id === "spec-workflow-mcp") {
1488
- if (options.dashboardMode === "always") {
1489
- additionalArgs.push("--AutoStartDashboard");
1490
- }
1491
- if (options.port && options.port > 0) {
1492
- additionalArgs.push(`--Port=${options.port}`);
1493
- }
1494
- }
1495
1180
  const installResult = await installMcpServer({
1496
1181
  addon,
1497
1182
  additionalArgs,
@@ -1503,16 +1188,6 @@ async function installMcpAddon(addon, options) {
1503
1188
  }
1504
1189
  console.log(`\u2705 ${installResult.message}`);
1505
1190
  }
1506
- async function installProjectSetup(addon, options) {
1507
- console.log("\n\u{1F527} Setting up project configuration...");
1508
- const projectPath = options.projectPath || process.cwd();
1509
- console.log(`\u{1F4CD} Using project directory: ${projectPath}`);
1510
- const result = await setupSpecWorkflow(projectPath, options);
1511
- if (!result.success) {
1512
- throw new Error(result.message);
1513
- }
1514
- console.log(`\u2705 ${result.message}`);
1515
- }
1516
1191
  function showGeneralMcpInstructions(installedAddons) {
1517
1192
  console.log("\n\u{1F4DA} Getting Started with Your MCPs");
1518
1193
  console.log("==================================\n");
@@ -1526,7 +1201,7 @@ function showGeneralMcpInstructions(installedAddons) {
1526
1201
  console.log(" https://linear.app/docs/mcp#claude");
1527
1202
  console.log(" (Most MCPs follow a similar authentication flow)\n");
1528
1203
  const needsAuth = installedAddons.filter(
1529
- (addon) => addon.id === "slack-mcp" || addon.id === "github-mcp" || addon.id === "aws-log-analyzer-mcp" || addon.id === "linear-mcp" || addon.id === "notion-mcp" || addon.id === "supabase-mcp" || addon.id === "pulumi-mcp"
1204
+ (addon) => addon.id === "slack-mcp" || addon.id === "github-mcp" || addon.id === "aws-log-analyzer-mcp" || addon.id === "pulumi-mcp"
1530
1205
  );
1531
1206
  if (needsAuth.length > 0) {
1532
1207
  console.log("\u{1F510} MCPs requiring authentication:");
@@ -16,7 +16,7 @@
16
16
  "items": [
17
17
  {
18
18
  "value": "all",
19
- "label": "All recommended MCP servers (12 servers)"
19
+ "label": "All recommended MCP servers (6 servers)"
20
20
  },
21
21
  {
22
22
  "value": "specific",
@@ -31,18 +31,10 @@
31
31
  "items": {
32
32
  "type": "string",
33
33
  "enum": [
34
- "spec-workflow-mcp",
35
- "graphite-mcp",
36
- "nx-mcp",
37
34
  "slack-mcp",
38
- "universe-mcp",
39
- "linear-mcp",
40
- "notion-mcp",
41
35
  "github-mcp",
42
36
  "figma-mcp",
43
- "chrome-devtools-mcp",
44
37
  "vercel-mcp",
45
- "supabase-mcp",
46
38
  "aws-log-analyzer-mcp",
47
39
  "pulumi-mcp"
48
40
  ]
@@ -51,24 +43,6 @@
51
43
  "prompt-type": "multiselect",
52
44
  "prompt-message": "🔌 Select MCP servers to install"
53
45
  },
54
- "dashboardMode": {
55
- "type": "string",
56
- "description": "Dashboard startup mode",
57
- "enum": ["always", "manual"],
58
- "default": "always",
59
- "prompt-message": "📊 When should the spec-workflow dashboard start?",
60
- "prompt-type": "select",
61
- "prompt-items": [
62
- { "value": "always", "label": "Always (auto-start on Claude launch)" },
63
- { "value": "manual", "label": "Manual (start via command only)" }
64
- ]
65
- },
66
- "port": {
67
- "type": "number",
68
- "description": "Dashboard port (default: auto)",
69
- "default": 0,
70
- "prompt-message": "🔌 Dashboard port (0 for auto)"
71
- },
72
46
  "force": {
73
47
  "type": "boolean",
74
48
  "description": "Force installation even if already exists",
@@ -79,11 +53,6 @@
79
53
  "description": "Skip installation verification",
80
54
  "default": false
81
55
  },
82
- "projectPath": {
83
- "type": "string",
84
- "description": "Path to the project where spec-workflow should be installed",
85
- "x-skip-prompt": true
86
- },
87
56
  "dry": {
88
57
  "type": "boolean",
89
58
  "description": "Dry run mode",