@skillit/core 1.5.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 +21 -0
- package/README.md +55 -0
- package/dist/audit-formatter.d.ts +36 -0
- package/dist/audit-formatter.d.ts.map +1 -0
- package/dist/audit-formatter.js +173 -0
- package/dist/audit-formatter.js.map +1 -0
- package/dist/audit-score.d.ts +76 -0
- package/dist/audit-score.d.ts.map +1 -0
- package/dist/audit-score.js +490 -0
- package/dist/audit-score.js.map +1 -0
- package/dist/audit-types.d.ts +81 -0
- package/dist/audit-types.d.ts.map +1 -0
- package/dist/audit-types.js +2 -0
- package/dist/audit-types.js.map +1 -0
- package/dist/audit.d.ts +17 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +567 -0
- package/dist/audit.js.map +1 -0
- package/dist/canonical.d.ts +36 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +148 -0
- package/dist/canonical.js.map +1 -0
- package/dist/config-renderer.d.ts +16 -0
- package/dist/config-renderer.d.ts.map +1 -0
- package/dist/config-renderer.js +296 -0
- package/dist/config-renderer.js.map +1 -0
- package/dist/config-types.d.ts +144 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-types.js +2 -0
- package/dist/config-types.js.map +1 -0
- package/dist/docs-scanner.d.ts +40 -0
- package/dist/docs-scanner.d.ts.map +1 -0
- package/dist/docs-scanner.js +176 -0
- package/dist/docs-scanner.js.map +1 -0
- package/dist/examples-scanner.d.ts +39 -0
- package/dist/examples-scanner.d.ts.map +1 -0
- package/dist/examples-scanner.js +221 -0
- package/dist/examples-scanner.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/llms-txt.d.ts +20 -0
- package/dist/llms-txt.d.ts.map +1 -0
- package/dist/llms-txt.js +187 -0
- package/dist/llms-txt.js.map +1 -0
- package/dist/markdown-parser.d.ts +11 -0
- package/dist/markdown-parser.d.ts.map +1 -0
- package/dist/markdown-parser.js +222 -0
- package/dist/markdown-parser.js.map +1 -0
- package/dist/markdown-types.d.ts +48 -0
- package/dist/markdown-types.d.ts.map +1 -0
- package/dist/markdown-types.js +2 -0
- package/dist/markdown-types.js.map +1 -0
- package/dist/readme-parser.d.ts +21 -0
- package/dist/readme-parser.d.ts.map +1 -0
- package/dist/readme-parser.js +137 -0
- package/dist/readme-parser.js.map +1 -0
- package/dist/references-mcp.d.ts +79 -0
- package/dist/references-mcp.d.ts.map +1 -0
- package/dist/references-mcp.js +130 -0
- package/dist/references-mcp.js.map +1 -0
- package/dist/refine/ast-edit.d.ts +21 -0
- package/dist/refine/ast-edit.d.ts.map +1 -0
- package/dist/refine/ast-edit.js +147 -0
- package/dist/refine/ast-edit.js.map +1 -0
- package/dist/refine/index.d.ts +7 -0
- package/dist/refine/index.d.ts.map +1 -0
- package/dist/refine/index.js +6 -0
- package/dist/refine/index.js.map +1 -0
- package/dist/refine/jsdoc-edit.d.ts +4 -0
- package/dist/refine/jsdoc-edit.d.ts.map +1 -0
- package/dist/refine/jsdoc-edit.js +6 -0
- package/dist/refine/jsdoc-edit.js.map +1 -0
- package/dist/refine/loop.d.ts +8 -0
- package/dist/refine/loop.d.ts.map +1 -0
- package/dist/refine/loop.js +98 -0
- package/dist/refine/loop.js.map +1 -0
- package/dist/refine/select-targets.d.ts +5 -0
- package/dist/refine/select-targets.d.ts.map +1 -0
- package/dist/refine/select-targets.js +30 -0
- package/dist/refine/select-targets.js.map +1 -0
- package/dist/refine/types.d.ts +67 -0
- package/dist/refine/types.d.ts.map +1 -0
- package/dist/refine/types.js +2 -0
- package/dist/refine/types.js.map +1 -0
- package/dist/renderer.d.ts +27 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +1244 -0
- package/dist/renderer.js.map +1 -0
- package/dist/tokens.d.ts +14 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +26 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +519 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/writer.d.ts +17 -0
- package/dist/writer.d.ts.map +1 -0
- package/dist/writer.js +313 -0
- package/dist/writer.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Dimension maxima
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
const MAX_D1 = 20;
|
|
5
|
+
const MAX_D2 = 15;
|
|
6
|
+
const MAX_D3 = 15;
|
|
7
|
+
const MAX_D4 = 15;
|
|
8
|
+
const MAX_D5 = 15;
|
|
9
|
+
const MAX_D6 = 15;
|
|
10
|
+
const MAX_D7 = 10;
|
|
11
|
+
const MAX_D8 = 15;
|
|
12
|
+
const MAX_TOTAL = MAX_D1 + MAX_D2 + MAX_D3 + MAX_D4 + MAX_D5 + MAX_D6 + MAX_D7 + MAX_D8; // 120
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Helpers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
function passes(audit, code) {
|
|
17
|
+
return audit.passing.some((p) => p.code === code);
|
|
18
|
+
}
|
|
19
|
+
function hasFatalCode(audit, code) {
|
|
20
|
+
return audit.issues.some((i) => i.code === code && i.severity === 'fatal');
|
|
21
|
+
}
|
|
22
|
+
function clamp(value, max) {
|
|
23
|
+
return Math.min(Math.max(0, value), max);
|
|
24
|
+
}
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Core estimator
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
/**
|
|
29
|
+
* Estimate the 8-dimension skill-judge score from an {@link AuditResult}.
|
|
30
|
+
*
|
|
31
|
+
* Each dimension starts at a baseline and adds/deducts based on which audit
|
|
32
|
+
* checks pass or fail. Dimensions are capped at their respective maxima.
|
|
33
|
+
*
|
|
34
|
+
* @param audit - The completed audit result to score
|
|
35
|
+
* @param skill - Optional extracted skill; when provided, improvements include specific file/export targets
|
|
36
|
+
* @returns A {@link SkillJudgeEstimate} with dimension breakdown, total, grade, and improvements
|
|
37
|
+
*
|
|
38
|
+
* @category Audit
|
|
39
|
+
* @useWhen
|
|
40
|
+
* - You want a quick human-readable quality rating after running an audit
|
|
41
|
+
* - Building dashboards that track skill quality over time
|
|
42
|
+
* @avoidWhen
|
|
43
|
+
* - Using as a hard CI gate — prefer explicit audit codes (F1, E4, etc.) for gating
|
|
44
|
+
*/
|
|
45
|
+
export function estimateSkillJudgeScore(audit, skill) {
|
|
46
|
+
// --- D1: Knowledge Delta /20 ---
|
|
47
|
+
let d1 = 14;
|
|
48
|
+
if (passes(audit, 'W10'))
|
|
49
|
+
d1 += 3; // @remarks on complex functions
|
|
50
|
+
if (passes(audit, 'W1'))
|
|
51
|
+
d1 += 3; // @packageDocumentation >50 chars
|
|
52
|
+
if (hasFatalCode(audit, 'F4'))
|
|
53
|
+
d1 -= 5; // missing JSDoc on exports
|
|
54
|
+
d1 = clamp(d1, MAX_D1);
|
|
55
|
+
// --- D2: Procedures /15 ---
|
|
56
|
+
let d2 = 5;
|
|
57
|
+
if (passes(audit, 'W7'))
|
|
58
|
+
d2 += 5; // @useWhen
|
|
59
|
+
if (passes(audit, 'W8'))
|
|
60
|
+
d2 += 3; // @avoidWhen
|
|
61
|
+
if (passes(audit, 'E4'))
|
|
62
|
+
d2 += 2; // @example
|
|
63
|
+
d2 = clamp(d2, MAX_D2);
|
|
64
|
+
// --- D3: Anti-Patterns /15 ---
|
|
65
|
+
let d3 = 2;
|
|
66
|
+
if (passes(audit, 'W9'))
|
|
67
|
+
d3 += 8; // @never
|
|
68
|
+
if (passes(audit, 'W3'))
|
|
69
|
+
d3 += 3; // notable tags
|
|
70
|
+
if (passes(audit, 'W6'))
|
|
71
|
+
d3 += 2; // README troubleshooting
|
|
72
|
+
d3 = clamp(d3, MAX_D3);
|
|
73
|
+
// --- D4: Description /15 ---
|
|
74
|
+
let d4 = 5;
|
|
75
|
+
if (passes(audit, 'F1'))
|
|
76
|
+
d4 += 4; // package.json description
|
|
77
|
+
if (passes(audit, 'F3'))
|
|
78
|
+
d4 += 3; // README description
|
|
79
|
+
if (passes(audit, 'F2'))
|
|
80
|
+
d4 += 2; // keywords
|
|
81
|
+
if (passes(audit, 'E5'))
|
|
82
|
+
d4 += 1; // repository URL
|
|
83
|
+
d4 = clamp(d4, MAX_D4);
|
|
84
|
+
// --- D5: Progressive Disclosure /15 ---
|
|
85
|
+
let d5 = 10;
|
|
86
|
+
if (passes(audit, 'W11'))
|
|
87
|
+
d5 += 3; // @category
|
|
88
|
+
if (passes(audit, 'W5'))
|
|
89
|
+
d5 += 2; // README Features
|
|
90
|
+
d5 = clamp(d5, MAX_D5);
|
|
91
|
+
// --- D6: Freedom /15 ---
|
|
92
|
+
let d6 = 12;
|
|
93
|
+
if (passes(audit, 'W8'))
|
|
94
|
+
d6 += 3; // @avoidWhen
|
|
95
|
+
d6 = clamp(d6, MAX_D6);
|
|
96
|
+
// --- D7: Pattern /10 ---
|
|
97
|
+
let d7 = 5;
|
|
98
|
+
if (passes(audit, 'W11'))
|
|
99
|
+
d7 += 3; // @category
|
|
100
|
+
if (passes(audit, 'W7'))
|
|
101
|
+
d7 += 2; // @useWhen
|
|
102
|
+
d7 = clamp(d7, MAX_D7);
|
|
103
|
+
// --- D8: Usability /15 ---
|
|
104
|
+
let d8 = 5;
|
|
105
|
+
if (passes(audit, 'E1'))
|
|
106
|
+
d8 += 3; // @param
|
|
107
|
+
if (passes(audit, 'E2'))
|
|
108
|
+
d8 += 3; // @returns
|
|
109
|
+
if (passes(audit, 'E3'))
|
|
110
|
+
d8 += 2; // property JSDoc
|
|
111
|
+
if (passes(audit, 'E4'))
|
|
112
|
+
d8 += 2; // @example
|
|
113
|
+
d8 = clamp(d8, MAX_D8);
|
|
114
|
+
const total = d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8;
|
|
115
|
+
const percentage = Math.round((total / MAX_TOTAL) * 1000) / 10;
|
|
116
|
+
const grade = percentageToGrade(percentage);
|
|
117
|
+
const improvements = buildImprovements(audit, {
|
|
118
|
+
d1,
|
|
119
|
+
d2,
|
|
120
|
+
d3,
|
|
121
|
+
d4,
|
|
122
|
+
d5,
|
|
123
|
+
d6,
|
|
124
|
+
d7,
|
|
125
|
+
d8
|
|
126
|
+
}, skill);
|
|
127
|
+
return {
|
|
128
|
+
dimensions: {
|
|
129
|
+
d1_knowledgeDelta: d1,
|
|
130
|
+
d2_procedures: d2,
|
|
131
|
+
d3_antiPatterns: d3,
|
|
132
|
+
d4_description: d4,
|
|
133
|
+
d5_progressiveDisclosure: d5,
|
|
134
|
+
d6_freedom: d6,
|
|
135
|
+
d7_pattern: d7,
|
|
136
|
+
d8_usability: d8
|
|
137
|
+
},
|
|
138
|
+
total,
|
|
139
|
+
percentage,
|
|
140
|
+
grade,
|
|
141
|
+
improvements
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
// Grade calculation
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
function percentageToGrade(pct) {
|
|
148
|
+
if (pct >= 90)
|
|
149
|
+
return 'A';
|
|
150
|
+
if (pct >= 80)
|
|
151
|
+
return 'B';
|
|
152
|
+
if (pct >= 70)
|
|
153
|
+
return 'C';
|
|
154
|
+
if (pct >= 60)
|
|
155
|
+
return 'D';
|
|
156
|
+
return 'F';
|
|
157
|
+
}
|
|
158
|
+
function fileForModule(sourceModule) {
|
|
159
|
+
if (!sourceModule)
|
|
160
|
+
return 'src/';
|
|
161
|
+
return `src/${sourceModule}`;
|
|
162
|
+
}
|
|
163
|
+
/** Depth in source tree — fewer segments = higher priority (top-level exports first). */
|
|
164
|
+
function sourceDepth(sourceModule) {
|
|
165
|
+
if (!sourceModule)
|
|
166
|
+
return 0; // no source info = treat as top-level
|
|
167
|
+
return sourceModule.split('/').length;
|
|
168
|
+
}
|
|
169
|
+
/** Classes and functions missing a given tag, sorted by source tree depth (top-level first). */
|
|
170
|
+
function targetsForMissingTag(skill, tag, maxClasses = 5, maxFunctions = 3) {
|
|
171
|
+
const classTargets = skill.classes
|
|
172
|
+
.filter((c) => !c.tags[tag])
|
|
173
|
+
.sort((a, b) => sourceDepth(a.sourceModule) - sourceDepth(b.sourceModule))
|
|
174
|
+
.slice(0, maxClasses)
|
|
175
|
+
.map((c) => ({ file: fileForModule(c.sourceModule), name: c.name, kind: 'class' }));
|
|
176
|
+
const fnTargets = skill.functions
|
|
177
|
+
.filter((f) => !f.tags[tag])
|
|
178
|
+
.sort((a, b) => sourceDepth(a.sourceModule) - sourceDepth(b.sourceModule))
|
|
179
|
+
.slice(0, maxFunctions)
|
|
180
|
+
.map((f) => ({ file: fileForModule(f.sourceModule), name: f.name, kind: 'function' }));
|
|
181
|
+
// CLI command surfaces also carry useWhen / avoidWhen / pitfalls.
|
|
182
|
+
// Only emit targets for the tags that ExtractedConfigSurface actually holds.
|
|
183
|
+
const CLI_SURFACE_TAGS = new Set(['useWhen', 'avoidWhen', 'pitfalls']);
|
|
184
|
+
const cliTargets = CLI_SURFACE_TAGS.has(tag)
|
|
185
|
+
? (skill.configSurfaces ?? [])
|
|
186
|
+
// Empty array = no content = a gap, so treat it the same as a missing tag.
|
|
187
|
+
.filter((s) => s.sourceType === 'cli' && !s[tag]?.length)
|
|
188
|
+
.slice(0, maxFunctions)
|
|
189
|
+
.map((s) => ({ file: '', name: s.name, kind: 'command' }))
|
|
190
|
+
: [];
|
|
191
|
+
return [...classTargets, ...fnTargets, ...cliTargets];
|
|
192
|
+
}
|
|
193
|
+
/** Functions with 3+ parameters missing @remarks, sorted by source tree depth. */
|
|
194
|
+
function targetsForRemarks(skill) {
|
|
195
|
+
return skill.functions
|
|
196
|
+
.filter((f) => f.parameters.length >= 3 && !f.tags['remarks'])
|
|
197
|
+
.sort((a, b) => sourceDepth(a.sourceModule) - sourceDepth(b.sourceModule))
|
|
198
|
+
.slice(0, 5)
|
|
199
|
+
.map((f) => ({
|
|
200
|
+
file: fileForModule(f.sourceModule),
|
|
201
|
+
name: f.name,
|
|
202
|
+
kind: `function, ${f.parameters.length} params`
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* For each dimension below 80% of its max, suggest the audit fix that would
|
|
207
|
+
* help most. Return the top 3 by potential point gain.
|
|
208
|
+
*/
|
|
209
|
+
function buildImprovements(audit, dims, skill) {
|
|
210
|
+
const suggestions = [];
|
|
211
|
+
// D1: highest single-fix gain is W10 (+3) or W1 (+3)
|
|
212
|
+
if (dims.d1 < MAX_D1 * 0.8) {
|
|
213
|
+
if (!passes(audit, 'W10')) {
|
|
214
|
+
const targets = skill ? targetsForRemarks(skill) : undefined;
|
|
215
|
+
suggestions.push({
|
|
216
|
+
gain: 3,
|
|
217
|
+
imp: {
|
|
218
|
+
suggestion: 'Add @remarks to complex functions (3+ params) (+3 on D1)',
|
|
219
|
+
points: 3,
|
|
220
|
+
dimension: 'D1',
|
|
221
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
if (!passes(audit, 'W1')) {
|
|
226
|
+
suggestions.push({
|
|
227
|
+
gain: 3,
|
|
228
|
+
imp: {
|
|
229
|
+
suggestion: 'Add detailed @packageDocumentation description >50 chars (+3 on D1)',
|
|
230
|
+
points: 3,
|
|
231
|
+
dimension: 'D1'
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// D2: highest gain is W7 (+5)
|
|
237
|
+
if (dims.d2 < MAX_D2 * 0.8) {
|
|
238
|
+
if (!passes(audit, 'W7')) {
|
|
239
|
+
const targets = skill ? targetsForMissingTag(skill, 'useWhen') : undefined;
|
|
240
|
+
suggestions.push({
|
|
241
|
+
gain: 5,
|
|
242
|
+
imp: {
|
|
243
|
+
suggestion: 'Add @useWhen to key exports (+5 on D2)',
|
|
244
|
+
points: 5,
|
|
245
|
+
dimension: 'D2',
|
|
246
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
if (!passes(audit, 'W8')) {
|
|
251
|
+
const targets = skill ? targetsForMissingTag(skill, 'avoidWhen') : undefined;
|
|
252
|
+
suggestions.push({
|
|
253
|
+
gain: 3,
|
|
254
|
+
imp: {
|
|
255
|
+
suggestion: 'Add @avoidWhen to key exports (+3 on D2)',
|
|
256
|
+
points: 3,
|
|
257
|
+
dimension: 'D2',
|
|
258
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
if (!passes(audit, 'E4')) {
|
|
263
|
+
suggestions.push({
|
|
264
|
+
gain: 2,
|
|
265
|
+
imp: {
|
|
266
|
+
suggestion: 'Add @example code blocks (+2 on D2)',
|
|
267
|
+
points: 2,
|
|
268
|
+
dimension: 'D2'
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// D3: highest gain is W9 (+8)
|
|
274
|
+
if (dims.d3 < MAX_D3 * 0.8) {
|
|
275
|
+
if (!passes(audit, 'W9')) {
|
|
276
|
+
const targets = skill ? targetsForMissingTag(skill, 'pitfalls') : undefined;
|
|
277
|
+
suggestions.push({
|
|
278
|
+
gain: 8,
|
|
279
|
+
imp: {
|
|
280
|
+
suggestion: 'Add @pitfalls (never-do) annotation to key exports (+8 on D3)',
|
|
281
|
+
points: 8,
|
|
282
|
+
dimension: 'D3',
|
|
283
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
if (!passes(audit, 'W3')) {
|
|
288
|
+
suggestions.push({
|
|
289
|
+
gain: 3,
|
|
290
|
+
imp: {
|
|
291
|
+
suggestion: 'Add @deprecated/@since/@throws/@see tags (+3 on D3)',
|
|
292
|
+
points: 3,
|
|
293
|
+
dimension: 'D3'
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (!passes(audit, 'W6')) {
|
|
298
|
+
suggestions.push({
|
|
299
|
+
gain: 2,
|
|
300
|
+
imp: {
|
|
301
|
+
suggestion: 'Add README Troubleshooting section (+2 on D3)',
|
|
302
|
+
points: 2,
|
|
303
|
+
dimension: 'D3'
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// D4: highest gain is F1 (+4)
|
|
309
|
+
if (dims.d4 < MAX_D4 * 0.8) {
|
|
310
|
+
if (!passes(audit, 'F1')) {
|
|
311
|
+
suggestions.push({
|
|
312
|
+
gain: 4,
|
|
313
|
+
imp: {
|
|
314
|
+
suggestion: 'Add meaningful package.json description (+4 on D4)',
|
|
315
|
+
points: 4,
|
|
316
|
+
dimension: 'D4'
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
if (!passes(audit, 'F3')) {
|
|
321
|
+
suggestions.push({
|
|
322
|
+
gain: 3,
|
|
323
|
+
imp: {
|
|
324
|
+
suggestion: 'Add README description/blockquote (+3 on D4)',
|
|
325
|
+
points: 3,
|
|
326
|
+
dimension: 'D4'
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
if (!passes(audit, 'F2')) {
|
|
331
|
+
suggestions.push({
|
|
332
|
+
gain: 2,
|
|
333
|
+
imp: {
|
|
334
|
+
suggestion: 'Add 5+ domain-specific keywords (+2 on D4)',
|
|
335
|
+
points: 2,
|
|
336
|
+
dimension: 'D4'
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
if (!passes(audit, 'E5')) {
|
|
341
|
+
suggestions.push({
|
|
342
|
+
gain: 1,
|
|
343
|
+
imp: {
|
|
344
|
+
suggestion: 'Add repository URL to package.json (+1 on D4)',
|
|
345
|
+
points: 1,
|
|
346
|
+
dimension: 'D4'
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// D5: highest gain is W11 (+3)
|
|
352
|
+
if (dims.d5 < MAX_D5 * 0.8) {
|
|
353
|
+
if (!passes(audit, 'W11')) {
|
|
354
|
+
suggestions.push({
|
|
355
|
+
gain: 3,
|
|
356
|
+
imp: {
|
|
357
|
+
suggestion: 'Add @category for grouping (+3 on D5, +3 on D7)',
|
|
358
|
+
points: 3,
|
|
359
|
+
dimension: 'D5'
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
if (!passes(audit, 'W5')) {
|
|
364
|
+
suggestions.push({
|
|
365
|
+
gain: 2,
|
|
366
|
+
imp: {
|
|
367
|
+
suggestion: 'Add README Features section (+2 on D5)',
|
|
368
|
+
points: 2,
|
|
369
|
+
dimension: 'D5'
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// D6: only W8 (+3) — but D6 base is 12 so below 80% (12) rarely triggers unless W8 missing
|
|
375
|
+
if (dims.d6 < MAX_D6 * 0.8) {
|
|
376
|
+
if (!passes(audit, 'W8')) {
|
|
377
|
+
const targets = skill ? targetsForMissingTag(skill, 'avoidWhen') : undefined;
|
|
378
|
+
suggestions.push({
|
|
379
|
+
gain: 3,
|
|
380
|
+
imp: {
|
|
381
|
+
suggestion: 'Add @avoidWhen to key exports (+3 on D6)',
|
|
382
|
+
points: 3,
|
|
383
|
+
dimension: 'D6',
|
|
384
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// D7: W11 (+3), W7 (+2)
|
|
390
|
+
if (dims.d7 < MAX_D7 * 0.8) {
|
|
391
|
+
if (!passes(audit, 'W11')) {
|
|
392
|
+
// Avoid duplicate if already added from D5
|
|
393
|
+
const alreadySuggested = suggestions.some((s) => s.imp.suggestion.includes('@category for grouping'));
|
|
394
|
+
if (!alreadySuggested) {
|
|
395
|
+
suggestions.push({
|
|
396
|
+
gain: 3,
|
|
397
|
+
imp: {
|
|
398
|
+
suggestion: 'Add @category for grouping (+3 on D5, +3 on D7)',
|
|
399
|
+
points: 3,
|
|
400
|
+
dimension: 'D7'
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (!passes(audit, 'W7')) {
|
|
406
|
+
const alreadySuggested = suggestions.some((s) => s.imp.suggestion.includes('@useWhen to key exports'));
|
|
407
|
+
if (!alreadySuggested) {
|
|
408
|
+
const targets = skill ? targetsForMissingTag(skill, 'useWhen') : undefined;
|
|
409
|
+
suggestions.push({
|
|
410
|
+
gain: 2,
|
|
411
|
+
imp: {
|
|
412
|
+
suggestion: 'Add @useWhen to key exports (+2 on D7)',
|
|
413
|
+
points: 2,
|
|
414
|
+
dimension: 'D7',
|
|
415
|
+
targets: targets && targets.length > 0 ? targets : undefined
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
// D8: E1 (+3), E2 (+3), E3 (+2), E4 (+2)
|
|
422
|
+
if (dims.d8 < MAX_D8 * 0.8) {
|
|
423
|
+
if (!passes(audit, 'E1')) {
|
|
424
|
+
// Use audit issues to find specific symbols missing @param
|
|
425
|
+
const targets = audit.issues
|
|
426
|
+
.filter((i) => i.code === 'E1')
|
|
427
|
+
.slice(0, 5)
|
|
428
|
+
.map((i) => ({ file: i.file, name: i.symbol ?? '(unknown)', kind: 'function' }));
|
|
429
|
+
suggestions.push({
|
|
430
|
+
gain: 3,
|
|
431
|
+
imp: {
|
|
432
|
+
suggestion: 'Add @param descriptions to all parameters (+3 on D8)',
|
|
433
|
+
points: 3,
|
|
434
|
+
dimension: 'D8',
|
|
435
|
+
targets: targets.length > 0 ? targets : undefined
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
if (!passes(audit, 'E2')) {
|
|
440
|
+
const targets = audit.issues
|
|
441
|
+
.filter((i) => i.code === 'E2')
|
|
442
|
+
.slice(0, 5)
|
|
443
|
+
.map((i) => ({ file: i.file, name: i.symbol ?? '(unknown)', kind: 'function' }));
|
|
444
|
+
suggestions.push({
|
|
445
|
+
gain: 3,
|
|
446
|
+
imp: {
|
|
447
|
+
suggestion: 'Add @returns descriptions to non-void functions (+3 on D8)',
|
|
448
|
+
points: 3,
|
|
449
|
+
dimension: 'D8',
|
|
450
|
+
targets: targets.length > 0 ? targets : undefined
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
if (!passes(audit, 'E3')) {
|
|
455
|
+
suggestions.push({
|
|
456
|
+
gain: 2,
|
|
457
|
+
imp: {
|
|
458
|
+
suggestion: 'Add JSDoc to all interface/type properties (+2 on D8)',
|
|
459
|
+
points: 2,
|
|
460
|
+
dimension: 'D8'
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
if (!passes(audit, 'E4')) {
|
|
465
|
+
const alreadySuggested = suggestions.some((s) => s.imp.suggestion.includes('@example code blocks'));
|
|
466
|
+
if (!alreadySuggested) {
|
|
467
|
+
suggestions.push({
|
|
468
|
+
gain: 2,
|
|
469
|
+
imp: {
|
|
470
|
+
suggestion: 'Add @example code blocks (+2 on D8)',
|
|
471
|
+
points: 2,
|
|
472
|
+
dimension: 'D8'
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
// Sort by gain desc, deduplicate by suggestion text, take top 3
|
|
479
|
+
suggestions.sort((a, b) => b.gain - a.gain);
|
|
480
|
+
const seen = new Set();
|
|
481
|
+
const top = [];
|
|
482
|
+
for (const s of suggestions) {
|
|
483
|
+
if (!seen.has(s.imp.suggestion) && top.length < 3) {
|
|
484
|
+
seen.add(s.imp.suggestion);
|
|
485
|
+
top.push(s.imp);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
return top;
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=audit-score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-score.js","sourceRoot":"","sources":["../src/audit-score.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Severity levels for audit issues, ordered from most to least severe.
|
|
3
|
+
* - `fatal`: Disqualifying problems that prevent the skill from being used safely
|
|
4
|
+
* - `error`: Serious problems that significantly degrade skill quality
|
|
5
|
+
* - `warning`: Moderate problems that reduce skill effectiveness
|
|
6
|
+
* - `alert`: Minor issues or suggestions for improvement
|
|
7
|
+
*/
|
|
8
|
+
export type AuditSeverity = 'fatal' | 'error' | 'warning' | 'alert';
|
|
9
|
+
/**
|
|
10
|
+
* A single audit finding that identifies a problem in the skill package.
|
|
11
|
+
*/
|
|
12
|
+
export interface AuditIssue {
|
|
13
|
+
/** Severity level of this issue */
|
|
14
|
+
severity: AuditSeverity;
|
|
15
|
+
/** Short rule code, e.g. "F1", "E2", "W3", "A1" */
|
|
16
|
+
code: string;
|
|
17
|
+
/** Relative path to the file containing the issue */
|
|
18
|
+
file: string;
|
|
19
|
+
/** Line number within the file, or null if not applicable */
|
|
20
|
+
line: number | null;
|
|
21
|
+
/** Name of the function, class, or property related to the issue */
|
|
22
|
+
symbol: string;
|
|
23
|
+
/** Human-readable description of the problem */
|
|
24
|
+
message: string;
|
|
25
|
+
/** Actionable suggestion for how to fix the issue */
|
|
26
|
+
suggestion: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A check that the audit engine ran and the skill package passed.
|
|
30
|
+
*/
|
|
31
|
+
export interface AuditPass {
|
|
32
|
+
/** Short rule code corresponding to the passed check */
|
|
33
|
+
code: string;
|
|
34
|
+
/** Human-readable description of what was checked */
|
|
35
|
+
message: string;
|
|
36
|
+
/** Optional additional detail about the passing result */
|
|
37
|
+
detail?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Contextual metadata about the package being audited, used to evaluate
|
|
41
|
+
* relevance and quality of skill content.
|
|
42
|
+
*/
|
|
43
|
+
export interface AuditContext {
|
|
44
|
+
/** Description field from package.json */
|
|
45
|
+
packageDescription?: string;
|
|
46
|
+
/** Keywords from package.json */
|
|
47
|
+
keywords?: string[];
|
|
48
|
+
/** Repository URL from package.json */
|
|
49
|
+
repository?: string;
|
|
50
|
+
/** Parsed sections of the package README */
|
|
51
|
+
readme?: ParsedReadme;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Structured representation of key sections extracted from a package README.
|
|
55
|
+
*/
|
|
56
|
+
export interface ParsedReadme {
|
|
57
|
+
/** Leading blockquote, often used as a one-liner summary */
|
|
58
|
+
blockquote?: string;
|
|
59
|
+
/** First prose paragraph after any heading or blockquote */
|
|
60
|
+
firstParagraph?: string;
|
|
61
|
+
/** Quick-start or getting-started section content */
|
|
62
|
+
quickStart?: string;
|
|
63
|
+
/** Features or capabilities section content */
|
|
64
|
+
features?: string;
|
|
65
|
+
/** Troubleshooting, common issues, or FAQ section content */
|
|
66
|
+
troubleshooting?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The complete output of an audit run against a single skill package.
|
|
70
|
+
*/
|
|
71
|
+
export interface AuditResult {
|
|
72
|
+
/** Package name being audited */
|
|
73
|
+
package: string;
|
|
74
|
+
/** Count of issues found at each severity level */
|
|
75
|
+
summary: Record<AuditSeverity, number>;
|
|
76
|
+
/** All issues found during the audit */
|
|
77
|
+
issues: AuditIssue[];
|
|
78
|
+
/** All checks that the package passed */
|
|
79
|
+
passing: AuditPass[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=audit-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-types.d.ts","sourceRoot":"","sources":["../src/audit-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvC,wCAAwC;IACxC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-types.js","sourceRoot":"","sources":["../src/audit-types.ts"],"names":[],"mappings":""}
|
package/dist/audit.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExtractedSkill } from './types.js';
|
|
2
|
+
import type { AuditContext, AuditResult } from './audit-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Run the documentation audit on a single extracted skill.
|
|
5
|
+
*
|
|
6
|
+
* Executes 20+ checks across fatal/error/warning/alert severity levels and returns
|
|
7
|
+
* a structured result with issues, passing checks, and summary counts.
|
|
8
|
+
*
|
|
9
|
+
* @category Audit
|
|
10
|
+
* @useWhen
|
|
11
|
+
* - You want programmatic quality feedback on JSDoc coverage before publishing skills
|
|
12
|
+
* - Building a CI gate that blocks PRs with undocumented exports
|
|
13
|
+
* @avoidWhen
|
|
14
|
+
* - Rapid local iteration where audit noise slows you down — use the skillsAudit: false option instead
|
|
15
|
+
*/
|
|
16
|
+
export declare function auditSkill(skill: ExtractedSkill, context: AuditContext): AuditResult;
|
|
17
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EAGZ,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAg7B1B;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,CAwCpF"}
|