@nerviq/cli 1.20.0 → 1.21.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.
- package/LICENSE +23 -23
- package/README.md +2 -2
- package/bin/cli.js +1 -0
- package/package.json +2 -1
- package/src/activity.js +1039 -1039
- package/src/adoption-advisor.js +299 -299
- package/src/aider/config-parser.js +166 -166
- package/src/aider/context.js +6 -2
- package/src/aider/deep-review.js +316 -316
- package/src/aider/domain-packs.js +303 -303
- package/src/aider/freshness.js +93 -93
- package/src/aider/governance.js +253 -253
- package/src/aider/interactive.js +334 -334
- package/src/aider/mcp-packs.js +329 -329
- package/src/aider/patch.js +214 -214
- package/src/aider/plans.js +186 -186
- package/src/aider/premium.js +360 -360
- package/src/aider/setup.js +404 -404
- package/src/aider/techniques.js +312 -67
- package/src/analyze.js +951 -951
- package/src/anti-patterns.js +485 -485
- package/src/audit/instruction-files.js +180 -180
- package/src/audit/recommendations.js +577 -577
- package/src/auto-suggest.js +154 -154
- package/src/badge.js +13 -13
- package/src/behavioral-drift.js +801 -801
- package/src/benchmark.js +67 -67
- package/src/catalog.js +103 -103
- package/src/certification.js +128 -128
- package/src/codex/config-parser.js +183 -183
- package/src/codex/context.js +223 -223
- package/src/codex/deep-review.js +493 -493
- package/src/codex/domain-packs.js +394 -394
- package/src/codex/freshness.js +84 -84
- package/src/codex/governance.js +192 -192
- package/src/codex/interactive.js +618 -618
- package/src/codex/mcp-packs.js +914 -914
- package/src/codex/patch.js +209 -209
- package/src/codex/plans.js +251 -251
- package/src/codex/premium.js +614 -614
- package/src/codex/setup.js +591 -591
- package/src/context.js +10 -4
- package/src/continuous-ops.js +681 -681
- package/src/copilot/activity.js +309 -309
- package/src/copilot/deep-review.js +346 -346
- package/src/copilot/domain-packs.js +372 -372
- package/src/copilot/freshness.js +57 -57
- package/src/copilot/governance.js +222 -222
- package/src/copilot/interactive.js +406 -406
- package/src/copilot/mcp-packs.js +826 -826
- package/src/copilot/plans.js +253 -253
- package/src/copilot/premium.js +451 -451
- package/src/copilot/setup.js +488 -488
- package/src/cost-tracking.js +61 -61
- package/src/cursor/activity.js +301 -301
- package/src/cursor/config-parser.js +265 -265
- package/src/cursor/context.js +256 -256
- package/src/cursor/deep-review.js +334 -334
- package/src/cursor/domain-packs.js +368 -368
- package/src/cursor/freshness.js +65 -65
- package/src/cursor/governance.js +229 -229
- package/src/cursor/interactive.js +391 -391
- package/src/cursor/mcp-packs.js +828 -828
- package/src/cursor/plans.js +254 -254
- package/src/cursor/premium.js +469 -469
- package/src/cursor/setup.js +488 -488
- package/src/dashboard.js +493 -493
- package/src/deep-review.js +428 -428
- package/src/deprecation.js +98 -98
- package/src/diff-only.js +280 -280
- package/src/doctor.js +119 -119
- package/src/domain-pack-expansion.js +1033 -1033
- package/src/domain-packs.js +387 -387
- package/src/feedback.js +178 -178
- package/src/fix-engine.js +783 -783
- package/src/fix-prompts.js +122 -122
- package/src/formatters/sarif.js +115 -115
- package/src/freshness.js +74 -74
- package/src/gemini/config-parser.js +275 -275
- package/src/gemini/deep-review.js +559 -559
- package/src/gemini/domain-packs.js +393 -393
- package/src/gemini/freshness.js +66 -66
- package/src/gemini/governance.js +201 -201
- package/src/gemini/interactive.js +860 -860
- package/src/gemini/mcp-packs.js +915 -915
- package/src/gemini/plans.js +269 -269
- package/src/gemini/premium.js +760 -760
- package/src/gemini/setup.js +692 -692
- package/src/governance.js +72 -72
- package/src/harmony/add.js +68 -68
- package/src/harmony/advisor.js +333 -333
- package/src/harmony/canon.js +565 -565
- package/src/harmony/cli.js +591 -591
- package/src/harmony/drift.js +401 -401
- package/src/harmony/governance.js +313 -313
- package/src/harmony/memory.js +239 -239
- package/src/harmony/sync.js +475 -475
- package/src/harmony/watch.js +370 -370
- package/src/hook-validation.js +342 -342
- package/src/index.js +271 -271
- package/src/init.js +184 -184
- package/src/instruction-surfaces.js +185 -185
- package/src/integrations.js +144 -144
- package/src/interactive.js +118 -118
- package/src/locales/en.json +1 -1
- package/src/locales/es.json +1 -1
- package/src/mcp-packs.js +830 -830
- package/src/mcp-server.js +726 -726
- package/src/mcp-validation.js +337 -337
- package/src/nerviq-sync.json +7 -7
- package/src/opencode/config-parser.js +109 -109
- package/src/opencode/context.js +247 -247
- package/src/opencode/deep-review.js +313 -313
- package/src/opencode/domain-packs.js +262 -262
- package/src/opencode/freshness.js +66 -66
- package/src/opencode/governance.js +159 -159
- package/src/opencode/interactive.js +392 -392
- package/src/opencode/mcp-packs.js +705 -705
- package/src/opencode/patch.js +184 -184
- package/src/opencode/plans.js +231 -231
- package/src/opencode/premium.js +413 -413
- package/src/opencode/setup.js +449 -449
- package/src/opencode/techniques.js +27 -27
- package/src/operating-profile.js +574 -574
- package/src/org.js +152 -152
- package/src/permission-rules.js +218 -218
- package/src/plans.js +839 -839
- package/src/platform-change-manifest.js +86 -86
- package/src/plugins.js +110 -110
- package/src/policy-layers.js +210 -210
- package/src/profiles.js +124 -124
- package/src/prompt-injection.js +74 -74
- package/src/public-api.js +173 -173
- package/src/recommendation-rules.js +84 -84
- package/src/repo-archetype.js +386 -386
- package/src/secret-patterns.js +39 -39
- package/src/server.js +527 -527
- package/src/setup/analysis.js +607 -607
- package/src/setup/runtime.js +172 -172
- package/src/setup.js +677 -677
- package/src/shared/capabilities.js +194 -194
- package/src/source-urls.js +132 -132
- package/src/stack-checks.js +565 -565
- package/src/supplemental-checks.js +13 -13
- package/src/synergy/adaptive.js +261 -261
- package/src/synergy/compensation.js +137 -137
- package/src/synergy/evidence.js +193 -193
- package/src/synergy/learning.js +199 -199
- package/src/synergy/patterns.js +227 -227
- package/src/synergy/ranking.js +83 -83
- package/src/synergy/report.js +165 -165
- package/src/synergy/routing.js +146 -146
- package/src/techniques/api.js +407 -407
- package/src/techniques/automation.js +316 -316
- package/src/techniques/compliance.js +257 -257
- package/src/techniques/hygiene.js +294 -294
- package/src/techniques/instructions.js +243 -243
- package/src/techniques/observability.js +226 -226
- package/src/techniques/optimization.js +142 -142
- package/src/techniques/quality.js +318 -318
- package/src/techniques/security.js +237 -237
- package/src/techniques/shared.js +443 -443
- package/src/techniques/stacks.js +2294 -2294
- package/src/techniques/tools.js +106 -106
- package/src/techniques/workflow.js +413 -413
- package/src/techniques.js +81 -81
- package/src/terminology.js +73 -73
- package/src/token-estimate.js +35 -35
- package/src/usage-patterns.js +99 -99
- package/src/verification-metadata.js +145 -145
- package/src/watch.js +247 -247
- package/src/windsurf/activity.js +302 -302
- package/src/windsurf/config-parser.js +267 -267
- package/src/windsurf/context.js +120 -10
- package/src/windsurf/deep-review.js +337 -337
- package/src/windsurf/domain-packs.js +370 -370
- package/src/windsurf/freshness.js +36 -36
- package/src/windsurf/governance.js +231 -231
- package/src/windsurf/interactive.js +388 -388
- package/src/windsurf/mcp-packs.js +792 -792
- package/src/windsurf/plans.js +247 -247
- package/src/windsurf/premium.js +468 -468
- package/src/windsurf/setup.js +471 -471
- package/src/windsurf/techniques.js +155 -33
- package/src/workspace.js +375 -375
package/src/techniques/tools.js
CHANGED
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tools technique fragments.
|
|
3
|
-
* Generated mechanically from the legacy techniques.js monolith during HR-09.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const {
|
|
7
|
-
} = require('./shared');
|
|
8
|
-
|
|
9
|
-
module.exports = {
|
|
10
|
-
mcpServers: {
|
|
11
|
-
id: 18,
|
|
12
|
-
name: 'MCP servers configured',
|
|
13
|
-
check: (ctx) => {
|
|
14
|
-
// MCP now lives in .mcp.json (project) and ~/.claude.json (user), NOT settings.json
|
|
15
|
-
const mcpJson = ctx.jsonFile('.mcp.json');
|
|
16
|
-
if (mcpJson && mcpJson.mcpServers && Object.keys(mcpJson.mcpServers).length > 0) return true;
|
|
17
|
-
// Fallback: check settings for legacy format
|
|
18
|
-
const settings = ctx.jsonFile('.claude/settings.local.json') || ctx.jsonFile('.claude/settings.json');
|
|
19
|
-
return !!(settings && settings.mcpServers && Object.keys(settings.mcpServers).length > 0);
|
|
20
|
-
},
|
|
21
|
-
impact: 'medium',
|
|
22
|
-
rating: 3,
|
|
23
|
-
category: 'tools',
|
|
24
|
-
fix: 'Configure MCP servers in .mcp.json at project root. Use `claude mcp add` to add servers. Project-level MCP is committed to git for team sharing.',
|
|
25
|
-
template: null
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
multipleMcpServers: {
|
|
29
|
-
id: 1801,
|
|
30
|
-
name: '2+ MCP servers for rich tooling',
|
|
31
|
-
check: (ctx) => {
|
|
32
|
-
let count = 0;
|
|
33
|
-
const mcpJson = ctx.jsonFile('.mcp.json');
|
|
34
|
-
if (mcpJson && mcpJson.mcpServers) count += Object.keys(mcpJson.mcpServers).length;
|
|
35
|
-
const settings = ctx.jsonFile('.claude/settings.local.json') || ctx.jsonFile('.claude/settings.json');
|
|
36
|
-
if (settings && settings.mcpServers) count += Object.keys(settings.mcpServers).length;
|
|
37
|
-
return count >= 2;
|
|
38
|
-
},
|
|
39
|
-
impact: 'medium',
|
|
40
|
-
rating: 4,
|
|
41
|
-
category: 'tools',
|
|
42
|
-
fix: 'Add at least 2 MCP servers for broader tool coverage (e.g. database + search).',
|
|
43
|
-
template: null
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
context7Mcp: {
|
|
47
|
-
id: 110,
|
|
48
|
-
name: 'Context7 MCP for real-time docs',
|
|
49
|
-
check: (ctx) => {
|
|
50
|
-
const shared = ctx.jsonFile('.claude/settings.json') || {};
|
|
51
|
-
const local = ctx.jsonFile('.claude/settings.local.json') || {};
|
|
52
|
-
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
53
|
-
const all = { ...(shared.mcpServers || {}), ...(local.mcpServers || {}), ...(mcp.mcpServers || {}) };
|
|
54
|
-
if (Object.keys(all).length === 0) return false;
|
|
55
|
-
return Object.keys(all).some(k => /context7/i.test(k));
|
|
56
|
-
},
|
|
57
|
-
impact: 'medium',
|
|
58
|
-
rating: 4,
|
|
59
|
-
category: 'tools',
|
|
60
|
-
fix: 'Add Context7 MCP server for real-time documentation lookup (always up-to-date library docs).',
|
|
61
|
-
template: null
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
mcpHasEnvConfig: {
|
|
65
|
-
id: 2027,
|
|
66
|
-
name: 'MCP servers have environment configuration',
|
|
67
|
-
check: (ctx) => {
|
|
68
|
-
const shared = ctx.jsonFile('.claude/settings.json') || {};
|
|
69
|
-
const local = ctx.jsonFile('.claude/settings.local.json') || {};
|
|
70
|
-
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
71
|
-
const allServers = { ...(shared.mcpServers || {}), ...(local.mcpServers || {}), ...(mcp.mcpServers || {}) };
|
|
72
|
-
if (Object.keys(allServers).length === 0) return null;
|
|
73
|
-
return Object.values(allServers).some(s => s.env && Object.keys(s.env).length > 0);
|
|
74
|
-
},
|
|
75
|
-
impact: 'low', rating: 3, category: 'tools',
|
|
76
|
-
fix: 'Configure environment variables for MCP servers that need authentication (e.g. GITHUB_TOKEN).',
|
|
77
|
-
template: null
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
mcpJsonProject: {
|
|
81
|
-
id: 2032,
|
|
82
|
-
name: 'Project-level .mcp.json exists',
|
|
83
|
-
check: (ctx) => ctx.files.includes('.mcp.json'),
|
|
84
|
-
impact: 'medium',
|
|
85
|
-
rating: 3,
|
|
86
|
-
category: 'tools',
|
|
87
|
-
fix: 'Create .mcp.json at project root for team-shared MCP servers. Use `claude mcp add --project` to add servers.',
|
|
88
|
-
template: null
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
mcpBudgetHealthy: {
|
|
92
|
-
id: 110002,
|
|
93
|
-
name: 'MCP budget not over-provisioned (≤10 servers, ≤80 tools)',
|
|
94
|
-
check: (ctx) => {
|
|
95
|
-
const settings = ctx.jsonFile('.claude/settings.json') || {};
|
|
96
|
-
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
97
|
-
const mcpServers = Object.keys(settings.mcpServers || {}).length + Object.keys(mcp.mcpServers || {}).length;
|
|
98
|
-
if (mcpServers === 0) return null;
|
|
99
|
-
return mcpServers <= 10;
|
|
100
|
-
},
|
|
101
|
-
impact: 'medium', rating: 4, category: 'tools',
|
|
102
|
-
fix: 'Too many MCP servers (>10) degrades performance. Remove unused servers or consolidate.',
|
|
103
|
-
template: null,
|
|
104
|
-
confidence: 0.9,
|
|
105
|
-
},
|
|
106
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Tools technique fragments.
|
|
3
|
+
* Generated mechanically from the legacy techniques.js monolith during HR-09.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
} = require('./shared');
|
|
8
|
+
|
|
9
|
+
module.exports = {
|
|
10
|
+
mcpServers: {
|
|
11
|
+
id: 18,
|
|
12
|
+
name: 'MCP servers configured',
|
|
13
|
+
check: (ctx) => {
|
|
14
|
+
// MCP now lives in .mcp.json (project) and ~/.claude.json (user), NOT settings.json
|
|
15
|
+
const mcpJson = ctx.jsonFile('.mcp.json');
|
|
16
|
+
if (mcpJson && mcpJson.mcpServers && Object.keys(mcpJson.mcpServers).length > 0) return true;
|
|
17
|
+
// Fallback: check settings for legacy format
|
|
18
|
+
const settings = ctx.jsonFile('.claude/settings.local.json') || ctx.jsonFile('.claude/settings.json');
|
|
19
|
+
return !!(settings && settings.mcpServers && Object.keys(settings.mcpServers).length > 0);
|
|
20
|
+
},
|
|
21
|
+
impact: 'medium',
|
|
22
|
+
rating: 3,
|
|
23
|
+
category: 'tools',
|
|
24
|
+
fix: 'Configure MCP servers in .mcp.json at project root. Use `claude mcp add` to add servers. Project-level MCP is committed to git for team sharing.',
|
|
25
|
+
template: null
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
multipleMcpServers: {
|
|
29
|
+
id: 1801,
|
|
30
|
+
name: '2+ MCP servers for rich tooling',
|
|
31
|
+
check: (ctx) => {
|
|
32
|
+
let count = 0;
|
|
33
|
+
const mcpJson = ctx.jsonFile('.mcp.json');
|
|
34
|
+
if (mcpJson && mcpJson.mcpServers) count += Object.keys(mcpJson.mcpServers).length;
|
|
35
|
+
const settings = ctx.jsonFile('.claude/settings.local.json') || ctx.jsonFile('.claude/settings.json');
|
|
36
|
+
if (settings && settings.mcpServers) count += Object.keys(settings.mcpServers).length;
|
|
37
|
+
return count >= 2;
|
|
38
|
+
},
|
|
39
|
+
impact: 'medium',
|
|
40
|
+
rating: 4,
|
|
41
|
+
category: 'tools',
|
|
42
|
+
fix: 'Add at least 2 MCP servers for broader tool coverage (e.g. database + search).',
|
|
43
|
+
template: null
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
context7Mcp: {
|
|
47
|
+
id: 110,
|
|
48
|
+
name: 'Context7 MCP for real-time docs',
|
|
49
|
+
check: (ctx) => {
|
|
50
|
+
const shared = ctx.jsonFile('.claude/settings.json') || {};
|
|
51
|
+
const local = ctx.jsonFile('.claude/settings.local.json') || {};
|
|
52
|
+
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
53
|
+
const all = { ...(shared.mcpServers || {}), ...(local.mcpServers || {}), ...(mcp.mcpServers || {}) };
|
|
54
|
+
if (Object.keys(all).length === 0) return false;
|
|
55
|
+
return Object.keys(all).some(k => /context7/i.test(k));
|
|
56
|
+
},
|
|
57
|
+
impact: 'medium',
|
|
58
|
+
rating: 4,
|
|
59
|
+
category: 'tools',
|
|
60
|
+
fix: 'Add Context7 MCP server for real-time documentation lookup (always up-to-date library docs).',
|
|
61
|
+
template: null
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
mcpHasEnvConfig: {
|
|
65
|
+
id: 2027,
|
|
66
|
+
name: 'MCP servers have environment configuration',
|
|
67
|
+
check: (ctx) => {
|
|
68
|
+
const shared = ctx.jsonFile('.claude/settings.json') || {};
|
|
69
|
+
const local = ctx.jsonFile('.claude/settings.local.json') || {};
|
|
70
|
+
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
71
|
+
const allServers = { ...(shared.mcpServers || {}), ...(local.mcpServers || {}), ...(mcp.mcpServers || {}) };
|
|
72
|
+
if (Object.keys(allServers).length === 0) return null;
|
|
73
|
+
return Object.values(allServers).some(s => s.env && Object.keys(s.env).length > 0);
|
|
74
|
+
},
|
|
75
|
+
impact: 'low', rating: 3, category: 'tools',
|
|
76
|
+
fix: 'Configure environment variables for MCP servers that need authentication (e.g. GITHUB_TOKEN).',
|
|
77
|
+
template: null
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
mcpJsonProject: {
|
|
81
|
+
id: 2032,
|
|
82
|
+
name: 'Project-level .mcp.json exists',
|
|
83
|
+
check: (ctx) => ctx.files.includes('.mcp.json'),
|
|
84
|
+
impact: 'medium',
|
|
85
|
+
rating: 3,
|
|
86
|
+
category: 'tools',
|
|
87
|
+
fix: 'Create .mcp.json at project root for team-shared MCP servers. Use `claude mcp add --project` to add servers.',
|
|
88
|
+
template: null
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
mcpBudgetHealthy: {
|
|
92
|
+
id: 110002,
|
|
93
|
+
name: 'MCP budget not over-provisioned (≤10 servers, ≤80 tools)',
|
|
94
|
+
check: (ctx) => {
|
|
95
|
+
const settings = ctx.jsonFile('.claude/settings.json') || {};
|
|
96
|
+
const mcp = ctx.jsonFile('.mcp.json') || {};
|
|
97
|
+
const mcpServers = Object.keys(settings.mcpServers || {}).length + Object.keys(mcp.mcpServers || {}).length;
|
|
98
|
+
if (mcpServers === 0) return null;
|
|
99
|
+
return mcpServers <= 10;
|
|
100
|
+
},
|
|
101
|
+
impact: 'medium', rating: 4, category: 'tools',
|
|
102
|
+
fix: 'Too many MCP servers (>10) degrades performance. Remove unused servers or consolidate.',
|
|
103
|
+
template: null,
|
|
104
|
+
confidence: 0.9,
|
|
105
|
+
},
|
|
106
|
+
};
|