monomind 2.5.1 → 2.5.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.
Files changed (289) hide show
  1. package/package.json +2 -1
  2. package/packages/@monomind/cli/.claude/agents/design/design-monodesign.md +6 -6
  3. package/packages/@monomind/cli/.claude/commands/mastermind/_repeat.md +4 -4
  4. package/packages/@monomind/cli/.claude/commands/mastermind/approvev1.md +4 -4
  5. package/packages/@monomind/cli/.claude/commands/mastermind/architect.md +6 -6
  6. package/packages/@monomind/cli/.claude/commands/mastermind/autodev.md +5 -5
  7. package/packages/@monomind/cli/.claude/commands/mastermind/brain.md +2 -2
  8. package/packages/@monomind/cli/.claude/commands/mastermind/build.md +6 -6
  9. package/packages/@monomind/cli/.claude/commands/mastermind/code-review.md +2 -2
  10. package/packages/@monomind/cli/.claude/commands/mastermind/content.md +6 -6
  11. package/packages/@monomind/cli/.claude/commands/mastermind/createorg.md +4 -4
  12. package/packages/@monomind/cli/.claude/commands/mastermind/createtask.md +3 -3
  13. package/packages/@monomind/cli/.claude/commands/mastermind/debug.md +5 -5
  14. package/packages/@monomind/cli/.claude/commands/mastermind/design.md +5 -5
  15. package/packages/@monomind/cli/.claude/commands/mastermind/do.md +2 -2
  16. package/packages/@monomind/cli/.claude/commands/mastermind/execute.md +5 -5
  17. package/packages/@monomind/cli/.claude/commands/mastermind/finance.md +6 -6
  18. package/packages/@monomind/cli/.claude/commands/mastermind/finish.md +5 -5
  19. package/packages/@monomind/cli/.claude/commands/mastermind/idea.md +6 -6
  20. package/packages/@monomind/cli/.claude/commands/mastermind/ideate.md +5 -5
  21. package/packages/@monomind/cli/.claude/commands/mastermind/improve.md +6 -6
  22. package/packages/@monomind/cli/.claude/commands/mastermind/marketing.md +6 -6
  23. package/packages/@monomind/cli/.claude/commands/mastermind/master.md +54 -54
  24. package/packages/@monomind/cli/.claude/commands/mastermind/ops.md +6 -6
  25. package/packages/@monomind/cli/.claude/commands/mastermind/orgs.md +2 -2
  26. package/packages/@monomind/cli/.claude/commands/mastermind/orgstatus.md +2 -2
  27. package/packages/@monomind/cli/.claude/commands/mastermind/plan.md +5 -5
  28. package/packages/@monomind/cli/.claude/commands/mastermind/receive-review.md +5 -5
  29. package/packages/@monomind/cli/.claude/commands/mastermind/release.md +6 -6
  30. package/packages/@monomind/cli/.claude/commands/mastermind/research.md +6 -6
  31. package/packages/@monomind/cli/.claude/commands/mastermind/review.md +6 -6
  32. package/packages/@monomind/cli/.claude/commands/mastermind/runorg.md +4 -4
  33. package/packages/@monomind/cli/.claude/commands/mastermind/runorgv1.md +5 -5
  34. package/packages/@monomind/cli/.claude/commands/mastermind/sales.md +6 -6
  35. package/packages/@monomind/cli/.claude/commands/mastermind/skill-builder.md +5 -5
  36. package/packages/@monomind/cli/.claude/commands/mastermind/stoporg.md +3 -3
  37. package/packages/@monomind/cli/.claude/commands/mastermind/taskdev.md +5 -5
  38. package/packages/@monomind/cli/.claude/commands/mastermind/tdd.md +5 -5
  39. package/packages/@monomind/cli/.claude/commands/mastermind/techport.md +5 -5
  40. package/packages/@monomind/cli/.claude/commands/mastermind/verify.md +5 -5
  41. package/packages/@monomind/cli/.claude/commands/mastermind/worktree.md +5 -5
  42. package/packages/@monomind/cli/.claude/helpers/control-start.cjs +30 -0
  43. package/packages/@monomind/cli/.claude/helpers/utils/monograph.cjs +44 -12
  44. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/access.md → mastermind-access/SKILL.md} +2 -2
  45. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/activity.md → mastermind-activity/SKILL.md} +2 -2
  46. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapter-manager.md → mastermind-adapter-manager/SKILL.md} +2 -2
  47. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapters.md → mastermind-adapters/SKILL.md} +2 -2
  48. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agent-detail.md → mastermind-agent-detail/SKILL.md} +2 -2
  49. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agents.md → mastermind-agents/SKILL.md} +2 -2
  50. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approval-detail.md → mastermind-approval-detail/SKILL.md} +2 -2
  51. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approvev1.md → mastermind-approvev1/SKILL.md} +2 -2
  52. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/architect.md → mastermind-architect/SKILL.md} +7 -7
  53. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/autodev.md → mastermind-autodev/SKILL.md} +10 -10
  54. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/backup.md → mastermind-backup/SKILL.md} +2 -2
  55. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/bootstrap.md → mastermind-bootstrap/SKILL.md} +2 -2
  56. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/budgets.md → mastermind-budgets/SKILL.md} +2 -2
  57. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/build.md → mastermind-build/SKILL.md} +5 -5
  58. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/companies.md → mastermind-companies/SKILL.md} +2 -2
  59. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/content.md → mastermind-content/SKILL.md} +5 -5
  60. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/costs.md → mastermind-costs/SKILL.md} +2 -2
  61. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/createorg.md → mastermind-createorg/SKILL.md} +3 -3
  62. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/debug.md → mastermind-debug/SKILL.md} +4 -4
  63. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_delegation.md → mastermind-delegation/SKILL.md} +1 -1
  64. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/design.md → mastermind-design/SKILL.md} +9 -9
  65. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/diagnose.md → mastermind-diagnose/SKILL.md} +2 -2
  66. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/env.md → mastermind-env/SKILL.md} +2 -2
  67. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/environments.md → mastermind-environments/SKILL.md} +2 -2
  68. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/execute.md → mastermind-execute/SKILL.md} +10 -10
  69. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/export.md → mastermind-export/SKILL.md} +2 -2
  70. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finance.md → mastermind-finance/SKILL.md} +5 -5
  71. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goal-detail.md → mastermind-goal-detail/SKILL.md} +2 -2
  72. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goals.md → mastermind-goals/SKILL.md} +2 -2
  73. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/heartbeatv1.md → mastermind-heartbeatv1/SKILL.md} +2 -2
  74. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/idea.md → mastermind-idea/SKILL.md} +7 -7
  75. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/import.md → mastermind-import/SKILL.md} +2 -2
  76. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/inbox.md → mastermind-inbox/SKILL.md} +2 -2
  77. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance.md → mastermind-instance/SKILL.md} +2 -2
  78. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance-settings.md → mastermind-instance-settings/SKILL.md} +2 -2
  79. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invite-landing.md → mastermind-invite-landing/SKILL.md} +2 -2
  80. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invites.md → mastermind-invites/SKILL.md} +2 -2
  81. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issue-detail.md → mastermind-issue-detail/SKILL.md} +2 -2
  82. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issues.md → mastermind-issues/SKILL.md} +2 -2
  83. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/join-queue.md → mastermind-join-queue/SKILL.md} +2 -2
  84. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/liveness.md → mastermind-liveness/SKILL.md} +2 -2
  85. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/marketing.md → mastermind-marketing/SKILL.md} +8 -8
  86. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/memory.md → mastermind-memory/SKILL.md} +2 -2
  87. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monitor.md → mastermind-monitor/SKILL.md} +2 -2
  88. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/my-issues.md → mastermind-my-issues/SKILL.md} +2 -2
  89. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/new-agent.md → mastermind-new-agent/SKILL.md} +2 -2
  90. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/ops.md → mastermind-ops/SKILL.md} +5 -5
  91. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-chart.md → mastermind-org-chart/SKILL.md} +2 -2
  92. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-settings.md → mastermind-org-settings/SKILL.md} +2 -2
  93. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgs.md → mastermind-orgs/SKILL.md} +1 -1
  94. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgstatus.md → mastermind-orgstatus/SKILL.md} +2 -2
  95. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan.md → mastermind-plan/SKILL.md} +7 -7
  96. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan-to-tasks.md → mastermind-plan-to-tasks/SKILL.md} +2 -2
  97. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-manager.md → mastermind-plugin-manager/SKILL.md} +2 -2
  98. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-settings.md → mastermind-plugin-settings/SKILL.md} +2 -2
  99. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugins.md → mastermind-plugins/SKILL.md} +2 -2
  100. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/profile.md → mastermind-profile/SKILL.md} +2 -2
  101. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-detail.md → mastermind-project-detail/SKILL.md} +2 -2
  102. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-workspace.md → mastermind-project-workspace/SKILL.md} +2 -2
  103. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/projects.md → mastermind-projects/SKILL.md} +2 -2
  104. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_protocol.md → mastermind-protocol/SKILL.md} +3 -3
  105. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/release.md → mastermind-release/SKILL.md} +5 -5
  106. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_repeat.md → mastermind-repeat/SKILL.md} +2 -2
  107. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/research.md → mastermind-research/SKILL.md} +5 -5
  108. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/review.md → mastermind-review/SKILL.md} +5 -5
  109. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routine-detail.md → mastermind-routine-detail/SKILL.md} +2 -2
  110. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routines.md → mastermind-routines/SKILL.md} +2 -2
  111. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorgv1.md → mastermind-runorgv1/SKILL.md} +2 -2
  112. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/sales.md → mastermind-sales/SKILL.md} +5 -5
  113. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/search.md → mastermind-search/SKILL.md} +2 -2
  114. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/secrets.md → mastermind-secrets/SKILL.md} +2 -2
  115. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/skill-builder.md → mastermind-skill-builder/SKILL.md} +16 -14
  116. package/packages/@monomind/cli/.claude/skills/mastermind-skills/{skills.md → SKILL.md} +2 -2
  117. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/stoporg.md → mastermind-stoporg/SKILL.md} +2 -2
  118. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/taskdev.md → mastermind-taskdev/SKILL.md} +6 -6
  119. package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/implementer-prompt.md +1 -1
  120. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tasks.md → mastermind-tasks/SKILL.md} +2 -2
  121. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tdd.md → mastermind-tdd/SKILL.md} +4 -4
  122. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/techport.md → mastermind-techport/SKILL.md} +5 -5
  123. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/threads.md → mastermind-threads/SKILL.md} +2 -2
  124. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tree-control.md → mastermind-tree-control/SKILL.md} +2 -2
  125. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/verify.md → mastermind-verify/SKILL.md} +1 -1
  126. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/wiki.md → mastermind-wiki/SKILL.md} +2 -2
  127. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspace-detail.md → mastermind-workspace-detail/SKILL.md} +2 -2
  128. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspaces.md → mastermind-workspaces/SKILL.md} +2 -2
  129. package/packages/@monomind/cli/.claude/skills/monodesign/SKILL.md +114 -190
  130. package/packages/@monomind/cli/.claude/skills/monodesign/adapt.md +1 -1
  131. package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-asset-producer.md +4 -4
  132. package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +103 -0
  133. package/packages/@monomind/cli/.claude/skills/monodesign/audit.md +1 -1
  134. package/packages/@monomind/cli/.claude/skills/monodesign/craft.md +2 -2
  135. package/packages/@monomind/cli/.claude/skills/monodesign/critique.md +1 -1
  136. package/packages/@monomind/cli/.claude/skills/monodesign/init.md +30 -0
  137. package/packages/@monomind/cli/.claude/skills/monodesign/layout.md +36 -0
  138. package/packages/@monomind/cli/.claude/skills/monodesign/live.md +19 -44
  139. package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.md +122 -0
  140. package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.native.md +58 -0
  141. package/packages/@monomind/cli/.claude/skills/monodesign/reference/android.md +40 -0
  142. package/packages/@monomind/cli/.claude/skills/monodesign/reference/animate.md +39 -11
  143. package/packages/@monomind/cli/.claude/skills/monodesign/reference/antipatterns-catalog.md +22 -16
  144. package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.md +5 -3
  145. package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.native.md +139 -0
  146. package/packages/@monomind/cli/.claude/skills/monodesign/reference/bolder.md +71 -64
  147. package/packages/@monomind/cli/.claude/skills/monodesign/reference/brand.md +12 -18
  148. package/packages/@monomind/cli/.claude/skills/monodesign/reference/clarify.md +114 -0
  149. package/packages/@monomind/cli/.claude/skills/monodesign/reference/codex.md +4 -6
  150. package/packages/@monomind/cli/.claude/skills/monodesign/reference/colorize.md +108 -5
  151. package/packages/@monomind/cli/.claude/skills/monodesign/reference/craft.md +70 -143
  152. package/packages/@monomind/cli/.claude/skills/monodesign/reference/critique.md +635 -68
  153. package/packages/@monomind/cli/.claude/skills/monodesign/reference/delight.md +1 -1
  154. package/packages/@monomind/cli/.claude/skills/monodesign/reference/distill.md +1 -1
  155. package/packages/@monomind/cli/.claude/skills/monodesign/reference/document.md +24 -22
  156. package/packages/@monomind/cli/.claude/skills/monodesign/reference/extract.md +1 -1
  157. package/packages/@monomind/cli/.claude/skills/monodesign/reference/hooks.md +22 -29
  158. package/packages/@monomind/cli/.claude/skills/monodesign/reference/init.md +221 -0
  159. package/packages/@monomind/cli/.claude/skills/monodesign/reference/interaction-design.md +0 -6
  160. package/packages/@monomind/cli/.claude/skills/monodesign/reference/ios.md +45 -0
  161. package/packages/@monomind/cli/.claude/skills/monodesign/reference/layout.md +57 -13
  162. package/packages/@monomind/cli/.claude/skills/monodesign/reference/live.md +159 -63
  163. package/packages/@monomind/cli/.claude/skills/monodesign/reference/overdrive.md +1 -1
  164. package/packages/@monomind/cli/.claude/skills/monodesign/reference/personas.md +1 -1
  165. package/packages/@monomind/cli/.claude/skills/monodesign/reference/polish.md +16 -8
  166. package/packages/@monomind/cli/.claude/skills/monodesign/reference/pre-delivery-checklist.md +1 -1
  167. package/packages/@monomind/cli/.claude/skills/monodesign/reference/product.md +1 -3
  168. package/packages/@monomind/cli/.claude/skills/monodesign/reference/quieter.md +1 -1
  169. package/packages/@monomind/cli/.claude/skills/monodesign/reference/shape.md +27 -13
  170. package/packages/@monomind/cli/.claude/skills/monodesign/reference/teach.md +6 -152
  171. package/packages/@monomind/cli/.claude/skills/monodesign/reference/typeset.md +180 -3
  172. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/command-metadata.json +94 -0
  173. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context-signals.mjs +227 -0
  174. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +1062 -0
  175. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +243 -0
  176. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +199 -0
  177. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +34 -0
  178. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +1938 -0
  179. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +322 -0
  180. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +815 -0
  181. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +5246 -0
  182. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +51 -0
  183. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +260 -0
  184. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +259 -0
  185. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +574 -0
  186. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +1016 -0
  187. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +235 -0
  188. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +199 -0
  189. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +13 -0
  190. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +199 -0
  191. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +167 -0
  192. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +515 -0
  193. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2704 -0
  194. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +125 -0
  195. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +102 -0
  196. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +31 -0
  197. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +149 -0
  198. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +8 -0
  199. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +662 -0
  200. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +517 -0
  201. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +1777 -0
  202. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +62 -0
  203. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +843 -0
  204. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +70 -0
  205. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +641 -0
  206. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +130 -0
  207. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +5 -0
  208. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +43 -0
  209. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +51 -0
  210. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +20 -0
  211. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +138 -0
  212. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +459 -0
  213. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +940 -0
  214. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +358 -0
  215. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +153 -0
  216. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +290 -0
  217. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +827 -0
  218. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +275 -0
  219. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +181 -0
  220. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +37 -0
  221. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +813 -0
  222. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +147 -0
  223. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +124 -0
  224. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +11241 -0
  225. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +1242 -0
  226. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +76 -0
  227. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +684 -0
  228. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +52 -0
  229. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +584 -0
  230. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +273 -0
  231. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +364 -0
  232. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +385 -0
  233. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +95 -0
  234. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +1138 -0
  235. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +62 -0
  236. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +31 -0
  237. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +895 -0
  238. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +298 -0
  239. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +15 -0
  240. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +634 -0
  241. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +222 -0
  242. package/packages/@monomind/cli/.claude/skills/monodesign/teach.md +7 -58
  243. package/packages/@monomind/cli/dist/src/commands/design-detect.d.ts +7 -1
  244. package/packages/@monomind/cli/dist/src/commands/design-detect.js +70 -38
  245. package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +1 -1
  246. package/packages/@monomind/cli/dist/src/commands/design-palette.js +3 -3
  247. package/packages/@monomind/cli/dist/src/commands/doc.js +72 -15
  248. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +4 -0
  249. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +23 -0
  250. package/packages/@monomind/cli/dist/src/commands/doctor.js +3 -3
  251. package/packages/@monomind/cli/dist/src/commands/org.js +109 -9
  252. package/packages/@monomind/cli/dist/src/init/executor.js +14 -3
  253. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.d.ts +2 -0
  254. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +1 -0
  255. package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.js +38 -7
  256. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +8 -3
  257. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +193 -31
  258. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +33 -0
  259. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +166 -17
  260. package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +185 -0
  261. package/packages/@monomind/cli/dist/src/memory/memory-kg.js +449 -0
  262. package/packages/@monomind/cli/dist/src/memory/query-router.d.ts +44 -0
  263. package/packages/@monomind/cli/dist/src/memory/query-router.js +113 -0
  264. package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +18 -0
  265. package/packages/@monomind/cli/dist/src/orgrt/daemon.js +249 -12
  266. package/packages/@monomind/cli/dist/src/orgrt/migrate.js +7 -0
  267. package/packages/@monomind/cli/dist/src/orgrt/policy.js +7 -0
  268. package/packages/@monomind/cli/dist/src/orgrt/session.d.ts +24 -1
  269. package/packages/@monomind/cli/dist/src/orgrt/session.js +18 -3
  270. package/packages/@monomind/cli/dist/src/orgrt/templates.d.ts +1 -0
  271. package/packages/@monomind/cli/dist/src/orgrt/templates.js +9 -4
  272. package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +15 -0
  273. package/packages/@monomind/cli/dist/src/orgrt/types.js +2 -0
  274. package/packages/@monomind/cli/dist/src/ui/dashboard.html +154 -6
  275. package/packages/@monomind/cli/dist/src/ui/orgs.html +24 -0
  276. package/packages/@monomind/cli/dist/src/ui/server.mjs +162 -12
  277. package/packages/@monomind/cli/package.json +5 -3
  278. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_agent-select.md → mastermind-agent-select/SKILL.md} +0 -0
  279. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finish.md → mastermind-finish/SKILL.md} +0 -0
  280. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_intake.md → mastermind-intake/SKILL.md} +0 -0
  281. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/copywriting-frameworks.md +0 -0
  282. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/persuasion-psychology.md +0 -0
  283. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monotask.md → mastermind-monotask/SKILL.md} +0 -0
  284. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/receive-review.md → mastermind-receive-review/SKILL.md} +0 -0
  285. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorg.md → mastermind-runorg/SKILL.md} +0 -0
  286. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/code-quality-reviewer-prompt.md +0 -0
  287. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/final-reviewer-prompt.md +0 -0
  288. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/spec-reviewer-prompt.md +0 -0
  289. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/worktree.md → mastermind-worktree/SKILL.md} +0 -0
