quiver-cli 1.3.1 → 2.0.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 (407) hide show
  1. package/README.md +197 -239
  2. package/dist/cli.js +3163 -2040
  3. package/package.json +10 -11
  4. package/template/.agents/AGENTS.md +0 -26
  5. package/template/.agents/commands/cp.md +0 -108
  6. package/template/.agents/commands/next-setup.md +0 -1064
  7. package/template/.agents/commands/review.md +0 -68
  8. package/template/.agents/commands/terraform-readme.md +0 -38
  9. package/template/.agents/config.json +0 -80
  10. package/template/.agents/plugins/opencode/rtk.ts +0 -34
  11. package/template/.agents/skills/agent-browser/SKILL.md +0 -52
  12. package/template/.agents/skills/apps/skybridge/SKILL.md +0 -52
  13. package/template/.agents/skills/code/cleanup/SKILL.md +0 -26
  14. package/template/.agents/skills/code/improve/SKILL.md +0 -122
  15. package/template/.agents/skills/code/improve/references/audit-playbook.md +0 -130
  16. package/template/.agents/skills/code/improve/references/closing-the-loop.md +0 -96
  17. package/template/.agents/skills/code/improve/references/plan-template.md +0 -197
  18. package/template/.agents/skills/code/vercel-react-best-practices/AGENTS.md +0 -3810
  19. package/template/.agents/skills/code/vercel-react-best-practices/README.md +0 -123
  20. package/template/.agents/skills/code/vercel-react-best-practices/SKILL.md +0 -149
  21. package/template/.agents/skills/code/vercel-react-best-practices/metadata.json +0 -15
  22. package/template/.agents/skills/code/vercel-react-best-practices/rules/_sections.md +0 -46
  23. package/template/.agents/skills/code/vercel-react-best-practices/rules/_template.md +0 -28
  24. package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-effect-event-deps.md +0 -56
  25. package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  26. package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
  27. package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
  28. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  29. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +0 -37
  30. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-defer-await.md +0 -82
  31. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-dependencies.md +0 -51
  32. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-parallel.md +0 -28
  33. package/template/.agents/skills/code/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  34. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-analyzable-paths.md +0 -63
  35. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -60
  36. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  37. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  38. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  39. package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  40. package/template/.agents/skills/code/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  41. package/template/.agents/skills/code/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  42. package/template/.agents/skills/code/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  43. package/template/.agents/skills/code/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  44. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
  45. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  46. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  47. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  48. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  49. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  50. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
  51. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  52. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  53. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
  54. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  55. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-request-idle-callback.md +0 -105
  56. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  57. package/template/.agents/skills/code/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  58. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  59. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  60. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  61. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  62. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  63. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  64. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  65. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
  66. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
  67. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  68. package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  69. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  70. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  71. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  72. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  73. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  74. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  75. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  76. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  77. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  78. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
  79. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  80. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
  81. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  82. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
  83. package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  84. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  85. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
  86. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  87. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  88. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
  89. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -149
  90. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-no-shared-module-state.md +0 -50
  91. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  92. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +0 -34
  93. package/template/.agents/skills/code/vercel-react-best-practices/rules/server-serialization.md +0 -38
  94. package/template/.agents/skills/data/prisma-cli/SKILL.md +0 -265
  95. package/template/.agents/skills/data/prisma-cli/references/agent-safety.md +0 -27
  96. package/template/.agents/skills/data/prisma-cli/references/complete.md +0 -22
  97. package/template/.agents/skills/data/prisma-cli/references/db-execute.md +0 -78
  98. package/template/.agents/skills/data/prisma-cli/references/db-pull.md +0 -185
  99. package/template/.agents/skills/data/prisma-cli/references/db-push.md +0 -150
  100. package/template/.agents/skills/data/prisma-cli/references/db-seed.md +0 -188
  101. package/template/.agents/skills/data/prisma-cli/references/debug.md +0 -46
  102. package/template/.agents/skills/data/prisma-cli/references/dev.md +0 -157
  103. package/template/.agents/skills/data/prisma-cli/references/format.md +0 -48
  104. package/template/.agents/skills/data/prisma-cli/references/generate.md +0 -173
  105. package/template/.agents/skills/data/prisma-cli/references/init.md +0 -139
  106. package/template/.agents/skills/data/prisma-cli/references/mcp.md +0 -39
  107. package/template/.agents/skills/data/prisma-cli/references/migrate-deploy.md +0 -127
  108. package/template/.agents/skills/data/prisma-cli/references/migrate-dev.md +0 -145
  109. package/template/.agents/skills/data/prisma-cli/references/migrate-diff.md +0 -89
  110. package/template/.agents/skills/data/prisma-cli/references/migrate-reset.md +0 -80
  111. package/template/.agents/skills/data/prisma-cli/references/migrate-resolve.md +0 -57
  112. package/template/.agents/skills/data/prisma-cli/references/migrate-status.md +0 -65
  113. package/template/.agents/skills/data/prisma-cli/references/studio.md +0 -137
  114. package/template/.agents/skills/data/prisma-cli/references/validate.md +0 -53
  115. package/template/.agents/skills/data/prisma-client-api/SKILL.md +0 -216
  116. package/template/.agents/skills/data/prisma-client-api/references/client-methods.md +0 -223
  117. package/template/.agents/skills/data/prisma-client-api/references/constructor.md +0 -221
  118. package/template/.agents/skills/data/prisma-client-api/references/filters.md +0 -256
  119. package/template/.agents/skills/data/prisma-client-api/references/model-queries.md +0 -281
  120. package/template/.agents/skills/data/prisma-client-api/references/query-options.md +0 -276
  121. package/template/.agents/skills/data/prisma-client-api/references/raw-queries.md +0 -198
  122. package/template/.agents/skills/data/prisma-client-api/references/relations.md +0 -308
  123. package/template/.agents/skills/data/prisma-client-api/references/transactions.md +0 -184
  124. package/template/.agents/skills/design/impeccable/SKILL.md +0 -84
  125. package/template/.agents/skills/design/impeccable/reference/adapt.md +0 -312
  126. package/template/.agents/skills/design/impeccable/reference/adapt.native.md +0 -58
  127. package/template/.agents/skills/design/impeccable/reference/android.md +0 -46
  128. package/template/.agents/skills/design/impeccable/reference/animate.md +0 -89
  129. package/template/.agents/skills/design/impeccable/reference/audit.md +0 -136
  130. package/template/.agents/skills/design/impeccable/reference/audit.native.md +0 -139
  131. package/template/.agents/skills/design/impeccable/reference/bolder.md +0 -33
  132. package/template/.agents/skills/design/impeccable/reference/clarify.md +0 -94
  133. package/template/.agents/skills/design/impeccable/reference/colorize.md +0 -86
  134. package/template/.agents/skills/design/impeccable/reference/craft-floor.md +0 -44
  135. package/template/.agents/skills/design/impeccable/reference/craft.md +0 -5
  136. package/template/.agents/skills/design/impeccable/reference/critique.md +0 -806
  137. package/template/.agents/skills/design/impeccable/reference/degraded/asset-producer.md +0 -37
  138. package/template/.agents/skills/design/impeccable/reference/degraded/documenter.md +0 -24
  139. package/template/.agents/skills/design/impeccable/reference/degraded/finish-reviewer.md +0 -38
  140. package/template/.agents/skills/design/impeccable/reference/degraded/manual-edit-applier.md +0 -92
  141. package/template/.agents/skills/design/impeccable/reference/delight.md +0 -70
  142. package/template/.agents/skills/design/impeccable/reference/distill.md +0 -111
  143. package/template/.agents/skills/design/impeccable/reference/doctor.md +0 -54
  144. package/template/.agents/skills/design/impeccable/reference/document.md +0 -416
  145. package/template/.agents/skills/design/impeccable/reference/extract.md +0 -69
  146. package/template/.agents/skills/design/impeccable/reference/harden.md +0 -336
  147. package/template/.agents/skills/design/impeccable/reference/hooks.md +0 -111
  148. package/template/.agents/skills/design/impeccable/reference/init.md +0 -131
  149. package/template/.agents/skills/design/impeccable/reference/ios.md +0 -51
  150. package/template/.agents/skills/design/impeccable/reference/layout.md +0 -84
  151. package/template/.agents/skills/design/impeccable/reference/live-setup.md +0 -102
  152. package/template/.agents/skills/design/impeccable/reference/live.md +0 -323
  153. package/template/.agents/skills/design/impeccable/reference/new-work.md +0 -145
  154. package/template/.agents/skills/design/impeccable/reference/onboard.md +0 -234
  155. package/template/.agents/skills/design/impeccable/reference/operate.md +0 -61
  156. package/template/.agents/skills/design/impeccable/reference/optimize.md +0 -258
  157. package/template/.agents/skills/design/impeccable/reference/overdrive.md +0 -127
  158. package/template/.agents/skills/design/impeccable/reference/polish.md +0 -105
  159. package/template/.agents/skills/design/impeccable/reference/quieter.md +0 -99
  160. package/template/.agents/skills/design/impeccable/reference/routing.md +0 -18
  161. package/template/.agents/skills/design/impeccable/reference/shape.md +0 -59
  162. package/template/.agents/skills/design/impeccable/reference/typeset.md +0 -80
  163. package/template/.agents/skills/design/impeccable/reference/visualize.md +0 -46
  164. package/template/.agents/skills/design/impeccable/scripts/build-phase.mjs +0 -1022
  165. package/template/.agents/skills/design/impeccable/scripts/command-metadata.json +0 -94
  166. package/template/.agents/skills/design/impeccable/scripts/comp-diff.mjs +0 -391
  167. package/template/.agents/skills/design/impeccable/scripts/comp-spec.mjs +0 -513
  168. package/template/.agents/skills/design/impeccable/scripts/concept-seed.mjs +0 -814
  169. package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +0 -325
  170. package/template/.agents/skills/design/impeccable/scripts/context.mjs +0 -1565
  171. package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +0 -473
  172. package/template/.agents/skills/design/impeccable/scripts/data/font-index-failures.json +0 -121
  173. package/template/.agents/skills/design/impeccable/scripts/data/font-index.json +0 -1
  174. package/template/.agents/skills/design/impeccable/scripts/detect-csp.mjs +0 -198
  175. package/template/.agents/skills/design/impeccable/scripts/detect.mjs +0 -30
  176. package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +0 -2204
  177. package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +0 -432
  178. package/template/.agents/skills/design/impeccable/scripts/detector/design-system.mjs +0 -1311
  179. package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -9043
  180. package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns.mjs +0 -51
  181. package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -434
  182. package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -1319
  183. package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1241
  184. package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -288
  185. package/template/.agents/skills/design/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
  186. package/template/.agents/skills/design/impeccable/scripts/detector/findings.mjs +0 -18
  187. package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +0 -213
  188. package/template/.agents/skills/design/impeccable/scripts/detector/profile/profiler.mjs +0 -166
  189. package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +0 -635
  190. package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +0 -5681
  191. package/template/.agents/skills/design/impeccable/scripts/detector/shared/color.mjs +0 -596
  192. package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +0 -127
  193. package/template/.agents/skills/design/impeccable/scripts/detector/shared/fonts.mjs +0 -30
  194. package/template/.agents/skills/design/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
  195. package/template/.agents/skills/design/impeccable/scripts/detector/shared/page.mjs +0 -7
  196. package/template/.agents/skills/design/impeccable/scripts/doctor.mjs +0 -329
  197. package/template/.agents/skills/design/impeccable/scripts/embed-prompt.mjs +0 -166
  198. package/template/.agents/skills/design/impeccable/scripts/font-match.mjs +0 -457
  199. package/template/.agents/skills/design/impeccable/scripts/generate-image.mjs +0 -447
  200. package/template/.agents/skills/design/impeccable/scripts/hook-admin.mjs +0 -819
  201. package/template/.agents/skills/design/impeccable/scripts/hook-before-edit.mjs +0 -538
  202. package/template/.agents/skills/design/impeccable/scripts/hook-lib.mjs +0 -2490
  203. package/template/.agents/skills/design/impeccable/scripts/hook.mjs +0 -79
  204. package/template/.agents/skills/design/impeccable/scripts/lib/artifact-schema.mjs +0 -93
  205. package/template/.agents/skills/design/impeccable/scripts/lib/composition-catalog.mjs +0 -200
  206. package/template/.agents/skills/design/impeccable/scripts/lib/concept-catalog.mjs +0 -396
  207. package/template/.agents/skills/design/impeccable/scripts/lib/design-parser.mjs +0 -880
  208. package/template/.agents/skills/design/impeccable/scripts/lib/font-fingerprint.mjs +0 -564
  209. package/template/.agents/skills/design/impeccable/scripts/lib/font-index.mjs +0 -130
  210. package/template/.agents/skills/design/impeccable/scripts/lib/hero-checks.mjs +0 -246
  211. package/template/.agents/skills/design/impeccable/scripts/lib/image-metrics.mjs +0 -306
  212. package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-config.mjs +0 -640
  213. package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-paths.mjs +0 -137
  214. package/template/.agents/skills/design/impeccable/scripts/lib/is-generated.mjs +0 -72
  215. package/template/.agents/skills/design/impeccable/scripts/lib/live-path-globs.mjs +0 -37
  216. package/template/.agents/skills/design/impeccable/scripts/lib/open-system-browser.mjs +0 -26
  217. package/template/.agents/skills/design/impeccable/scripts/lib/png.mjs +0 -281
  218. package/template/.agents/skills/design/impeccable/scripts/lib/provider.mjs +0 -5
  219. package/template/.agents/skills/design/impeccable/scripts/lib/raster.mjs +0 -194
  220. package/template/.agents/skills/design/impeccable/scripts/lib/roll-selection.mjs +0 -369
  221. package/template/.agents/skills/design/impeccable/scripts/lib/staleness-deep.mjs +0 -485
  222. package/template/.agents/skills/design/impeccable/scripts/lib/staleness-notice.mjs +0 -169
  223. package/template/.agents/skills/design/impeccable/scripts/lib/staleness.mjs +0 -533
  224. package/template/.agents/skills/design/impeccable/scripts/lib/surface-briefs.mjs +0 -149
  225. package/template/.agents/skills/design/impeccable/scripts/lib/target-args.mjs +0 -42
  226. package/template/.agents/skills/design/impeccable/scripts/lib/target-slug.mjs +0 -33
  227. package/template/.agents/skills/design/impeccable/scripts/lib/template-extensions.mjs +0 -146
  228. package/template/.agents/skills/design/impeccable/scripts/live/accept-css.mjs +0 -617
  229. package/template/.agents/skills/design/impeccable/scripts/live/accept-verify.mjs +0 -60
  230. package/template/.agents/skills/design/impeccable/scripts/live/browser-script-parts.mjs +0 -84
  231. package/template/.agents/skills/design/impeccable/scripts/live/completion.mjs +0 -28
  232. package/template/.agents/skills/design/impeccable/scripts/live/event-validation.mjs +0 -199
  233. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/astro.mjs +0 -47
  234. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/detect-utils.mjs +0 -73
  235. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/index.mjs +0 -143
  236. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/journal.mjs +0 -197
  237. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nextjs.mjs +0 -49
  238. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/nuxt.mjs +0 -161
  239. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/script-src.mjs +0 -17
  240. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/static-html.mjs +0 -26
  241. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/sveltekit.mjs +0 -71
  242. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tag-strategy.mjs +0 -247
  243. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/tanstack-start.mjs +0 -70
  244. package/template/.agents/skills/design/impeccable/scripts/live/frameworks/vite-generic.mjs +0 -42
  245. package/template/.agents/skills/design/impeccable/scripts/live/generation-preflight.mjs +0 -149
  246. package/template/.agents/skills/design/impeccable/scripts/live/insert-ui.mjs +0 -458
  247. package/template/.agents/skills/design/impeccable/scripts/live/instructions.mjs +0 -142
  248. package/template/.agents/skills/design/impeccable/scripts/live/manual-apply.mjs +0 -939
  249. package/template/.agents/skills/design/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
  250. package/template/.agents/skills/design/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
  251. package/template/.agents/skills/design/impeccable/scripts/live/poll-lanes.mjs +0 -14
  252. package/template/.agents/skills/design/impeccable/scripts/live/project-ignores.mjs +0 -139
  253. package/template/.agents/skills/design/impeccable/scripts/live/roots.mjs +0 -508
  254. package/template/.agents/skills/design/impeccable/scripts/live/session-store.mjs +0 -563
  255. package/template/.agents/skills/design/impeccable/scripts/live/source-lock.mjs +0 -105
  256. package/template/.agents/skills/design/impeccable/scripts/live/source-search.mjs +0 -105
  257. package/template/.agents/skills/design/impeccable/scripts/live/svelte-ast.mjs +0 -969
  258. package/template/.agents/skills/design/impeccable/scripts/live/svelte-component.mjs +0 -1366
  259. package/template/.agents/skills/design/impeccable/scripts/live/sveltekit-adapter.mjs +0 -304
  260. package/template/.agents/skills/design/impeccable/scripts/live/tanstack-adapter.mjs +0 -259
  261. package/template/.agents/skills/design/impeccable/scripts/live/ui-surfaces.mjs +0 -75
  262. package/template/.agents/skills/design/impeccable/scripts/live/vocabulary.mjs +0 -171
  263. package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +0 -938
  264. package/template/.agents/skills/design/impeccable/scripts/live-browser-dom.js +0 -146
  265. package/template/.agents/skills/design/impeccable/scripts/live-browser-ignores.js +0 -242
  266. package/template/.agents/skills/design/impeccable/scripts/live-browser-session.js +0 -123
  267. package/template/.agents/skills/design/impeccable/scripts/live-browser.js +0 -12551
  268. package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +0 -1200
  269. package/template/.agents/skills/design/impeccable/scripts/live-complete.mjs +0 -107
  270. package/template/.agents/skills/design/impeccable/scripts/live-copy-edit-agent.mjs +0 -800
  271. package/template/.agents/skills/design/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
  272. package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +0 -463
  273. package/template/.agents/skills/design/impeccable/scripts/live-insert.mjs +0 -292
  274. package/template/.agents/skills/design/impeccable/scripts/live-manual-edit-evidence.mjs +0 -368
  275. package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +0 -430
  276. package/template/.agents/skills/design/impeccable/scripts/live-resume.mjs +0 -123
  277. package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +0 -1698
  278. package/template/.agents/skills/design/impeccable/scripts/live-status.mjs +0 -71
  279. package/template/.agents/skills/design/impeccable/scripts/live-target.mjs +0 -30
  280. package/template/.agents/skills/design/impeccable/scripts/live-wrap.mjs +0 -927
  281. package/template/.agents/skills/design/impeccable/scripts/live.mjs +0 -334
  282. package/template/.agents/skills/design/impeccable/scripts/modern-screenshot.umd.js +0 -14
  283. package/template/.agents/skills/design/impeccable/scripts/palette.mjs +0 -628
  284. package/template/.agents/skills/design/impeccable/scripts/pin.mjs +0 -224
  285. package/template/.agents/skills/design/impeccable/scripts/serve-question.mjs +0 -1783
  286. package/template/.agents/skills/design/impeccable/scripts/surface-brief.mjs +0 -74
  287. package/template/.agents/skills/design/shadcn/SKILL.md +0 -277
  288. package/template/.agents/skills/design/shadcn/agents/openai.yml +0 -5
  289. package/template/.agents/skills/design/shadcn/assets/shadcn-small.png +0 -0
  290. package/template/.agents/skills/design/shadcn/assets/shadcn.png +0 -0
  291. package/template/.agents/skills/design/shadcn/cli.md +0 -290
  292. package/template/.agents/skills/design/shadcn/customization.md +0 -209
  293. package/template/.agents/skills/design/shadcn/evals/evals.json +0 -77
  294. package/template/.agents/skills/design/shadcn/mcp.md +0 -105
  295. package/template/.agents/skills/design/shadcn/registry.md +0 -277
  296. package/template/.agents/skills/design/shadcn/rules/base-vs-radix.md +0 -306
  297. package/template/.agents/skills/design/shadcn/rules/chat.md +0 -250
  298. package/template/.agents/skills/design/shadcn/rules/composition.md +0 -213
  299. package/template/.agents/skills/design/shadcn/rules/forms.md +0 -192
  300. package/template/.agents/skills/design/shadcn/rules/icons.md +0 -101
  301. package/template/.agents/skills/design/shadcn/rules/styling.md +0 -185
  302. package/template/.agents/skills/find-skills/SKILL.md +0 -141
  303. package/template/.agents/skills/hono/SKILL.md +0 -593
  304. package/template/.agents/skills/integrations/langfuse/SKILL.md +0 -150
  305. package/template/.agents/skills/integrations/langfuse/references/ci-cd.md +0 -41
  306. package/template/.agents/skills/integrations/langfuse/references/cli.md +0 -60
  307. package/template/.agents/skills/integrations/langfuse/references/create-dataset.md +0 -35
  308. package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +0 -87
  309. package/template/.agents/skills/integrations/langfuse/references/instrumentation.md +0 -121
  310. package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +0 -293
  311. package/template/.agents/skills/integrations/langfuse/references/prompt-engineering.md +0 -35
  312. package/template/.agents/skills/integrations/langfuse/references/prompt-migration.md +0 -79
  313. package/template/.agents/skills/integrations/langfuse/references/sdk-upgrade.md +0 -34
  314. package/template/.agents/skills/integrations/langfuse/references/setting-up-evals.md +0 -65
  315. package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +0 -35
  316. package/template/.agents/skills/integrations/langfuse/references/trace-evaluator-upgrade.md +0 -76
  317. package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +0 -66
  318. package/template/.agents/skills/integrations/langfuse/references/v4-project-migration.md +0 -75
  319. package/template/.agents/skills/integrations/posthog/SKILL.md +0 -102
  320. package/template/.agents/skills/integrations/posthog/references/error-tracking-alerts.md +0 -63
  321. package/template/.agents/skills/integrations/posthog/references/error-tracking-assigning-issues.md +0 -77
  322. package/template/.agents/skills/integrations/posthog/references/error-tracking-fingerprints.md +0 -57
  323. package/template/.agents/skills/integrations/posthog/references/error-tracking-monitoring.md +0 -140
  324. package/template/.agents/skills/integrations/posthog/references/error-tracking-nextjs.md +0 -490
  325. package/template/.agents/skills/integrations/posthog/references/error-tracking-source-maps.md +0 -45
  326. package/template/.agents/skills/integrations/posthog/references/feature-flags-best-practices.md +0 -139
  327. package/template/.agents/skills/integrations/posthog/references/feature-flags-react.md +0 -302
  328. package/template/.agents/skills/integrations/posthog/references/identify-users.md +0 -202
  329. package/template/.agents/skills/integrations/posthog/references/integration-example.md +0 -706
  330. package/template/.agents/skills/integrations/posthog/references/integration-nextjs.md +0 -385
  331. package/template/.agents/skills/integrations/posthog/references/integration-step-1-begin.md +0 -43
  332. package/template/.agents/skills/integrations/posthog/references/integration-step-2-edit.md +0 -37
  333. package/template/.agents/skills/integrations/posthog/references/integration-step-3-revise.md +0 -22
  334. package/template/.agents/skills/integrations/posthog/references/integration-step-4-conclude.md +0 -38
  335. package/template/.agents/skills/integrations/posthog/references/llm-analytics-anthropic.md +0 -200
  336. package/template/.agents/skills/integrations/posthog/references/llm-analytics-basics.md +0 -62
  337. package/template/.agents/skills/integrations/posthog/references/llm-analytics-costs.md +0 -197
  338. package/template/.agents/skills/integrations/posthog/references/llm-analytics-manual-capture.md +0 -397
  339. package/template/.agents/skills/integrations/posthog/references/llm-analytics-traces.md +0 -98
  340. package/template/.agents/skills/integrations/posthog/references/llm-analytics-vercel-ai.md +0 -120
  341. package/template/.agents/skills/repo/repo-ci/SKILL.md +0 -265
  342. package/template/.agents/skills/repo/repo-init-next-js/SKILL.md +0 -129
  343. package/template/.agents/skills/repo/repo-init-next-js/references/file-contents.md +0 -800
  344. package/template/.agents/skills/repo/repo-init-next-js/scripts/setup.sh +0 -47
  345. package/template/.agents/skills/repo/repo-init-node/SKILL.md +0 -196
  346. package/template/.agents/skills/skill-creator/LICENSE.txt +0 -202
  347. package/template/.agents/skills/skill-creator/SKILL.md +0 -485
  348. package/template/.agents/skills/skill-creator/agents/analyzer.md +0 -274
  349. package/template/.agents/skills/skill-creator/agents/comparator.md +0 -202
  350. package/template/.agents/skills/skill-creator/agents/grader.md +0 -223
  351. package/template/.agents/skills/skill-creator/assets/eval_review.html +0 -146
  352. package/template/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  353. package/template/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
  354. package/template/.agents/skills/skill-creator/references/schemas.md +0 -430
  355. package/template/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  356. package/template/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  357. package/template/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
  358. package/template/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
  359. package/template/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
  360. package/template/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
  361. package/template/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
  362. package/template/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
  363. package/template/.agents/skills/skill-creator/scripts/utils.py +0 -47
  364. package/template/.agents/skills/supabase/CHANGELOG.md +0 -78
  365. package/template/.agents/skills/supabase/SKILL.md +0 -149
  366. package/template/.agents/skills/supabase/assets/feedback-issue-template.md +0 -17
  367. package/template/.agents/skills/supabase/references/skill-feedback.md +0 -17
  368. package/template/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
  369. package/template/.agents/skills/supabase-postgres-best-practices/SKILL.md +0 -64
  370. package/template/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
  371. package/template/.agents/skills/supabase-postgres-best-practices/references/_sections.md +0 -39
  372. package/template/.agents/skills/supabase-postgres-best-practices/references/_template.md +0 -34
  373. package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
  374. package/template/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
  375. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
  376. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
  377. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
  378. package/template/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
  379. package/template/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
  380. package/template/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
  381. package/template/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
  382. package/template/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
  383. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
  384. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
  385. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
  386. package/template/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
  387. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
  388. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
  389. package/template/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
  390. package/template/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
  391. package/template/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
  392. package/template/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
  393. package/template/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
  394. package/template/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
  395. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
  396. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
  397. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
  398. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
  399. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
  400. package/template/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
  401. package/template/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
  402. package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
  403. package/template/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
  404. package/template/.agents/skills/writing/humanizer/LICENSE +0 -21
  405. package/template/.agents/skills/writing/humanizer/README.md +0 -209
  406. package/template/.agents/skills/writing/humanizer/SKILL.md +0 -456
  407. package/template/.agents/upstreams.json +0 -115
