@rune-kit/rune 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +65 -6
  3. package/commands/rune.md +168 -168
  4. package/compiler/__tests__/detect-invariants.test.js +136 -0
  5. package/compiler/__tests__/doctor-mesh.test.js +229 -0
  6. package/compiler/__tests__/hook-dispatch.test.js +91 -0
  7. package/compiler/__tests__/hooks-antigravity.test.js +118 -0
  8. package/compiler/__tests__/hooks-cursor.test.js +139 -0
  9. package/compiler/__tests__/hooks-install.test.js +305 -0
  10. package/compiler/__tests__/hooks-merge.test.js +204 -0
  11. package/compiler/__tests__/hooks-tiers.test.js +519 -0
  12. package/compiler/__tests__/hooks-windsurf.test.js +115 -0
  13. package/compiler/__tests__/inject-claude-md.test.js +152 -0
  14. package/compiler/__tests__/load-invariants.test.js +408 -0
  15. package/compiler/__tests__/onboard-invariants.test.js +240 -0
  16. package/compiler/adapters/hooks/antigravity.js +140 -0
  17. package/compiler/adapters/hooks/claude.js +166 -0
  18. package/compiler/adapters/hooks/cursor.js +191 -0
  19. package/compiler/adapters/hooks/index.js +82 -0
  20. package/compiler/adapters/hooks/tier-emitter.js +182 -0
  21. package/compiler/adapters/hooks/windsurf.js +202 -0
  22. package/compiler/bin/rune.js +196 -6
  23. package/compiler/commands/hook-dispatch.js +87 -0
  24. package/compiler/commands/hooks/install.js +120 -0
  25. package/compiler/commands/hooks/merge.js +211 -0
  26. package/compiler/commands/hooks/presets.js +116 -0
  27. package/compiler/commands/hooks/status.js +112 -0
  28. package/compiler/commands/hooks/tiers.js +221 -0
  29. package/compiler/commands/hooks/uninstall.js +94 -0
  30. package/compiler/doctor.js +236 -0
  31. package/contexts/dev.md +34 -34
  32. package/contexts/research.md +43 -43
  33. package/contexts/review.md +55 -55
  34. package/extensions/ai-ml/PACK.md +88 -88
  35. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  36. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  37. package/extensions/ai-ml/skills/deep-research.md +146 -146
  38. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  39. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  40. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  41. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  42. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  43. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  44. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  45. package/extensions/analytics/PACK.md +92 -92
  46. package/extensions/analytics/skills/ab-testing.md +72 -72
  47. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  48. package/extensions/analytics/skills/data-validation.md +68 -68
  49. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  50. package/extensions/analytics/skills/sql-patterns.md +57 -57
  51. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  52. package/extensions/analytics/skills/tracking-setup.md +71 -71
  53. package/extensions/backend/PACK.md +104 -104
  54. package/extensions/backend/skills/api-patterns.md +84 -84
  55. package/extensions/backend/skills/async-pipeline.md +193 -193
  56. package/extensions/backend/skills/auth-patterns.md +97 -97
  57. package/extensions/backend/skills/background-jobs.md +133 -133
  58. package/extensions/backend/skills/caching-patterns.md +108 -108
  59. package/extensions/backend/skills/cli-generation.md +133 -133
  60. package/extensions/backend/skills/database-patterns.md +87 -87
  61. package/extensions/backend/skills/middleware-patterns.md +104 -104
  62. package/extensions/chrome-ext/PACK.md +93 -93
  63. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  64. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  65. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  66. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  67. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  68. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  69. package/extensions/content/PACK.md +96 -96
  70. package/extensions/content/skills/blog-patterns.md +88 -88
  71. package/extensions/content/skills/cms-integration.md +131 -131
  72. package/extensions/content/skills/content-scoring.md +107 -107
  73. package/extensions/content/skills/i18n.md +83 -83
  74. package/extensions/content/skills/mdx-authoring.md +137 -137
  75. package/extensions/content/skills/reference.md +1014 -1014
  76. package/extensions/content/skills/seo-patterns.md +67 -67
  77. package/extensions/content/skills/video-repurpose.md +153 -153
  78. package/extensions/devops/PACK.md +101 -101
  79. package/extensions/devops/skills/chaos-testing.md +67 -67
  80. package/extensions/devops/skills/ci-cd.md +75 -75
  81. package/extensions/devops/skills/docker.md +58 -58
  82. package/extensions/devops/skills/edge-serverless.md +163 -163
  83. package/extensions/devops/skills/infra-as-code.md +158 -158
  84. package/extensions/devops/skills/kubernetes.md +110 -110
  85. package/extensions/devops/skills/monitoring.md +57 -57
  86. package/extensions/devops/skills/server-setup.md +64 -64
  87. package/extensions/devops/skills/ssl-domain.md +42 -42
  88. package/extensions/ecommerce/PACK.md +116 -116
  89. package/extensions/ecommerce/skills/cart-system.md +79 -79
  90. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  91. package/extensions/ecommerce/skills/order-management.md +126 -126
  92. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  93. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  94. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  95. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  96. package/extensions/gamedev/PACK.md +142 -142
  97. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  98. package/extensions/gamedev/skills/audio-system.md +129 -129
  99. package/extensions/gamedev/skills/camera-system.md +87 -87
  100. package/extensions/gamedev/skills/ecs.md +98 -98
  101. package/extensions/gamedev/skills/game-loops.md +72 -72
  102. package/extensions/gamedev/skills/input-system.md +199 -199
  103. package/extensions/gamedev/skills/multiplayer.md +180 -180
  104. package/extensions/gamedev/skills/particles.md +105 -105
  105. package/extensions/gamedev/skills/physics-engine.md +89 -89
  106. package/extensions/gamedev/skills/scene-management.md +146 -146
  107. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  108. package/extensions/gamedev/skills/webgl.md +71 -71
  109. package/extensions/mobile/PACK.md +106 -106
  110. package/extensions/mobile/skills/app-store-connect.md +152 -152
  111. package/extensions/mobile/skills/app-store-prep.md +66 -66
  112. package/extensions/mobile/skills/deep-linking.md +109 -109
  113. package/extensions/mobile/skills/flutter.md +60 -60
  114. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  115. package/extensions/mobile/skills/native-bridge.md +66 -66
  116. package/extensions/mobile/skills/ota-updates.md +97 -97
  117. package/extensions/mobile/skills/push-notifications.md +111 -111
  118. package/extensions/mobile/skills/react-native.md +82 -82
  119. package/extensions/saas/PACK.md +116 -116
  120. package/extensions/saas/skills/billing-integration.md +200 -200
  121. package/extensions/saas/skills/feature-flags.md +130 -130
  122. package/extensions/saas/skills/multi-tenant.md +103 -103
  123. package/extensions/saas/skills/onboarding-flow.md +139 -139
  124. package/extensions/saas/skills/subscription-flow.md +95 -95
  125. package/extensions/saas/skills/team-management.md +144 -144
  126. package/extensions/security/PACK.md +99 -99
  127. package/extensions/security/skills/api-security.md +140 -140
  128. package/extensions/security/skills/compliance.md +68 -68
  129. package/extensions/security/skills/owasp-audit.md +64 -64
  130. package/extensions/security/skills/pentest-patterns.md +77 -77
  131. package/extensions/security/skills/secret-mgmt.md +65 -65
  132. package/extensions/security/skills/supply-chain.md +65 -65
  133. package/extensions/trading/PACK.md +80 -80
  134. package/extensions/trading/skills/chart-components.md +55 -55
  135. package/extensions/trading/skills/experiment-loop.md +125 -125
  136. package/extensions/trading/skills/fintech-patterns.md +47 -47
  137. package/extensions/trading/skills/indicator-library.md +58 -58
  138. package/extensions/trading/skills/quant-analysis.md +111 -111
  139. package/extensions/trading/skills/realtime-data.md +58 -58
  140. package/extensions/trading/skills/trade-logic.md +104 -104
  141. package/extensions/ui/PACK.md +130 -130
  142. package/extensions/ui/skills/a11y-audit.md +91 -91
  143. package/extensions/ui/skills/animation-patterns.md +127 -127
  144. package/extensions/ui/skills/component-patterns.md +100 -100
  145. package/extensions/ui/skills/design-decision.md +108 -108
  146. package/extensions/ui/skills/design-system.md +68 -68
  147. package/extensions/ui/skills/landing-patterns.md +155 -155
  148. package/extensions/ui/skills/palette-picker.md +173 -173
  149. package/extensions/ui/skills/react-health.md +90 -90
  150. package/extensions/ui/skills/type-system.md +125 -125
  151. package/extensions/ui/skills/web-vitals.md +153 -153
  152. package/extensions/zalo/PACK.md +145 -145
  153. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  154. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  155. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  156. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  157. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  158. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  159. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  160. package/hooks/auto-format/index.cjs +48 -48
  161. package/hooks/hooks.json +111 -111
  162. package/hooks/post-session-reflect/index.cjs +189 -189
  163. package/hooks/pre-compact/index.cjs +95 -95
  164. package/hooks/run-hook.cmd +1 -1
  165. package/hooks/secrets-scan/index.cjs +100 -100
  166. package/hooks/session-start/index.cjs +71 -71
  167. package/hooks/typecheck/index.cjs +65 -65
  168. package/package.json +63 -63
  169. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  170. package/references/ui-pro-max-data/charts.csv +26 -26
  171. package/references/ui-pro-max-data/colors.csv +161 -161
  172. package/references/ui-pro-max-data/styles.csv +68 -68
  173. package/references/ui-pro-max-data/typography.csv +74 -74
  174. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  175. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  176. package/skills/adversary/SKILL.md +283 -283
  177. package/skills/asset-creator/SKILL.md +157 -157
  178. package/skills/audit/SKILL.md +147 -2
  179. package/skills/autopsy/SKILL.md +335 -335
  180. package/skills/ba/SKILL.md +85 -1
  181. package/skills/brainstorm/SKILL.md +380 -342
  182. package/skills/browser-pilot/SKILL.md +169 -168
  183. package/skills/constraint-check/SKILL.md +165 -165
  184. package/skills/context-engine/SKILL.md +408 -404
  185. package/skills/cook/SKILL.md +917 -863
  186. package/skills/db/SKILL.md +273 -273
  187. package/skills/debug/SKILL.md +465 -465
  188. package/skills/dependency-doctor/SKILL.md +265 -235
  189. package/skills/deploy/SKILL.md +274 -231
  190. package/skills/design/DESIGN-REFERENCE.md +365 -365
  191. package/skills/design/SKILL.md +590 -589
  192. package/skills/doc-processor/SKILL.md +254 -254
  193. package/skills/docs/SKILL.md +374 -374
  194. package/skills/docs-seeker/SKILL.md +178 -177
  195. package/skills/fix/SKILL.md +332 -330
  196. package/skills/git/SKILL.md +339 -339
  197. package/skills/hallucination-guard/SKILL.md +220 -219
  198. package/skills/incident/SKILL.md +254 -253
  199. package/skills/integrity-check/SKILL.md +169 -169
  200. package/skills/journal/SKILL.md +241 -240
  201. package/skills/launch/SKILL.md +344 -344
  202. package/skills/logic-guardian/SKILL.md +269 -251
  203. package/skills/marketing/SKILL.md +351 -289
  204. package/skills/mcp-builder/SKILL.md +425 -425
  205. package/skills/neural-memory/SKILL.md +359 -362
  206. package/skills/onboard/SKILL.md +432 -403
  207. package/skills/onboard/references/invariants-template.md +76 -0
  208. package/skills/onboard/scripts/detect-invariants.js +439 -0
  209. package/skills/onboard/scripts/inject-claude-md.js +150 -0
  210. package/skills/onboard/scripts/onboard-invariants.js +194 -0
  211. package/skills/perf/SKILL.md +347 -346
  212. package/skills/plan/SKILL.md +435 -428
  213. package/skills/preflight/SKILL.md +415 -415
  214. package/skills/problem-solver/SKILL.md +380 -284
  215. package/skills/rescue/SKILL.md +474 -474
  216. package/skills/research/SKILL.md +4 -0
  217. package/skills/retro/SKILL.md +3 -1
  218. package/skills/review/SKILL.md +614 -588
  219. package/skills/review-intake/SKILL.md +249 -249
  220. package/skills/safeguard/SKILL.md +200 -200
  221. package/skills/sast/SKILL.md +190 -190
  222. package/skills/scaffold/SKILL.md +328 -287
  223. package/skills/scope-guard/SKILL.md +183 -180
  224. package/skills/scout/SKILL.md +269 -263
  225. package/skills/sentinel/SKILL.md +384 -381
  226. package/skills/sentinel-env/SKILL.md +254 -254
  227. package/skills/sequential-thinking/SKILL.md +234 -234
  228. package/skills/session-bridge/SKILL.md +595 -543
  229. package/skills/session-bridge/scripts/load-invariants.js +397 -0
  230. package/skills/skill-forge/SKILL.md +581 -581
  231. package/skills/skill-router/SKILL.md +3 -0
  232. package/skills/slides/SKILL.md +19 -0
  233. package/skills/surgeon/SKILL.md +215 -215
  234. package/skills/team/SKILL.md +557 -537
  235. package/skills/test/SKILL.md +620 -614
  236. package/skills/trend-scout/SKILL.md +145 -145
  237. package/skills/verification/SKILL.md +334 -326
  238. package/skills/video-creator/SKILL.md +201 -201
  239. package/skills/watchdog/SKILL.md +168 -168
  240. package/skills/worktree/SKILL.md +140 -140
