claude-cli-advanced-starter-pack 1.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/OVERVIEW.md +597 -0
  3. package/README.md +439 -0
  4. package/bin/gtask.js +282 -0
  5. package/bin/postinstall.js +53 -0
  6. package/package.json +69 -0
  7. package/src/agents/phase-dev-templates.js +1011 -0
  8. package/src/agents/templates.js +668 -0
  9. package/src/analysis/checklist-parser.js +414 -0
  10. package/src/analysis/codebase.js +481 -0
  11. package/src/cli/menu.js +958 -0
  12. package/src/commands/claude-audit.js +1482 -0
  13. package/src/commands/claude-settings.js +2243 -0
  14. package/src/commands/create-agent.js +681 -0
  15. package/src/commands/create-command.js +337 -0
  16. package/src/commands/create-hook.js +262 -0
  17. package/src/commands/create-phase-dev/codebase-analyzer.js +813 -0
  18. package/src/commands/create-phase-dev/documentation-generator.js +352 -0
  19. package/src/commands/create-phase-dev/post-completion.js +404 -0
  20. package/src/commands/create-phase-dev/scale-calculator.js +344 -0
  21. package/src/commands/create-phase-dev/wizard.js +492 -0
  22. package/src/commands/create-phase-dev.js +481 -0
  23. package/src/commands/create-skill.js +313 -0
  24. package/src/commands/create.js +446 -0
  25. package/src/commands/decompose.js +392 -0
  26. package/src/commands/detect-tech-stack.js +768 -0
  27. package/src/commands/explore-mcp/claude-md-updater.js +252 -0
  28. package/src/commands/explore-mcp/mcp-installer.js +346 -0
  29. package/src/commands/explore-mcp/mcp-registry.js +438 -0
  30. package/src/commands/explore-mcp.js +638 -0
  31. package/src/commands/gtask-init.js +641 -0
  32. package/src/commands/help.js +128 -0
  33. package/src/commands/init.js +1890 -0
  34. package/src/commands/install.js +250 -0
  35. package/src/commands/list.js +116 -0
  36. package/src/commands/roadmap.js +750 -0
  37. package/src/commands/setup-wizard.js +482 -0
  38. package/src/commands/setup.js +351 -0
  39. package/src/commands/sync.js +534 -0
  40. package/src/commands/test-run.js +456 -0
  41. package/src/commands/test-setup.js +456 -0
  42. package/src/commands/validate.js +67 -0
  43. package/src/config/tech-stack.defaults.json +182 -0
  44. package/src/config/tech-stack.schema.json +502 -0
  45. package/src/github/client.js +359 -0
  46. package/src/index.js +84 -0
  47. package/src/templates/claude-command.js +244 -0
  48. package/src/templates/issue-body.js +284 -0
  49. package/src/testing/config.js +411 -0
  50. package/src/utils/template-engine.js +398 -0
  51. package/src/utils/validate-templates.js +223 -0
  52. package/src/utils.js +396 -0
  53. package/templates/commands/ccasp-setup.template.md +113 -0
  54. package/templates/commands/context-audit.template.md +97 -0
  55. package/templates/commands/create-task-list.template.md +382 -0
  56. package/templates/commands/deploy-full.template.md +261 -0
  57. package/templates/commands/github-task-start.template.md +99 -0
  58. package/templates/commands/github-update.template.md +69 -0
  59. package/templates/commands/happy-start.template.md +117 -0
  60. package/templates/commands/phase-track.template.md +142 -0
  61. package/templates/commands/tunnel-start.template.md +127 -0
  62. package/templates/commands/tunnel-stop.template.md +106 -0
  63. package/templates/hooks/context-guardian.template.js +173 -0
  64. package/templates/hooks/deployment-orchestrator.template.js +219 -0
  65. package/templates/hooks/github-progress-hook.template.js +197 -0
  66. package/templates/hooks/happy-checkpoint-manager.template.js +222 -0
  67. package/templates/hooks/phase-dev-enforcer.template.js +183 -0
