@nerviq/cli 1.20.1 → 1.22.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 +20 -2
- package/bin/cli.js +3 -3
- package/package.json +1 -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 +4 -1
- 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/audit.js +20 -0
- 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/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/csv.js +69 -0
- package/src/formatters/junit.js +99 -0
- package/src/formatters/markdown.js +118 -0
- 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/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/workspace.js +375 -375
package/src/formatters/sarif.js
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const { version } = require('../../package.json');
|
|
3
|
-
|
|
4
|
-
function levelFromImpact(impact) {
|
|
5
|
-
if (impact === 'critical') return 'error';
|
|
6
|
-
if (impact === 'high') return 'warning';
|
|
7
|
-
return 'note';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function sanitizeUri(filePath) {
|
|
11
|
-
if (!filePath) return null;
|
|
12
|
-
return filePath.split(path.sep).join('/');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function buildRule(result) {
|
|
16
|
-
return {
|
|
17
|
-
id: result.id || result.key,
|
|
18
|
-
name: result.key,
|
|
19
|
-
shortDescription: { text: result.name },
|
|
20
|
-
fullDescription: { text: result.fix || result.name },
|
|
21
|
-
properties: {
|
|
22
|
-
category: result.category,
|
|
23
|
-
impact: result.impact,
|
|
24
|
-
template: result.template || null,
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function buildSarifResult(result, runRoot = '.') {
|
|
30
|
-
const sarifResult = {
|
|
31
|
-
ruleId: result.id || result.key,
|
|
32
|
-
level: levelFromImpact(result.impact),
|
|
33
|
-
message: {
|
|
34
|
-
text: result.fix || result.name,
|
|
35
|
-
},
|
|
36
|
-
properties: {
|
|
37
|
-
checkKey: result.key,
|
|
38
|
-
category: result.category,
|
|
39
|
-
impact: result.impact,
|
|
40
|
-
passed: result.passed,
|
|
41
|
-
platform: result.platform || null,
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
if (result.file) {
|
|
46
|
-
sarifResult.locations = [{
|
|
47
|
-
physicalLocation: {
|
|
48
|
-
artifactLocation: {
|
|
49
|
-
uri: sanitizeUri(result.file),
|
|
50
|
-
uriBaseId: '%SRCROOT%',
|
|
51
|
-
},
|
|
52
|
-
region: result.line ? { startLine: result.line } : undefined,
|
|
53
|
-
},
|
|
54
|
-
}];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (runRoot) {
|
|
58
|
-
sarifResult.properties.runRoot = sanitizeUri(runRoot);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return sarifResult;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function formatSarif(auditResult, options = {}) {
|
|
65
|
-
const failedResults = (auditResult.results || [])
|
|
66
|
-
.filter((result) => result.passed === false);
|
|
67
|
-
|
|
68
|
-
const rules = [];
|
|
69
|
-
const seenRuleIds = new Set();
|
|
70
|
-
for (const result of failedResults) {
|
|
71
|
-
const ruleId = result.id || result.key;
|
|
72
|
-
if (seenRuleIds.has(ruleId)) continue;
|
|
73
|
-
seenRuleIds.add(ruleId);
|
|
74
|
-
rules.push(buildRule(result));
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
version: '2.1.0',
|
|
79
|
-
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
80
|
-
runs: [{
|
|
81
|
-
tool: {
|
|
82
|
-
driver: {
|
|
83
|
-
name: 'nerviq',
|
|
84
|
-
version,
|
|
85
|
-
informationUri: 'https://github.com/nerviq/nerviq',
|
|
86
|
-
rules,
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
automationDetails: {
|
|
90
|
-
id: auditResult.platform || 'claude',
|
|
91
|
-
},
|
|
92
|
-
properties: {
|
|
93
|
-
platform: auditResult.platform,
|
|
94
|
-
platformLabel: auditResult.platformLabel,
|
|
95
|
-
platformVersion: auditResult.platformVersion || null,
|
|
96
|
-
score: auditResult.score,
|
|
97
|
-
organicScore: auditResult.organicScore,
|
|
98
|
-
passed: auditResult.passed,
|
|
99
|
-
failed: auditResult.failed,
|
|
100
|
-
skipped: auditResult.skipped,
|
|
101
|
-
checkCount: auditResult.checkCount,
|
|
102
|
-
},
|
|
103
|
-
originalUriBaseIds: {
|
|
104
|
-
'%SRCROOT%': {
|
|
105
|
-
uri: sanitizeUri(options.dir || '.'),
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
results: failedResults.map((result) => buildSarifResult(result, options.dir || '.')),
|
|
109
|
-
}],
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
module.exports = {
|
|
114
|
-
formatSarif,
|
|
115
|
-
};
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const { version } = require('../../package.json');
|
|
3
|
+
|
|
4
|
+
function levelFromImpact(impact) {
|
|
5
|
+
if (impact === 'critical') return 'error';
|
|
6
|
+
if (impact === 'high') return 'warning';
|
|
7
|
+
return 'note';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function sanitizeUri(filePath) {
|
|
11
|
+
if (!filePath) return null;
|
|
12
|
+
return filePath.split(path.sep).join('/');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function buildRule(result) {
|
|
16
|
+
return {
|
|
17
|
+
id: result.id || result.key,
|
|
18
|
+
name: result.key,
|
|
19
|
+
shortDescription: { text: result.name },
|
|
20
|
+
fullDescription: { text: result.fix || result.name },
|
|
21
|
+
properties: {
|
|
22
|
+
category: result.category,
|
|
23
|
+
impact: result.impact,
|
|
24
|
+
template: result.template || null,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function buildSarifResult(result, runRoot = '.') {
|
|
30
|
+
const sarifResult = {
|
|
31
|
+
ruleId: result.id || result.key,
|
|
32
|
+
level: levelFromImpact(result.impact),
|
|
33
|
+
message: {
|
|
34
|
+
text: result.fix || result.name,
|
|
35
|
+
},
|
|
36
|
+
properties: {
|
|
37
|
+
checkKey: result.key,
|
|
38
|
+
category: result.category,
|
|
39
|
+
impact: result.impact,
|
|
40
|
+
passed: result.passed,
|
|
41
|
+
platform: result.platform || null,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
if (result.file) {
|
|
46
|
+
sarifResult.locations = [{
|
|
47
|
+
physicalLocation: {
|
|
48
|
+
artifactLocation: {
|
|
49
|
+
uri: sanitizeUri(result.file),
|
|
50
|
+
uriBaseId: '%SRCROOT%',
|
|
51
|
+
},
|
|
52
|
+
region: result.line ? { startLine: result.line } : undefined,
|
|
53
|
+
},
|
|
54
|
+
}];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (runRoot) {
|
|
58
|
+
sarifResult.properties.runRoot = sanitizeUri(runRoot);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return sarifResult;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function formatSarif(auditResult, options = {}) {
|
|
65
|
+
const failedResults = (auditResult.results || [])
|
|
66
|
+
.filter((result) => result.passed === false);
|
|
67
|
+
|
|
68
|
+
const rules = [];
|
|
69
|
+
const seenRuleIds = new Set();
|
|
70
|
+
for (const result of failedResults) {
|
|
71
|
+
const ruleId = result.id || result.key;
|
|
72
|
+
if (seenRuleIds.has(ruleId)) continue;
|
|
73
|
+
seenRuleIds.add(ruleId);
|
|
74
|
+
rules.push(buildRule(result));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
version: '2.1.0',
|
|
79
|
+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
80
|
+
runs: [{
|
|
81
|
+
tool: {
|
|
82
|
+
driver: {
|
|
83
|
+
name: 'nerviq',
|
|
84
|
+
version,
|
|
85
|
+
informationUri: 'https://github.com/nerviq/nerviq',
|
|
86
|
+
rules,
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
automationDetails: {
|
|
90
|
+
id: auditResult.platform || 'claude',
|
|
91
|
+
},
|
|
92
|
+
properties: {
|
|
93
|
+
platform: auditResult.platform,
|
|
94
|
+
platformLabel: auditResult.platformLabel,
|
|
95
|
+
platformVersion: auditResult.platformVersion || null,
|
|
96
|
+
score: auditResult.score,
|
|
97
|
+
organicScore: auditResult.organicScore,
|
|
98
|
+
passed: auditResult.passed,
|
|
99
|
+
failed: auditResult.failed,
|
|
100
|
+
skipped: auditResult.skipped,
|
|
101
|
+
checkCount: auditResult.checkCount,
|
|
102
|
+
},
|
|
103
|
+
originalUriBaseIds: {
|
|
104
|
+
'%SRCROOT%': {
|
|
105
|
+
uri: sanitizeUri(options.dir || '.'),
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
results: failedResults.map((result) => buildSarifResult(result, options.dir || '.')),
|
|
109
|
+
}],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
module.exports = {
|
|
114
|
+
formatSarif,
|
|
115
|
+
};
|
package/src/freshness.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Release gates, recurring probes, propagation checklists,
|
|
5
5
|
* and staleness blocking for Claude Code surfaces.
|
|
6
6
|
*
|
|
7
|
-
* P0 sources from code.claude.com/docs and official Anthropic launch posts,
|
|
8
|
-
* with propagation for CLAUDE.md, output style, and agent harness changes.
|
|
7
|
+
* P0 sources from code.claude.com/docs and official Anthropic launch posts,
|
|
8
|
+
* with propagation for CLAUDE.md, output style, and agent harness changes.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
const { version } = require('../package.json');
|
|
@@ -56,46 +56,46 @@ const P0_SOURCES = [
|
|
|
56
56
|
stalenessThresholdDays: 14,
|
|
57
57
|
verifiedAt: '2026-04-07',
|
|
58
58
|
},
|
|
59
|
-
{
|
|
60
|
-
key: 'claude-settings-docs',
|
|
61
|
-
label: 'Claude Code Settings Documentation',
|
|
62
|
-
url: 'https://code.claude.com/docs/en/settings',
|
|
63
|
-
stalenessThresholdDays: 30,
|
|
64
|
-
verifiedAt: '2026-04-07',
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
key: 'claude-output-styles-docs',
|
|
68
|
-
label: 'Claude Code Output Styles / Insights',
|
|
69
|
-
url: 'https://code.claude.com/docs/en/output-styles',
|
|
70
|
-
stalenessThresholdDays: 14,
|
|
71
|
-
verifiedAt: '2026-04-10',
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
key: 'claude-best-practices-docs',
|
|
75
|
-
label: 'Claude Code Best Practices / Auto Mode',
|
|
76
|
-
url: 'https://code.claude.com/docs/en/best-practices',
|
|
77
|
-
stalenessThresholdDays: 14,
|
|
78
|
-
verifiedAt: '2026-04-10',
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
key: 'claude-agent-sdk-docs',
|
|
82
|
-
label: 'Claude Agent SDK Overview',
|
|
83
|
-
url: 'https://code.claude.com/docs/en/agent-sdk/overview',
|
|
84
|
-
stalenessThresholdDays: 14,
|
|
85
|
-
verifiedAt: '2026-04-10',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
key: 'claude-xcode-agent-sdk',
|
|
89
|
-
label: 'Anthropic Xcode Agent SDK Launch',
|
|
90
|
-
url: 'https://www.anthropic.com/news/apple-xcode-claude-agent-sdk',
|
|
91
|
-
stalenessThresholdDays: 30,
|
|
92
|
-
verifiedAt: '2026-04-10',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
key: 'anthropic-changelog',
|
|
96
|
-
label: 'Claude Code Changelog',
|
|
97
|
-
url: 'https://code.claude.com/docs/en/changelog',
|
|
98
|
-
stalenessThresholdDays: 14,
|
|
59
|
+
{
|
|
60
|
+
key: 'claude-settings-docs',
|
|
61
|
+
label: 'Claude Code Settings Documentation',
|
|
62
|
+
url: 'https://code.claude.com/docs/en/settings',
|
|
63
|
+
stalenessThresholdDays: 30,
|
|
64
|
+
verifiedAt: '2026-04-07',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: 'claude-output-styles-docs',
|
|
68
|
+
label: 'Claude Code Output Styles / Insights',
|
|
69
|
+
url: 'https://code.claude.com/docs/en/output-styles',
|
|
70
|
+
stalenessThresholdDays: 14,
|
|
71
|
+
verifiedAt: '2026-04-10',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
key: 'claude-best-practices-docs',
|
|
75
|
+
label: 'Claude Code Best Practices / Auto Mode',
|
|
76
|
+
url: 'https://code.claude.com/docs/en/best-practices',
|
|
77
|
+
stalenessThresholdDays: 14,
|
|
78
|
+
verifiedAt: '2026-04-10',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
key: 'claude-agent-sdk-docs',
|
|
82
|
+
label: 'Claude Agent SDK Overview',
|
|
83
|
+
url: 'https://code.claude.com/docs/en/agent-sdk/overview',
|
|
84
|
+
stalenessThresholdDays: 14,
|
|
85
|
+
verifiedAt: '2026-04-10',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: 'claude-xcode-agent-sdk',
|
|
89
|
+
label: 'Anthropic Xcode Agent SDK Launch',
|
|
90
|
+
url: 'https://www.anthropic.com/news/apple-xcode-claude-agent-sdk',
|
|
91
|
+
stalenessThresholdDays: 30,
|
|
92
|
+
verifiedAt: '2026-04-10',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: 'anthropic-changelog',
|
|
96
|
+
label: 'Claude Code Changelog',
|
|
97
|
+
url: 'https://code.claude.com/docs/en/changelog',
|
|
98
|
+
stalenessThresholdDays: 14,
|
|
99
99
|
verifiedAt: '2026-04-07',
|
|
100
100
|
},
|
|
101
101
|
];
|
|
@@ -127,38 +127,38 @@ const PROPAGATION_CHECKLIST = [
|
|
|
127
127
|
'src/context.js — update mcpConfig parsing',
|
|
128
128
|
],
|
|
129
129
|
},
|
|
130
|
-
{
|
|
131
|
-
trigger: 'Permissions model change (allow/deny lists, operator/user split)',
|
|
132
|
-
targets: [
|
|
133
|
-
'src/governance.js — update permissionProfiles',
|
|
134
|
-
'src/techniques.js — update permission checks',
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
trigger: 'Output style / Insights change (system prompt layering, outputStyle storage, learning mode behavior)',
|
|
139
|
-
targets: [
|
|
140
|
-
'src/techniques.js — update Claude settings and instruction-surface checks that depend on system-prompt-adjacent behavior',
|
|
141
|
-
'src/setup.js — update Claude settings starter templates if outputStyle guidance changes',
|
|
142
|
-
'src/source-urls.js — refresh Claude feature source mappings when output style docs move or split',
|
|
143
|
-
],
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
trigger: 'Best-practices or auto mode change (permission classifier, unattended mode, safety fallback behavior)',
|
|
147
|
-
targets: [
|
|
148
|
-
'src/governance.js — update permission mode caveats and policy guidance',
|
|
149
|
-
'src/techniques.js — update Claude trust/verification checks tied to auto mode or unattended workflows',
|
|
150
|
-
'src/source-urls.js — refresh Claude best-practice source mappings if guidance moves',
|
|
151
|
-
],
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
trigger: 'Agent SDK / harness or native integration change (SDK surfaces, subagents, background tasks, Xcode bridge)',
|
|
155
|
-
targets: [
|
|
156
|
-
'src/techniques.js — update Claude modern-capability checks and cross-surface expectations',
|
|
157
|
-
'src/mcp-packs.js — revisit pack assumptions when native integrations change MCP usage',
|
|
158
|
-
'src/source-urls.js — refresh Claude source mappings for SDK and integration surfaces',
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
];
|
|
130
|
+
{
|
|
131
|
+
trigger: 'Permissions model change (allow/deny lists, operator/user split)',
|
|
132
|
+
targets: [
|
|
133
|
+
'src/governance.js — update permissionProfiles',
|
|
134
|
+
'src/techniques.js — update permission checks',
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
trigger: 'Output style / Insights change (system prompt layering, outputStyle storage, learning mode behavior)',
|
|
139
|
+
targets: [
|
|
140
|
+
'src/techniques.js — update Claude settings and instruction-surface checks that depend on system-prompt-adjacent behavior',
|
|
141
|
+
'src/setup.js — update Claude settings starter templates if outputStyle guidance changes',
|
|
142
|
+
'src/source-urls.js — refresh Claude feature source mappings when output style docs move or split',
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
trigger: 'Best-practices or auto mode change (permission classifier, unattended mode, safety fallback behavior)',
|
|
147
|
+
targets: [
|
|
148
|
+
'src/governance.js — update permission mode caveats and policy guidance',
|
|
149
|
+
'src/techniques.js — update Claude trust/verification checks tied to auto mode or unattended workflows',
|
|
150
|
+
'src/source-urls.js — refresh Claude best-practice source mappings if guidance moves',
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
trigger: 'Agent SDK / harness or native integration change (SDK surfaces, subagents, background tasks, Xcode bridge)',
|
|
155
|
+
targets: [
|
|
156
|
+
'src/techniques.js — update Claude modern-capability checks and cross-surface expectations',
|
|
157
|
+
'src/mcp-packs.js — revisit pack assumptions when native integrations change MCP usage',
|
|
158
|
+
'src/source-urls.js — refresh Claude source mappings for SDK and integration surfaces',
|
|
159
|
+
],
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
164
|
* Release gate: check if all P0 sources are within staleness threshold.
|