@monoes/monomindcli 2.15.6 → 2.16.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 (304) hide show
  1. package/.claude/helpers/build-skill-registry.cjs +23 -2
  2. package/.claude/helpers/handlers/route-handler.cjs +89 -3
  3. package/.claude/helpers/handlers/session-restore-handler.cjs +1 -1
  4. package/.claude/helpers/jev-picker.cjs +499 -0
  5. package/.claude/helpers/redact-secrets.cjs +69 -0
  6. package/.claude/skills/mastermind-agent-select/SKILL.md +28 -0
  7. package/dist/src/catalog/blueprints.d.ts +39 -0
  8. package/dist/src/catalog/blueprints.d.ts.map +1 -0
  9. package/dist/src/catalog/blueprints.js +78 -0
  10. package/dist/src/catalog/blueprints.js.map +1 -0
  11. package/dist/src/catalog/digest.d.ts +16 -0
  12. package/dist/src/catalog/digest.d.ts.map +1 -0
  13. package/dist/src/catalog/digest.js +62 -0
  14. package/dist/src/catalog/digest.js.map +1 -0
  15. package/dist/src/catalog/frontmatter.d.ts +23 -0
  16. package/dist/src/catalog/frontmatter.d.ts.map +1 -0
  17. package/dist/src/catalog/frontmatter.js +80 -0
  18. package/dist/src/catalog/frontmatter.js.map +1 -0
  19. package/dist/src/catalog/lifecycle.d.ts +31 -0
  20. package/dist/src/catalog/lifecycle.d.ts.map +1 -0
  21. package/dist/src/catalog/lifecycle.js +78 -0
  22. package/dist/src/catalog/lifecycle.js.map +1 -0
  23. package/dist/src/catalog/projection.d.ts +57 -0
  24. package/dist/src/catalog/projection.d.ts.map +1 -0
  25. package/dist/src/catalog/projection.js +272 -0
  26. package/dist/src/catalog/projection.js.map +1 -0
  27. package/dist/src/catalog/scan.d.ts +37 -0
  28. package/dist/src/catalog/scan.d.ts.map +1 -0
  29. package/dist/src/catalog/scan.js +214 -0
  30. package/dist/src/catalog/scan.js.map +1 -0
  31. package/dist/src/catalog/snapshot.d.ts +62 -0
  32. package/dist/src/catalog/snapshot.d.ts.map +1 -0
  33. package/dist/src/catalog/snapshot.js +183 -0
  34. package/dist/src/catalog/snapshot.js.map +1 -0
  35. package/dist/src/catalog/stage.d.ts +26 -0
  36. package/dist/src/catalog/stage.d.ts.map +1 -0
  37. package/dist/src/catalog/stage.js +316 -0
  38. package/dist/src/catalog/stage.js.map +1 -0
  39. package/dist/src/catalog/state.d.ts +23 -0
  40. package/dist/src/catalog/state.d.ts.map +1 -0
  41. package/dist/src/catalog/state.js +102 -0
  42. package/dist/src/catalog/state.js.map +1 -0
  43. package/dist/src/catalog/types.d.ts +289 -0
  44. package/dist/src/catalog/types.d.ts.map +1 -0
  45. package/dist/src/catalog/types.js +118 -0
  46. package/dist/src/catalog/types.js.map +1 -0
  47. package/dist/src/commands/catalog.d.ts +14 -0
  48. package/dist/src/commands/catalog.d.ts.map +1 -0
  49. package/dist/src/commands/catalog.js +392 -0
  50. package/dist/src/commands/catalog.js.map +1 -0
  51. package/dist/src/commands/doctor-catalog-checks.d.ts +3 -0
  52. package/dist/src/commands/doctor-catalog-checks.d.ts.map +1 -0
  53. package/dist/src/commands/doctor-catalog-checks.js +69 -0
  54. package/dist/src/commands/doctor-catalog-checks.js.map +1 -0
  55. package/dist/src/commands/doctor-decision-checks.d.ts +10 -0
  56. package/dist/src/commands/doctor-decision-checks.d.ts.map +1 -0
  57. package/dist/src/commands/doctor-decision-checks.js +82 -0
  58. package/dist/src/commands/doctor-decision-checks.js.map +1 -0
  59. package/dist/src/commands/doctor.d.ts.map +1 -1
  60. package/dist/src/commands/doctor.js +9 -1
  61. package/dist/src/commands/doctor.js.map +1 -1
  62. package/dist/src/commands/index.d.ts +2 -2
  63. package/dist/src/commands/index.d.ts.map +1 -1
  64. package/dist/src/commands/index.js +4 -1
  65. package/dist/src/commands/index.js.map +1 -1
  66. package/dist/src/commands/org-observe.d.ts.map +1 -1
  67. package/dist/src/commands/org-observe.js +7 -1
  68. package/dist/src/commands/org-observe.js.map +1 -1
  69. package/dist/src/commands/org-skills.d.ts.map +1 -1
  70. package/dist/src/commands/org-skills.js +14 -4
  71. package/dist/src/commands/org-skills.js.map +1 -1
  72. package/dist/src/commands/org.d.ts.map +1 -1
  73. package/dist/src/commands/org.js +8 -1
  74. package/dist/src/commands/org.js.map +1 -1
  75. package/dist/src/commands/pick.d.ts +4 -0
  76. package/dist/src/commands/pick.d.ts.map +1 -0
  77. package/dist/src/commands/pick.js +77 -0
  78. package/dist/src/commands/pick.js.map +1 -0
  79. package/dist/src/commands/route.js +1 -1
  80. package/dist/src/commands/route.js.map +1 -1
  81. package/dist/src/decision/catalogs.d.ts +20 -0
  82. package/dist/src/decision/catalogs.d.ts.map +1 -0
  83. package/dist/src/decision/catalogs.js +64 -0
  84. package/dist/src/decision/catalogs.js.map +1 -0
  85. package/dist/src/decision/jev.d.ts +85 -0
  86. package/dist/src/decision/jev.d.ts.map +1 -0
  87. package/dist/src/decision/jev.js +72 -0
  88. package/dist/src/decision/jev.js.map +1 -0
  89. package/dist/src/decision/picks.d.ts +50 -0
  90. package/dist/src/decision/picks.d.ts.map +1 -0
  91. package/dist/src/decision/picks.js +100 -0
  92. package/dist/src/decision/picks.js.map +1 -0
  93. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  94. package/dist/src/init/helpers-generator.js +7 -0
  95. package/dist/src/init/helpers-generator.js.map +1 -1
  96. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
  97. package/dist/src/orgrt/checkpoint-ops.js +6 -1
  98. package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
  99. package/dist/src/orgrt/completion-gate.d.ts +15 -0
  100. package/dist/src/orgrt/completion-gate.d.ts.map +1 -1
  101. package/dist/src/orgrt/completion-gate.js +59 -3
  102. package/dist/src/orgrt/completion-gate.js.map +1 -1
  103. package/dist/src/orgrt/daemon.d.ts +18 -1
  104. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  105. package/dist/src/orgrt/daemon.js +33 -3
  106. package/dist/src/orgrt/daemon.js.map +1 -1
  107. package/dist/src/orgrt/decisions.d.ts +24 -0
  108. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  109. package/dist/src/orgrt/decisions.js +164 -18
  110. package/dist/src/orgrt/decisions.js.map +1 -1
  111. package/dist/src/orgrt/review-packet.d.ts +1 -1
  112. package/dist/src/orgrt/review-packet.d.ts.map +1 -1
  113. package/dist/src/orgrt/review-packet.js +2 -2
  114. package/dist/src/orgrt/review-packet.js.map +1 -1
  115. package/dist/src/orgrt/session.d.ts +9 -0
  116. package/dist/src/orgrt/session.d.ts.map +1 -1
  117. package/dist/src/orgrt/session.js +24 -2
  118. package/dist/src/orgrt/session.js.map +1 -1
  119. package/dist/src/orgrt/skill-library.d.ts +10 -1
  120. package/dist/src/orgrt/skill-library.d.ts.map +1 -1
  121. package/dist/src/orgrt/skill-library.js +53 -4
  122. package/dist/src/orgrt/skill-library.js.map +1 -1
  123. package/dist/src/orgrt/task-dag.d.ts +3 -0
  124. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  125. package/dist/src/orgrt/task-dag.js +6 -0
  126. package/dist/src/orgrt/task-dag.js.map +1 -1
  127. package/dist/src/orgrt/types.d.ts +2 -0
  128. package/dist/src/orgrt/types.d.ts.map +1 -1
  129. package/dist/src/orgrt/types.js +4 -0
  130. package/dist/src/orgrt/types.js.map +1 -1
  131. package/dist/src/platform-adapters/mutation.d.ts +34 -0
  132. package/dist/src/platform-adapters/mutation.d.ts.map +1 -0
  133. package/dist/src/platform-adapters/mutation.js +188 -0
  134. package/dist/src/platform-adapters/mutation.js.map +1 -0
  135. package/dist/src/platform-adapters/operations.d.ts +7 -1
  136. package/dist/src/platform-adapters/operations.d.ts.map +1 -1
  137. package/dist/src/platform-adapters/operations.js +18 -76
  138. package/dist/src/platform-adapters/operations.js.map +1 -1
  139. package/dist/src/routing/jev-step.d.ts +17 -0
  140. package/dist/src/routing/jev-step.d.ts.map +1 -0
  141. package/dist/src/routing/jev-step.js +27 -0
  142. package/dist/src/routing/jev-step.js.map +1 -0
  143. package/dist/src/routing/route-layer-factory.d.ts.map +1 -1
  144. package/dist/src/routing/route-layer-factory.js +16 -1
  145. package/dist/src/routing/route-layer-factory.js.map +1 -1
  146. package/dist/src/utils/redaction.d.ts.map +1 -1
  147. package/dist/src/utils/redaction.js +19 -4
  148. package/dist/src/utils/redaction.js.map +1 -1
  149. package/dist/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +4 -4
  151. package/.claude/skills/monodesign/SKILL.md +0 -257
  152. package/.claude/skills/monodesign/adapt.md +0 -53
  153. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +0 -100
  154. package/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +0 -103
  155. package/.claude/skills/monodesign/animate.md +0 -65
  156. package/.claude/skills/monodesign/audit.md +0 -89
  157. package/.claude/skills/monodesign/bolder.md +0 -50
  158. package/.claude/skills/monodesign/clarify.md +0 -64
  159. package/.claude/skills/monodesign/colorize.md +0 -68
  160. package/.claude/skills/monodesign/craft.md +0 -51
  161. package/.claude/skills/monodesign/critique.md +0 -66
  162. package/.claude/skills/monodesign/delight.md +0 -47
  163. package/.claude/skills/monodesign/distill.md +0 -56
  164. package/.claude/skills/monodesign/document.md +0 -83
  165. package/.claude/skills/monodesign/extract.md +0 -74
  166. package/.claude/skills/monodesign/harden.md +0 -65
  167. package/.claude/skills/monodesign/init.md +0 -30
  168. package/.claude/skills/monodesign/layout.md +0 -36
  169. package/.claude/skills/monodesign/live.md +0 -34
  170. package/.claude/skills/monodesign/onboard.md +0 -50
  171. package/.claude/skills/monodesign/optimize.md +0 -64
  172. package/.claude/skills/monodesign/overdrive.md +0 -56
  173. package/.claude/skills/monodesign/polish.md +0 -68
  174. package/.claude/skills/monodesign/quieter.md +0 -57
  175. package/.claude/skills/monodesign/reference/adapt.md +0 -312
  176. package/.claude/skills/monodesign/reference/adapt.native.md +0 -58
  177. package/.claude/skills/monodesign/reference/android.md +0 -40
  178. package/.claude/skills/monodesign/reference/animate.md +0 -203
  179. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +0 -410
  180. package/.claude/skills/monodesign/reference/audit.md +0 -135
  181. package/.claude/skills/monodesign/reference/audit.native.md +0 -139
  182. package/.claude/skills/monodesign/reference/bolder.md +0 -120
  183. package/.claude/skills/monodesign/reference/brand-workflow.md +0 -180
  184. package/.claude/skills/monodesign/reference/brand.md +0 -108
  185. package/.claude/skills/monodesign/reference/clarify.md +0 -288
  186. package/.claude/skills/monodesign/reference/codex.md +0 -105
  187. package/.claude/skills/monodesign/reference/cognitive-load.md +0 -106
  188. package/.claude/skills/monodesign/reference/color-and-contrast.md +0 -105
  189. package/.claude/skills/monodesign/reference/colorize.md +0 -257
  190. package/.claude/skills/monodesign/reference/component-specs.md +0 -260
  191. package/.claude/skills/monodesign/reference/component-states.md +0 -274
  192. package/.claude/skills/monodesign/reference/component-system.md +0 -358
  193. package/.claude/skills/monodesign/reference/copy-formulas.md +0 -160
  194. package/.claude/skills/monodesign/reference/craft.md +0 -123
  195. package/.claude/skills/monodesign/reference/critique.md +0 -780
  196. package/.claude/skills/monodesign/reference/delight.md +0 -302
  197. package/.claude/skills/monodesign/reference/design-principles.md +0 -246
  198. package/.claude/skills/monodesign/reference/distill.md +0 -111
  199. package/.claude/skills/monodesign/reference/document.md +0 -429
  200. package/.claude/skills/monodesign/reference/extract.md +0 -69
  201. package/.claude/skills/monodesign/reference/harden.md +0 -347
  202. package/.claude/skills/monodesign/reference/heuristics-scoring.md +0 -234
  203. package/.claude/skills/monodesign/reference/hooks.md +0 -92
  204. package/.claude/skills/monodesign/reference/image-prompts.md +0 -130
  205. package/.claude/skills/monodesign/reference/init.md +0 -221
  206. package/.claude/skills/monodesign/reference/interaction-design.md +0 -189
  207. package/.claude/skills/monodesign/reference/ios.md +0 -45
  208. package/.claude/skills/monodesign/reference/layout.md +0 -185
  209. package/.claude/skills/monodesign/reference/live.md +0 -710
  210. package/.claude/skills/monodesign/reference/motion-design.md +0 -109
  211. package/.claude/skills/monodesign/reference/onboard.md +0 -234
  212. package/.claude/skills/monodesign/reference/optimize.md +0 -258
  213. package/.claude/skills/monodesign/reference/overdrive.md +0 -130
  214. package/.claude/skills/monodesign/reference/personas.md +0 -179
  215. package/.claude/skills/monodesign/reference/polish.md +0 -241
  216. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +0 -108
  217. package/.claude/skills/monodesign/reference/product.md +0 -60
  218. package/.claude/skills/monodesign/reference/quieter.md +0 -99
  219. package/.claude/skills/monodesign/reference/responsive-design.md +0 -114
  220. package/.claude/skills/monodesign/reference/shape.md +0 -165
  221. package/.claude/skills/monodesign/reference/spatial-design.md +0 -100
  222. package/.claude/skills/monodesign/reference/teach.md +0 -10
  223. package/.claude/skills/monodesign/reference/token-architecture.md +0 -222
  224. package/.claude/skills/monodesign/reference/typeset.md +0 -301
  225. package/.claude/skills/monodesign/reference/typography.md +0 -159
  226. package/.claude/skills/monodesign/reference/ux-research.md +0 -143
  227. package/.claude/skills/monodesign/reference/ux-rules.md +0 -211
  228. package/.claude/skills/monodesign/reference/ux-writing.md +0 -107
  229. package/.claude/skills/monodesign/scripts/command-metadata.json +0 -94
  230. package/.claude/skills/monodesign/scripts/context-signals.mjs +0 -260
  231. package/.claude/skills/monodesign/scripts/context.mjs +0 -1065
  232. package/.claude/skills/monodesign/scripts/critique-storage.mjs +0 -416
  233. package/.claude/skills/monodesign/scripts/detect-csp.mjs +0 -193
  234. package/.claude/skills/monodesign/scripts/detect.mjs +0 -33
  235. package/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +0 -1960
  236. package/.claude/skills/monodesign/scripts/detector/cli/main.mjs +0 -321
  237. package/.claude/skills/monodesign/scripts/detector/design-system.mjs +0 -814
  238. package/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +0 -5628
  239. package/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +0 -50
  240. package/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +0 -259
  241. package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +0 -339
  242. package/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +0 -636
  243. package/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +0 -1016
  244. package/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +0 -253
  245. package/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -198
  246. package/.claude/skills/monodesign/scripts/detector/findings.mjs +0 -12
  247. package/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +0 -181
  248. package/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +0 -373
  249. package/.claude/skills/monodesign/scripts/detector/fix/index.mjs +0 -426
  250. package/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +0 -198
  251. package/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +0 -166
  252. package/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +0 -563
  253. package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +0 -3024
  254. package/.claude/skills/monodesign/scripts/detector/shared/color.mjs +0 -124
  255. package/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +0 -101
  256. package/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +0 -30
  257. package/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +0 -148
  258. package/.claude/skills/monodesign/scripts/detector/shared/page.mjs +0 -7
  259. package/.claude/skills/monodesign/scripts/hook-admin.mjs +0 -694
  260. package/.claude/skills/monodesign/scripts/hook-before-edit.mjs +0 -516
  261. package/.claude/skills/monodesign/scripts/hook-lib.mjs +0 -1785
  262. package/.claude/skills/monodesign/scripts/hook.mjs +0 -61
  263. package/.claude/skills/monodesign/scripts/lib/design-parser.mjs +0 -809
  264. package/.claude/skills/monodesign/scripts/lib/is-generated.mjs +0 -69
  265. package/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +0 -640
  266. package/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +0 -129
  267. package/.claude/skills/monodesign/scripts/lib/provider.mjs +0 -4
  268. package/.claude/skills/monodesign/scripts/lib/target-args.mjs +0 -42
  269. package/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +0 -50
  270. package/.claude/skills/monodesign/scripts/live/completion.mjs +0 -19
  271. package/.claude/skills/monodesign/scripts/live/event-validation.mjs +0 -137
  272. package/.claude/skills/monodesign/scripts/live/insert-ui.mjs +0 -458
  273. package/.claude/skills/monodesign/scripts/live/manual-apply.mjs +0 -939
  274. package/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +0 -357
  275. package/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +0 -152
  276. package/.claude/skills/monodesign/scripts/live/session-store.mjs +0 -293
  277. package/.claude/skills/monodesign/scripts/live/svelte-component.mjs +0 -826
  278. package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +0 -279
  279. package/.claude/skills/monodesign/scripts/live/ui-core.mjs +0 -180
  280. package/.claude/skills/monodesign/scripts/live/vocabulary.mjs +0 -36
  281. package/.claude/skills/monodesign/scripts/live-accept.mjs +0 -812
  282. package/.claude/skills/monodesign/scripts/live-browser-dom.js +0 -147
  283. package/.claude/skills/monodesign/scripts/live-browser-session.js +0 -124
  284. package/.claude/skills/monodesign/scripts/live-browser.js +0 -11213
  285. package/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +0 -1241
  286. package/.claude/skills/monodesign/scripts/live-complete.mjs +0 -75
  287. package/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +0 -683
  288. package/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +0 -51
  289. package/.claude/skills/monodesign/scripts/live-inject.mjs +0 -596
  290. package/.claude/skills/monodesign/scripts/live-insert.mjs +0 -272
  291. package/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +0 -363
  292. package/.claude/skills/monodesign/scripts/live-poll.mjs +0 -384
  293. package/.claude/skills/monodesign/scripts/live-resume.mjs +0 -94
  294. package/.claude/skills/monodesign/scripts/live-server.mjs +0 -1210
  295. package/.claude/skills/monodesign/scripts/live-status.mjs +0 -61
  296. package/.claude/skills/monodesign/scripts/live-target.mjs +0 -30
  297. package/.claude/skills/monodesign/scripts/live-wrap.mjs +0 -884
  298. package/.claude/skills/monodesign/scripts/live.mjs +0 -297
  299. package/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +0 -14
  300. package/.claude/skills/monodesign/scripts/palette.mjs +0 -635
  301. package/.claude/skills/monodesign/scripts/pin.mjs +0 -221
  302. package/.claude/skills/monodesign/shape.md +0 -71
  303. package/.claude/skills/monodesign/teach.md +0 -18
  304. package/.claude/skills/monodesign/typeset.md +0 -59
