onion-check 2.0.0 → 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.
@@ -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.ai to find production-ready skills.',
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
  {
@@ -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.ai') + ' for production skills'));
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.ai) — Production-ready AI skills
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.ai\x1b[0m\n');
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,CAYlB"}
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.ai \u2014 there are production-ready skills for common agency workflows that save weeks of iteration.`;
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.ai for skills that match your domain.`;
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.ai has production-ready content skills worth checking.`;
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.ai has pre-built support workflow skills.`;
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.ai for marketplace-specific skills.`;
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.ai for skills in your domain.`;
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
- recs.push({
240
- priority: 'critical',
241
- message: 'No AI model configuration found anywhere in this project.',
242
- action: ctx.stack === 'python'
243
- ? 'Install the anthropic package (pip install anthropic) and create a .env with ANTHROPIC_API_KEY=sk-ant-... \u2014 or add your preferred model SDK.'
244
- : '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.',
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: 'Your API key looks like a placeholder or your model config is barebones.',
252
- action: 'Replace placeholder values with real credentials. If you\'re using Claude Code for development, great \u2014 but the project itself needs production model configuration for deployment.',
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: 'Add a .env.example file if you don\'t have one.',
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
- recs.push({
289
- priority: 'critical',
290
- message: `Your AI knows nothing about your business. It's a smart generalist producing generic output.`,
291
- 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.`,
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: 'Your context exists but it\'s too thin to make a real difference.',
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. This is what separates "AI-assisted" from "AI-generated" in client perception.'
301
- : 'Expand with domain-specific knowledge: terminology your team uses, quality criteria for output, common mistakes to avoid, and the institutional knowledge that takes months to learn. Generic context produces generic output.',
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
- recs.push({
306
- priority: 'suggestion',
307
- message: 'Split your context into role-specific files.',
308
- action: ctx.type === 'agency'
309
- ? '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.'
310
- : 'Create a context/ directory with separate files for different roles (context/support.md, context/engineering.md). Monolithic context files get bloated fast and slow down every interaction.',
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: 'Add a knowledge/ directory with reference documents.',
317
- action: 'SOPs, style guides, and domain-specific references let the AI go deeper than a single instructions file allows. Think of it as the difference between giving someone a job description and giving them the entire employee handbook.',
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.ai for production-ready agency skills.'
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.ai for production-ready skills in your domain.',
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: 'Skills directory exists but the skills are too thin to be reliable.',
339
- action: 'Each skill needs: clear instructions, input/output format specs, edge case handling, and failure recovery. A skill that only handles the happy path will fail on the 20% of cases that cause 80% of your problems. Aim for 3+ well-defined skills minimum.',
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
- if (score >= 50) {
484
+ // High volume of skills - different concern
485
+ if (totalSkills > 20) {
343
486
  recs.push({
344
487
  priority: 'suggestion',
345
- message: 'Add edge case documentation to your existing skills.',
346
- action: 'Document the failure modes: 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."',
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.ai for production-ready skills in your domain.',
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
- recs.push({
376
- priority: 'important',
377
- message: 'Tool configuration is minimal \u2014 you\'re leaving automation on the table.',
378
- 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.',
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
- recs.push({
389
- priority: 'suggestion',
390
- message: 'Add startup health checks for your MCP connections.',
391
- 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.',
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: 'Orchestration exists but agents may not have clear boundaries.',
419
- action: '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. Define who owns what.',
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
- recs.push({
424
- priority: 'suggestion',
425
- message: 'Document handoff protocols in AGENTS.md.',
426
- action: 'Map which agent handles which task types and exactly how work flows between them. As the system evolves, explicit documentation prevents the slow drift toward chaos.',
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: 'Add workflow definitions for multi-step processes.',
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
- recs.push({
458
- priority: ctx.risk === 'critical' || ctx.risk === 'high' ? 'critical' : 'important',
459
- message: 'Security exists but it\'s minimal \u2014 checking the box without covering the risk.',
460
- action: 'Add: input validation rules for all external data, pre-commit hooks that scan for credential leaks, permission scoping for all tool access, and sandboxing for agent execution environments.',
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
- recs.push({
471
- priority: 'suggestion',
472
- message: 'Run security scans on a schedule, not just at commit time.',
473
- 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.',
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: 'Governance exists but lacks substance. Generic policies don\'t protect you.',
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
- recs.push({
512
- priority: score < 80 ? 'important' : 'suggestion',
513
- message: 'Add cost thresholds that trigger automatic approval requirements.',
514
- action: ctx.scale === 'solo'
515
- ? '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.'
516
- : '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.',
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: 'Add regulatory compliance documentation for your AI agents.',
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: 'Evaluation layer is thin \u2014 no real benchmarks or actionable metrics.',
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
- recs.push({
550
- priority: score < 80 ? 'important' : 'suggestion',
551
- message: 'Add drift detection \u2014 automated comparison against baseline samples.',
552
- action: ctx.type === 'agency'
553
- ? '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.'
554
- : 'Compare current output against golden samples weekly. Flag anything that scores more than 15% below historical averages. The goal is to detect drift before users do.',
555
- });
556
- recs.push({
557
- priority: 'suggestion',
558
- message: 'Implement A/B testing for major prompt or skill changes.',
559
- 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.',
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/interactive/diagnostic.ts"],"names":[],"mappings":"AAmEA,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuU/E"}
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/interactive/diagnostic.ts"],"names":[],"mappings":"AAqDA,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqU/E"}
@@ -6,7 +6,7 @@ import { checkConsistency } from '../scanner/consistency.js';
6
6
  import { printBanner } from '../core/banner.js';
7
7
  import { readConfig, createDefaultConfig } from '../core/config.js';
8
8
  import { generateLayer, getGenerator } from '../generators/index.js';
9
- import { confirm, closePrompt } from './prompt.js';
9
+ import { ask, confirm, closePrompt } from './prompt.js';
10
10
  import { saveLayerDoc, saveSummaryDoc } from '../generators/layer-docs.js';
11
11
  import { runIntake, loadContext, saveContext } from './intake.js';
12
12
  import { getLayerBriefing, getContextualRecommendations } from './consultant.js';
@@ -39,23 +39,8 @@ function scoreBar(score) {
39
39
  color = c.green;
40
40
  return color('\u2588'.repeat(filled)) + c.dim('\u2591'.repeat(empty)) + ' ' + c.bold(`${score}/100`);
41
41
  }
42
- function waitForEnter() {
43
- return new Promise(resolve => {
44
- const handler = (data) => {
45
- process.stdin.removeListener('data', handler);
46
- if (wasRaw)
47
- process.stdin.setRawMode(false);
48
- process.stdin.pause();
49
- resolve();
50
- };
51
- let wasRaw = false;
52
- if (process.stdin.isTTY) {
53
- process.stdin.setRawMode(true);
54
- wasRaw = true;
55
- }
56
- process.stdin.resume();
57
- process.stdin.on('data', handler);
58
- });
42
+ async function waitForEnter() {
43
+ await ask('Press Enter to continue...', '');
59
44
  }
60
45
  // ---------------------------------------------------------------------------
61
46
  // Main Diagnostic Flow
@@ -103,8 +88,7 @@ export async function runInteractiveDiagnostic(directory) {
103
88
  }
104
89
  console.log(c.dim(' Results saved to onion-report/ as permanent references.'));
105
90
  console.log('');
106
- console.log(c.dim(' Press Enter to begin...'));
107
- await waitForEnter();
91
+ await ask('Press Enter to begin the diagnostic...', '');
108
92
  // 4. Scan layers one at a time
109
93
  const results = [];
110
94
  const allDocPaths = [];
@@ -184,7 +168,7 @@ export async function runInteractiveDiagnostic(directory) {
184
168
  console.log('');
185
169
  }
186
170
  // ---- Recommendations (context-aware) ----
187
- const recs = getContextualRecommendations(layer.number, result.detected, result.contentScore, projectContext);
171
+ const recs = getContextualRecommendations(layer.number, result.detected, result.contentScore, projectContext, result.evidence);
188
172
  if (recs.length > 0) {
189
173
  console.log(c.bold(' Recommendations:'));
190
174
  console.log('');
@@ -227,7 +211,6 @@ export async function runInteractiveDiagnostic(directory) {
227
211
  console.log(c.dim(` \u2192 Saved: ${docPath.replace(directory + '/', '')}`));
228
212
  // ---- Continue prompt ----
229
213
  console.log('');
230
- console.log(c.dim(' Press Enter to continue to the next layer...'));
231
214
  await waitForEnter();
232
215
  }
233
216
  // 5. Consistency checks
@@ -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.ai for production-ready skills.\n');
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.ai')}`));
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.ai) — Production-ready AI skills
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.ai)** — The marketplace for production-ready AI skills. Find pre-built skills for your domain or publish your own.
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onion-check",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "The Onion Architecture: 8-layer diagnostic and scaffold for production AI systems",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",