@@ -0,0 +1,438 @@
1
+ /**
2
+ * MCP Registry & Discovery
3
+ *
4
+ * Curated registry of popular MCP servers with smart recommendations
5
+ * based on detected tech stack. No hardcoded project-specific values.
6
+ */
7
+
8
+ /**
9
+ * MCP server registry - organized by category
10
+ * Each entry includes npm package, required env vars, and tech stack relevance
11
+ */
12
+ export const MCP_REGISTRY = {
13
+ // Browser Automation & Testing
14
+ testing: [
15
+ {
16
+ id: 'playwright',
17
+ name: 'Playwright MCP',
18
+ description: 'Official Playwright browser automation - navigate, click, screenshot, form fill',
19
+ npmPackage: '@playwright/mcp@latest',
20
+ category: 'testing',
21
+ requiredEnv: {},
22
+ optionalEnv: {
23
+ PLAYWRIGHT_HEADLESS: { default: 'true', description: 'Run in headless mode' },
24
+ },
25
+ relevantFor: ['react', 'vue', 'angular', 'svelte', 'nextjs', 'nuxt', 'frontend'],
26
+ recommended: true,
27
+ tools: ['browser_navigate', 'browser_click', 'browser_fill', 'browser_screenshot', 'browser_snapshot'],
28
+ },
29
+ {
30
+ id: 'puppeteer',
31
+ name: 'Puppeteer MCP',
32
+ description: 'Chrome/Chromium automation via Puppeteer - lightweight alternative to Playwright',
33
+ npmPackage: '@modelcontextprotocol/server-puppeteer',
34
+ category: 'testing',
35
+ requiredEnv: {},
36
+ optionalEnv: {
37
+ BROWSER_HEADLESS: { default: 'new', description: 'Headless mode (new/true/false)' },
38
+ BROWSER_URL: { description: 'Default URL to navigate to' },
39
+ },
40
+ relevantFor: ['react', 'vue', 'angular', 'svelte', 'nextjs', 'frontend'],
41
+ recommended: true,
42
+ tools: ['puppeteer_navigate', 'puppeteer_screenshot', 'puppeteer_click', 'puppeteer_fill'],
43
+ },
44
+ {
45
+ id: 'playwright-ext',
46
+ name: 'Playwright Extended',
47
+ description: 'Extended Playwright with API testing, iframes, PDF export',
48
+ npmPackage: '@executeautomation/playwright-mcp-server',
49
+ category: 'testing',
50
+ requiredEnv: {},
51
+ optionalEnv: {},
52
+ relevantFor: ['react', 'vue', 'angular', 'api', 'e2e'],
53
+ recommended: false,
54
+ tools: ['playwright_navigate', 'playwright_screenshot', 'playwright_get', 'playwright_post'],
55
+ },
56
+ ],
57
+
58
+ // Version Control & GitHub
59
+ vcs: [
60
+ {
61
+ id: 'github',
62
+ name: 'GitHub MCP',
63
+ description: 'GitHub API - issues, PRs, files, branches, commits',
64
+ npmPackage: '@modelcontextprotocol/server-github',
65
+ category: 'vcs',
66
+ requiredEnv: {
67
+ GITHUB_PERSONAL_ACCESS_TOKEN: { description: 'GitHub PAT with repo access' },
68
+ },
69
+ optionalEnv: {},
70
+ relevantFor: ['all'],
71
+ recommended: true,
72
+ tools: ['create_issue', 'create_pull_request', 'get_file_contents', 'search_code'],
73
+ },
74
+ {
75
+ id: 'git',
76
+ name: 'Git MCP',
77
+ description: 'Local git operations - commits, branches, diffs',
78
+ npmPackage: '@modelcontextprotocol/server-git',
79
+ category: 'vcs',
80
+ requiredEnv: {},
81
+ optionalEnv: {},
82
+ relevantFor: ['all'],
83
+ recommended: false,
84
+ tools: ['git_status', 'git_diff', 'git_log', 'git_branch'],
85
+ },
86
+ ],
87
+
88
+ // Deployment & Infrastructure
89
+ deployment: [
90
+ {
91
+ id: 'railway',
92
+ name: 'Railway MCP',
93
+ description: 'Railway deployments, services, variables, logs',
94
+ npmPackage: '@jasontanswe/railway-mcp',
95
+ category: 'deployment',
96
+ requiredEnv: {
97
+ RAILWAY_API_TOKEN: { description: 'Railway API token from dashboard' },
98
+ },
99
+ optionalEnv: {},
100
+ relevantFor: ['railway', 'backend', 'api', 'fastapi', 'express', 'nodejs'],
101
+ recommended: false,
102
+ tools: ['deployment_trigger', 'deployment_logs', 'service_list', 'variable_set'],
103
+ },
104
+ {
105
+ id: 'cloudflare',
106
+ name: 'Cloudflare MCP',
107
+ description: 'Cloudflare Workers, Pages, DNS, KV',
108
+ npmPackage: '@cloudflare/mcp-server-cloudflare',
109
+ category: 'deployment',
110
+ requiredEnv: {
111
+ CLOUDFLARE_API_TOKEN: { description: 'Cloudflare API token' },
112
+ },
113
+ optionalEnv: {},
114
+ relevantFor: ['cloudflare', 'vercel', 'netlify', 'frontend', 'workers'],
115
+ recommended: false,
116
+ tools: ['deploy_worker', 'kv_get', 'kv_put', 'dns_records'],
117
+ },
118
+ {
119
+ id: 'digitalocean',
120
+ name: 'DigitalOcean MCP',
121
+ description: 'DigitalOcean droplets, databases, storage',
122
+ npmPackage: '@digitalocean/mcp@latest',
123
+ category: 'deployment',
124
+ requiredEnv: {
125
+ DIGITALOCEAN_API_TOKEN: { description: 'DigitalOcean API token' },
126
+ },
127
+ optionalEnv: {},
128
+ relevantFor: ['digitalocean', 'self-hosted', 'backend'],
129
+ recommended: false,
130
+ tools: ['list_droplets', 'create_droplet', 'list_databases'],
131
+ },
132
+ {
133
+ id: 'vercel',
134
+ name: 'Vercel MCP',
135
+ description: 'Vercel deployments, domains, environment variables',
136
+ npmPackage: '@vercel/mcp',
137
+ category: 'deployment',
138
+ requiredEnv: {
139
+ VERCEL_TOKEN: { description: 'Vercel API token' },
140
+ },
141
+ optionalEnv: {},
142
+ relevantFor: ['vercel', 'nextjs', 'frontend', 'react'],
143
+ recommended: false,
144
+ tools: ['list_deployments', 'trigger_deploy', 'get_domains'],
145
+ },
146
+ ],
147
+
148
+ // Database & Backend Services
149
+ database: [
150
+ {
151
+ id: 'postgres',
152
+ name: 'PostgreSQL MCP',
153
+ description: 'Query PostgreSQL databases directly',
154
+ npmPackage: '@bytebase/dbhub',
155
+ category: 'database',
156
+ requiredEnv: {},
157
+ optionalEnv: {},
158
+ args: ['--dsn', 'postgresql://user:pass@host:5432/db'],
159
+ relevantFor: ['postgresql', 'postgres', 'prisma', 'sequelize', 'typeorm', 'drizzle'],
160
+ recommended: false,
161
+ tools: ['query', 'list_tables', 'describe_table'],
162
+ },
163
+ {
164
+ id: 'sqlite',
165
+ name: 'SQLite MCP',
166
+ description: 'Query SQLite databases',
167
+ npmPackage: '@modelcontextprotocol/server-sqlite',
168
+ category: 'database',
169
+ requiredEnv: {},
170
+ optionalEnv: {},
171
+ relevantFor: ['sqlite', 'better-sqlite3'],
172
+ recommended: false,
173
+ tools: ['query', 'list_tables'],
174
+ },
175
+ {
176
+ id: 'supabase',
177
+ name: 'Supabase MCP',
178
+ description: 'Supabase database, auth, storage, and edge functions',
179
+ npmPackage: '@supabase/mcp-server-supabase@latest',
180
+ category: 'database',
181
+ requiredEnv: {
182
+ SUPABASE_ACCESS_TOKEN: { description: 'Supabase access token from dashboard' },
183
+ },
184
+ optionalEnv: {},
185
+ relevantFor: ['supabase', 'postgresql', 'postgres', 'auth', 'storage', 'realtime'],
186
+ recommended: true,
187
+ tools: ['list_tables', 'execute_sql', 'get_logs', 'list_edge_functions', 'deploy_edge_function', 'list_storage_buckets'],
188
+ note: 'Full Supabase platform access - database, auth, storage, edge functions, and logs',
189
+ },
190
+ ],
191
+
192
+ // Automation & Workflows
193
+ automation: [
194
+ {
195
+ id: 'n8n',
196
+ name: 'n8n MCP',
197
+ description: 'n8n workflow automation - manage workflows, executions, and credentials',
198
+ npmPackage: '@n8n/n8n-mcp-server',
199
+ category: 'automation',
200
+ requiredEnv: {
201
+ N8N_API_KEY: { description: 'n8n API key' },
202
+ N8N_BASE_URL: { description: 'n8n instance URL (e.g., https://your-n8n.app.n8n.cloud)' },
203
+ },
204
+ optionalEnv: {},
205
+ relevantFor: ['n8n', 'automation', 'workflow', 'integration'],
206
+ recommended: true,
207
+ tools: ['list_workflows', 'get_workflow', 'execute_workflow', 'list_executions', 'list_credentials'],
208
+ note: 'Automate workflows and integrate with 400+ apps via n8n',
209
+ },
210
+ ],
211
+
212
+ // Communication & Collaboration
213
+ communication: [
214
+ {
215
+ id: 'slack',
216
+ name: 'Slack MCP',
217
+ description: 'Send/read Slack messages, manage channels',
218
+ npmPackage: '@anthropic/mcp-server-slack',
219
+ category: 'communication',
220
+ requiredEnv: {
221
+ SLACK_BOT_TOKEN: { description: 'Slack Bot OAuth token' },
222
+ },
223
+ optionalEnv: {},
224
+ relevantFor: ['slack', 'team'],
225
+ recommended: false,
226
+ tools: ['send_message', 'read_channel', 'list_channels'],
227
+ },
228
+ {
229
+ id: 'resend',
230
+ name: 'Resend MCP',
231
+ description: 'Send emails via Resend API',
232
+ npmPackage: 'resend-mcp',
233
+ category: 'communication',
234
+ requiredEnv: {
235
+ RESEND_API_KEY: { description: 'Resend API key' },
236
+ SENDER_EMAIL_ADDRESS: { description: 'Verified sender email' },
237
+ },
238
+ optionalEnv: {},
239
+ relevantFor: ['email', 'notifications'],
240
+ recommended: false,
241
+ tools: ['send_email'],
242
+ },
243
+ ],
244
+
245
+ // AI & Memory
246
+ ai: [
247
+ {
248
+ id: 'claude-mem',
249
+ name: 'Claude Memory (ChromaDB)',
250
+ description: 'Persistent memory using ChromaDB vector store',
251
+ command: 'uvx',
252
+ npmPackage: null,
253
+ args: ['chroma-mcp', '--client-type', 'persistent', '--data-dir'],
254
+ category: 'ai',
255
+ requiredEnv: {},
256
+ optionalEnv: {},
257
+ relevantFor: ['all'],
258
+ recommended: false,
259
+ tools: ['chroma_add_documents', 'chroma_query_documents', 'chroma_list_collections'],
260
+ note: 'Requires uvx (Python) and custom data directory',
261
+ },
262
+ ],
263
+
264
+ // Utilities
265
+ utilities: [
266
+ {
267
+ id: 'filesystem',
268
+ name: 'Filesystem MCP',
269
+ description: 'File operations beyond Claude\'s built-in Read/Write',
270
+ npmPackage: '@modelcontextprotocol/server-filesystem',
271
+ category: 'utilities',
272
+ requiredEnv: {},
273
+ optionalEnv: {},
274
+ relevantFor: ['all'],
275
+ recommended: false,
276
+ tools: ['list_directory', 'create_directory', 'move_file'],
277
+ },
278
+ {
279
+ id: 'fetch',
280
+ name: 'Fetch MCP',
281
+ description: 'HTTP requests with full control',
282
+ npmPackage: '@modelcontextprotocol/server-fetch',
283
+ category: 'utilities',
284
+ requiredEnv: {},
285
+ optionalEnv: {},
286
+ relevantFor: ['api', 'backend'],
287
+ recommended: false,
288
+ tools: ['fetch', 'fetch_json'],
289
+ },
290
+ ],
291
+ };
292
+
293
+ /**
294
+ * Get all MCPs as flat list
295
+ */
296
+ export function getAllMcps() {
297
+ return Object.values(MCP_REGISTRY).flat();
298
+ }
299
+
300
+ /**
301
+ * Get MCPs by category
302
+ */
303
+ export function getMcpsByCategory(category) {
304
+ return MCP_REGISTRY[category] || [];
305
+ }
306
+
307
+ /**
308
+ * Get recommended MCPs for a tech stack
309
+ *
310
+ * @param {Object} analysis - Codebase analysis result
311
+ * @returns {Array} Recommended MCPs sorted by relevance
312
+ */
313
+ export function getRecommendedMcps(analysis) {
314
+ const allMcps = getAllMcps();
315
+ const recommendations = [];
316
+
317
+ // Build relevance keywords from analysis
318
+ const keywords = new Set(['all']);
319
+
320
+ if (analysis.frontend.detected) {
321
+ keywords.add('frontend');
322
+ keywords.add(analysis.frontend.framework?.toLowerCase());
323
+ }
324
+
325
+ if (analysis.backend.detected) {
326
+ keywords.add('backend');
327
+ keywords.add('api');
328
+ keywords.add(analysis.backend.framework?.toLowerCase());
329
+ keywords.add(analysis.backend.language?.toLowerCase());
330
+ }
331
+
332
+ if (analysis.database.detected) {
333
+ keywords.add(analysis.database.type?.toLowerCase());
334
+ if (analysis.database.orm) {
335
+ keywords.add(analysis.database.orm.toLowerCase());
336
+ }
337
+ }
338
+
339
+ if (analysis.deployment.detected) {
340
+ keywords.add(analysis.deployment.platform?.toLowerCase());
341
+ }
342
+
343
+ if (analysis.testing.detected) {
344
+ keywords.add('testing');
345
+ keywords.add('e2e');
346
+ if (analysis.testing.e2e) {
347
+ keywords.add(analysis.testing.e2e.toLowerCase());
348
+ }
349
+ }
350
+
351
+ // Add services keywords (Supabase, n8n, etc.)
352
+ if (analysis.services?.detected) {
353
+ if (analysis.services.supabase) {
354
+ keywords.add('supabase');
355
+ keywords.add('auth');
356
+ keywords.add('storage');
357
+ keywords.add('realtime');
358
+ }
359
+ if (analysis.services.n8n) {
360
+ keywords.add('n8n');
361
+ keywords.add('automation');
362
+ keywords.add('workflow');
363
+ keywords.add('integration');
364
+ }
365
+ if (analysis.services.resend) {
366
+ keywords.add('email');
367
+ keywords.add('notifications');
368
+ }
369
+ }
370
+
371
+ // Score each MCP
372
+ for (const mcp of allMcps) {
373
+ let score = 0;
374
+
375
+ // Base score for recommended MCPs
376
+ if (mcp.recommended) score += 10;
377
+
378
+ // Score based on relevance
379
+ for (const keyword of mcp.relevantFor) {
380
+ if (keywords.has(keyword.toLowerCase())) {
381
+ score += 5;
382
+ }
383
+ }
384
+
385
+ // Testing MCPs get bonus for frontend projects
386
+ if (mcp.category === 'testing' && keywords.has('frontend')) {
387
+ score += 8;
388
+ }
389
+
390
+ if (score > 0) {
391
+ recommendations.push({ ...mcp, score });
392
+ }
393
+ }
394
+
395
+ // Sort by score descending
396
+ return recommendations.sort((a, b) => b.score - a.score);
397
+ }
398
+
399
+ /**
400
+ * Get testing MCPs specifically (always recommended for web projects)
401
+ */
402
+ export function getTestingMcps() {
403
+ return MCP_REGISTRY.testing;
404
+ }
405
+
406
+ /**
407
+ * Search MCPs by name or description
408
+ */
409
+ export function searchMcps(query) {
410
+ const allMcps = getAllMcps();
411
+ const queryLower = query.toLowerCase();
412
+
413
+ return allMcps.filter(
414
+ (mcp) =>
415
+ mcp.name.toLowerCase().includes(queryLower) ||
416
+ mcp.description.toLowerCase().includes(queryLower) ||
417
+ mcp.id.toLowerCase().includes(queryLower) ||
418
+ mcp.tools.some((t) => t.toLowerCase().includes(queryLower))
419
+ );
420
+ }
421
+
422
+ /**
423
+ * Get MCP by ID
424
+ */
425
+ export function getMcpById(id) {
426
+ return getAllMcps().find((mcp) => mcp.id === id);
427
+ }
428
+
429
+ /**
430
+ * Get all categories
431
+ */
432
+ export function getCategories() {
433
+ return Object.keys(MCP_REGISTRY).map((key) => ({
434
+ id: key,
435
+ name: key.charAt(0).toUpperCase() + key.slice(1),
436
+ count: MCP_REGISTRY[key].length,
437
+ }));
438
+ }