@@ -0,0 +1,222 @@
1
+ #!/usr/bin/env node
2
+ // Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind
3
+ /**
4
+ * Pin/unpin sub-commands as standalone skill shortcuts.
5
+ *
6
+ * Usage:
7
+ * node <scripts_path>/pin.mjs pin <command>
8
+ * node <scripts_path>/pin.mjs unpin <command>
9
+ *
10
+ * `pin audit` creates a lightweight audit skill that redirects to Monodesign's audit workflow.
11
+ * `unpin audit` removes that shortcut.
12
+ *
13
+ * The script discovers harness directories (.claude/skills, .cursor/skills, etc.)
14
+ * in the project root and creates/removes the pin in all of them.
15
+ */
16
+
17
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync, readdirSync } from 'node:fs';
18
+ import { basename, join, resolve, dirname } from 'node:path';
19
+ import { fileURLToPath } from 'node:url';
20
+
21
+ const __dirname = dirname(fileURLToPath(import.meta.url));
22
+
23
+ // All known harness directories
24
+ const HARNESS_DIRS = [
25
+ '.claude', '.cursor', '.gemini', '.codex', '.agents',
26
+ '.trae', '.trae-cn', '.pi', '.opencode', '.kiro', '.rovodev',
27
+ ];
28
+
29
+ const CODEX_HARNESSES = new Set(['.codex', '.agents']);
30
+
31
+ // Valid sub-command names
32
+ const VALID_COMMANDS = [
33
+ 'craft', 'init', 'extract', 'document', 'shape',
34
+ 'critique', 'audit',
35
+ 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'live',
36
+ 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive',
37
+ 'clarify', 'adapt', 'optimize',
38
+ ];
39
+
40
+ // Marker to identify pinned skills (so unpin doesn't delete user skills)
41
+ const PIN_MARKER = '<!-- monodesign-pinned-skill -->';
42
+
43
+ /**
44
+ * Walk up from startDir to find a project root.
45
+ */
46
+ function findProjectRoot(startDir = process.cwd()) {
47
+ let dir = resolve(startDir);
48
+ while (dir !== '/') {
49
+ if (
50
+ existsSync(join(dir, 'package.json')) ||
51
+ existsSync(join(dir, '.git')) ||
52
+ existsSync(join(dir, 'skills-lock.json'))
53
+ ) {
54
+ return dir;
55
+ }
56
+ const parent = resolve(dir, '..');
57
+ if (parent === dir) break;
58
+ dir = parent;
59
+ }
60
+ return resolve(startDir);
61
+ }
62
+
63
+ /**
64
+ * Find harness skill directories that have an monodesign skill installed.
65
+ */
66
+ function findHarnessDirs(projectRoot) {
67
+ const dirs = [];
68
+ for (const harness of HARNESS_DIRS) {
69
+ const skillsDir = join(projectRoot, harness, 'skills');
70
+ // Only pin in harness dirs that already have monodesign installed
71
+ const monodesignDir = join(skillsDir, 'monodesign');
72
+ if (existsSync(monodesignDir) || existsSync(join(skillsDir, 'i-monodesign'))) {
73
+ dirs.push(skillsDir);
74
+ }
75
+ }
76
+ return dirs;
77
+ }
78
+
79
+ /**
80
+ * Load command metadata (descriptions for pinned skills).
81
+ */
82
+ function loadCommandMetadata() {
83
+ const metadataPath = join(__dirname, 'command-metadata.json');
84
+ if (existsSync(metadataPath)) {
85
+ return JSON.parse(readFileSync(metadataPath, 'utf-8'));
86
+ }
87
+ return {};
88
+ }
89
+
90
+ /**
91
+ * Generate a pinned skill's SKILL.md content.
92
+ */
93
+ function commandPrefixForSkillsDir(skillsDir) {
94
+ return CODEX_HARNESSES.has(basename(dirname(skillsDir))) ? '$' : '/';
95
+ }
96
+
97
+ function generatePinnedSkill(command, metadata, commandPrefix) {
98
+ const desc = metadata[command]?.description || `Shortcut for ${commandPrefix}monodesign ${command}.`;
99
+ const hint = metadata[command]?.argumentHint || '[target]';
100
+
101
+ return `---
102
+ name: ${command}
103
+ description: "${desc}"
104
+ argument-hint: "${hint}"
105
+ user-invocable: true
106
+ ---
107
+
108
+ ${PIN_MARKER}
109
+
110
+ This is a pinned shortcut for \`${commandPrefix}monodesign ${command}\`.
111
+
112
+ Invoke ${commandPrefix}monodesign ${command}, passing along any arguments provided here, and follow its instructions.
113
+ `;
114
+ }
115
+
116
+ /**
117
+ * Pin a command: create shortcut skill in all harness dirs.
118
+ */
119
+ function pin(command, projectRoot) {
120
+ const metadata = loadCommandMetadata();
121
+ const harnessDirs = findHarnessDirs(projectRoot);
122
+
123
+ if (harnessDirs.length === 0) {
124
+ console.log('No harness directories with monodesign installed found.');
125
+ return false;
126
+ }
127
+
128
+ let created = 0;
129
+
130
+ for (const skillsDir of harnessDirs) {
131
+ const commandPrefix = commandPrefixForSkillsDir(skillsDir);
132
+ const content = generatePinnedSkill(command, metadata, commandPrefix);
133
+ // Check if skill already exists (and isn't a pin)
134
+ const skillDir = join(skillsDir, command);
135
+ if (existsSync(skillDir)) {
136
+ const existingMd = join(skillDir, 'SKILL.md');
137
+ if (existsSync(existingMd)) {
138
+ const existing = readFileSync(existingMd, 'utf-8');
139
+ if (!existing.includes(PIN_MARKER)) {
140
+ console.log(` SKIP: ${skillDir} (non-pinned skill already exists)`);
141
+ continue;
142
+ }
143
+ }
144
+ }
145
+
146
+ mkdirSync(skillDir, { recursive: true });
147
+ writeFileSync(join(skillDir, 'SKILL.md'), content, 'utf-8');
148
+ console.log(` + ${skillDir}`);
149
+ created++;
150
+ }
151
+
152
+ if (created > 0) {
153
+ console.log(`\nPinned '${command}' as a standalone shortcut in ${created} location(s).`);
154
+ console.log('Use the pinned command directly in each harness.');
155
+ }
156
+
157
+ return created > 0;
158
+ }
159
+
160
+ /**
161
+ * Unpin a command: remove shortcut skill from all harness dirs.
162
+ */
163
+ function unpin(command, projectRoot) {
164
+ const harnessDirs = findHarnessDirs(projectRoot);
165
+ let removed = 0;
166
+
167
+ for (const skillsDir of harnessDirs) {
168
+ const skillDir = join(skillsDir, command);
169
+ if (!existsSync(skillDir)) continue;
170
+
171
+ const skillMd = join(skillDir, 'SKILL.md');
172
+ if (!existsSync(skillMd)) continue;
173
+
174
+ // Safety: only remove if it's a pinned skill
175
+ const content = readFileSync(skillMd, 'utf-8');
176
+ if (!content.includes(PIN_MARKER)) {
177
+ console.log(` SKIP: ${skillDir} (not a pinned skill)`);
178
+ continue;
179
+ }
180
+
181
+ rmSync(skillDir, { recursive: true, force: true });
182
+ console.log(` - ${skillDir}`);
183
+ removed++;
184
+ }
185
+
186
+ if (removed > 0) {
187
+ console.log(`\nUnpinned '${command}' from ${removed} location(s).`);
188
+ console.log(`Use Monodesign's '${command}' workflow directly to access it.`);
189
+ } else {
190
+ console.log(`No pinned '${command}' shortcut found.`);
191
+ }
192
+
193
+ return removed > 0;
194
+ }
195
+
196
+ // --- CLI ---
197
+ const [,, action, command] = process.argv;
198
+
199
+ if (!action || !command) {
200
+ console.log('Usage: node pin.mjs <pin|unpin> <command>');
201
+ console.log(`\nAvailable commands: ${VALID_COMMANDS.join(', ')}`);
202
+ process.exit(1);
203
+ }
204
+
205
+ if (action !== 'pin' && action !== 'unpin') {
206
+ console.error(`Unknown action: ${action}. Use 'pin' or 'unpin'.`);
207
+ process.exit(1);
208
+ }
209
+
210
+ if (!VALID_COMMANDS.includes(command)) {
211
+ console.error(`Unknown command: ${command}`);
212
+ console.error(`Available commands: ${VALID_COMMANDS.join(', ')}`);
213
+ process.exit(1);
214
+ }
215
+
216
+ const root = findProjectRoot();
217
+
218
+ if (action === 'pin') {
219
+ pin(command, root);
220
+ } else {
221
+ unpin(command, root);
222
+ }
@@ -1,69 +1,18 @@
1
1
  ---