@@ -2,6 +2,7 @@
2
2
  * Doctor — Validates compiled output
3
3
  *
4
4
  * Checks: files exist, cross-references resolve, layer discipline, source freshness.
5
+ * Mesh checks: reciprocal connections, version suggestions, required sections.
5
6
  */
6
7
 
7
8
  import { existsSync } from 'node:fs';
@@ -454,6 +455,241 @@ async function checkOrgTemplates(_runeRoot, config) {
454
455
  return errors;
455
456
  }
456
457
 
458
+ /**
459
+ * Check mesh integrity: reciprocal connections, version suggestions, required sections
460
+ *
461
+ * @param {string} runeRoot - path to Rune source root
462
+ * @returns {Promise<object>} mesh check results
463
+ */
464
+ export async function checkMeshIntegrity(runeRoot) {
465
+ const results = {
466
+ checks: [],
467
+ warnings: [],
468
+ errors: [],
469
+ stats: { skills: 0, connections: 0, missingReciprocals: 0 },
470
+ };
471
+
472
+ const skillsDir = path.join(runeRoot, 'skills');
473
+ if (!existsSync(skillsDir)) {
474
+ results.errors.push('skills/ directory not found');
475
+ return results;
476
+ }
477
+
478
+ // Step 1: Parse all skills
479
+ const skills = new Map(); // name → { calls: [], calledBy: [], version, sections }
480
+ const entries = await readdir(skillsDir, { withFileTypes: true });
481
+
482
+ for (const entry of entries) {
483
+ if (!entry.isDirectory()) continue;
484
+ const skillFile = path.join(skillsDir, entry.name, 'SKILL.md');
485
+ if (!existsSync(skillFile)) continue;
486
+
487
+ const content = await readFile(skillFile, 'utf-8');
488
+ const parsed = parseSkillConnections(content, entry.name);
489
+ skills.set(entry.name, parsed);
490
+ }
491
+
492
+ results.stats.skills = skills.size;
493
+
494
+ // Step 2: Validate reciprocals
495
+ const missingReciprocals = [];
496
+
497
+ for (const [name, skill] of skills) {
498
+ for (const called of skill.calls) {
499
+ const targetSkill = skills.get(called.skill);
500
+ if (!targetSkill) continue; // External skill or L4 pack
501
+
502
+ // Check if target acknowledges this caller
503
+ const acknowledges = targetSkill.calledBy.some((c) => c.skill === name);
504
+ if (!acknowledges) {
505
+ missingReciprocals.push({
506
+ caller: name,
507
+ callee: called.skill,
508
+ reason: called.reason,
509
+ });
510
+ }
511
+ }
512
+ results.stats.connections += skill.calls.length;
513
+ }
514
+
515
+ results.stats.missingReciprocals = missingReciprocals.length;
516
+
517
+ if (missingReciprocals.length === 0) {
518
+ results.checks.push({ name: 'Reciprocal connections', status: 'pass' });
519
+ } else {
520
+ results.checks.push({
521
+ name: 'Reciprocal connections',
522
+ status: 'warn',
523
+ detail: `${missingReciprocals.length} missing`,
524
+ });
525
+ // Group by callee for cleaner output
526
+ const byCallee = {};
527
+ for (const m of missingReciprocals) {
528
+ if (!byCallee[m.callee]) byCallee[m.callee] = [];
529
+ byCallee[m.callee].push(m.caller);
530
+ }
531
+ for (const [callee, callers] of Object.entries(byCallee)) {
532
+ results.warnings.push(`${callee}: missing callers in Called By: ${callers.join(', ')}`);
533
+ }
534
+ }
535
+
536
+ // Step 3: Check version maturity
537
+ const matureButLow = [];
538
+ for (const [name, skill] of skills) {
539
+ if (!skill.version) continue;
540
+ const [major, minor] = skill.version.split('.').map(Number);
541
+ // Suggest 1.0 if version is 0.8+ and has all required sections
542
+ if (major === 0 && minor >= 8 && skill.hasAllSections) {
543
+ matureButLow.push({ name, version: skill.version });
544
+ }
545
+ }
546
+
547
+ if (matureButLow.length === 0) {
548
+ results.checks.push({ name: 'Version maturity', status: 'pass' });
549
+ } else {
550
+ results.checks.push({
551
+ name: 'Version maturity',
552
+ status: 'warn',
553
+ detail: `${matureButLow.length} skills ready for 1.0`,
554
+ });
555
+ for (const s of matureButLow) {
556
+ results.warnings.push(`${s.name} v${s.version}: mature skill, consider promoting to 1.0`);
557
+ }
558
+ }
559
+
560
+ // Step 4: Check required sections
561
+ const requiredSections = ['Sharp Edges', 'Done When', 'Cost Profile'];
562
+ const missingSections = [];
563
+
564
+ for (const [name, skill] of skills) {
565
+ const missing = requiredSections.filter((s) => !skill.sections.includes(s));
566
+ if (missing.length > 0) {
567
+ missingSections.push({ name, missing });
568
+ }
569
+ }
570
+
571
+ if (missingSections.length === 0) {
572
+ results.checks.push({ name: 'Required sections', status: 'pass' });
573
+ } else {
574
+ results.checks.push({
575
+ name: 'Required sections',
576
+ status: 'warn',
577
+ detail: `${missingSections.length} skills incomplete`,
578
+ });
579
+ for (const s of missingSections) {
580
+ results.warnings.push(`${s.name}: missing sections: ${s.missing.join(', ')}`);
581
+ }
582
+ }
583
+
584
+ return results;
585
+ }
586
+
587
+ /**
588
+ * Parse skill connections from SKILL.md content
589
+ */
590
+ function parseSkillConnections(content, skillName) {
591
+ const result = {
592
+ name: skillName,
593
+ calls: [],
594
+ calledBy: [],
595
+ version: null,
596
+ sections: [],
597
+ hasAllSections: false,
598
+ };
599
+
600
+ // Extract version from frontmatter
601
+ const versionMatch = content.match(/version:\s*["']?([\d.]+)["']?/);
602
+ if (versionMatch) {
603
+ result.version = versionMatch[1];
604
+ }
605
+
606
+ // Extract Calls section
607
+ const callsMatch = content.match(/## Calls \(outbound\)\s*\n([\s\S]*?)(?=\n## |\n---|Z)/);
608
+ if (callsMatch) {
609
+ const lines = callsMatch[1].split('\n');
610
+ for (const line of lines) {
611
+ // Match patterns like: - `scout` (L2): scan codebase
612
+ // Or: - scout (L2): scan codebase
613
+ const match = line.match(/^-\s*`?([a-z][\w-]*)`?\s*\(L\d\)/i);
614
+ if (match) {
615
+ const skillRef = match[1].toLowerCase();
616
+ const reason = line
617
+ .replace(match[0], '')
618
+ .replace(/^[:\s-]+/, '')
619
+ .trim();
620
+ result.calls.push({ skill: skillRef, reason });
621
+ }
622
+ }
623
+ }
624
+
625
+ // Extract Called By section
626
+ const calledByMatch = content.match(/## Called By \(inbound\)\s*\n([\s\S]*?)(?=\n## |\n---|Z)/);
627
+ if (calledByMatch) {
628
+ const lines = calledByMatch[1].split('\n');
629
+ for (const line of lines) {
630
+ const match = line.match(/^-\s*`?([a-z][\w-]*)`?\s*\(L\d\)/i);
631
+ if (match) {
632
+ const skillRef = match[1].toLowerCase();
633
+ result.calledBy.push({ skill: skillRef });
634
+ }
635
+ }
636
+ }
637
+
638
+ // Check for required sections
639
+ const sectionPatterns = [
640
+ { name: 'Sharp Edges', pattern: /## Sharp Edges/ },
641
+ { name: 'Done When', pattern: /## Done When/ },
642
+ { name: 'Cost Profile', pattern: /## Cost Profile/ },
643
+ { name: 'Returns', pattern: /## Returns/ },
644
+ ];
645
+
646
+ for (const { name, pattern } of sectionPatterns) {
647
+ if (pattern.test(content)) {
648
+ result.sections.push(name);
649
+ }
650
+ }
651
+
652
+ result.hasAllSections = sectionPatterns.every(({ name }) => result.sections.includes(name));
653
+
654
+ return result;
655
+ }
656
+
657
+ /**
658
+ * Format mesh results for console output
659
+ */
660
+ export function formatMeshResults(results) {
661
+ const lines = [];
662
+ lines.push(`\n Mesh Integrity Check`);
663
+ lines.push(` Skills: ${results.stats.skills} | Connections: ${results.stats.connections}`);
664
+ lines.push('');
665
+
666
+ for (const check of results.checks) {
667
+ const icon = check.status === 'pass' ? '✓' : check.status === 'warn' ? '!' : '✗';
668
+ const detail = check.detail ? ` (${check.detail})` : '';
669
+ lines.push(` [${icon}] ${check.name}${detail}`);
670
+ }
671
+
672
+ if (results.warnings.length > 0) {
673
+ lines.push('');
674
+ for (const w of results.warnings) {
675
+ lines.push(` ⚠ ${w}`);
676
+ }
677
+ }
678
+
679
+ if (results.errors.length > 0) {
680
+ lines.push('');
681
+ for (const e of results.errors) {
682
+ lines.push(` ✗ ${e}`);
683
+ }
684
+ }
685
+
686
+ const healthy = results.errors.length === 0 && results.warnings.length === 0;
687
+ lines.push('');
688
+ lines.push(healthy ? ' ✓ Mesh is healthy' : ` ! Mesh has ${results.warnings.length} warnings`);
689
+
690
+ return lines.join('\n');
691
+ }
692
+
457
693
  /**
458
694
  * Format doctor results for console output
459
695
  */
package/contexts/dev.md CHANGED
@@ -1,34 +1,34 @@
1
- # Development Mode
2
-
3
- Behavioral context for active coding sessions. Prioritize action over analysis.
4
-
5
- ## Principles
6
-
7
- - **Code first, explain after** — show working code, not paragraphs about what you'll do
8
- - **Working → Right → Clean** — get it running, make it correct, then refine
9
- - **Bias toward action** — if the path is 80% clear, start coding rather than analyzing further
10
-
11
- ## Tool Priority
12
-
13
- ```
14
- HIGH: Edit, Write, Bash (run tests/build)
15
- MEDIUM: Read (targeted files), Grep (specific patterns)
16
- LOW: Glob (broad search), WebSearch (external docs)
17
- ```
18
-
19
- ## Behavioral Rules
20
-
21
- 1. Read the file BEFORE editing — never guess at existing code
22
- 2. Run tests after every meaningful change
23
- 3. If stuck for >2 iterations on the same error, switch strategy:
24
- - Try a different approach rather than debugging deeper
25
- - Use `rune:debug` for structured root cause analysis
26
- 4. Keep explanations to 1-2 sentences between code blocks
27
- 5. Commit working increments — don't batch everything into one giant change
28
-
29
- ## Anti-Patterns
30
-
31
- - Lengthy analysis before writing a single line of code
32
- - Reading 10+ files "for context" when 2-3 would suffice
33
- - Explaining what you're about to do instead of doing it
34
- - Over-engineering the first pass (violates Working → Right → Clean)
1
+ # Development Mode
2
+
3
+ Behavioral context for active coding sessions. Prioritize action over analysis.
4
+
5
+ ## Principles
6
+
7
+ - **Code first, explain after** — show working code, not paragraphs about what you'll do
8
+ - **Working → Right → Clean** — get it running, make it correct, then refine
9
+ - **Bias toward action** — if the path is 80% clear, start coding rather than analyzing further
10
+
11
+ ## Tool Priority
12
+
13
+ ```
14
+ HIGH: Edit, Write, Bash (run tests/build)
15
+ MEDIUM: Read (targeted files), Grep (specific patterns)
16
+ LOW: Glob (broad search), WebSearch (external docs)
17
+ ```
18
+
19
+ ## Behavioral Rules
20
+
21
+ 1. Read the file BEFORE editing — never guess at existing code
22
+ 2. Run tests after every meaningful change
23
+ 3. If stuck for >2 iterations on the same error, switch strategy:
24
+ - Try a different approach rather than debugging deeper
25
+ - Use `rune:debug` for structured root cause analysis
26
+ 4. Keep explanations to 1-2 sentences between code blocks
27
+ 5. Commit working increments — don't batch everything into one giant change
28
+
29
+ ## Anti-Patterns
30
+
31
+ - Lengthy analysis before writing a single line of code
32
+ - Reading 10+ files "for context" when 2-3 would suffice
33
+ - Explaining what you're about to do instead of doing it
34
+ - Over-engineering the first pass (violates Working → Right → Clean)
@@ -1,43 +1,43 @@
1
- # Research Mode
2
-
3
- Behavioral context for investigation, exploration, and understanding. Prioritize breadth and accuracy over speed.
4
-
5
- ## Principles
6
-
7
- - **Read widely before concluding** — check 3+ sources before forming an opinion
8
- - **Map before moving** — understand the full landscape before recommending a path
9
- - **Evidence over intuition** — every claim should reference a file, doc, or search result
10
-
11
- ## Tool Priority
12
-
13
- ```
14
- HIGH: Grep, Glob, Read, WebSearch, WebFetch
15
- MEDIUM: Bash (non-destructive: git log, dependency checks)
16
- LOW: Edit, Write (only for saving findings)
17
- ```
18
-
19
- ## Investigation Framework
20
-
21
- 1. **Define the question** — what exactly are we trying to learn?
22
- 2. **Internal scan** — search the codebase first (Grep, Glob, Read)
23
- 3. **External lookup** — check docs, changelogs, GitHub issues (WebSearch, WebFetch)
24
- 4. **Cross-reference** — validate findings against 2+ sources
25
- 5. **Synthesize** — present findings with confidence levels:
26
- - **Confirmed**: found in code/docs, verified
27
- - **Likely**: strong evidence but not 100% confirmed
28
- - **Uncertain**: limited evidence, needs more investigation
29
-
30
- ## Behavioral Rules
31
-
32
- 1. Never modify code in research mode — read-only exploration
33
- 2. Present findings in structured format (tables, bullet points)
34
- 3. Include file paths and line numbers for all code references
35
- 4. Flag contradictions between sources rather than picking one silently
36
- 5. Estimate scope/effort when the research is for planning purposes
37
-
38
- ## Anti-Patterns
39
-
40
- - Jumping to a solution after reading one file
41
- - Modifying code "while we're here" during research
42
- - Presenting opinions as facts without evidence trail
43
- - Stopping research early because the first answer looks plausible
1
+ # Research Mode
2
+
3
+ Behavioral context for investigation, exploration, and understanding. Prioritize breadth and accuracy over speed.
4
+
5
+ ## Principles
6
+
7
+ - **Read widely before concluding** — check 3+ sources before forming an opinion
8
+ - **Map before moving** — understand the full landscape before recommending a path
9
+ - **Evidence over intuition** — every claim should reference a file, doc, or search result
10
+
11
+ ## Tool Priority
12
+
13
+ ```
14
+ HIGH: Grep, Glob, Read, WebSearch, WebFetch
15
+ MEDIUM: Bash (non-destructive: git log, dependency checks)
16
+ LOW: Edit, Write (only for saving findings)
17
+ ```
18
+
19
+ ## Investigation Framework
20
+
21
+ 1. **Define the question** — what exactly are we trying to learn?
22
+ 2. **Internal scan** — search the codebase first (Grep, Glob, Read)
23
+ 3. **External lookup** — check docs, changelogs, GitHub issues (WebSearch, WebFetch)
24
+ 4. **Cross-reference** — validate findings against 2+ sources
25
+ 5. **Synthesize** — present findings with confidence levels:
26
+ - **Confirmed**: found in code/docs, verified
27
+ - **Likely**: strong evidence but not 100% confirmed
28
+ - **Uncertain**: limited evidence, needs more investigation
29
+
30
+ ## Behavioral Rules
31
+
32
+ 1. Never modify code in research mode — read-only exploration
33
+ 2. Present findings in structured format (tables, bullet points)
34
+ 3. Include file paths and line numbers for all code references
35
+ 4. Flag contradictions between sources rather than picking one silently
36
+ 5. Estimate scope/effort when the research is for planning purposes
37
+
38
+ ## Anti-Patterns
39
+
40
+ - Jumping to a solution after reading one file
41
+ - Modifying code "while we're here" during research
42
+ - Presenting opinions as facts without evidence trail
43
+ - Stopping research early because the first answer looks plausible
@@ -1,55 +1,55 @@
1
- # Review Mode
2
-
3
- Behavioral context for evaluating code quality, correctness, and security. Prioritize thoroughness and constructive feedback.
4
-
5
- ## Principles
6
-
7
- - **Read everything in scope** — review the full diff, not just highlighted sections
8
- - **Severity matters** — distinguish blockers from suggestions, label clearly
9
- - **Constructive over critical** — pair every issue with a concrete fix or alternative
10
-
11
- ## Tool Priority
12
-
13
- ```
14
- HIGH: Read (full files), Grep (pattern search), Bash (git diff)
15
- MEDIUM: Glob (find related files), WebSearch (verify best practices)
16
- LOW: Edit, Write (only for review notes/reports)
17
- ```
18
-
19
- ## Review Dimensions
20
-
21
- Check each dimension systematically:
22
-
23
- | Dimension | What to Check |
24
- |-----------|--------------|
25
- | **Correctness** | Logic errors, off-by-one, null handling, async/await misuse |
26
- | **Security** | OWASP patterns, secret exposure, input validation |
27
- | **Performance** | N+1 queries, unnecessary re-renders, missing indexes |
28
- | **Maintainability** | Naming clarity, function length, coupling, duplication |
29
- | **Completeness** | Error handling, edge cases, loading/error states, tests |
30
- | **Conventions** | Project patterns, naming style, file organization |
31
-
32
- ## Severity Scale
33
-
34
- ```
35
- BLOCK — Must fix before merge (bugs, security, data loss risk)
36
- HIGH — Should fix before merge (logic issues, missing validation)
37
- MEDIUM — Fix soon (code quality, minor performance)
38
- LOW — Nice to have (style preference, minor improvements)
39
- PRAISE — Highlight good patterns worth replicating
40
- ```
41
-
42
- ## Behavioral Rules
43
-
44
- 1. Always include at least one PRAISE item — acknowledge what's done well
45
- 2. Group findings by file, then by severity (BLOCK first)
46
- 3. Show the problematic code AND the suggested fix side-by-side
47
- 4. Check git blame for context — is this new code or existing?
48
- 5. Verify the fix actually works before suggesting it
49
-
50
- ## Anti-Patterns
51
-
52
- - Drive-by "LGTM" without reading the code
53
- - Nitpicking style while missing logic bugs
54
- - Suggesting rewrites when the code is correct and readable
55
- - Reviewing only the files explicitly mentioned, ignoring related changes
1
+ # Review Mode
2
+
3
+ Behavioral context for evaluating code quality, correctness, and security. Prioritize thoroughness and constructive feedback.
4
+
5
+ ## Principles
6
+
7
+ - **Read everything in scope** — review the full diff, not just highlighted sections
8
+ - **Severity matters** — distinguish blockers from suggestions, label clearly
9
+ - **Constructive over critical** — pair every issue with a concrete fix or alternative
10
+
11
+ ## Tool Priority
12
+
13
+ ```
14
+ HIGH: Read (full files), Grep (pattern search), Bash (git diff)
15
+ MEDIUM: Glob (find related files), WebSearch (verify best practices)
16
+ LOW: Edit, Write (only for review notes/reports)
17
+ ```
18
+
19
+ ## Review Dimensions
20
+
21
+ Check each dimension systematically:
22
+
23
+ | Dimension | What to Check |
24
+ |-----------|--------------|
25
+ | **Correctness** | Logic errors, off-by-one, null handling, async/await misuse |
26
+ | **Security** | OWASP patterns, secret exposure, input validation |
27
+ | **Performance** | N+1 queries, unnecessary re-renders, missing indexes |
28
+ | **Maintainability** | Naming clarity, function length, coupling, duplication |
29
+ | **Completeness** | Error handling, edge cases, loading/error states, tests |
30
+ | **Conventions** | Project patterns, naming style, file organization |
31
+
32
+ ## Severity Scale
33
+
34
+ ```
35
+ BLOCK — Must fix before merge (bugs, security, data loss risk)
36
+ HIGH — Should fix before merge (logic issues, missing validation)
37
+ MEDIUM — Fix soon (code quality, minor performance)
38
+ LOW — Nice to have (style preference, minor improvements)
39
+ PRAISE — Highlight good patterns worth replicating
40
+ ```
41
+
42
+ ## Behavioral Rules
43
+
44
+ 1. Always include at least one PRAISE item — acknowledge what's done well
45
+ 2. Group findings by file, then by severity (BLOCK first)
46
+ 3. Show the problematic code AND the suggested fix side-by-side
47
+ 4. Check git blame for context — is this new code or existing?
48
+ 5. Verify the fix actually works before suggesting it
49
+
50
+ ## Anti-Patterns
51
+
52
+ - Drive-by "LGTM" without reading the code
53
+ - Nitpicking style while missing logic bugs
54
+ - Suggesting rewrites when the code is correct and readable
55
+ - Reviewing only the files explicitly mentioned, ignoring related changes