@@ -1,221 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Pin/unpin sub-commands as standalone skill shortcuts.
4
- *
5
- * Usage:
6
- * node <scripts_path>/pin.mjs pin <command>
7
- * node <scripts_path>/pin.mjs unpin <command>
8
- *
9
- * `pin audit` creates a lightweight audit skill that redirects to Monodesign's audit workflow.
10
- * `unpin audit` removes that shortcut.
11
- *
12
- * The script discovers harness directories (.claude/skills, .cursor/skills, etc.)
13
- * in the project root and creates/removes the pin in all of them.
14
- */
15
-
16
- import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync } from 'node:fs';
17
- import { basename, join, resolve, dirname } from 'node:path';
18
- import { fileURLToPath } from 'node:url';
19
-
20
- const __dirname = dirname(fileURLToPath(import.meta.url));
21
-
22
- // All known harness directories
23
- const HARNESS_DIRS = [
24
- '.claude', '.cursor', '.gemini', '.codex', '.agents',
25
- '.trae', '.trae-cn', '.pi', '.opencode', '.kiro', '.rovodev',
26
- ];
27
-
28
- const CODEX_HARNESSES = new Set(['.codex', '.agents']);
29
-
30
- // Valid sub-command names
31
- const VALID_COMMANDS = [
32
- 'craft', 'init', 'extract', 'document', 'shape',
33
- 'critique', 'audit',
34
- 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'live',
35
- 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive',
36
- 'clarify', 'adapt', 'optimize',
37
- ];
38
-
39
- // Marker to identify pinned skills (so unpin doesn't delete user skills)
40
- const PIN_MARKER = '<!-- monodesign-pinned-skill -->';
41
-
42
- /**
43
- * Walk up from startDir to find a project root.
44
- */
45
- function findProjectRoot(startDir = process.cwd()) {
46
- let dir = resolve(startDir);
47
- while (dir !== '/') {
48
- if (
49
- existsSync(join(dir, 'package.json')) ||
50
- existsSync(join(dir, '.git')) ||
51
- existsSync(join(dir, 'skills-lock.json'))
52
- ) {
53
- return dir;
54
- }
55
- const parent = resolve(dir, '..');
56
- if (parent === dir) break;
57
- dir = parent;
58
- }
59
- return resolve(startDir);
60
- }
61
-
62
- /**
63
- * Find harness skill directories that have an monodesign skill installed.
64
- */
65
- function findHarnessDirs(projectRoot) {
66
- const dirs = [];
67
- for (const harness of HARNESS_DIRS) {
68
- const skillsDir = join(projectRoot, harness, 'skills');
69
- // Only pin in harness dirs that already have monodesign installed
70
- const monodesignDir = join(skillsDir, 'monodesign');
71
- if (existsSync(monodesignDir) || existsSync(join(skillsDir, 'i-monodesign'))) {
72
- dirs.push(skillsDir);
73
- }
74
- }
75
- return dirs;
76
- }
77
-
78
- /**
79
- * Load command metadata (descriptions for pinned skills).
80
- */
81
- function loadCommandMetadata() {
82
- const metadataPath = join(__dirname, 'command-metadata.json');
83
- if (existsSync(metadataPath)) {
84
- return JSON.parse(readFileSync(metadataPath, 'utf-8'));
85
- }
86
- return {};
87
- }
88
-
89
- /**
90
- * Generate a pinned skill's SKILL.md content.
91
- */
92
- function commandPrefixForSkillsDir(skillsDir) {
93
- return CODEX_HARNESSES.has(basename(dirname(skillsDir))) ? '$' : '/';
94
- }
95
-
96
- function generatePinnedSkill(command, metadata, commandPrefix) {
97
- const desc = metadata[command]?.description || `Shortcut for ${commandPrefix}monodesign ${command}.`;
98
- const hint = metadata[command]?.argumentHint || '[target]';
99
-
100
- return `---
101
- name: ${command}
102
- description: "${desc}"
103
- argument-hint: "${hint}"
104
- user-invocable: true
105
- ---
106
-
107
- ${PIN_MARKER}
108
-
109
- This is a pinned shortcut for \`${commandPrefix}monodesign ${command}\`.
110
-
111
- Invoke ${commandPrefix}monodesign ${command}, passing along any arguments provided here, and follow its instructions.
112
- `;
113
- }
114
-
115
- /**
116
- * Pin a command: create shortcut skill in all harness dirs.
117
- */
118
- function pin(command, projectRoot) {
119
- const metadata = loadCommandMetadata();
120
- const harnessDirs = findHarnessDirs(projectRoot);
121
-
122
- if (harnessDirs.length === 0) {
123
- console.log('No harness directories with monodesign installed found.');
124
- return false;
125
- }
126
-
127
- let created = 0;
128
-
129
- for (const skillsDir of harnessDirs) {
130
- const commandPrefix = commandPrefixForSkillsDir(skillsDir);
131
- const content = generatePinnedSkill(command, metadata, commandPrefix);
132
- // Check if skill already exists (and isn't a pin)
133
- const skillDir = join(skillsDir, command);
134
- if (existsSync(skillDir)) {
135
- const existingMd = join(skillDir, 'SKILL.md');
136
- if (existsSync(existingMd)) {
137
- const existing = readFileSync(existingMd, 'utf-8');
138
- if (!existing.includes(PIN_MARKER)) {
139
- console.log(` SKIP: ${skillDir} (non-pinned skill already exists)`);
140
- continue;
141
- }
142
- }
143
- }
144
-
145
- mkdirSync(skillDir, { recursive: true });
146
- writeFileSync(join(skillDir, 'SKILL.md'), content, 'utf-8');
147
- console.log(` + ${skillDir}`);
148
- created++;
149
- }
150
-
151
- if (created > 0) {
152
- console.log(`\nPinned '${command}' as a standalone shortcut in ${created} location(s).`);
153
- console.log('Use the pinned command directly in each harness.');
154
- }
155
-
156
- return created > 0;
157
- }
158
-
159
- /**
160
- * Unpin a command: remove shortcut skill from all harness dirs.
161
- */
162
- function unpin(command, projectRoot) {
163
- const harnessDirs = findHarnessDirs(projectRoot);
164
- let removed = 0;
165
-
166
- for (const skillsDir of harnessDirs) {
167
- const skillDir = join(skillsDir, command);
168
- if (!existsSync(skillDir)) continue;
169
-
170
- const skillMd = join(skillDir, 'SKILL.md');
171
- if (!existsSync(skillMd)) continue;
172
-
173
- // Safety: only remove if it's a pinned skill
174
- const content = readFileSync(skillMd, 'utf-8');
175
- if (!content.includes(PIN_MARKER)) {
176
- console.log(` SKIP: ${skillDir} (not a pinned skill)`);
177
- continue;
178
- }
179
-
180
- rmSync(skillDir, { recursive: true, force: true });
181
- console.log(` - ${skillDir}`);
182
- removed++;
183
- }
184
-
185
- if (removed > 0) {
186
- console.log(`\nUnpinned '${command}' from ${removed} location(s).`);
187
- console.log(`Use Monodesign's '${command}' workflow directly to access it.`);
188
- } else {
189
- console.log(`No pinned '${command}' shortcut found.`);
190
- }
191
-
192
- return removed > 0;
193
- }
194
-
195
- // --- CLI ---
196
- const [,, action, command] = process.argv;
197
-
198
- if (!action || !command) {
199
- console.log('Usage: node pin.mjs <pin|unpin> <command>');
200
- console.log(`\nAvailable commands: ${VALID_COMMANDS.join(', ')}`);
201
- process.exit(1);
202
- }
203
-
204
- if (action !== 'pin' && action !== 'unpin') {
205
- console.error(`Unknown action: ${action}. Use 'pin' or 'unpin'.`);
206
- process.exit(1);
207
- }
208
-
209
- if (!VALID_COMMANDS.includes(command)) {
210
- console.error(`Unknown command: ${command}`);
211
- console.error(`Available commands: ${VALID_COMMANDS.join(', ')}`);
212
- process.exit(1);
213
- }
214
-
215
- const root = findProjectRoot();
216
-
217
- if (action === 'pin') {
218
- pin(command, root);
219
- } else {
220
- unpin(command, root);
221
- }
@@ -1,71 +0,0 @@
1
- ---
2
- name: monodesign-shape
3
- description: Shape the UX and UI for a feature before any code is written — produces a structured design brief through discovery, not guesswork. Design planning only; no code written. Output is a brief for monodesign:craft.
4
- type: design-sub-command
5
- argument-hint: "[feature description]"
6
- user-invocable: true
7
- ---
8
-
9
- # Monodesign: Shape
10
-
11
- Shape the UX and UI for a feature before any code is written. This command produces a **design brief**: a structured artifact that guides implementation through discovery.
12
-
13
- **Scope**: Design planning only. No code written. Output: a design brief for `/monodesign craft`.
14
-
15
- ## Setup
16
- Read `PRODUCT.md` and (if present) `DESIGN.md` from the project root before starting. These are required anchors.
17
-
18
- Read `reference/shape.md` from the monodesign skill directory for the full command flow.
19
-
20
- ## Phase 1: Discovery Interview
21
-
22
- Do NOT write any code or make design decisions during this phase. Ask 2–3 questions per round, then wait for answers. Have a natural dialogue; don't dump all questions at once.
23
-
24
- **Purpose & Context**
25
- - What is this feature for? What problem does it solve?
26
- - Who specifically will use it? (Role, context, frequency — not "users")
27
- - What's the user's state of mind when they reach this? (Rushed? Exploring? Anxious?)
28
-
29
- **Content & Data**
30
- - What content or data does this display or collect?
31
- - What are the realistic ranges? (0 items, typical, max, edge cases)
32
- - What are the empty state, error state, first-time use, power-user scenarios?
33
-
34
- **Design Direction** — force a visual decision on three fronts:
35
- - **Color strategy**: Restrained / Committed / Full palette / Drenched
36
- - **Theme via scene sentence**: one sentence of physical context that forces dark vs. light
37
- - **Two or three named anchor references** — specific products, brands, objects (not adjectives)
38
-
39
- **Scope** — always ask explicitly:
40
- - Fidelity: Sketch / mid-fi / high-fi / production-ready?
41
- - Breadth: One screen / a flow / a whole surface?
42
- - Time intent: Quick exploration or polish until it ships?
43
-
44
- ## Phase 2: Brief Synthesis
45
-
46
- After the discovery round, synthesize and present a structured **Design Brief**:
47
-
48
- ```
49
- ## Design Brief: [Feature Name]
50
-
51
- **User**: [concrete description]
52
- **Problem**: [one sentence]
53
- **Success**: [measurable outcome]
54
- **User state**: [emotional/contextual state]
55
-
56
- **Content**: [what's displayed/collected + realistic ranges]
57
- **Edge cases**: [empty, error, overload, first-use]
58
-
59
- **Visual direction**:
60
- - Color strategy: [Restrained|Committed|Full palette|Drenched]
61
- - Theme: [dark|light] — [scene sentence]
62
- - References: [3 named references]
63
-
64
- **Scope**: [fidelity] / [breadth] / [time intent]
65
- ```
66
-
67
- Stop and wait for explicit user confirmation before advancing to `/monodesign craft`. Do not start coding until the brief is approved.
68
-
69
- ## Assert-then-confirm
70
-
71
- When PRODUCT.md and the prompt make one option obvious, name it and ask the user to confirm or override. Don't present four-option menus when the answer is already clear.
@@ -1,18 +0,0 @@
1
- ---
2
- name: monodesign-teach
3
- description: Alias of /monodesign init — set up a project for monodesign by producing PRODUCT.md (strategic context), optionally DESIGN.md (visual system), and pre-configuring live mode.
4
- type: design-sub-command
5
- argument-hint: "[project path or description]"
6
- user-invocable: true
7
- ---
8
-
9
- # Monodesign: Teach (alias of Init)
10
-
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
-
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
-
15
- Notes preserved from the teach era:
16
-
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,59 +0,0 @@
1
- ---
2
- name: monodesign-typeset
3
- description: Replace generic type defaults with fonts that reflect the brand and scale with intentional contrast — font selection, hierarchy, scale, and responsive type systems.
4
- type: design-sub-command
5
- argument-hint: "[target page, component, or whole site]"
6
- user-invocable: true
7
- ---
8
-
9
- # Monodesign: Typeset
10
-
11
- Typography carries most of the information on the page. Replace generic defaults (Inter, Roboto, system fallback at flat scale) with type that reflects the brand and scales with intentional contrast.
12
-
13
- Read `reference/typeset.md` and `reference/typography.md` from the monodesign skill directory for the full protocol.
14
-
15
- ## Register
16
-
17
- **Brand**: font selection procedure in `reference/brand.md`. Fluid `clamp()` scale, ≥1.25 ratio between steps.
18
-
19
- **Product**: system fonts and familiar sans stacks are legitimate. One well-tuned family typically carries the whole UI. Fixed `rem` scale, 1.125–1.2 ratio.
20
-
21
- ## Assess Current Typography
22
-
23
- **Font choices**
24
- - Are we using invisible defaults? (Inter, Roboto, Arial, Open Sans, system defaults)
25
- - Does the font match the brand personality?
26
- - Are there too many families? (More than 2–3 is almost always a mess)
27
-
28
- **Hierarchy**
29
- - Can you tell headings from body from captions at a glance?
30
- - Are sizes too close together? (14px, 15px, 16px = muddy hierarchy)
31
- - Are weight contrasts strong enough? (Medium vs Regular is barely visible)
32
-
33
- **Sizing & scale**
34
- - Is there a consistent type scale, or are sizes arbitrary?
35
- - Body text ≥16px?
36
- - Fixed `rem` scales for app UIs; fluid `clamp()` for marketing/content page headings
37
-
38
- ## Typographic Rules (non-negotiable)
39
-
40
- - Cap body line length at **65–75ch**
41
- - Hero/display heading ceiling: `clamp()` max ≤ **6rem (~96px)**
42
- - Display letter-spacing floor: **≥ -0.04em** (anything tighter makes letters touch)
43
- - Use `text-wrap: balance` on h1–h3; `text-wrap: pretty` on long prose
44
- - Pair fonts on a contrast axis (serif + sans, geometric + humanist) — NOT similar families
45
- - Hierarchy through scale + weight contrast (≥1.25 ratio between steps)
46
-
47
- ## Font Selection Process
48
-
49
- 1. Load brand context from PRODUCT.md and DESIGN.md
50
- 2. Identify brand personality from 3 words or the product description
51
- 3. Propose 2–3 Google Fonts / variable font pairings with rationale
52
- 4. Load one via `<link>` and demonstrate it on a real page section
53
- 5. Iterate until the type feels native to the brand
54
-
55
- ## Output
56
-
57
- - Updated CSS custom properties or tokens for `--font-heading`, `--font-body`, `--font-mono`
58
- - Fluid or fixed type scale as CSS custom properties
59
- - Applied to all heading levels and body copy on the target