2
2
  name: monodesign-teach
3
- description: Create or update PRODUCT.mdextract product context, users, brand voice, and design principles from the codebase, existing files, and conversation to anchor all future monodesign work.
3
+ description: Alias of /monodesign initset up a project for monodesign by producing PRODUCT.md (strategic context), optionally DESIGN.md (visual system), and pre-configuring live mode.
4
4
  type: design-sub-command
5
5
  argument-hint: "[project path or description]"
6
6
  user-invocable: true
7
7
  ---
8
8
 
9
- # Monodesign: Teach
9
+ # Monodesign: Teach (alias of Init)
10
10
 
11
- Create or update `PRODUCT.md` the required context anchor for all `/monodesign` sub-commands.
11
+ `teach` is the historical name for the setup command and remains fully supported; it is an alias of `init`. Both invocations behave identically.
12
12
 
13
- `PRODUCT.md` is not a design document it's the product context document. It answers: who uses this, what is it for, what is the brand personality, and what design anti-references should be avoided.
13
+ Follow `commands/init.md` and the authoritative flow in `reference/init.md` from the monodesign skill directory: one codebase crawl plus a short strategic interview produces **PRODUCT.md** (register, users, purpose, brand personality, anti-references, design principles), offers **DESIGN.md** via `/monodesign document`, and pre-configures `.monodesign/live/config.json` for `/monodesign live`.
14
14
 
