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.
- package/HOW-TO-USE.md +19 -0
- package/README.md +60 -5
- package/agents/cards/raj.md +3 -3
- package/dist/HOW-TO-USE.md +19 -0
- package/dist/README.md +60 -5
- package/dist/agents/cards/raj.md +3 -3
- package/dist/bin/cli.js +27 -1
- package/dist/lib/chunk-planner.js +29 -6
- package/dist/lib/chunk-synthesis.js +59 -2
- package/dist/lib/install.js +62 -0
- package/dist/lib/mcp-server.js +743 -0
- package/dist/lib/orchestrator/run.js +6 -0
- package/dist/lib/system-prompt.js +112 -0
- package/dist/skills/raj/SKILL.md +4 -2
- package/package.json +1 -1
- package/skills/raj/SKILL.md +4 -2
package/dist/lib/install.js
CHANGED
|
@@ -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,
|