@nerviq/cli 1.0.1 → 1.2.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 (39) hide show
  1. package/bin/cli.js +170 -73
  2. package/package.json +1 -1
  3. package/src/activity.js +20 -0
  4. package/src/aider/domain-packs.js +27 -2
  5. package/src/aider/mcp-packs.js +231 -0
  6. package/src/aider/techniques.js +3210 -1397
  7. package/src/audit.js +257 -2
  8. package/src/catalog.js +18 -2
  9. package/src/codex/domain-packs.js +23 -1
  10. package/src/codex/mcp-packs.js +254 -0
  11. package/src/codex/techniques.js +4738 -3257
  12. package/src/copilot/domain-packs.js +23 -1
  13. package/src/copilot/mcp-packs.js +254 -0
  14. package/src/copilot/techniques.js +3433 -1936
  15. package/src/cursor/domain-packs.js +23 -1
  16. package/src/cursor/mcp-packs.js +257 -0
  17. package/src/cursor/techniques.js +3697 -1869
  18. package/src/deprecation.js +98 -0
  19. package/src/domain-pack-expansion.js +571 -0
  20. package/src/domain-packs.js +25 -2
  21. package/src/formatters/otel.js +151 -0
  22. package/src/gemini/domain-packs.js +23 -1
  23. package/src/gemini/mcp-packs.js +257 -0
  24. package/src/gemini/techniques.js +3734 -2238
  25. package/src/integrations.js +194 -0
  26. package/src/mcp-packs.js +233 -0
  27. package/src/opencode/domain-packs.js +23 -1
  28. package/src/opencode/mcp-packs.js +231 -0
  29. package/src/opencode/techniques.js +3500 -1687
  30. package/src/org.js +68 -0
  31. package/src/source-urls.js +410 -260
  32. package/src/stack-checks.js +565 -0
  33. package/src/supplemental-checks.js +767 -0
  34. package/src/techniques.js +2929 -1449
  35. package/src/telemetry.js +160 -0
  36. package/src/windsurf/domain-packs.js +23 -1
  37. package/src/windsurf/mcp-packs.js +257 -0
  38. package/src/windsurf/techniques.js +3647 -1834
  39. package/src/workspace.js +233 -0
@@ -349,6 +349,237 @@ const OPENCODE_MCP_PACKS = [
349
349
  jsoncProjection: { command: ['npx', '-y', 'huggingface-mcp-server'], environment: { HF_TOKEN: '${HF_TOKEN}' } },
350
350
  enabledTools: ['search_models', 'get_model_info', 'search_datasets'],
351
351
  },