15
- ## When to Run
15
+ Notes preserved from the teach era:
16
16
 
17
- Run `/monodesign teach` when:
18
- - Starting work on a new project with no `PRODUCT.md`
19
- - The existing `PRODUCT.md` is empty, placeholder (<200 chars), or has `[TODO]` markers
20
- - The product has significantly evolved and the `PRODUCT.md` is stale
21
-
22
- ## Discovery Protocol
23
-
24
- **Step 1: Gather existing signals**
25
-
26
- Read the following files if they exist:
27
- - `README.md` — what is this product?
28
- - `package.json` — name, description, keywords
29
- - Any landing page copy (`index.html`, `src/pages/index.astro`, etc.)
30
- - Existing `PRODUCT.md` (to assess completeness)
31
-
32
- If a description or tagline exists, extract: target user, core value proposition, brand personality signals.
33
-
34
- **Step 2: Ask for what's missing**
35
-
36
- Ask the user 3–5 targeted questions based on what couldn't be inferred:
37
- - Who specifically uses this? (Role, context, skill level)
38
- - What's the one thing this does better than alternatives?
39
- - Three words that describe the brand personality
40
- - What design style do you want to AVOID? (anti-references)
41
- - Is this a marketing surface, product UI, or both?
42
-
43
- **Step 3: Write PRODUCT.md**
44
-
45
- ```markdown
46
- # Product
47
-
48
- ## Register
49
- [brand | product | both]
50
-
51
- ## Users
52
- [Specific description of who uses this — not "developers", but "senior engineers at mid-size SaaS companies who need to..."]
53
-
54
- ## Product Purpose
55
- [What this does and why it matters to those users. One paragraph.]
56
-
57
- ## Brand Personality
58
- [3 words + a description of the tone. Direct, specific, no hedging.]
59
-
60
- ## Anti-references
61
- [Specific things this product should NOT look like. Brand names, aesthetics, clichés to avoid.]
62
-
63
- ## Design Principles
64
- [3–5 opinionated principles that guide all design decisions.]
65
- ```
66
-
67
- ## After Writing
68
-
69
- Confirm with the user that the PRODUCT.md is accurate before continuing to any design work. The PRODUCT.md is the foundation — if it's wrong, everything built on it is built on the wrong foundation.
17
+ - A legacy `.monodesign.md` at the project root is auto-renamed to `PRODUCT.md` by the context loader; mention this once and merge into that content rather than starting fresh.
18
+ - If teach was invoked as a setup blocker by another monodesign command, complete the init flow, then resume the original task with the fresh context.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * CLI Design Detect Command
3
- * Thin wrapper around impeccable's design anti-pattern detector
3
+ * Thin wrapper around the bundled @monoes/monodesign anti-pattern detector
4
4
  *