@@ -1,197 +0,0 @@
1
- /**
2
- * Crash-safe injection journal.
3
- *
4
- * Injection writes into the user's source tree: generated components, a Nuxt
5
- * client plugin, marker blocks inside a layout, a patched CSP meta tag. The
6
- * clean path removes all of it on stop. The unclean paths do not:
7
- *
8
- * - the dev server is SIGKILLed, so `--remove` never runs;
9
- * - the project changes shape between start and stop (a nuxt.config appears,
10
- * a package.json is edited), so detection resolves a different framework
11
- * and the old framework's artifacts are nobody's business;
12
- * - stop runs from a different directory than start did.
13
- *
14
- * So every inject records what it wrote to `.impeccable/live/inject-journal.json`
15
- * before the next one runs, and both inject and `--remove` reconcile that
16
- * record against the tree.
17
- *
18
- * **The journal is a claim of ownership, not a to-do list.** Healing an
19
- * artifact only ever removes what still carries our marker; a generated file
20
- * the user has since replaced, or a layout they have since un-patched by hand,
21
- * is dropped from the journal untouched.
22
- *
23
- * **Path resolution is appRoot-relative.** Live entry scripts chdir onto the
24
- * roots manifest (`enterLiveRoot`) before doing anything, so a journal written
25
- * by a session started in the app root is found by a stop issued from any
26
- * directory inside the repo.
27
- */
28
-
29
- import fs from 'node:fs';
30
- import path from 'node:path';
31
- import { PATCH_UNDOERS } from './index.mjs';
32
-
33
- export const INJECT_JOURNAL_VERSION = 1;
34
- export const INJECT_JOURNAL_RELPATH = '.impeccable/live/inject-journal.json';
35
-
36
- export function injectJournalPath(cwd = process.cwd()) {
37
- return path.join(cwd, ...INJECT_JOURNAL_RELPATH.split('/'));
38
- }
39
-
40
- export function readInjectJournal(cwd = process.cwd()) {
41
- const file = injectJournalPath(cwd);
42
- let raw;
43
- try {
44
- raw = JSON.parse(fs.readFileSync(file, 'utf-8'));
45
- } catch {
46
- return null;
47
- }
48
- if (!raw || typeof raw !== 'object' || !Array.isArray(raw.artifacts)) return null;
49
- return raw;
50
- }
51
-
52
- export function clearInjectJournal(cwd = process.cwd()) {
53
- try { fs.unlinkSync(injectJournalPath(cwd)); } catch { /* already gone */ }
54
- }
55
-
56
- function writeInjectJournal(cwd, journal) {
57
- const file = injectJournalPath(cwd);
58
- fs.mkdirSync(path.dirname(file), { recursive: true });
59
- fs.writeFileSync(file, JSON.stringify(journal, null, 2) + '\n', 'utf-8');
60
- return file;
61
- }
62
-
63
- /**
64
- * Record the artifacts an injection just wrote. Replaces any previous record:
65
- * callers heal first (see healInjectJournal), so nothing survivable is lost.
66
- */
67
- export function recordInjection(cwd = process.cwd(), { framework, port, artifacts = [] } = {}) {
68
- if (!artifacts.length) {
69
- clearInjectJournal(cwd);
70
- return null;
71
- }
72
- return writeInjectJournal(cwd, {
73
- version: INJECT_JOURNAL_VERSION,
74
- appRoot: path.resolve(cwd),
75
- framework: framework || null,
76
- port: Number.isFinite(Number(port)) ? Number(port) : null,
77
- pid: process.pid,
78
- recordedAt: new Date().toISOString(),
79
- artifacts,
80
- });
81
- }
82
-
83
- function normalizeRel(cwd, rel) {
84
- return path.resolve(cwd, String(rel || '')).split(path.sep).join('/');
85
- }
86
-
87
- function readIfPresent(abs) {
88
- try {
89
- return fs.readFileSync(abs, 'utf-8');
90
- } catch {
91
- return null;
92
- }
93
- }
94
-
95
- function pruneEmptyDirs(dir, stopDir) {
96
- let current = path.resolve(dir);
97
- const stop = path.resolve(stopDir);
98
- while (current !== stop && current.startsWith(stop + path.sep)) {
99
- try {
100
- if (fs.readdirSync(current).length > 0) return;
101
- fs.rmdirSync(current);
102
- } catch {
103
- return;
104
- }
105
- current = path.dirname(current);
106
- }
107
- }
108
-
109
- function insideProject(cwd, abs) {
110
- const rel = path.relative(path.resolve(cwd), path.resolve(abs));
111
- return rel !== '' && !rel.startsWith('..') && !path.isAbsolute(rel);
112
- }
113
-
114
- function healArtifact(cwd, artifact, undoers) {
115
- const abs = path.resolve(cwd, artifact.path);
116
- // The journal is a project-local file, i.e. attacker-writable input in a
117
- // cloned repo. Never touch anything outside the project tree, whatever the
118
- // journal claims to own.
119
- if (!insideProject(cwd, abs)) return { path: artifact.path, action: 'refused_outside_project' };
120
- const content = readIfPresent(abs);
121
- if (content === null) return { path: artifact.path, action: 'absent' };
122
-
123
- if (artifact.kind === 'created') {
124
- // Only reclaim a generated file that still carries our marker; a created
125
- // artifact with no marker at all is unverifiable and stays untouched.
126
- if (!artifact.marker || !content.includes(artifact.marker)) {
127
- return { path: artifact.path, action: 'disowned' };
128
- }
129
- try { fs.rmSync(abs, { force: true }); } catch { return null; }
130
- if (artifact.pruneTo !== undefined) {
131
- const pruneRoot = path.resolve(cwd, artifact.pruneTo || '.');
132
- if (insideProject(cwd, pruneRoot) || pruneRoot === path.resolve(cwd)) {
133
- pruneEmptyDirs(path.dirname(abs), pruneRoot);
134
- }
135
- }
136
- return { path: artifact.path, action: 'removed' };
137
- }
138
-
139
- if (artifact.kind === 'patched') {
140
- const markers = Array.isArray(artifact.markers) ? artifact.markers : [];
141
- // No marker left means the patch is already gone; never run an undo over
142
- // a file we no longer recognize (the undoers normalize whitespace).
143
- if (markers.length && !markers.some((marker) => content.includes(marker))) {
144
- return { path: artifact.path, action: 'disowned' };
145
- }
146
- const undo = undoers[artifact.patch];
147
- if (typeof undo !== 'function') return null;
148
- const next = undo(content);
149
- if (next === content) return { path: artifact.path, action: 'disowned' };
150
- try { fs.writeFileSync(abs, next, 'utf-8'); } catch { return null; }
151
- return { path: artifact.path, action: 'unpatched' };
152
- }
153
-
154
- return null;
155
- }
156
-
157
- /**
158
- * Reconcile the journal against the tree.
159
- *
160
- * `keep` is the set of paths the current operation legitimately owns — the
161
- * artifacts an inject is about to (re)write. Everything else in the journal is
162
- * an orphan of a session that is gone, and gets healed. This keeps a repeat
163
- * inject byte-idempotent: the artifacts it is about to rewrite are kept, not
164
- * torn down and rebuilt.
165
- *
166
- * Returns `{ healed, kept }`. `healed` lists only artifacts whose file was
167
- * actually changed or removed, so callers can stay silent when nothing was
168
- * orphaned. Idempotent: a second call finds an empty journal.
169
- */
170
- export function healInjectJournal(cwd = process.cwd(), { keep = [], undoers = PATCH_UNDOERS } = {}) {
171
- const journal = readInjectJournal(cwd);
172
- if (!journal) return { healed: [], kept: [] };
173
-
174
- const keepSet = new Set(keep.map((rel) => normalizeRel(cwd, rel)));
175
- const healed = [];
176
- const kept = [];
177
-
178
- for (const artifact of journal.artifacts) {
179
- if (!artifact || typeof artifact.path !== 'string') continue;
180
- if (keepSet.has(normalizeRel(cwd, artifact.path))) {
181
- kept.push(artifact);
182
- continue;
183
- }
184
- const outcome = healArtifact(cwd, artifact, undoers);
185
- if (outcome && (outcome.action === 'removed' || outcome.action === 'unpatched')) {
186
- healed.push(outcome);
187
- }
188
- }
189
-
190
- if (kept.length) {
191
- writeInjectJournal(cwd, { ...journal, artifacts: kept });
192
- } else {
193
- clearInjectJournal(cwd);
194
- }
195
-
196
- return { healed, kept };
197
- }
@@ -1,49 +0,0 @@
1
- /**
2
- * Next.js registry entry.
3
- *
4
- * Next takes the generic tag strategy: the App Router's root layout renders
5
- * `<html>…<body>` in JSX, so the marker-wrapped script block goes in there
6
- * verbatim. Nothing about injection differs from a plain Vite app, which is
7
- * why live-inject.mjs never had a Next branch. The entry exists so the
8
- * registry can name what it is looking at.
9
- */
10
-
11
- import { fileExists, findConfigFile, hasAnyDependency } from './detect-utils.mjs';
12
-
13
- const NEXT_CONFIG_RE = /^next\.config\.(?:js|mjs|cjs|ts|mts|cts)$/;
14
-
15
- const ROUTER_ENTRY_CANDIDATES = [
16
- 'app/layout.tsx', 'app/layout.jsx', 'app/layout.ts', 'app/layout.js',
17
- 'src/app/layout.tsx', 'src/app/layout.jsx', 'src/app/layout.ts', 'src/app/layout.js',
18
- 'pages/_app.tsx', 'pages/_app.jsx', 'pages/_app.ts', 'pages/_app.js',
19
- 'pages/_document.tsx', 'pages/_document.jsx',
20
- 'src/pages/_app.tsx', 'src/pages/_app.jsx',
21
- ];
22
-
23
- export function detectNextProject(cwd = process.cwd()) {
24
- const configFile = findConfigFile(cwd, NEXT_CONFIG_RE);
25
- if (configFile) return { configFile, via: 'config' };
26
- if (hasAnyDependency(cwd, ['next'])) return { configFile: null, via: 'package' };
27
- // Next's file conventions are distinctive enough to stand alone: a root
28
- // `app/layout.*` or `pages/_app.*` is not a shape other bundlers produce.
29
- const entry = ROUTER_ENTRY_CANDIDATES.find((rel) => fileExists(cwd, rel));
30
- if (entry) return { configFile: null, via: 'router-entry', entry };
31
- return null;
32
- }
33
-
34
- export const nextjs = {
35
- name: 'nextjs',
36
-
37
- detect(cwd) {
38
- return detectNextProject(cwd);
39
- },
40
-
41
- inject: { kind: 'tag' },
42
-
43
- source: {
44
- extensions: ['.tsx', '.jsx'],
45
- preview: 'source',
46
- styleMode: 'scoped',
47
- commentSyntax: 'jsx',
48
- },
49
- };
@@ -1,161 +0,0 @@
1
- /**
2
- * Nuxt registry entry, and the Nuxt adapter itself.
3
- *
4
- * A script element placed in app.vue is compiled as Vue-rendered DOM and is
5
- * not executed. Nuxt instead auto-discovers client plugins. Keep the adapter
6
- * generated, dev-only, and outside user-authored source: Live creates one
7
- * marked .client.ts plugin on start and removes it on stop.
8
- */
9
-
10
- import fs from 'node:fs';
11
- import path from 'node:path';
12
- import { buildLiveScriptSrc } from './script-src.mjs';
13
- import { findConfigFile } from './detect-utils.mjs';
14
-
15
- export const NUXT_PLUGIN_MARKER = 'impeccable-live-nuxt-plugin';
16
- export const NUXT_PLUGIN_NAME = 'impeccable-live.client.ts';
17
-
18
- const NUXT_CONFIG_RE = /^nuxt\.config\.(?:js|mjs|cjs|ts|mts|cts)$/;
19
-
20
- export function detectNuxtProject(cwd = process.cwd()) {
21
- const configFile = findConfigFile(cwd, NUXT_CONFIG_RE);
22
- if (!configFile) return null;
23
-
24
- const config = fs.readFileSync(path.join(cwd, configFile), 'utf-8');
25
- const literalSrcDir = config.match(/\bsrcDir\s*:\s*(['"])([^'"]+)\1/);
26
- let appDir = '';
27
- if (literalSrcDir) {
28
- const candidate = literalSrcDir[2]
29
- .replace(/\\/g, '/')
30
- .replace(/^\.\//, '')
31
- .replace(/\/+$/, '');
32
- const normalized = path.posix.normalize(candidate);
33
- if (normalized !== '..' && !normalized.startsWith('../') && !path.isAbsolute(normalized)) {
34
- appDir = normalized === '.' ? '' : normalized;
35
- }
36
- } else if (
37
- fs.existsSync(path.join(cwd, 'app', 'app.vue'))
38
- || fs.existsSync(path.join(cwd, 'app', 'pages'))
39
- ) {
40
- appDir = 'app';
41
- }
42
-
43
- const pluginFile = [appDir, 'plugins', NUXT_PLUGIN_NAME].filter(Boolean).join('/');
44
- return { configFile, appDir, pluginFile };
45
- }
46
-
47
- export function buildNuxtPlugin(port, token) {
48
- return `/* ${NUXT_PLUGIN_MARKER} */
49
- const liveSrc = '${buildLiveScriptSrc(port, token)}';
50
- const liveSelector = 'script[data-impeccable-live-nuxt]';
51
-
52
- export default defineNuxtPlugin(() => {
53
- if (!import.meta.dev || typeof document === 'undefined') return;
54
-
55
- const expectedSrc = new URL(liveSrc, window.location.href).href;
56
- let script = document.querySelector(liveSelector);
57
- if (script?.src === expectedSrc) return;
58
- script?.remove();
59
-
60
- script = document.createElement('script');
61
- script.src = liveSrc;
62
- script.async = true;
63
- script.dataset.impeccableLiveNuxt = '';
64
- document.head.appendChild(script);
65
-
66
- import.meta.hot?.dispose(() => {
67
- if (script?.isConnected) script.remove();
68
- });
69
- });
70
- /* /${NUXT_PLUGIN_MARKER} */
71
- `;
72
- }
73
-
74
- export function applyNuxtLiveAdapter({ cwd = process.cwd(), port, token, project = detectNuxtProject(cwd) }) {
75
- if (!project) return { error: 'nuxt_not_detected' };
76
- const absFile = path.join(cwd, project.pluginFile);
77
- const existing = fs.existsSync(absFile) ? fs.readFileSync(absFile, 'utf-8') : null;
78
- if (existing !== null && !existing.includes(NUXT_PLUGIN_MARKER)) {
79
- return {
80
- file: project.pluginFile,
81
- error: 'nuxt_plugin_conflict',
82
- hint: `${project.pluginFile} already exists and is not managed by Impeccable Live`,
83
- };
84
- }
85
-
86
- const content = buildNuxtPlugin(port, token);
87
- fs.mkdirSync(path.dirname(absFile), { recursive: true });
88
- if (content !== existing) fs.writeFileSync(absFile, content, 'utf-8');
89
- return {
90
- file: project.pluginFile,
91
- inserted: true,
92
- changed: content !== existing,
93
- devOnly: true,
94
- };
95
- }
96
-
97
- export function removeNuxtLiveAdapter({ cwd = process.cwd(), project = detectNuxtProject(cwd) }) {
98
- if (!project) return { error: 'nuxt_not_detected' };
99
- const absFile = path.join(cwd, project.pluginFile);
100
- if (!fs.existsSync(absFile)) {
101
- return { file: project.pluginFile, removed: false, note: 'no adapter present' };
102
- }
103
- const content = fs.readFileSync(absFile, 'utf-8');
104
- if (!content.includes(NUXT_PLUGIN_MARKER)) {
105
- return {
106
- file: project.pluginFile,
107
- removed: false,
108
- error: 'nuxt_plugin_conflict',
109
- hint: `${project.pluginFile} is not managed by Impeccable Live`,
110
- };
111
- }
112
- fs.unlinkSync(absFile);
113
- const pluginDir = path.dirname(absFile);
114
- if (fs.readdirSync(pluginDir).length === 0) fs.rmdirSync(pluginDir);
115
- return { file: project.pluginFile, removed: true };
116
- }
117
-
118
- export const nuxt = {
119
- name: 'nuxt',
120
-
121
- detect(cwd) {
122
- return detectNuxtProject(cwd);
123
- },
124
-
125
- inject: {
126
- kind: 'adapter',
127
-
128
- apply({ cwd, port, token, project }) {
129
- return applyNuxtLiveAdapter({ cwd, port, token, project });
130
- },
131
-
132
- remove({ cwd, project }) {
133
- return removeNuxtLiveAdapter({ cwd, project });
134
- },
135
-
136
- // The plugin path depends on the resolved srcDir, so it cannot live in the
137
- // static ignore list the way the SvelteKit paths do.
138
- ignorePatterns(project) {
139
- return project?.pluginFile ? [project.pluginFile] : [];
140
- },
141
-
142
- artifacts({ project }) {
143
- if (!project?.pluginFile) return [];
144
- return [{
145
- kind: 'created',
146
- path: project.pluginFile,
147
- marker: NUXT_PLUGIN_MARKER,
148
- // Mirrors removeNuxtLiveAdapter: the generated `plugins/` directory
149
- // goes when it empties, its parent stays.
150
- pruneTo: path.posix.dirname(path.posix.dirname(project.pluginFile)),
151
- }];
152
- },
153
- },
154
-
155
- source: {
156
- extensions: ['.vue'],
157
- preview: 'source',
158
- styleMode: 'scoped',
159
- commentSyntax: 'html',
160
- },
161
- };
@@ -1,17 +0,0 @@
1
- /**
2
- * The one place that builds the `/live.js` URL the browser loads.
3
- *
4
- * Every injection path needs it (the generic script tag, the Nuxt client
5
- * plugin, the SvelteKit root component, the TanStack mount component), and a
6
- * separate module keeps that shared leaf free of import cycles: the framework
7
- * entries import it, and nothing here imports a framework entry.
8
- */
9
-
10
- /**
11
- * When a token is supplied it rides as a `?token=...` query param so the
12
- * server's token-gated /live.js handler authorizes the fetch.
13
- */
14
- export function buildLiveScriptSrc(port, token) {
15
- const base = 'http://localhost:' + port + '/live.js';
16
- return token ? base + '?token=' + encodeURIComponent(token) : base;
17
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Static HTML registry entry: the terminal fallback.
3
- *
4
- * Hand-written pages, a multi-page site emitted by a generator, anything with
5
- * no bundler config at the app root. `detect` always matches, so this entry
6
- * must stay last in FRAMEWORKS. Its behavior is the plain tag strategy, which
7
- * is what live-inject.mjs did for every unrecognized project before the
8
- * registry existed.
9
- */
10
-
11
- export const staticHtml = {
12
- name: 'static-html',
13
-
14
- detect() {
15
- return { via: 'fallback' };
16
- },
17
-
18
- inject: { kind: 'tag' },
19
-
20
- source: {
21
- extensions: ['.html', '.htm'],
22
- preview: 'source',
23
- styleMode: 'scoped',
24
- commentSyntax: 'html',
25
- },
26
- };
@@ -1,71 +0,0 @@
1
- /**
2
- * SvelteKit registry entry.
3
- *
4
- * Detection and the apply/remove pair are the existing adapter's
5
- * (`../sveltekit-adapter.mjs`); this file only declares them to the registry
6
- * and names the artifacts the journal has to be able to heal.
7
- */
8
-
9
- import {
10
- SVELTE_LAYOUT_MARKER_OPEN,
11
- SVELTE_LIVE_ROOT_COMPONENT,
12
- applySvelteKitLiveAdapter,
13
- detectSvelteKitProject,
14
- removeSvelteKitLiveAdapter,
15
- unpatchSvelteLayout,
16
- } from '../sveltekit-adapter.mjs';
17
-
18
- export const sveltekit = {
19
- name: 'sveltekit',
20
-
21
- detect(cwd, config) {
22
- return detectSvelteKitProject(cwd, config);
23
- },
24
-
25
- inject: {
26
- kind: 'adapter',
27
-
28
- apply({ cwd, port, token, config }) {
29
- return applySvelteKitLiveAdapter({ cwd, port, token, config });
30
- },
31
-
32
- remove({ cwd, config }) {
33
- return removeSvelteKitLiveAdapter({ cwd, config });
34
- },
35
-
36
- // The generated root component and the `src/lib/impeccable/` runtime paths
37
- // are already in the static LIVE_IGNORE_PATTERNS list, so nothing extra.
38
- ignorePatterns() {
39
- return [];
40
- },
41
-
42
- artifacts({ project }) {
43
- return [
44
- {
45
- kind: 'created',
46
- path: SVELTE_LIVE_ROOT_COMPONENT,
47
- marker: 'impeccable-live-root',
48
- pruneTo: 'src',
49
- },
50
- {
51
- kind: 'patched',
52
- path: project?.layoutFile || 'src/routes/+layout.svelte',
53
- patch: 'sveltekit-layout',
54
- markers: [SVELTE_LAYOUT_MARKER_OPEN],
55
- },
56
- ];
57
- },
58
-
59
- unpatch: {
60
- 'sveltekit-layout': unpatchSvelteLayout,
61
- },
62
- },
63
-
64
- source: {
65
- extensions: ['.svelte'],
66
- // Svelte resets component-local state on markup HMR updates, so variants
67
- // are mounted from generated components rather than written into the route.
68
- preview: 'component',
69
- commentSyntax: 'html',
70
- },
71
- };