352
+ // ── 23 new packs ─────────────────────────────────────────────────────────
353
+ {
354
+ key: 'supabase-mcp', label: 'Supabase',
355
+ description: 'Database, auth, and storage for Supabase.',
356
+ useWhen: 'Repos using Supabase.',
357
+ adoption: 'Requires: SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY.',
358
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['SUPABASE_URL', 'SUPABASE_SERVICE_ROLE_KEY'],
359
+ serverName: 'supabase',
360
+ jsoncProjection: { command: ['npx', '-y', '@supabase/mcp-server-supabase@latest'], environment: { SUPABASE_URL: '${SUPABASE_URL}', SUPABASE_SERVICE_ROLE_KEY: '${SUPABASE_SERVICE_ROLE_KEY}' } },
361
+ enabledTools: ['list_tables', 'query', 'insert', 'update'],
362
+ },
363
+ {
364
+ key: 'prisma-mcp', label: 'Prisma ORM',
365
+ description: 'Schema inspection and migrations via Prisma.',
366
+ useWhen: 'Repos with a Prisma schema.',
367
+ adoption: 'Requires: DATABASE_URL.',
368
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['DATABASE_URL'],
369
+ serverName: 'prisma',
370
+ jsoncProjection: { command: ['npx', '-y', 'prisma-mcp-server@latest'], environment: { DATABASE_URL: '${DATABASE_URL}' } },
371
+ enabledTools: ['introspect_schema', 'list_models', 'query_raw'],
372
+ },
373
+ {
374
+ key: 'vercel-mcp', label: 'Vercel',
375
+ description: 'Deployment management via Vercel.',
376
+ useWhen: 'Repos deployed on Vercel.',
377
+ adoption: 'Requires: VERCEL_TOKEN.',
378
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['VERCEL_TOKEN'],
379
+ serverName: 'vercel',
380
+ jsoncProjection: { command: ['npx', '-y', '@vercel/mcp-server@latest'], environment: { VERCEL_TOKEN: '${VERCEL_TOKEN}' } },
381
+ enabledTools: ['list_projects', 'get_deployment', 'list_deployments'],
382
+ },
383
+ {
384
+ key: 'cloudflare-mcp', label: 'Cloudflare',
385
+ description: 'Workers, KV, R2, and D1 management.',
386
+ useWhen: 'Repos using Cloudflare edge.',
387
+ adoption: 'Requires: CLOUDFLARE_API_TOKEN.',
388
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CLOUDFLARE_API_TOKEN'],
389
+ serverName: 'cloudflare',
390
+ jsoncProjection: { command: ['npx', '-y', '@cloudflare/mcp-server-cloudflare@latest'], environment: { CLOUDFLARE_API_TOKEN: '${CLOUDFLARE_API_TOKEN}' } },
391
+ enabledTools: ['list_workers', 'get_kv', 'list_r2_buckets'],
392
+ },
393
+ {
394
+ key: 'aws-mcp', label: 'AWS',
395
+ description: 'S3, Lambda, DynamoDB access.',
396
+ useWhen: 'Repos using AWS.',
397
+ adoption: 'Requires: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION.',
398
+ trustLevel: 'low', transport: 'stdio', requiredAuth: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION'],
399
+ serverName: 'aws',
400
+ jsoncProjection: { command: ['npx', '-y', '@aws-samples/mcp-server-aws@latest'], environment: { AWS_ACCESS_KEY_ID: '${AWS_ACCESS_KEY_ID}', AWS_SECRET_ACCESS_KEY: '${AWS_SECRET_ACCESS_KEY}', AWS_REGION: '${AWS_REGION}' } },
401
+ enabledTools: ['list_buckets', 'list_functions', 'list_tables'],
402
+ },
403
+ {
404
+ key: 'redis-mcp', label: 'Redis',
405
+ description: 'Cache and session management.',
406
+ useWhen: 'Repos using Redis.',
407
+ adoption: 'Requires: REDIS_URL.',
408
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['REDIS_URL'],
409
+ serverName: 'redis',
410
+ jsoncProjection: { command: ['npx', '-y', 'redis-mcp-server@latest'], environment: { REDIS_URL: '${REDIS_URL}' } },
411
+ enabledTools: ['get', 'set', 'del', 'hget', 'hset'],
412
+ },
413
+ {
414
+ key: 'mongodb-mcp', label: 'MongoDB',
415
+ description: 'Document database access.',
416
+ useWhen: 'Repos using MongoDB.',
417
+ adoption: 'Requires: MONGODB_URI.',
418
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['MONGODB_URI'],
419
+ serverName: 'mongodb',
420
+ jsoncProjection: { command: ['npx', '-y', '@mongodb-js/mongodb-mcp-server@latest'], environment: { MONGODB_URI: '${MONGODB_URI}' } },
421
+ enabledTools: ['find', 'insertOne', 'updateOne', 'deleteOne'],
422
+ },
423
+ {
424
+ key: 'twilio-mcp', label: 'Twilio',
425
+ description: 'SMS, voice, and messaging.',
426
+ useWhen: 'Repos using Twilio.',
427
+ adoption: 'Requires: TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN.',
428
+ trustLevel: 'low', transport: 'stdio', requiredAuth: ['TWILIO_ACCOUNT_SID', 'TWILIO_AUTH_TOKEN'],
429
+ serverName: 'twilio',
430
+ jsoncProjection: { command: ['npx', '-y', 'twilio-mcp-server@latest'], environment: { TWILIO_ACCOUNT_SID: '${TWILIO_ACCOUNT_SID}', TWILIO_AUTH_TOKEN: '${TWILIO_AUTH_TOKEN}' } },
431
+ enabledTools: ['send_sms', 'list_messages', 'list_calls'],
432
+ },
433
+ {
434
+ key: 'sendgrid-mcp', label: 'SendGrid',
435
+ description: 'Transactional email delivery.',
436
+ useWhen: 'Repos using SendGrid.',
437
+ adoption: 'Requires: SENDGRID_API_KEY.',
438
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['SENDGRID_API_KEY'],
439
+ serverName: 'sendgrid',
440
+ jsoncProjection: { command: ['npx', '-y', 'sendgrid-mcp-server@latest'], environment: { SENDGRID_API_KEY: '${SENDGRID_API_KEY}' } },
441
+ enabledTools: ['send_email', 'list_templates', 'get_stats'],
442
+ },
443
+ {
444
+ key: 'algolia-mcp', label: 'Algolia Search',
445
+ description: 'Search indexing via Algolia.',
446
+ useWhen: 'Repos using Algolia.',
447
+ adoption: 'Requires: ALGOLIA_APP_ID, ALGOLIA_API_KEY.',
448
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['ALGOLIA_APP_ID', 'ALGOLIA_API_KEY'],
449
+ serverName: 'algolia',
450
+ jsoncProjection: { command: ['npx', '-y', 'algolia-mcp-server@latest'], environment: { ALGOLIA_APP_ID: '${ALGOLIA_APP_ID}', ALGOLIA_API_KEY: '${ALGOLIA_API_KEY}' } },
451
+ enabledTools: ['search', 'list_indices', 'get_index'],
452
+ },
453
+ {
454
+ key: 'planetscale-mcp', label: 'PlanetScale',
455
+ description: 'Serverless MySQL via PlanetScale.',
456
+ useWhen: 'Repos on PlanetScale.',
457
+ adoption: 'Requires: PLANETSCALE_TOKEN.',
458
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['PLANETSCALE_TOKEN'],
459
+ serverName: 'planetscale',
460
+ jsoncProjection: { command: ['npx', '-y', 'planetscale-mcp-server@latest'], environment: { PLANETSCALE_TOKEN: '${PLANETSCALE_TOKEN}' } },
461
+ enabledTools: ['list_databases', 'list_branches', 'execute_query'],
462
+ },
463
+ {
464
+ key: 'neon-mcp', label: 'Neon Serverless Postgres',
465
+ description: 'Serverless Postgres via Neon.',
466
+ useWhen: 'Repos using Neon.',
467
+ adoption: 'Requires: NEON_API_KEY.',
468
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['NEON_API_KEY'],
469
+ serverName: 'neon',
470
+ jsoncProjection: { command: ['npx', '-y', '@neondatabase/mcp-server-neon@latest'], environment: { NEON_API_KEY: '${NEON_API_KEY}' } },
471
+ enabledTools: ['list_projects', 'list_branches', 'execute_sql'],
472
+ },
473
+ {
474
+ key: 'turso-mcp', label: 'Turso Edge SQLite',
475
+ description: 'Edge SQLite via Turso.',
476
+ useWhen: 'Repos using Turso.',
477
+ adoption: 'Requires: TURSO_DATABASE_URL, TURSO_AUTH_TOKEN.',
478
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['TURSO_DATABASE_URL', 'TURSO_AUTH_TOKEN'],
479
+ serverName: 'turso',
480
+ jsoncProjection: { command: ['npx', '-y', 'turso-mcp-server@latest'], environment: { TURSO_DATABASE_URL: '${TURSO_DATABASE_URL}', TURSO_AUTH_TOKEN: '${TURSO_AUTH_TOKEN}' } },
481
+ enabledTools: ['execute_query', 'list_tables'],
482
+ },
483
+ {
484
+ key: 'upstash-mcp', label: 'Upstash Redis+Kafka',
485
+ description: 'Serverless Redis and Kafka.',
486
+ useWhen: 'Repos using Upstash.',
487
+ adoption: 'Requires: UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN.',
488
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['UPSTASH_REDIS_REST_URL', 'UPSTASH_REDIS_REST_TOKEN'],
489
+ serverName: 'upstash',
490
+ jsoncProjection: { command: ['npx', '-y', '@upstash/mcp-server@latest'], environment: { UPSTASH_REDIS_REST_URL: '${UPSTASH_REDIS_REST_URL}', UPSTASH_REDIS_REST_TOKEN: '${UPSTASH_REDIS_REST_TOKEN}' } },
491
+ enabledTools: ['redis_get', 'redis_set', 'redis_del'],
492
+ },
493
+ {
494
+ key: 'convex-mcp', label: 'Convex',
495
+ description: 'Reactive backend via Convex.',
496
+ useWhen: 'Repos using Convex.',
497
+ adoption: 'Requires: CONVEX_DEPLOYMENT.',
498
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CONVEX_DEPLOYMENT'],
499
+ serverName: 'convex',
500
+ jsoncProjection: { command: ['npx', '-y', '@convex-dev/mcp-server@latest'], environment: { CONVEX_DEPLOYMENT: '${CONVEX_DEPLOYMENT}' } },
501
+ enabledTools: ['run_query', 'run_mutation', 'list_functions'],
502
+ },
503
+ {
504
+ key: 'clerk-mcp', label: 'Clerk Authentication',
505
+ description: 'User auth via Clerk.',
506
+ useWhen: 'Repos using Clerk.',
507
+ adoption: 'Requires: CLERK_SECRET_KEY.',
508
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CLERK_SECRET_KEY'],
509
+ serverName: 'clerk',
510
+ jsoncProjection: { command: ['npx', '-y', '@clerk/mcp-server@latest'], environment: { CLERK_SECRET_KEY: '${CLERK_SECRET_KEY}' } },
511
+ enabledTools: ['list_users', 'get_user', 'create_user'],
512
+ },
513
+ {
514
+ key: 'resend-mcp', label: 'Resend Email',
515
+ description: 'Transactional email via Resend.',
516
+ useWhen: 'Repos using Resend.',
517
+ adoption: 'Requires: RESEND_API_KEY.',
518
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['RESEND_API_KEY'],
519
+ serverName: 'resend',
520
+ jsoncProjection: { command: ['npx', '-y', 'resend-mcp-server@latest'], environment: { RESEND_API_KEY: '${RESEND_API_KEY}' } },
521
+ enabledTools: ['send_email', 'list_domains', 'get_email'],
522
+ },
523
+ {
524
+ key: 'temporal-mcp', label: 'Temporal Workflow',
525
+ description: 'Workflow orchestration via Temporal.',
526
+ useWhen: 'Repos using Temporal.',
527
+ adoption: 'Requires: TEMPORAL_ADDRESS.',
528
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['TEMPORAL_ADDRESS'],
529
+ serverName: 'temporal',
530
+ jsoncProjection: { command: ['npx', '-y', 'temporal-mcp-server@latest'], environment: { TEMPORAL_ADDRESS: '${TEMPORAL_ADDRESS}' } },
531
+ enabledTools: ['list_workflows', 'get_workflow', 'signal_workflow'],
532
+ },
533
+ {
534
+ key: 'launchdarkly-mcp', label: 'LaunchDarkly',
535
+ description: 'Feature flags via LaunchDarkly.',
536
+ useWhen: 'Repos using LaunchDarkly.',
537
+ adoption: 'Requires: LAUNCHDARKLY_ACCESS_TOKEN.',
538
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['LAUNCHDARKLY_ACCESS_TOKEN'],
539
+ serverName: 'launchdarkly',
540
+ jsoncProjection: { command: ['npx', '-y', 'launchdarkly-mcp-server@latest'], environment: { LAUNCHDARKLY_ACCESS_TOKEN: '${LAUNCHDARKLY_ACCESS_TOKEN}' } },
541
+ enabledTools: ['list_flags', 'get_flag', 'toggle_flag'],
542
+ },
543
+ {
544
+ key: 'datadog-mcp', label: 'Datadog',
545
+ description: 'Monitoring and APM via Datadog.',
546
+ useWhen: 'Repos using Datadog.',
547
+ adoption: 'Requires: DATADOG_API_KEY, DATADOG_APP_KEY.',
548
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['DATADOG_API_KEY', 'DATADOG_APP_KEY'],
549
+ serverName: 'datadog',
550
+ jsoncProjection: { command: ['npx', '-y', '@datadog/mcp-server@latest'], environment: { DATADOG_API_KEY: '${DATADOG_API_KEY}', DATADOG_APP_KEY: '${DATADOG_APP_KEY}' } },
551
+ enabledTools: ['query_metrics', 'list_monitors', 'search_logs'],
552
+ },
553
+ {
554
+ key: 'grafana-mcp', label: 'Grafana',
555
+ description: 'Dashboards via Grafana.',
556
+ useWhen: 'Repos using Grafana.',
557
+ adoption: 'Requires: GRAFANA_URL, GRAFANA_API_KEY.',
558
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['GRAFANA_URL', 'GRAFANA_API_KEY'],
559
+ serverName: 'grafana',
560
+ jsoncProjection: { command: ['npx', '-y', 'grafana-mcp-server@latest'], environment: { GRAFANA_URL: '${GRAFANA_URL}', GRAFANA_API_KEY: '${GRAFANA_API_KEY}' } },
561
+ enabledTools: ['list_dashboards', 'get_panel', 'query_datasource'],
562
+ },
563
+ {
564
+ key: 'circleci-mcp', label: 'CircleCI',
565
+ description: 'CI/CD via CircleCI.',
566
+ useWhen: 'Repos using CircleCI.',
567
+ adoption: 'Requires: CIRCLECI_TOKEN.',
568
+ trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CIRCLECI_TOKEN'],
569
+ serverName: 'circleci',
570
+ jsoncProjection: { command: ['npx', '-y', 'circleci-mcp-server@latest'], environment: { CIRCLECI_TOKEN: '${CIRCLECI_TOKEN}' } },
571
+ enabledTools: ['list_pipelines', 'get_pipeline', 'list_jobs'],
572
+ },
573
+ {
574
+ key: 'anthropic-mcp', label: 'Anthropic Claude API',
575
+ description: 'Claude API for AI-powered apps.',
576
+ useWhen: 'Repos building on Claude API.',
577
+ adoption: 'Requires: ANTHROPIC_API_KEY.',
578
+ trustLevel: 'high', transport: 'stdio', requiredAuth: ['ANTHROPIC_API_KEY'],
579
+ serverName: 'anthropic',
580
+ jsoncProjection: { command: ['npx', '-y', '@anthropic-ai/mcp-server@latest'], environment: { ANTHROPIC_API_KEY: '${ANTHROPIC_API_KEY}' } },
581
+ enabledTools: ['create_message', 'list_models'],
582
+ },
352
583
  ];
353
584
 
354
585
  // --- Helpers ---