5
5
  * github.com/monoes/monomind
6
6
  */
@@ -16,6 +16,12 @@ export interface DesignDetectResult {
16
16
  patterns: DesignAntiPattern[];
17
17
  count: number;
18
18
  }
19
+ /**
20
+ * Resolve the bundled monodesign CLI entry (cli/bin/cli.js) from the
21
+ * @monoes/monodesign package. Falls back to the monorepo sibling layout when
22
+ * running from a source checkout without installed workspace links.
23
+ */
24
+ export declare function resolveMonodesignCli(): string | null;
19
25
  export declare const designCommand: Command;
20
26
  export default designCommand;
21
27
  //# sourceMappingURL=design-detect.d.ts.map
@@ -1,39 +1,52 @@
1
1
  /**
2
2
  * CLI Design Detect Command
3
- * Thin wrapper around impeccable's design anti-pattern detector
3
+ * Thin wrapper around the bundled @monoes/monodesign anti-pattern detector
4
4
  *
5
5
  * github.com/monoes/monomind
6
6
  */
7
7
  import { output } from '../output.js';
8
- import { spawn, execFile } from 'child_process';
9
- import { promisify } from 'util';
8
+ import { spawn } from 'child_process';
9
+ import { createRequire } from 'module';
10
+ import { dirname, join } from 'path';
11
+ import { existsSync } from 'fs';
12
+ import { fileURLToPath } from 'url';
10
13
  import { paletteSubcommand } from './design-palette.js';
