onion-check 2.0.1 → 2.0.2
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/dist/core/layers.js +1 -1
- package/dist/generators/index.js +2 -2
- package/dist/generators/skills.js +1 -1
- package/dist/interactive/consultant.d.ts +1 -1
- package/dist/interactive/consultant.d.ts.map +1 -1
- package/dist/interactive/consultant.js +504 -111
- package/dist/interactive/consultant.js.map +1 -1
- package/dist/interactive/diagnostic.js +1 -1
- package/dist/interactive/diagnostic.js.map +1 -1
- package/dist/scaffold/generator.js +2 -2
- package/dist/scaffold/templates.js +2 -2
- package/package.json +1 -1
package/dist/core/layers.js
CHANGED
|
@@ -113,7 +113,7 @@ export const LAYERS = [
|
|
|
113
113
|
slug: 'skills',
|
|
114
114
|
description: 'Packaged capabilities that encode domain expertise into repeatable, deployable units.',
|
|
115
115
|
whyCritical: 'Without skills, the model is a generalist with context — consistent, on-brand, and mediocre.',
|
|
116
|
-
gapAnalysis: 'No skills layer detected. Your AI has context but no encoded expertise. Add skills to make it a specialist. Visit https://skillstack.
|
|
116
|
+
gapAnalysis: 'No skills layer detected. Your AI has context but no encoded expertise. Add skills to make it a specialist. Visit https://skillstack.me to find production-ready skills.',
|
|
117
117
|
weight: 1.0,
|
|
118
118
|
detectionPatterns: [
|
|
119
119
|
{
|
package/dist/generators/index.js
CHANGED
|
@@ -124,7 +124,7 @@ logs/
|
|
|
124
124
|
console.log(c.white(' 3. Review CLAUDE.md and customize further'));
|
|
125
125
|
console.log(c.white(' 4. Run ' + c.cyan('npx onion-check') + ' to verify your score'));
|
|
126
126
|
if (config.layers.skills.marketplace) {
|
|
127
|
-
console.log(c.white(' 5. Browse ' + c.cyan('https://skillstack.
|
|
127
|
+
console.log(c.white(' 5. Browse ' + c.cyan('https://skillstack.me') + ' for production skills'));
|
|
128
128
|
}
|
|
129
129
|
console.log('');
|
|
130
130
|
console.log(c.dim(` Full spec: ${c.cyan('https://github.com/michaeldavidson/onion-architecture')}`));
|
|
@@ -269,7 +269,7 @@ ${config.name}/
|
|
|
269
269
|
## Learn More
|
|
270
270
|
|
|
271
271
|
- [The Onion Architecture](https://github.com/michaeldavidson/onion-architecture)
|
|
272
|
-
- [SkillStack](https://skillstack.
|
|
272
|
+
- [SkillStack](https://skillstack.me) — Production-ready AI skills
|
|
273
273
|
`;
|
|
274
274
|
}
|
|
275
275
|
//# sourceMappingURL=index.js.map
|
|
@@ -234,7 +234,7 @@ export const skillsGenerator = {
|
|
|
234
234
|
const remainingDomains = domains.filter(d => !expertiseList.find(e => e.domain === d));
|
|
235
235
|
if (remainingDomains.length > 0) {
|
|
236
236
|
console.log(`\n \x1b[90mFor domains where you don't have in-house expertise yet (${remainingDomains.join(', ')}),`);
|
|
237
|
-
console.log(' you can find pre-built production skills at https://skillstack.
|
|
237
|
+
console.log(' you can find pre-built production skills at https://skillstack.me\x1b[0m\n');
|
|
238
238
|
ctx.config.layers.skills.marketplace = true;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
@@ -10,5 +10,5 @@ export interface LayerBriefing {
|
|
|
10
10
|
modelAdvice?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare function getLayerBriefing(layerNumber: number, ctx: ProjectContext): LayerBriefing;
|
|
13
|
-
export declare function getContextualRecommendations(layerNumber: number, detected: boolean, contentScore: number, ctx: ProjectContext): Recommendation[];
|
|
13
|
+
export declare function getContextualRecommendations(layerNumber: number, detected: boolean, contentScore: number, ctx: ProjectContext, evidence?: string[]): Recommendation[];
|
|
14
14
|
//# sourceMappingURL=consultant.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consultant.d.ts","sourceRoot":"","sources":["../../src/interactive/consultant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,aAAa,CAYxF;AAsPD,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,cAAc,GAClB,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"consultant.d.ts","sourceRoot":"","sources":["../../src/interactive/consultant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,aAAa,CAYxF;AAsPD,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,EAAE,CAalB"}
|
|
@@ -84,22 +84,22 @@ function getSkillsBriefing(ctx) {
|
|
|
84
84
|
let whyForYou;
|
|
85
85
|
switch (ctx.type) {
|
|
86
86
|
case 'agency':
|
|
87
|
-
whyForYou = `For agency work, you want client-specific skills: report generation in their format, content creation in their voice, communications that match their protocols. I've seen agencies build one generic "writing" skill and wonder why every client's output sounds the same. Each client should feel like they have a dedicated specialist, not a shared resource. Browse skillstack.
|
|
87
|
+
whyForYou = `For agency work, you want client-specific skills: report generation in their format, content creation in their voice, communications that match their protocols. I've seen agencies build one generic "writing" skill and wonder why every client's output sounds the same. Each client should feel like they have a dedicated specialist, not a shared resource. Browse skillstack.me \u2014 there are production-ready skills for common agency workflows that save weeks of iteration.`;
|
|
88
88
|
break;
|
|
89
89
|
case 'saas':
|
|
90
|
-
whyForYou = `For SaaS, your skills should map to your product's core workflows: onboarding, support ticket resolution, feature explanation, analytics interpretation. Each skill should handle edge cases that your users actually hit, not theoretical ones. The first version of every skill is always too generic. The production version handles the 20% of cases that cause 80% of support tickets. Check skillstack.
|
|
90
|
+
whyForYou = `For SaaS, your skills should map to your product's core workflows: onboarding, support ticket resolution, feature explanation, analytics interpretation. Each skill should handle edge cases that your users actually hit, not theoretical ones. The first version of every skill is always too generic. The production version handles the 20% of cases that cause 80% of support tickets. Check skillstack.me for skills that match your domain.`;
|
|
91
91
|
break;
|
|
92
92
|
case 'content':
|
|
93
|
-
whyForYou = `Content platforms need domain-specific skills: SEO optimization, editorial workflows, content formatting for different distribution channels, headline testing. Generic "write an article" skills produce generic articles. You need skills that encode your editorial standards, your audience's expectations, and the specific patterns that drive engagement in your niche. skillstack.
|
|
93
|
+
whyForYou = `Content platforms need domain-specific skills: SEO optimization, editorial workflows, content formatting for different distribution channels, headline testing. Generic "write an article" skills produce generic articles. You need skills that encode your editorial standards, your audience's expectations, and the specific patterns that drive engagement in your niche. skillstack.me has production-ready content skills worth checking.`;
|
|
94
94
|
break;
|
|
95
95
|
case 'support':
|
|
96
|
-
whyForYou = `Support systems need skills for: ticket classification, response generation by category, escalation detection, sentiment analysis, and resolution verification. Each skill should encode your product's common failure modes and the exact steps to resolve them. I've seen support skills that give technically correct but procedurally wrong answers \u2014 telling users to do step 4 before step 2. Order matters in support. skillstack.
|
|
96
|
+
whyForYou = `Support systems need skills for: ticket classification, response generation by category, escalation detection, sentiment analysis, and resolution verification. Each skill should encode your product's common failure modes and the exact steps to resolve them. I've seen support skills that give technically correct but procedurally wrong answers \u2014 telling users to do step 4 before step 2. Order matters in support. skillstack.me has pre-built support workflow skills.`;
|
|
97
97
|
break;
|
|
98
98
|
case 'marketplace':
|
|
99
|
-
whyForYou = `Marketplaces need skills for both sides: seller onboarding, listing optimization, buyer matching, dispute resolution, fraud detection. Each skill needs to encode your marketplace's specific rules and patterns. A dispute resolution skill that doesn't know your refund policy is worse than no skill at all. Check skillstack.
|
|
99
|
+
whyForYou = `Marketplaces need skills for both sides: seller onboarding, listing optimization, buyer matching, dispute resolution, fraud detection. Each skill needs to encode your marketplace's specific rules and patterns. A dispute resolution skill that doesn't know your refund policy is worse than no skill at all. Check skillstack.me for marketplace-specific skills.`;
|
|
100
100
|
break;
|
|
101
101
|
default:
|
|
102
|
-
whyForYou = `Start with 3-5 skills that cover your most common workflows. Each skill should be specific enough to handle edge cases, not just the happy path. The test of a good skill is whether it handles the scenario that makes a new hire ask their manager for help. That edge case handling is what separates production skills from demos. Browse skillstack.
|
|
102
|
+
whyForYou = `Start with 3-5 skills that cover your most common workflows. Each skill should be specific enough to handle edge cases, not just the happy path. The test of a good skill is whether it handles the scenario that makes a new hire ask their manager for help. That edge case handling is what separates production skills from demos. Browse skillstack.me for skills in your domain.`;
|
|
103
103
|
break;
|
|
104
104
|
}
|
|
105
105
|
return { intro, whyForYou };
|
|
@@ -219,37 +219,106 @@ function getEvaluationBriefing(ctx) {
|
|
|
219
219
|
// ---------------------------------------------------------------------------
|
|
220
220
|
// Contextual Recommendations — replaces generic getRecommendations
|
|
221
221
|
// ---------------------------------------------------------------------------
|
|
222
|
-
export function getContextualRecommendations(layerNumber, detected, contentScore, ctx) {
|
|
222
|
+
export function getContextualRecommendations(layerNumber, detected, contentScore, ctx, evidence) {
|
|
223
|
+
const ev = evidence ?? [];
|
|
223
224
|
switch (layerNumber) {
|
|
224
|
-
case 1: return getModelRecs(detected, contentScore, ctx);
|
|
225
|
-
case 2: return getContextRecs(detected, contentScore, ctx);
|
|
226
|
-
case 3: return getSkillsRecs(detected, contentScore, ctx);
|
|
227
|
-
case 4: return getToolsRecs(detected, contentScore, ctx);
|
|
228
|
-
case 5: return getOrchestrationRecs(detected, contentScore, ctx);
|
|
229
|
-
case 6: return getSecurityRecs(detected, contentScore, ctx);
|
|
230
|
-
case 7: return getGovernanceRecs(detected, contentScore, ctx);
|
|
231
|
-
case 8: return getEvaluationRecs(detected, contentScore, ctx);
|
|
225
|
+
case 1: return getModelRecs(detected, contentScore, ctx, ev);
|
|
226
|
+
case 2: return getContextRecs(detected, contentScore, ctx, ev);
|
|
227
|
+
case 3: return getSkillsRecs(detected, contentScore, ctx, ev);
|
|
228
|
+
case 4: return getToolsRecs(detected, contentScore, ctx, ev);
|
|
229
|
+
case 5: return getOrchestrationRecs(detected, contentScore, ctx, ev);
|
|
230
|
+
case 6: return getSecurityRecs(detected, contentScore, ctx, ev);
|
|
231
|
+
case 7: return getGovernanceRecs(detected, contentScore, ctx, ev);
|
|
232
|
+
case 8: return getEvaluationRecs(detected, contentScore, ctx, ev);
|
|
232
233
|
default: return [];
|
|
233
234
|
}
|
|
234
235
|
}
|
|
236
|
+
// ---------------------------------------------------------------------------
|
|
237
|
+
// Evidence parsing helpers
|
|
238
|
+
// ---------------------------------------------------------------------------
|
|
239
|
+
function evidenceHas(evidence, ...keywords) {
|
|
240
|
+
return keywords.some(kw => evidence.some(e => e.toLowerCase().includes(kw.toLowerCase())));
|
|
241
|
+
}
|
|
242
|
+
function evidenceGet(evidence, keyword) {
|
|
243
|
+
return evidence.find(e => e.toLowerCase().includes(keyword.toLowerCase()));
|
|
244
|
+
}
|
|
245
|
+
function extractEntryCount(evidenceStr) {
|
|
246
|
+
const match = evidenceStr.match(/\((\d+)\s*entr/);
|
|
247
|
+
return match ? parseInt(match[1], 10) : null;
|
|
248
|
+
}
|
|
235
249
|
// ---- Layer 1: Model Recommendations ----
|
|
236
|
-
function getModelRecs(detected, score, ctx) {
|
|
250
|
+
function getModelRecs(detected, score, ctx, evidence) {
|
|
237
251
|
const recs = [];
|
|
252
|
+
const hasEnvFile = evidenceHas(evidence, '.env');
|
|
253
|
+
const hasEnvExample = evidenceHas(evidence, '.env.example');
|
|
254
|
+
const hasClaudeSettings = evidenceHas(evidence, '.claude/settings', 'Claude Code configuration');
|
|
255
|
+
const hasSDK = evidenceHas(evidence, 'package.json', 'AI SDK');
|
|
256
|
+
const hasPythonDep = evidenceHas(evidence, 'requirements.txt', 'pyproject.toml', 'Pipfile');
|
|
257
|
+
const hasModelConfig = evidenceHas(evidence, 'Model config', 'ai.config');
|
|
258
|
+
const hasOnionConfig = evidenceHas(evidence, 'onion.config');
|
|
259
|
+
const hasVSCodeExt = evidenceHas(evidence, 'VS Code extensions');
|
|
260
|
+
const hasFramework = evidenceHas(evidence, 'framework detected');
|
|
238
261
|
if (!detected) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
:
|
|
245
|
-
|
|
262
|
+
// Even when not detected, evidence may exist but scored below threshold
|
|
263
|
+
if (hasClaudeSettings && !hasEnvFile && !hasSDK && !hasPythonDep) {
|
|
264
|
+
recs.push({
|
|
265
|
+
priority: 'critical',
|
|
266
|
+
message: 'You have Claude Code configured for development, but the project itself has no production model setup.',
|
|
267
|
+
action: ctx.stack === 'python'
|
|
268
|
+
? 'Install the anthropic package (pip install anthropic) and create a .env with ANTHROPIC_API_KEY. Claude Code handles your dev workflow but your deployed system needs its own model access.'
|
|
269
|
+
: 'Add @anthropic-ai/sdk to your package.json and create a .env with ANTHROPIC_API_KEY. Claude Code handles your dev workflow but your deployed system needs its own credentials.',
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
else if (hasVSCodeExt && !hasEnvFile && !hasSDK) {
|
|
273
|
+
recs.push({
|
|
274
|
+
priority: 'critical',
|
|
275
|
+
message: 'You have AI-powered VS Code extensions but no model configuration in the project itself.',
|
|
276
|
+
action: 'Editor extensions give you AI assistance while coding, but the project needs its own model integration. Add an API key in .env and an AI SDK in your dependencies.',
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
recs.push({
|
|
281
|
+
priority: 'critical',
|
|
282
|
+
message: 'No AI model configuration found anywhere in this project.',
|
|
283
|
+
action: ctx.stack === 'python'
|
|
284
|
+
? 'Install the anthropic package (pip install anthropic) and create a .env with ANTHROPIC_API_KEY=sk-ant-... \u2014 or add your preferred model SDK.'
|
|
285
|
+
: 'Add @anthropic-ai/sdk to your package.json and create a .env with ANTHROPIC_API_KEY=sk-ant-... \u2014 this is the minimum to get started.',
|
|
286
|
+
});
|
|
287
|
+
}
|
|
246
288
|
return recs;
|
|
247
289
|
}
|
|
290
|
+
// Detected but low score - identify what's missing
|
|
248
291
|
if (score < 50) {
|
|
292
|
+
const found = [];
|
|
293
|
+
const missing = [];
|
|
294
|
+
if (hasClaudeSettings)
|
|
295
|
+
found.push('Claude Code settings');
|
|
296
|
+
if (hasEnvFile)
|
|
297
|
+
found.push('.env with API key');
|
|
298
|
+
if (hasEnvExample)
|
|
299
|
+
found.push('.env.example');
|
|
300
|
+
if (hasSDK)
|
|
301
|
+
found.push('AI SDK in dependencies');
|
|
302
|
+
if (hasPythonDep)
|
|
303
|
+
found.push('AI package in Python deps');
|
|
304
|
+
if (hasModelConfig)
|
|
305
|
+
found.push('model config file');
|
|
306
|
+
if (!hasEnvFile && !hasEnvExample)
|
|
307
|
+
missing.push('no .env with real API credentials');
|
|
308
|
+
if (!hasSDK && !hasPythonDep)
|
|
309
|
+
missing.push('no AI SDK in your dependencies');
|
|
310
|
+
if (!hasModelConfig && !hasOnionConfig)
|
|
311
|
+
missing.push('no model configuration file');
|
|
312
|
+
const foundStr = found.length > 0 ? `You have ${found.join(' and ')}` : 'Your model layer is minimal';
|
|
313
|
+
const missingStr = missing.length > 0 ? ` but ${missing.join(', ')}` : '';
|
|
249
314
|
recs.push({
|
|
250
315
|
priority: 'important',
|
|
251
|
-
message:
|
|
252
|
-
action:
|
|
316
|
+
message: `${foundStr}${missingStr}.`,
|
|
317
|
+
action: hasClaudeSettings && !hasEnvFile
|
|
318
|
+
? 'Claude Code handles your dev workflow, but the project needs production credentials. Create a .env with your API key and add the SDK to your dependencies.'
|
|
319
|
+
: hasEnvExample && !hasEnvFile
|
|
320
|
+
? 'Your .env.example shows you know you need credentials, but they\'re not configured yet. Copy .env.example to .env and fill in your real API key.'
|
|
321
|
+
: 'Replace placeholder values with real credentials and add an AI SDK to your project dependencies.',
|
|
253
322
|
});
|
|
254
323
|
}
|
|
255
324
|
if (ctx.scale === 'mid' || ctx.scale === 'enterprise') {
|
|
@@ -259,10 +328,10 @@ function getModelRecs(detected, score, ctx) {
|
|
|
259
328
|
action: 'Route by task complexity: cheap models (Haiku) for classification, extraction, and simple lookups. Mid-tier (Sonnet) for standard generation. Premium (Opus) for complex reasoning and multi-step analysis. This typically saves 40-60% with zero quality loss on routed tasks.',
|
|
260
329
|
});
|
|
261
330
|
}
|
|
262
|
-
if (score >= 50) {
|
|
331
|
+
if (score >= 50 && !hasEnvExample && hasEnvFile) {
|
|
263
332
|
recs.push({
|
|
264
333
|
priority: 'suggestion',
|
|
265
|
-
message: '
|
|
334
|
+
message: 'You have a .env but no .env.example for onboarding.',
|
|
266
335
|
action: ctx.scale === 'solo'
|
|
267
336
|
? 'Future you will thank present you when you set this up on a new machine. Copy .env to .env.example and blank out the actual keys.'
|
|
268
337
|
: 'New team members should be able to onboard by copying .env.example to .env and filling in their keys. Saves 30 minutes of "how do I set this up?" per person.',
|
|
@@ -278,77 +347,166 @@ function getModelRecs(detected, score, ctx) {
|
|
|
278
347
|
return recs;
|
|
279
348
|
}
|
|
280
349
|
// ---- Layer 2: Context Recommendations ----
|
|
281
|
-
function getContextRecs(detected, score, ctx) {
|
|
350
|
+
function getContextRecs(detected, score, ctx, evidence) {
|
|
282
351
|
const recs = [];
|
|
352
|
+
const hasClaudeMd = evidenceHas(evidence, 'CLAUDE.md', 'Claude Code instructions');
|
|
353
|
+
const hasCursorRules = evidenceHas(evidence, '.cursorrules', 'Cursor rules');
|
|
354
|
+
const hasAgentsMd = evidenceHas(evidence, 'AGENTS.md');
|
|
355
|
+
const hasContextDir = evidenceHas(evidence, 'Context directory');
|
|
356
|
+
const hasKnowledgeDir = evidenceHas(evidence, 'Knowledge base');
|
|
357
|
+
const hasPromptsDir = evidenceHas(evidence, 'Prompts directory');
|
|
358
|
+
const hasSystemPrompts = evidenceHas(evidence, 'System prompt');
|
|
359
|
+
// Extract entry counts from context/knowledge dirs
|
|
360
|
+
const contextDirEvidence = evidenceGet(evidence, 'Context directory');
|
|
361
|
+
const contextDirCount = contextDirEvidence ? extractEntryCount(contextDirEvidence) : null;
|
|
362
|
+
const knowledgeDirEvidence = evidenceGet(evidence, 'Knowledge base');
|
|
363
|
+
const knowledgeDirCount = knowledgeDirEvidence ? extractEntryCount(knowledgeDirEvidence) : null;
|
|
283
364
|
if (!detected) {
|
|
284
365
|
const contextType = ctx.type === 'agency' ? 'client preferences, communication standards, and project knowledge'
|
|
285
366
|
: ctx.type === 'saas' ? 'product domain, user personas, and quality standards'
|
|
286
367
|
: ctx.type === 'support' ? 'product knowledge, escalation rules, and brand voice'
|
|
287
368
|
: 'business rules, terminology, and quality standards';
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
369
|
+
if (hasSystemPrompts && !hasClaudeMd) {
|
|
370
|
+
recs.push({
|
|
371
|
+
priority: 'critical',
|
|
372
|
+
message: 'You have system prompt files but no CLAUDE.md \u2014 your runtime context exists but your development-time AI has no project knowledge.',
|
|
373
|
+
action: `Create a CLAUDE.md at your project root that mirrors your system prompt's key rules. The AI that helps you build the system needs the same domain knowledge as the system itself.`,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
recs.push({
|
|
378
|
+
priority: 'critical',
|
|
379
|
+
message: `Your AI knows nothing about your business. It's a smart generalist producing generic output.`,
|
|
380
|
+
action: `Create a CLAUDE.md at your project root with ${contextType}. Aim for 500+ words of real institutional knowledge \u2014 not boilerplate, the actual things a new hire would need to know in their first month.`,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
293
383
|
return recs;
|
|
294
384
|
}
|
|
385
|
+
// Detected but low score - be specific about what's thin
|
|
295
386
|
if (score < 50) {
|
|
387
|
+
const found = [];
|
|
388
|
+
const gaps = [];
|
|
389
|
+
if (hasClaudeMd)
|
|
390
|
+
found.push('CLAUDE.md');
|
|
391
|
+
if (hasCursorRules)
|
|
392
|
+
found.push('.cursorrules');
|
|
393
|
+
if (hasContextDir)
|
|
394
|
+
found.push(`context/ directory${contextDirCount ? ` with ${contextDirCount} files` : ''}`);
|
|
395
|
+
if (hasKnowledgeDir)
|
|
396
|
+
found.push(`knowledge/ directory${knowledgeDirCount ? ` with ${knowledgeDirCount} files` : ''}`);
|
|
397
|
+
// A low score with CLAUDE.md means the file is too short or lacks rule keywords
|
|
398
|
+
if (hasClaudeMd && score < 30) {
|
|
399
|
+
gaps.push('your CLAUDE.md is too short to encode real institutional knowledge');
|
|
400
|
+
}
|
|
401
|
+
if (hasClaudeMd && !evidenceHas(evidence, 'rule keywords')) {
|
|
402
|
+
// We can't check this from evidence directly, but a low score with CLAUDE.md
|
|
403
|
+
// usually means it's missing rules — the content validator checks for must/never/always
|
|
404
|
+
gaps.push('it\'s missing rule keywords (must, never, always, don\'t) which means the AI has no firm behavioral boundaries');
|
|
405
|
+
}
|
|
406
|
+
if (!hasContextDir && !hasKnowledgeDir) {
|
|
407
|
+
gaps.push('no context/ or knowledge/ directory for reference documents');
|
|
408
|
+
}
|
|
409
|
+
const foundStr = found.length > 0 ? `You have ${found.join(', ')}` : 'Your context layer exists';
|
|
410
|
+
const gapStr = gaps.length > 0 ? ` but ${gaps.join(', and ')}` : ' but it\'s too thin to make a real difference';
|
|
296
411
|
recs.push({
|
|
297
412
|
priority: 'important',
|
|
298
|
-
message:
|
|
413
|
+
message: `${foundStr}${gapStr}.`,
|
|
299
414
|
action: ctx.type === 'agency'
|
|
300
|
-
? 'Add client-specific context: their communication preferences, forbidden phrases, approval workflows, and the unwritten rules that live in your senior team\'s heads.
|
|
301
|
-
: 'Expand with domain-specific knowledge
|
|
415
|
+
? 'Add client-specific context: their communication preferences, forbidden phrases, approval workflows, and the unwritten rules that live in your senior team\'s heads. Add explicit rules using must/never/always keywords so the AI has clear behavioral boundaries.'
|
|
416
|
+
: 'Expand with domain-specific knowledge and add explicit rules using must/never/always keywords. Generic context produces generic output \u2014 the AI needs to know what it must do, what it must never do, and what good output looks like in your specific domain.',
|
|
302
417
|
});
|
|
303
418
|
}
|
|
419
|
+
// Mid-score: context exists but could be better organized
|
|
304
420
|
if (score >= 50 && score < 80) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
421
|
+
if (hasClaudeMd && !hasContextDir && !hasKnowledgeDir) {
|
|
422
|
+
recs.push({
|
|
423
|
+
priority: 'suggestion',
|
|
424
|
+
message: 'All your context lives in CLAUDE.md \u2014 that works until it doesn\'t.',
|
|
425
|
+
action: ctx.type === 'agency'
|
|
426
|
+
? 'Create a context/ directory with per-client files (context/client-acme.md, context/client-initech.md). Each agent interaction should load only the relevant client context \u2014 cross-contamination between client styles is a real risk.'
|
|
427
|
+
: 'Create a context/ directory with separate files for different domains (context/support.md, context/engineering.md). Monolithic context files get bloated fast and slow down every interaction.',
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
else if (hasContextDir && contextDirCount && contextDirCount < 3) {
|
|
431
|
+
recs.push({
|
|
432
|
+
priority: 'suggestion',
|
|
433
|
+
message: `Your context/ directory has ${contextDirCount} file${contextDirCount === 1 ? '' : 's'} \u2014 a start, but probably not the full picture.`,
|
|
434
|
+
action: 'Think about what a new hire would need in their first month: terminology, quality standards, communication preferences, common mistakes, process documents. Each one is a context file.',
|
|
435
|
+
});
|
|
436
|
+
}
|
|
312
437
|
}
|
|
313
|
-
if (score >= 50) {
|
|
438
|
+
if (score >= 50 && !hasKnowledgeDir) {
|
|
314
439
|
recs.push({
|
|
315
440
|
priority: 'suggestion',
|
|
316
|
-
message:
|
|
317
|
-
|
|
441
|
+
message: hasContextDir
|
|
442
|
+
? 'You have context/ but no knowledge/ directory for deeper reference documents.'
|
|
443
|
+
: 'Add a knowledge/ directory with reference documents.',
|
|
444
|
+
action: 'SOPs, style guides, and domain-specific references let the AI go deeper than instructions files allow. Think of it as the difference between giving someone a job description and giving them the entire employee handbook.',
|
|
318
445
|
});
|
|
319
446
|
}
|
|
320
447
|
return recs;
|
|
321
448
|
}
|
|
322
449
|
// ---- Layer 3: Skills Recommendations ----
|
|
323
|
-
function getSkillsRecs(detected, score, ctx) {
|
|
450
|
+
function getSkillsRecs(detected, score, ctx, evidence) {
|
|
324
451
|
const recs = [];
|
|
452
|
+
const hasClaudeSkills = evidenceHas(evidence, '.claude/skills', 'Claude Code skills');
|
|
453
|
+
const hasSkillsDir = evidenceHas(evidence, 'Skills directory');
|
|
454
|
+
const hasSkillFiles = evidenceHas(evidence, 'Skill definition files');
|
|
455
|
+
const claudeSkillsEvidence = evidenceGet(evidence, '.claude/skills') || evidenceGet(evidence, 'Claude Code skills');
|
|
456
|
+
const skillsDirEvidence = evidenceGet(evidence, 'Skills directory');
|
|
457
|
+
const claudeSkillCount = claudeSkillsEvidence ? extractEntryCount(claudeSkillsEvidence) : null;
|
|
458
|
+
const skillsDirCount = skillsDirEvidence ? extractEntryCount(skillsDirEvidence) : null;
|
|
459
|
+
const totalSkills = (claudeSkillCount || 0) + (skillsDirCount || 0);
|
|
325
460
|
if (!detected) {
|
|
326
461
|
recs.push({
|
|
327
462
|
priority: 'critical',
|
|
328
463
|
message: 'No skills layer. Your AI is a generalist \u2014 consistently adequate, never excellent.',
|
|
329
464
|
action: ctx.type === 'agency'
|
|
330
|
-
? 'Create a skills/ directory with client-specific skills: report generation, content creation, communications. Each skill should encode the exact format and quality your clients expect. Browse skillstack.
|
|
331
|
-
: 'Create a skills/ or .claude/skills/ directory with domain-specific skill files. Each skill should handle a complete workflow with edge case documentation. Visit skillstack.
|
|
465
|
+
? 'Create a skills/ directory with client-specific skills: report generation, content creation, communications. Each skill should encode the exact format and quality your clients expect. Browse skillstack.me for production-ready agency skills.'
|
|
466
|
+
: 'Create a skills/ or .claude/skills/ directory with domain-specific skill files. Each skill should handle a complete workflow with edge case documentation. Visit skillstack.me for production-ready skills in your domain.',
|
|
332
467
|
});
|
|
333
468
|
return recs;
|
|
334
469
|
}
|
|
470
|
+
// Detected but low score - skills exist but are thin
|
|
335
471
|
if (score < 50) {
|
|
472
|
+
const locations = [];
|
|
473
|
+
if (hasClaudeSkills && claudeSkillCount)
|
|
474
|
+
locations.push(`${claudeSkillCount} in .claude/skills/`);
|
|
475
|
+
if (hasSkillsDir && skillsDirCount)
|
|
476
|
+
locations.push(`${skillsDirCount} in skills/`);
|
|
477
|
+
const locationStr = locations.length > 0 ? locations.join(' and ') : 'your skills directory';
|
|
336
478
|
recs.push({
|
|
337
479
|
priority: 'important',
|
|
338
|
-
message:
|
|
339
|
-
action: 'Each skill needs: clear instructions, input/output format specs,
|
|
480
|
+
message: `You have ${locationStr}, but the skills lack substance \u2014 they're too short or missing decision logic.`,
|
|
481
|
+
action: 'Each skill needs: clear instructions (200+ chars minimum), input/output format specs, decision framework keywords (if/when/steps/process), and edge case handling. A skill that only handles the happy path will fail on the 20% of cases that cause 80% of your problems.',
|
|
340
482
|
});
|
|
341
483
|
}
|
|
342
|
-
|
|
484
|
+
// High volume of skills - different concern
|
|
485
|
+
if (totalSkills > 20) {
|
|
343
486
|
recs.push({
|
|
344
487
|
priority: 'suggestion',
|
|
345
|
-
message:
|
|
346
|
-
action: '
|
|
488
|
+
message: `You have ${totalSkills} skills across ${hasClaudeSkills && hasSkillsDir ? 'two directories' : 'your skills directory'} \u2014 that's extensive.`,
|
|
489
|
+
action: 'At this volume, the risk is skill overlap and inconsistency. Audit for duplicate coverage, add a skills index document that maps each skill to its use case, and consider which skills could be consolidated.',
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
else if (score >= 50 && totalSkills > 0 && totalSkills <= 20) {
|
|
493
|
+
// Moderate skill count - suggest edge case docs
|
|
494
|
+
recs.push({
|
|
495
|
+
priority: 'suggestion',
|
|
496
|
+
message: `You have ${totalSkills} skill${totalSkills === 1 ? '' : 's'} \u2014 enough to be useful, worth investing in depth.`,
|
|
497
|
+
action: 'Add edge case documentation to each skill: what happens when input is malformed, when the task is ambiguous, when the result needs human review. Skills that handle edge cases gracefully are the difference between "sometimes useful" and "reliably valuable."',
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
if (hasClaudeSkills && !hasSkillsDir) {
|
|
501
|
+
recs.push({
|
|
502
|
+
priority: 'suggestion',
|
|
503
|
+
message: 'Your skills live in .claude/skills/ only \u2014 that\'s Claude Code-specific.',
|
|
504
|
+
action: 'Consider also maintaining a skills/ directory at the project root for skills that should be portable across AI tools. .claude/skills/ auto-activates in Claude Code, but a top-level skills/ directory is tool-agnostic.',
|
|
347
505
|
});
|
|
348
506
|
}
|
|
349
507
|
recs.push({
|
|
350
508
|
priority: score < 50 ? 'important' : 'suggestion',
|
|
351
|
-
message: 'Check skillstack.
|
|
509
|
+
message: 'Check skillstack.me for production-ready skills in your domain.',
|
|
352
510
|
action: ctx.type === 'agency'
|
|
353
511
|
? 'Pre-built agency skills (client reporting, content workflows, project management) save weeks of iteration. Even if you customize them, starting from a proven template beats starting from scratch.'
|
|
354
512
|
: 'Pre-built skills save weeks of iteration and encode edge cases you haven\'t discovered yet. Even with good custom skills, marketplace skills can fill gaps you don\'t know you have.',
|
|
@@ -356,8 +514,17 @@ function getSkillsRecs(detected, score, ctx) {
|
|
|
356
514
|
return recs;
|
|
357
515
|
}
|
|
358
516
|
// ---- Layer 4: Tools Recommendations ----
|
|
359
|
-
function getToolsRecs(detected, score, ctx) {
|
|
517
|
+
function getToolsRecs(detected, score, ctx, evidence) {
|
|
360
518
|
const recs = [];
|
|
519
|
+
const hasRootMcp = evidenceHas(evidence, 'MCP server configuration: .mcp.json');
|
|
520
|
+
const hasNestedMcp = evidenceHas(evidence, 'Nested MCP');
|
|
521
|
+
const hasMcpDir = evidenceHas(evidence, 'MCP directory');
|
|
522
|
+
const hasToolsDir = evidenceHas(evidence, 'Tools directory');
|
|
523
|
+
const hasIntegrationsDir = evidenceHas(evidence, 'Integrations directory');
|
|
524
|
+
const integrationsEvidence = evidenceGet(evidence, 'Integrations directory');
|
|
525
|
+
const integrationsCount = integrationsEvidence ? extractEntryCount(integrationsEvidence) : null;
|
|
526
|
+
const toolsDirEvidence = evidenceGet(evidence, 'Tools directory');
|
|
527
|
+
const toolsDirCount = toolsDirEvidence ? extractEntryCount(toolsDirEvidence) : null;
|
|
361
528
|
if (!detected) {
|
|
362
529
|
const toolSuggestion = ctx.type === 'agency'
|
|
363
530
|
? 'filesystem (project files), Slack or Teams (client comms), your PM tool (Notion, Linear), and your CRM'
|
|
@@ -371,12 +538,36 @@ function getToolsRecs(detected, score, ctx) {
|
|
|
371
538
|
});
|
|
372
539
|
return recs;
|
|
373
540
|
}
|
|
541
|
+
// Detected but low score - identify what's fragmented or minimal
|
|
374
542
|
if (score < 50) {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
543
|
+
if (hasNestedMcp && !hasRootMcp) {
|
|
544
|
+
recs.push({
|
|
545
|
+
priority: 'important',
|
|
546
|
+
message: `You have MCP configs in nested directories${hasIntegrationsDir ? ` and an integrations/ folder with ${integrationsCount || 'some'} entries` : ''}, but no root-level .mcp.json.`,
|
|
547
|
+
action: 'Your tools are fragmented across plugin directories rather than centrally configured. Create a .mcp.json at the project root with your primary tool connections \u2014 nested configs are for overrides, not the primary configuration.',
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
else if (hasIntegrationsDir && !hasRootMcp && !hasNestedMcp) {
|
|
551
|
+
recs.push({
|
|
552
|
+
priority: 'important',
|
|
553
|
+
message: `You have an integrations/ directory${integrationsCount ? ` with ${integrationsCount} entr${integrationsCount === 1 ? 'y' : 'ies'}` : ''} but no MCP configuration.`,
|
|
554
|
+
action: 'Integrations files are a start, but MCP is the standard protocol for connecting AI to tools. Create a .mcp.json at the project root that references your integrations as MCP servers.',
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
else if (hasToolsDir && !hasRootMcp) {
|
|
558
|
+
recs.push({
|
|
559
|
+
priority: 'important',
|
|
560
|
+
message: `You have a tools/ directory${toolsDirCount ? ` with ${toolsDirCount} entr${toolsDirCount === 1 ? 'y' : 'ies'}` : ''} but no MCP configuration to wire them up.`,
|
|
561
|
+
action: 'Having tool code without MCP config is like having a toolbox without knowing which tools to grab. Create a .mcp.json that registers your tools as MCP servers so the AI can actually use them.',
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
recs.push({
|
|
566
|
+
priority: 'important',
|
|
567
|
+
message: 'Tool configuration is minimal \u2014 you\'re leaving automation on the table.',
|
|
568
|
+
action: 'Add MCP server connections for your most common copy-paste moments. Every time you find yourself copying AI output into another tool, that\'s a missing tool connection.',
|
|
569
|
+
});
|
|
570
|
+
}
|
|
380
571
|
}
|
|
381
572
|
if (ctx.risk === 'high' || ctx.risk === 'critical') {
|
|
382
573
|
recs.push({
|
|
@@ -385,16 +576,27 @@ function getToolsRecs(detected, score, ctx) {
|
|
|
385
576
|
action: 'Each MCP server should have the minimum access it needs. Read-only where possible. Write access only to specific resources. No tool should have admin-level access unless there\'s a documented reason. Review this quarterly.',
|
|
386
577
|
});
|
|
387
578
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
579
|
+
if (hasRootMcp && score >= 50) {
|
|
580
|
+
recs.push({
|
|
581
|
+
priority: 'suggestion',
|
|
582
|
+
message: 'Add startup health checks for your MCP connections.',
|
|
583
|
+
action: 'Stale or broken tool connections fail silently \u2014 the agent tries to use a tool, gets no response, and produces a degraded result without telling you. Add validation that verifies each server responds at startup.',
|
|
584
|
+
});
|
|
585
|
+
}
|
|
393
586
|
return recs;
|
|
394
587
|
}
|
|
395
588
|
// ---- Layer 5: Orchestration Recommendations ----
|
|
396
|
-
function getOrchestrationRecs(detected, score, ctx) {
|
|
589
|
+
function getOrchestrationRecs(detected, score, ctx, evidence) {
|
|
397
590
|
const recs = [];
|
|
591
|
+
const hasAgentsDir = evidenceHas(evidence, 'Agents directory');
|
|
592
|
+
const hasWorkflowsDir = evidenceHas(evidence, 'Workflows directory');
|
|
593
|
+
const hasAgentsMd = evidenceHas(evidence, 'Agent orchestration documentation', 'AGENTS.md');
|
|
594
|
+
const hasRoutingConfig = evidenceHas(evidence, 'Routing configuration');
|
|
595
|
+
const hasOrchestrationFiles = evidenceHas(evidence, 'Orchestration files');
|
|
596
|
+
const agentsDirEvidence = evidenceGet(evidence, 'Agents directory');
|
|
597
|
+
const agentsDirCount = agentsDirEvidence ? extractEntryCount(agentsDirEvidence) : null;
|
|
598
|
+
const workflowsDirEvidence = evidenceGet(evidence, 'Workflows directory');
|
|
599
|
+
const workflowsDirCount = workflowsDirEvidence ? extractEntryCount(workflowsDirEvidence) : null;
|
|
398
600
|
if (!detected) {
|
|
399
601
|
if (ctx.scale === 'solo') {
|
|
400
602
|
recs.push({
|
|
@@ -412,32 +614,71 @@ function getOrchestrationRecs(detected, score, ctx) {
|
|
|
412
614
|
}
|
|
413
615
|
return recs;
|
|
414
616
|
}
|
|
617
|
+
// Detected but low score - identify structural gaps
|
|
415
618
|
if (score < 50) {
|
|
619
|
+
const found = [];
|
|
620
|
+
const gaps = [];
|
|
621
|
+
if (hasAgentsDir && agentsDirCount)
|
|
622
|
+
found.push(`${agentsDirCount} agent${agentsDirCount === 1 ? '' : 's'}`);
|
|
623
|
+
if (hasWorkflowsDir && workflowsDirCount)
|
|
624
|
+
found.push(`${workflowsDirCount} workflow${workflowsDirCount === 1 ? '' : 's'}`);
|
|
625
|
+
if (hasAgentsMd)
|
|
626
|
+
found.push('AGENTS.md');
|
|
627
|
+
if (!hasAgentsMd)
|
|
628
|
+
gaps.push('no AGENTS.md mapping which agent handles which task type');
|
|
629
|
+
if (!hasWorkflowsDir)
|
|
630
|
+
gaps.push('no workflows/ directory defining multi-step processes');
|
|
631
|
+
if (!hasRoutingConfig)
|
|
632
|
+
gaps.push('no routing configuration');
|
|
633
|
+
const foundStr = found.length > 0 ? `You have ${found.join(' and ')}` : 'Orchestration layer exists';
|
|
634
|
+
const gapStr = gaps.length > 0 ? ` \u2014 but ${gaps.join(', ')}` : '';
|
|
416
635
|
recs.push({
|
|
417
636
|
priority: 'important',
|
|
418
|
-
message:
|
|
419
|
-
action:
|
|
637
|
+
message: `${foundStr}${gapStr}.`,
|
|
638
|
+
action: hasAgentsDir && !hasAgentsMd
|
|
639
|
+
? 'Create an AGENTS.md at the project root that maps each agent to its domain, its inputs/outputs, and its handoff rules. When a third person touches this system, they\'ll need that map.'
|
|
640
|
+
: 'Each agent needs: a defined role, documented handoff protocols, and clear ownership boundaries. If two agents can both handle the same task, you have a conflict waiting to happen.',
|
|
420
641
|
});
|
|
421
642
|
}
|
|
643
|
+
// Good score - refinement suggestions
|
|
422
644
|
if (score >= 50) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
645
|
+
if (!hasAgentsMd && hasAgentsDir) {
|
|
646
|
+
recs.push({
|
|
647
|
+
priority: 'suggestion',
|
|
648
|
+
message: `You have ${agentsDirCount || 'multiple'} agents but no AGENTS.md documenting the routing.`,
|
|
649
|
+
action: 'Create an AGENTS.md that maps which agent handles which task types and how work flows between them. As the system evolves, explicit documentation prevents the slow drift toward chaos.',
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
if (hasAgentsDir && hasWorkflowsDir && score >= 70) {
|
|
653
|
+
recs.push({
|
|
654
|
+
priority: 'suggestion',
|
|
655
|
+
message: `Your orchestration layer has ${agentsDirCount || 'multiple'} agents and ${workflowsDirCount || 'defined'} workflows \u2014 a solid foundation.`,
|
|
656
|
+
action: 'Consider adding monitoring: track which agent handles which tasks, how long each takes, and where handoffs fail. Orchestration without observability is a black box that works until it doesn\'t.',
|
|
657
|
+
});
|
|
658
|
+
}
|
|
428
659
|
}
|
|
429
|
-
if (ctx.scale === 'mid' || ctx.scale === 'enterprise') {
|
|
660
|
+
if ((ctx.scale === 'mid' || ctx.scale === 'enterprise') && !hasWorkflowsDir) {
|
|
430
661
|
recs.push({
|
|
431
662
|
priority: 'suggestion',
|
|
432
|
-
message: '
|
|
663
|
+
message: 'No workflows/ directory for multi-step process definitions.',
|
|
433
664
|
action: 'Create a workflows/ directory with definitions for processes that span multiple agents. This is documentation today and automation tomorrow.',
|
|
434
665
|
});
|
|
435
666
|
}
|
|
436
667
|
return recs;
|
|
437
668
|
}
|
|
438
669
|
// ---- Layer 6: Security Recommendations ----
|
|
439
|
-
function getSecurityRecs(detected, score, ctx) {
|
|
670
|
+
function getSecurityRecs(detected, score, ctx, evidence) {
|
|
440
671
|
const recs = [];
|
|
672
|
+
const hasSecurityScan = evidenceHas(evidence, 'Security scanning', 'security-scan');
|
|
673
|
+
const hasSecurityRules = evidenceHas(evidence, 'Security rules');
|
|
674
|
+
const hasSandbox = evidenceHas(evidence, 'Sandbox');
|
|
675
|
+
const hasAudit = evidenceHas(evidence, 'Audit');
|
|
676
|
+
const hasPermissions = evidenceHas(evidence, 'Permission');
|
|
677
|
+
const hasHusky = evidenceHas(evidence, 'Husky', 'Git hooks');
|
|
678
|
+
const hasPreCommit = evidenceHas(evidence, 'Pre-commit');
|
|
679
|
+
// Extract specific file paths from evidence for targeted recs
|
|
680
|
+
const securityRulesEvidence = evidenceGet(evidence, 'Security rules');
|
|
681
|
+
const securityRulesPath = securityRulesEvidence ? securityRulesEvidence.split(': ').slice(1).join(': ') : null;
|
|
441
682
|
if (!detected) {
|
|
442
683
|
const urgency = ctx.risk === 'critical' || ctx.risk === 'high' ? 'critical' : 'important';
|
|
443
684
|
recs.push({
|
|
@@ -453,12 +694,65 @@ function getSecurityRecs(detected, score, ctx) {
|
|
|
453
694
|
});
|
|
454
695
|
return recs;
|
|
455
696
|
}
|
|
697
|
+
// Detected but low score - identify specific gaps
|
|
456
698
|
if (score < 50) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
699
|
+
const found = [];
|
|
700
|
+
const missing = [];
|
|
701
|
+
if (hasSecurityRules)
|
|
702
|
+
found.push(`security rules${securityRulesPath ? ` (${securityRulesPath})` : ''}`);
|
|
703
|
+
if (hasSecurityScan)
|
|
704
|
+
found.push('a security scan script');
|
|
705
|
+
if (hasHusky || hasPreCommit)
|
|
706
|
+
found.push('pre-commit hooks');
|
|
707
|
+
if (hasSandbox)
|
|
708
|
+
found.push('sandbox configuration');
|
|
709
|
+
if (hasAudit)
|
|
710
|
+
found.push('audit configuration');
|
|
711
|
+
if (!hasSecurityScan)
|
|
712
|
+
missing.push('no security scan script');
|
|
713
|
+
if (!hasHusky && !hasPreCommit)
|
|
714
|
+
missing.push('no pre-commit hooks');
|
|
715
|
+
if (!hasPermissions)
|
|
716
|
+
missing.push('no permission scoping');
|
|
717
|
+
if (!hasAudit)
|
|
718
|
+
missing.push('no audit logging');
|
|
719
|
+
const foundStr = found.length > 0 ? `You have ${found.join(', ')}` : 'Your security layer is minimal';
|
|
720
|
+
const missingStr = missing.length > 0 ? ` but ${missing.join(', ')}` : '';
|
|
721
|
+
if (hasSecurityRules && !hasSecurityScan && !hasHusky && !hasPreCommit) {
|
|
722
|
+
recs.push({
|
|
723
|
+
priority: ctx.risk === 'critical' || ctx.risk === 'high' ? 'critical' : 'important',
|
|
724
|
+
message: `${foundStr}${missingStr}. Rules without tooling are suggestions, not protection.`,
|
|
725
|
+
action: 'Your security layer covers policy but not enforcement. Add a security-scan.sh that checks for credential leaks, a pre-commit hook that runs it automatically, and .gitignore entries for .env files.',
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
else {
|
|
729
|
+
recs.push({
|
|
730
|
+
priority: ctx.risk === 'critical' || ctx.risk === 'high' ? 'critical' : 'important',
|
|
731
|
+
message: `${foundStr}${missingStr}.`,
|
|
732
|
+
action: missing.length > 0
|
|
733
|
+
? `Close the gaps: ${missing.join(', ').replace(/no /g, 'add ')}.`
|
|
734
|
+
: 'Expand your security coverage with input validation rules for all external data and sandboxing for agent execution environments.',
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
// Mid-to-high score - refinement
|
|
739
|
+
if (score >= 50 && score < 80) {
|
|
740
|
+
const gaps = [];
|
|
741
|
+
if (!hasSecurityScan)
|
|
742
|
+
gaps.push('a security scan script');
|
|
743
|
+
if (!hasHusky && !hasPreCommit)
|
|
744
|
+
gaps.push('pre-commit hooks');
|
|
745
|
+
if (!hasAudit)
|
|
746
|
+
gaps.push('audit logging');
|
|
747
|
+
if (!hasPermissions)
|
|
748
|
+
gaps.push('permission scoping');
|
|
749
|
+
if (gaps.length > 0) {
|
|
750
|
+
recs.push({
|
|
751
|
+
priority: (ctx.risk === 'high' || ctx.risk === 'critical') ? 'important' : 'suggestion',
|
|
752
|
+
message: `Your security layer is solid but missing ${gaps.join(' and ')}.`,
|
|
753
|
+
action: `Adding ${gaps[0]} would close your biggest remaining gap.`,
|
|
754
|
+
});
|
|
755
|
+
}
|
|
462
756
|
}
|
|
463
757
|
if (score >= 50 && (ctx.risk === 'high' || ctx.risk === 'critical')) {
|
|
464
758
|
recs.push({
|
|
@@ -467,19 +761,26 @@ function getSecurityRecs(detected, score, ctx) {
|
|
|
467
761
|
action: 'Create test cases that attempt common injection attacks (role hijacking, instruction override, data exfiltration) and verify your system rejects them. Run these on every deployment. At your risk level, this is as important as unit tests.',
|
|
468
762
|
});
|
|
469
763
|
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
764
|
+
if (hasSecurityScan || hasHusky || hasPreCommit) {
|
|
765
|
+
recs.push({
|
|
766
|
+
priority: 'suggestion',
|
|
767
|
+
message: 'Run security scans on a schedule, not just at commit time.',
|
|
768
|
+
action: 'Add a CI/CD security scan on every push and a daily cron job. Threats emerge between commits \u2014 a dependency vulnerability disclosed today affects code you committed last month.',
|
|
769
|
+
});
|
|
770
|
+
}
|
|
475
771
|
return recs;
|
|
476
772
|
}
|
|
477
773
|
// ---- Layer 7: Governance Recommendations ----
|
|
478
|
-
function getGovernanceRecs(detected, score, ctx) {
|
|
774
|
+
function getGovernanceRecs(detected, score, ctx, evidence) {
|
|
479
775
|
const recs = [];
|
|
480
776
|
const isRegulated = ctx.industry
|
|
481
777
|
? /financ|health|medic|pharma|insur|legal|bank|govern/i.test(ctx.industry)
|
|
482
778
|
: false;
|
|
779
|
+
const hasApprovalWorkflows = evidenceHas(evidence, 'Approval workflow');
|
|
780
|
+
const hasEscalation = evidenceHas(evidence, 'Escalation');
|
|
781
|
+
const hasComplianceDir = evidenceHas(evidence, 'Compliance directory');
|
|
782
|
+
const hasGovernanceDir = evidenceHas(evidence, 'Governance directory');
|
|
783
|
+
const hasPolicyFiles = evidenceHas(evidence, 'Policy files');
|
|
483
784
|
if (!detected) {
|
|
484
785
|
if (ctx.scale === 'solo' && !isRegulated && ctx.risk !== 'critical') {
|
|
485
786
|
recs.push({
|
|
@@ -501,33 +802,77 @@ function getGovernanceRecs(detected, score, ctx) {
|
|
|
501
802
|
}
|
|
502
803
|
return recs;
|
|
503
804
|
}
|
|
805
|
+
// Detected but low score - identify what's thin
|
|
504
806
|
if (score < 50) {
|
|
807
|
+
const found = [];
|
|
808
|
+
const missing = [];
|
|
809
|
+
if (hasGovernanceDir)
|
|
810
|
+
found.push('a governance/ directory');
|
|
811
|
+
if (hasComplianceDir)
|
|
812
|
+
found.push('a compliance/ directory');
|
|
813
|
+
if (hasApprovalWorkflows)
|
|
814
|
+
found.push('approval workflow files');
|
|
815
|
+
if (hasEscalation)
|
|
816
|
+
found.push('escalation configuration');
|
|
817
|
+
if (hasPolicyFiles)
|
|
818
|
+
found.push('policy files');
|
|
819
|
+
if (!hasApprovalWorkflows)
|
|
820
|
+
missing.push('no approval workflows with specific thresholds');
|
|
821
|
+
if (!hasEscalation)
|
|
822
|
+
missing.push('no escalation paths');
|
|
823
|
+
if (!hasPolicyFiles)
|
|
824
|
+
missing.push('no policy documents');
|
|
825
|
+
const foundStr = found.length > 0 ? `You have ${found.join(', ')}` : 'Governance layer exists';
|
|
826
|
+
const missingStr = missing.length > 0 ? ` but ${missing.join(', ')}` : '';
|
|
505
827
|
recs.push({
|
|
506
828
|
priority: 'important',
|
|
507
|
-
message:
|
|
829
|
+
message: `${foundStr}${missingStr}. Generic policies don't protect you.`,
|
|
508
830
|
action: 'Define specific, measurable boundaries: dollar amounts that require approval, action types that require human review, and escalation contacts for each domain. Vague governance is no governance.',
|
|
509
831
|
});
|
|
510
832
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
833
|
+
// Cost thresholds - reference what they have
|
|
834
|
+
if (!hasApprovalWorkflows) {
|
|
835
|
+
recs.push({
|
|
836
|
+
priority: score < 80 ? 'important' : 'suggestion',
|
|
837
|
+
message: hasGovernanceDir || hasComplianceDir
|
|
838
|
+
? 'Your governance directory has no cost threshold rules.'
|
|
839
|
+
: 'No cost thresholds that trigger automatic approval requirements.',
|
|
840
|
+
action: ctx.scale === 'solo'
|
|
841
|
+
? 'Set a personal rule: any AI action that could cost more than $50 requires you to verify first. Automate this as a threshold check in your agent config.'
|
|
842
|
+
: 'Define dollar amounts per action type: content generation might be $0 (safe), but data modification should require approval above a threshold. Automate these checks in your orchestration layer.',
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
if (!hasEscalation && score >= 50) {
|
|
846
|
+
recs.push({
|
|
847
|
+
priority: 'suggestion',
|
|
848
|
+
message: hasGovernanceDir
|
|
849
|
+
? 'Your governance/ directory has no escalation paths defined.'
|
|
850
|
+
: 'No escalation paths \u2014 when the AI encounters something it can\'t handle, where does it go?',
|
|
851
|
+
action: 'Create an escalation config that defines: what triggers escalation, who gets notified, and what the AI should do while waiting for human input (pause, continue with constraints, or abort).',
|
|
852
|
+
});
|
|
853
|
+
}
|
|
518
854
|
if (isRegulated) {
|
|
519
855
|
recs.push({
|
|
520
856
|
priority: 'important',
|
|
521
|
-
message:
|
|
857
|
+
message: hasComplianceDir
|
|
858
|
+
? 'You have a compliance/ directory \u2014 make sure it covers AI-specific regulatory requirements.'
|
|
859
|
+
: 'Add regulatory compliance documentation for your AI agents.',
|
|
522
860
|
action: 'Document: what data the AI accesses, what decisions it makes, what human oversight exists, and how to audit its actions. EU AI Act (August 2026), state-level AI laws, and industry-specific regulations all require this.',
|
|
523
861
|
});
|
|
524
862
|
}
|
|
525
863
|
return recs;
|
|
526
864
|
}
|
|
527
865
|
// ---- Layer 8: Evaluation Recommendations ----
|
|
528
|
-
function getEvaluationRecs(detected, score, ctx) {
|
|
866
|
+
function getEvaluationRecs(detected, score, ctx, evidence) {
|
|
529
867
|
const recs = [];
|
|
868
|
+
const hasBenchmarks = evidenceHas(evidence, 'Benchmark');
|
|
869
|
+
const hasEvalDir = evidenceHas(evidence, 'Evaluation directories');
|
|
870
|
+
const hasMonitoring = evidenceHas(evidence, 'Monitoring');
|
|
871
|
+
const hasQuality = evidenceHas(evidence, 'Quality assurance');
|
|
872
|
+
const hasFeedback = evidenceHas(evidence, 'Feedback');
|
|
873
|
+
const hasMetrics = evidenceHas(evidence, 'Metrics directory');
|
|
530
874
|
if (!detected) {
|
|
875
|
+
// Reference adjacent layers to contextualize what's at stake
|
|
531
876
|
recs.push({
|
|
532
877
|
priority: 'important',
|
|
533
878
|
message: 'No quality monitoring. Your output will drift and you won\'t know until someone complains.',
|
|
@@ -539,25 +884,73 @@ function getEvaluationRecs(detected, score, ctx) {
|
|
|
539
884
|
});
|
|
540
885
|
return recs;
|
|
541
886
|
}
|
|
887
|
+
// Detected but low score - identify what's thin
|
|
542
888
|
if (score < 50) {
|
|
889
|
+
const found = [];
|
|
890
|
+
const missing = [];
|
|
891
|
+
if (hasBenchmarks)
|
|
892
|
+
found.push('benchmark files');
|
|
893
|
+
if (hasEvalDir)
|
|
894
|
+
found.push('an evaluation directory');
|
|
895
|
+
if (hasMonitoring)
|
|
896
|
+
found.push('monitoring files');
|
|
897
|
+
if (hasQuality)
|
|
898
|
+
found.push('quality assurance files');
|
|
899
|
+
if (hasFeedback)
|
|
900
|
+
found.push('feedback collection');
|
|
901
|
+
if (hasMetrics)
|
|
902
|
+
found.push('a metrics directory');
|
|
903
|
+
if (!hasBenchmarks)
|
|
904
|
+
missing.push('no benchmark definitions');
|
|
905
|
+
if (!hasQuality)
|
|
906
|
+
missing.push('no quality rubric');
|
|
907
|
+
if (!hasFeedback)
|
|
908
|
+
missing.push('no feedback loop');
|
|
909
|
+
if (!hasMetrics && !hasMonitoring)
|
|
910
|
+
missing.push('no metrics or monitoring');
|
|
911
|
+
const foundStr = found.length > 0 ? `You have ${found.join(', ')}` : 'Your evaluation layer exists';
|
|
912
|
+
const missingStr = missing.length > 0 ? ` but ${missing.join(', ')}` : '';
|
|
543
913
|
recs.push({
|
|
544
914
|
priority: 'important',
|
|
545
|
-
message:
|
|
915
|
+
message: `${foundStr}${missingStr}. Without all four components, quality monitoring has blind spots.`,
|
|
546
916
|
action: 'Define concrete metrics: accuracy, relevance, consistency, and cost per output. Create baseline benchmarks from your best current outputs. Without numbers, you\'re just hoping quality stays stable.',
|
|
547
917
|
});
|
|
548
918
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
}
|
|
919
|
+
// Drift detection - reference what they have
|
|
920
|
+
if (!hasBenchmarks && !hasQuality) {
|
|
921
|
+
recs.push({
|
|
922
|
+
priority: score < 80 ? 'important' : 'suggestion',
|
|
923
|
+
message: hasEvalDir || hasMonitoring
|
|
924
|
+
? 'You have evaluation infrastructure but no golden baselines to compare against.'
|
|
925
|
+
: 'No drift detection \u2014 you can\'t measure quality change without a baseline.',
|
|
926
|
+
action: ctx.type === 'agency'
|
|
927
|
+
? 'Create per-client baselines and compare weekly. If client revision rates increase, that\'s your canary. Client revisions are free evaluation data \u2014 track what they change and why.'
|
|
928
|
+
: 'Save your best current outputs as "golden" samples. Compare current output against them weekly. Flag anything that scores more than 15% below baseline on any dimension.',
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
else if (hasBenchmarks && !hasFeedback) {
|
|
932
|
+
recs.push({
|
|
933
|
+
priority: 'suggestion',
|
|
934
|
+
message: 'You have benchmarks but no feedback loop \u2014 evaluation is a one-way street.',
|
|
935
|
+
action: 'Wire user feedback (corrections, ratings, revision patterns) back into your evaluation pipeline. Benchmarks catch drift against your standards; feedback catches drift against user expectations. You need both.',
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
if (!hasMonitoring && !hasMetrics && score >= 30) {
|
|
939
|
+
recs.push({
|
|
940
|
+
priority: 'suggestion',
|
|
941
|
+
message: hasBenchmarks || hasQuality
|
|
942
|
+
? 'You have quality standards defined but no automated monitoring running them.'
|
|
943
|
+
: 'No monitoring \u2014 evaluation only works if it runs continuously.',
|
|
944
|
+
action: 'Set up automated monitoring that runs your quality checks on a sample of outputs at regular intervals. Manual spot-checks don\'t scale and they\'re the first thing that gets dropped when you\'re busy.',
|
|
945
|
+
});
|
|
946
|
+
}
|
|
947
|
+
if (score >= 70) {
|
|
948
|
+
recs.push({
|
|
949
|
+
priority: 'suggestion',
|
|
950
|
+
message: 'Implement A/B testing for major prompt or skill changes.',
|
|
951
|
+
action: 'Before rolling out changes to prompts, skills, or models, test them against the current version on a representative sample. A change that improves average quality by 5% but degrades edge case handling by 30% is a net negative you\'ll only catch with structured testing.',
|
|
952
|
+
});
|
|
953
|
+
}
|
|
561
954
|
return recs;
|
|
562
955
|
}
|
|
563
956
|
//# sourceMappingURL=consultant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consultant.js","sourceRoot":"","sources":["../../src/interactive/consultant.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consultant.js","sourceRoot":"","sources":["../../src/interactive/consultant.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,7 +168,7 @@ export async function runInteractiveDiagnostic(directory) {
|
|
|
168
168
|
console.log('');
|
|
169
169
|
}
|
|
170
170
|
// ---- Recommendations (context-aware) ----
|
|
171
|
-
const recs = getContextualRecommendations(layer.number, result.detected, result.contentScore, projectContext);
|
|
171
|
+
const recs = getContextualRecommendations(layer.number, result.detected, result.contentScore, projectContext, result.evidence);
|
|
172
172
|
if (recs.length > 0) {
|
|
173
173
|
console.log(c.bold(' Recommendations:'));
|
|
174
174
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/interactive/diagnostic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/interactive/diagnostic.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export async function scaffold(options) {
|
|
|
36
36
|
await writeFile(join(projectDir, 'CLAUDE.md'), claudeMd(projectName));
|
|
37
37
|
// Layer 3: Skills
|
|
38
38
|
await mkdir(join(projectDir, 'skills'), { recursive: true });
|
|
39
|
-
await writeFile(join(projectDir, 'skills', 'README.md'), '# Skills\n\nAdd your AI skills here. Visit https://skillstack.
|
|
39
|
+
await writeFile(join(projectDir, 'skills', 'README.md'), '# Skills\n\nAdd your AI skills here. Visit https://skillstack.me for production-ready skills.\n');
|
|
40
40
|
// Layer 4: Tools
|
|
41
41
|
await writeFile(join(projectDir, '.mcp.json'), mcpJsonTemplate());
|
|
42
42
|
// Layer 5: Orchestration
|
|
@@ -72,7 +72,7 @@ export async function scaffold(options) {
|
|
|
72
72
|
console.log(colors.white(` 1. cd ${projectName}`));
|
|
73
73
|
console.log(colors.white(' 2. Add your API keys to .env.example'));
|
|
74
74
|
console.log(colors.white(' 3. Add your business context to CLAUDE.md'));
|
|
75
|
-
console.log(colors.white(` 4. Find skills at ${colors.cyan('https://skillstack.
|
|
75
|
+
console.log(colors.white(` 4. Find skills at ${colors.cyan('https://skillstack.me')}`));
|
|
76
76
|
console.log(colors.white(' 5. Run npx onion-check to verify your score'));
|
|
77
77
|
console.log('');
|
|
78
78
|
console.log(colors.dim(` Full spec: ${colors.cyan('https://github.com/michaeldavidson/onion-architecture')}`));
|
|
@@ -29,7 +29,7 @@ npx onion-check
|
|
|
29
29
|
|
|
30
30
|
- [The Onion Architecture Spec](https://github.com/michaeldavidson/onion-architecture)
|
|
31
31
|
- [The Onion Architecture Article](https://michaeldavidson.io/onion-architecture) by Michael Davidson
|
|
32
|
-
- [SkillStack](https://skillstack.
|
|
32
|
+
- [SkillStack](https://skillstack.me) — Production-ready AI skills
|
|
33
33
|
`;
|
|
34
34
|
}
|
|
35
35
|
export function envExample() {
|
|
@@ -209,7 +209,7 @@ When you need output quality beyond "technically correct." Skills are the differ
|
|
|
209
209
|
|
|
210
210
|
## Where to find skills
|
|
211
211
|
|
|
212
|
-
**[SkillStack](https://skillstack.
|
|
212
|
+
**[SkillStack](https://skillstack.me)** — The marketplace for production-ready AI skills. Find pre-built skills for your domain or publish your own.
|
|
213
213
|
|
|
214
214
|
## Detection signals
|
|
215
215
|
|