analyzthis_design 2.2.0 → 2.3.1

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.
@@ -17,6 +17,24 @@ const PACKAGE_ROOT = resolvePackageRoot(__dirname);
17
17
  const PACKAGE_SKILLS_DIR = path.join(PACKAGE_ROOT, 'skills');
18
18
  const WELCOME_MARKER = path.join(os.homedir(), '.analyzthis_design', '.welcome-shown');
19
19
 
20
+ // Slash items written into the current project so /noor shows in the menu.
21
+ const PROJECT_COMMANDS = [
22
+ 'noor',
23
+ 'anuj',
24
+ 'arjun',
25
+ 'meera',
26
+ 'priya',
27
+ 'zara',
28
+ 'raj',
29
+ 'kavi',
30
+ 'ux-ideator',
31
+ 'design-director',
32
+ 'persona-orchestrator',
33
+ 'design-critic',
34
+ 'getting-started',
35
+ 'devi',
36
+ ];
37
+
20
38
  const SKILLS = [
21
39
  'getting-started',
22
40
  'arjun',
@@ -88,6 +106,13 @@ function printWelcomeBanner(targetId, log = console.log) {
88
106
  log(` ${gs} ← read this first`);
89
107
  }
90
108
 
109
+ log('');
110
+ log(' Independent personas — type the name (even if the menu only shows Getting Started):');
111
+ log(` ${p}noor ${p}anuj ${p}arjun ${p}meera ${p}priya ${p}zara ${p}raj ${p}kavi`);
112
+ if (targetId === 'claude') {
113
+ log(' Claude may only list Getting Started. Type /noor anyway.');
114
+ }
115
+
91
116
  log('');
92
117
  log(' Design — wireframes (new screens):');
93
118
  log(` ${p}ux-ideator two competing text wireframes + deliberation`);
@@ -180,6 +205,29 @@ function installMissing(skill, destinations, force) {
180
205
  return status;
181
206
  }
182
207
 
208
+ function installProjectCommands({ force = false, log = console.log } = {}) {
209
+ const cwd = process.cwd();
210
+ const roots = [
211
+ path.join(cwd, '.claude', 'commands'),
212
+ path.join(cwd, '.cursor', 'commands'),
213
+ ];
214
+ const installed = [];
215
+ const skipped = [];
216
+ for (const root of roots) {
217
+ for (const skill of PROJECT_COMMANDS) {
218
+ const result = installFlat(skill, root, force);
219
+ if (result === 'installed') installed.push(`${path.relative(cwd, root)}/${skill}.md`);
220
+ else if (result === 'skipped') skipped.push(skill);
221
+ }
222
+ }
223
+ if (installed.length > 0) {
224
+ log(`\n✅ Project slash commands → ${path.join(cwd, '.claude/commands')} and .cursor/commands`);
225
+ log(' Type /noor /arjun /ux-ideator in this repo. Restart the IDE if the menu is stale.');
226
+ } else if (skipped.length > 0) {
227
+ log(`\n⏭ Project slash commands already present (use --force to overwrite).`);
228
+ }
229
+ }
230
+
183
231
  function install({ silent = false, force = false, target = 'cursor', showBanner = true } = {}) {
184
232
  const log = silent ? () => {} : console.log;
185
233
  const warn = silent ? () => {} : console.warn;
@@ -227,7 +275,20 @@ function install({ silent = false, force = false, target = 'cursor', showBanner
227
275
  if (showBanner && !silent && (installed.length > 0 || skipped.length > 0)) {
228
276
  printWelcomeBanner(tId, log);
229
277
  }
278
+
279
+ // Auto-configure MCP server for supported hosts.
280
+ if (tId === 'cursor' || tId === 'claude' || tId === 'windsurf') {
281
+ try {
282
+ const mcpServer = require('./mcp-server');
283
+ mcpServer.writeMcpConfig(tId);
284
+ log(' MCP server configured. Restart ' + t.label + ' to activate.\n');
285
+ } catch (e) {
286
+ // MCP config is best-effort — don't fail install if it doesn't work.
287
+ }
288
+ }
230
289
  }
290
+
291
+ installProjectCommands({ force, log });
231
292
  }
232
293
 
233
294
  function remove({ silent = false, target = 'cursor' } = {}) {
@@ -276,6 +337,7 @@ module.exports = {
276
337
  install,
277
338
  remove,
278
339
  SKILLS,
340
+ PROJECT_COMMANDS,
279
341
  TARGET_DIRS,
280
342
  TARGETS,
281
343
  ALL_TARGET_IDS,