11
- const execFileAsync = promisify(execFile);
12
14
  // ─── Helpers ─────────────────────────────────────────────────────────────────
13
- async function isImpeccableAvailable() {
15
+ /**
16
+ * Resolve the bundled monodesign CLI entry (cli/bin/cli.js) from the
17
+ * @monoes/monodesign package. Falls back to the monorepo sibling layout when
18
+ * running from a source checkout without installed workspace links.
19
+ */
20
+ export function resolveMonodesignCli() {
21
+ // 1. Normal resolution through the package's "./engine" export.
14
22
  try {
15
- await execFileAsync('npx', ['--no-install', 'impeccable', '--version'], { timeout: 5000 });
16
- return true;
23
+ const require = createRequire(import.meta.url);
24
+ const enginePath = require.resolve('@monoes/monodesign/engine');
25
+ const binPath = join(dirname(enginePath), '..', 'bin', 'cli.js');
26
+ if (existsSync(binPath))
27
+ return binPath;
17
28
  }
18
29
  catch {
19
- // Try checking via which
20
- try {
21
- await execFileAsync('which', ['impeccable'], { timeout: 3000 });
22
- return true;
23
- }
24
- catch {
25
- return false;
26
- }
30
+ // fall through to monorepo-relative lookup
27
31
  }
32
+ // 2. Monorepo layout: packages/@monomind/cli/{src|dist/src}/commands/ → packages/@monoes/monodesign
33
+ const here = dirname(fileURLToPath(import.meta.url));
34
+ for (const toCliRoot of ['../..', '../../..']) {
35
+ // <cli root>/../../@monoes/monodesign = packages/@monoes/monodesign
36
+ const candidate = join(here, toCliRoot, '..', '..', '@monoes', 'monodesign', 'cli', 'bin', 'cli.js');
37
+ if (existsSync(candidate))
38
+ return candidate;
39
+ }
40
+ return null;
28
41
  }
29
- function runImpeccable(args) {
42
+ function runMonodesign(cliPath, args) {
30
43
  return new Promise((resolve) => {
31
- const child = spawn('npx', ['impeccable', 'detect', ...args], {
44
+ const child = spawn(process.execPath, [cliPath, ...args], {
32
45
  stdio: 'inherit',
33
46
  shell: false,
34
47
  });
35
48
  child.on('error', (err) => {
36
- output.printError(`Failed to run impeccable: ${err.message}`);
49
+ output.printError(`Failed to run the monodesign detector: ${err.message}`);
37
50
  resolve(1);
38
51
  });
39
52
  child.on('close', (code) => {
@@ -41,10 +54,18 @@ function runImpeccable(args) {
41
54
  });
42
55
  });
43
56
  }
57
+ function printEngineMissing() {
58
+ output.writeln();
59
+ output.writeln(output.warning('The bundled monodesign detection engine could not be found.'));
60
+ output.writeln();
61
+ output.writeln('The detector ships with @monoes/monodesign. Reinstall monomind to restore it:');
62
+ output.writeln(output.dim(' npm install -g monomind # or: pnpm install (in a monomind checkout)'));
63
+ output.writeln();
64
+ }
44
65
  // ─── detect subcommand ────────────────────────────────────────────────────────
45
66
  const detectSubcommand = {
46
67
  name: 'detect',
47
- description: 'Detect design anti-patterns in HTML/CSS files using impeccable',
68
+ description: 'Detect design anti-patterns in HTML/CSS files using the bundled monodesign engine',
48
69
  options: [
49
70
  {
50
71
  name: 'target',
@@ -70,28 +91,37 @@ const detectSubcommand = {
70
91
  output.writeln();
71
92
  output.writeln(output.bold('Design Anti-Pattern Detection'));
72
93
  output.writeln(output.dim('─'.repeat(50)));
73
- const available = await isImpeccableAvailable();
74
- if (!available) {
75
- output.writeln();
76
- output.writeln(output.warning('impeccable is not installed.'));
77
- output.writeln();
78
- output.writeln('Install it to enable design anti-pattern detection:');
79
- output.writeln(output.dim(' npm install -g impeccable'));
80
- output.writeln();
81
- output.writeln('Or run directly without installing:');
82
- output.writeln(output.dim(' npx impeccable detect <file-or-dir>'));
83
- output.writeln();
84
- output.writeln(output.dim('impeccable checks for 46 known design anti-patterns across:'));
85
- output.writeln(output.dim(' • slop — AI tells: purple palettes, side-tabs, card grids, italic-serif heroes'));
86
- output.writeln(output.dim(' • quality — spacing, hierarchy, readability, contrast, motion, typography'));
87
- return { success: false, message: 'impeccable not installed' };
94
+ const cliPath = resolveMonodesignCli();
95
+ if (!cliPath) {
96
+ printEngineMissing();
97
+ return { success: false, message: 'monodesign detection engine not found' };
88
98
  }
89
99
  output.writeln(output.dim(`Scanning: ${target}`));
90
100
  output.writeln();
91
- const forwardArgs = [target];
101
+ const forwardArgs = ['detect', target];
92
102
  if (jsonOutput)
93
103
  forwardArgs.push('--json');
94
- const exitCode = await runImpeccable(forwardArgs);
104
+ const exitCode = await runMonodesign(cliPath, forwardArgs);
105
+ return { success: exitCode === 0, exitCode };
106
+ },
107
+ };
108
+ // ─── ignores subcommand ───────────────────────────────────────────────────────
109
+ const ignoresSubcommand = {
110
+ name: 'ignores',
111
+ description: 'Manage monodesign detector ignore rules, files, and values',
112
+ examples: [
113
+ { command: 'monomind design ignores list', description: 'Show current ignore configuration' },
114
+ { command: 'monomind design ignores add-rule <rule-id>', description: 'Ignore a detector rule project-wide' },
115
+ { command: 'monomind design ignores add-file <path>', description: 'Exclude a file from detection' },
116
+ { command: 'monomind design ignores remove-rule <rule-id>', description: 'Re-enable an ignored rule' },
117
+ ],
118
+ action: async (ctx) => {
119
+ const cliPath = resolveMonodesignCli();
120
+ if (!cliPath) {
121
+ printEngineMissing();
122
+ return { success: false, message: 'monodesign detection engine not found' };
123
+ }
124
+ const exitCode = await runMonodesign(cliPath, ['ignores', ...ctx.args]);
95
125
  return { success: exitCode === 0, exitCode };
96
126
  },
97
127
  };
@@ -99,10 +129,11 @@ const detectSubcommand = {
99
129
  export const designCommand = {
100
130
  name: 'design',
101
131
  description: 'Design tooling: anti-pattern detection, OKLCH palette seeding, and design quality checks',
102
- subcommands: [detectSubcommand, paletteSubcommand],
132
+ subcommands: [detectSubcommand, ignoresSubcommand, paletteSubcommand],
103
133
  examples: [
104
134
  { command: 'monomind design detect', description: 'Detect design anti-patterns' },
105
135
  { command: 'monomind design detect -t ./src --json', description: 'JSON output for CI' },
136
+ { command: 'monomind design ignores list', description: 'Manage detector ignore rules' },
106
137
  { command: 'monomind design palette', description: 'Pick an OKLCH brand seed color' },
107
138
  { command: 'monomind design palette --from "my-product"', description: 'Deterministic seed from product name' },
108
139
  ],
@@ -113,7 +144,8 @@ export const designCommand = {
113
144
  output.writeln();
114
145
  output.writeln('Subcommands:');
115
146
  output.printList([
116
- 'detect - Detect design anti-patterns using impeccable',
147
+ 'detect - Detect design anti-patterns (bundled monodesign engine)',
148
+ 'ignores - Manage detector ignore rules, files, and values',
117
149
  'palette - OKLCH brand seed — returns anchor color + mood + composition strategy',
118
150
  ]);
119
151
  output.writeln();
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CLI Design Palette Command
3
3
  * OKLCH brand-seed picker — returns one anchor seed color + mood + composition strategy.
4
- * Ported from impeccable's palette.mjs (129 hand-curated seeds).
4
+ * Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind (129 hand-curated seeds).
5
5
  *
6
6
  * github.com/monoes/monomind
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CLI Design Palette Command
3
3
  * OKLCH brand-seed picker — returns one anchor seed color + mood + composition strategy.
4
- * Ported from impeccable's palette.mjs (129 hand-curated seeds).
4
+ * Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind (129 hand-curated seeds).
5
5
  *
6
6
  * github.com/monoes/monomind
7
7
  */
@@ -496,8 +496,8 @@ export const paletteSubcommand = {
496
496
  const idFlag = ctx.flags.id;
497
497
  const fromFlag = ctx.flags.from;
498
498
  const jsonFlag = ctx.flags.json;
499
- // Respect IMPECCABLE_PALETTE_SEED env var as a fallback for --from
500
- const fromKey = fromFlag || process.env['IMPECCABLE_PALETTE_SEED'];
499
+ // Respect MONODESIGN_PALETTE_SEED env var as a fallback for --from
500
+ const fromKey = fromFlag || process.env['MONODESIGN_PALETTE_SEED'];
501
501
  let seed;
502
502
  if (idFlag) {
503
503
  const found = SEEDS.find((s) => s.id === idFlag);
@@ -88,6 +88,7 @@ const searchDocCommand = {
88
88
  { name: 'scope', short: 's', description: 'Knowledge scope (default: shared)', type: 'string', default: 'shared' },
89
89
  { name: 'min-score', description: 'Minimum similarity (default: 0.3)', type: 'number', default: 0.3 },
90
90
  { name: 'store', description: 'Which store(s): project | global | all (default: all — project results win ties)', type: 'string', default: 'all' },
91
+ { name: 'surfaces', description: "Override routing: comma list of chunks,kg,rules,memory (default: rule-based router picks)", type: 'string' },
91
92
  ],
92
93
  examples: [
93
94
  { command: 'monomind doc search -q "authentication flow"', description: 'Search project + global brain' },
@@ -100,28 +101,84 @@ const searchDocCommand = {
100
101
  return { success: false, exitCode: 1 };
101
102
  }
102
103
  const { searchKnowledge } = await import('../knowledge/document-pipeline.js');
104
+ const { routeQuery, rrfFuse, recordRouteOverride } = await import('../memory/query-router.js');
103
105
  const storeFlag = String(ctx.flags.store || 'all');
104
- const excerpts = await searchKnowledge(query, {
105
- scope: String(ctx.flags.scope || 'shared'),
106
- limit: Number(ctx.flags.limit || 10),
107
- minScore: Number(ctx.flags['min-score'] || 0.3),
108
- store: storeFlag === 'project' || storeFlag === 'global' ? storeFlag : 'all',
109
- });
110
- if (!excerpts.length) {
106
+ const limit = Number(ctx.flags.limit || 10);
107
+ // Same surface routing as the MCP knowledge_search tool and the warm
108
+ // /api/knowledge/search endpoint: the rule-based router picks which
109
+ // retrieval surfaces to spend queries on; --surfaces overrides it.
110
+ const route = routeQuery(query);
111
+ const VALID_SURFACES = ['chunks', 'kg', 'rules', 'memory'];
112
+ const rawSurfaces = String(ctx.flags.surfaces || '').split(',').map(s => s.trim()).filter(Boolean);
113
+ const requested = rawSurfaces.filter(s => VALID_SURFACES.includes(s));
114
+ const invalidSurfaces = rawSurfaces.filter(s => !VALID_SURFACES.includes(s));
115
+ if (invalidSurfaces.length) {
116
+ output.writeln(output.dim(`ignoring unknown surface(s): ${invalidSurfaces.join(',')} (valid: ${VALID_SURFACES.join(',')})`));
117
+ }
118
+ const surfaces = requested.length
119
+ ? requested
120
+ : (route.confident ? route.surfaces : ['chunks', ...route.surfaces.filter(s => s !== 'chunks')]);
121
+ const bridge = await import('../memory/memory-bridge.js');
122
+ const kg = await import('../memory/memory-kg.js');
123
+ const [excerpts, graph, rules, memories] = await Promise.all([
124
+ surfaces.includes('chunks')
125
+ ? searchKnowledge(query, {
126
+ scope: String(ctx.flags.scope || 'shared'),
127
+ limit,
128
+ minScore: Number(ctx.flags['min-score'] || 0.3),
129
+ store: storeFlag === 'project' || storeFlag === 'global' ? storeFlag : 'all',
130
+ })
131
+ : [],
132
+ surfaces.includes('kg') ? kg.kgSearch({ query, limit: 6 }).catch(() => null) : null,
133
+ surfaces.includes('rules') ? bridge.bridgeSearchEntries({ query, namespace: 'rules', limit: 3, threshold: 0.35 }).catch(() => null) : null,
134
+ surfaces.includes('memory') ? bridge.bridgeSearchEntries({ query, namespace: 'patterns', limit: 3 }).catch(() => null) : null,
135
+ ]);
136
+ // Confident non-chunk routing against an empty surface (e.g. a project
137
+ // with no KG yet) must not read as "no knowledge" — fall back to chunks.
138
+ let fellBack = false;
139
+ let chunkExcerpts = excerpts;
140
+ if (!requested.length && !chunkExcerpts.length && !(graph?.triplets?.length) && !(rules?.results?.length) && !(memories?.results?.length) && !surfaces.includes('chunks')) {
141
+ fellBack = true;
142
+ recordRouteOverride(surfaces[0], 'chunks');
143
+ chunkExcerpts = await searchKnowledge(query, {
144
+ scope: String(ctx.flags.scope || 'shared'),
145
+ limit,
146
+ minScore: Number(ctx.flags['min-score'] || 0.3),
147
+ store: storeFlag === 'project' || storeFlag === 'global' ? storeFlag : 'all',
148
+ });
149
+ }
150
+ const fused = rrfFuse([
151
+ chunkExcerpts.map(e => ({ id: e.id || `${e.filePath}#${e.chunkIndex}`, kind: 'excerpt', ...e })),
152
+ (graph?.triplets ?? []).map((t, i) => ({ id: `kg:${i}:${t.source}|${t.relation}|${t.target}`, kind: 'triplet', ...t })),
153
+ (rules?.results ?? []).map(r => ({ id: r.id, kind: 'rule', key: r.key, text: r.content, score: r.score, importance: 0.7 })),
154
+ (memories?.results ?? []).map(r => ({ id: r.id, kind: 'memory', key: r.key, text: r.content, score: r.score })),
155
+ ], limit);
156
+ if (!fused.length) {
111
157
  output.writeln(output.dim('No results found.'));
112
158
  return { success: true, data: [] };
113
159
  }
114
- output.writeln(output.bold(`${excerpts.length} results:`));
160
+ output.writeln(output.bold(`${fused.length} results ${output.dim(`(surfaces: ${fellBack ? surfaces.join(',') + ' → chunks fallback' : surfaces.join(',')})`)}:`));
115
161
  output.writeln();
116
- for (let i = 0; i < excerpts.length; i++) {
117
- const ex = excerpts[i];
118
- const origin = ex.scope === 'global' ? ` ${output.dim('[global]')}` : '';
119
- output.writeln(`${output.highlight(`${i + 1}.`)} ${output.dim(`(${ex.similarity.toFixed(3)})`)} ${ex.filePath || 'unknown'}${origin}`);
120
- const preview = ex.text.length > 200 ? ex.text.slice(0, 200) + '...' : ex.text;
121
- output.writeln(` ${output.dim(preview)}`);
162
+ for (let i = 0; i < fused.length; i++) {
163
+ const r = fused[i];
164
+ const n = output.highlight(`${i + 1}.`);
165
+ if (r.kind === 'triplet') {
166
+ const fact = r.fact && r.fact !== `${r.source} ${r.relation} ${r.target}` ? ` ${output.dim(`(${String(r.fact).slice(0, 160)})`)}` : '';
167
+ output.writeln(`${n} ${output.dim('[kg]')} ${r.source} —${r.relation}→ ${r.target}${fact}`);
168
+ }
169
+ else if (r.kind === 'rule' || r.kind === 'memory') {
170
+ output.writeln(`${n} ${output.dim(`[${r.kind}]`)} ${String(r.text || '').replace(/\s+/g, ' ').slice(0, 200)}`);
171
+ }
172
+ else {
173
+ const origin = r.scope === 'global' ? ` ${output.dim('[global]')}` : '';
174
+ const sim = typeof r.similarity === 'number' ? `(${r.similarity.toFixed(3)}) ` : '';
175
+ output.writeln(`${n} ${output.dim(sim)}${r.filePath || 'unknown'}${origin}`);
176
+ const text = String(r.text || '');
177
+ output.writeln(` ${output.dim(text.length > 200 ? text.slice(0, 200) + '...' : text)}`);
178
+ }
122
179
  output.writeln();
123
180
  }
124
- return { success: true, data: excerpts };
181
+ return { success: true, data: fused };
125
182
  },
126
183
  };
127
184
  const listDocCommand = {
@@ -6,6 +6,10 @@ import type { HealthCheck } from './doctor-env-checks.js';
6
6
  export type { HealthCheck };
7
7
  export declare function checkConfigFile(): Promise<HealthCheck>;
8
8
  export declare function checkMemoryDatabase(): Promise<HealthCheck>;
9
+ /** Memory knowledge graph (cognee port): entities/relations/rules distilled
10
+ * from sessions and org runs. Informational — an empty graph on a fresh
11
+ * project is normal, so it never fails. */
12
+ export declare function checkMemoryKnowledgeGraph(): Promise<HealthCheck>;
9
13
  /** Second Brain: when this project has an indexed knowledge base, semantic
10
14
  * search needs the local embedding model. Its absence is silent (search
11
15
  * degrades to keyword matching) — surface it here instead. */