@goldencomm/create-baseline 0.0.1

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 (377) hide show
  1. package/README.md +88 -0
  2. package/index.mjs +296 -0
  3. package/package.json +44 -0
  4. package/templates/next/.claude/skills/ai-elements/SKILL.md +160 -0
  5. package/templates/next/.claude/skills/ai-elements/references/agent.md +134 -0
  6. package/templates/next/.claude/skills/ai-elements/references/artifact.md +84 -0
  7. package/templates/next/.claude/skills/ai-elements/references/attachments.md +190 -0
  8. package/templates/next/.claude/skills/ai-elements/references/audio-player.md +134 -0
  9. package/templates/next/.claude/skills/ai-elements/references/canvas.md +34 -0
  10. package/templates/next/.claude/skills/ai-elements/references/chain-of-thought.md +81 -0
  11. package/templates/next/.claude/skills/ai-elements/references/checkpoint.md +183 -0
  12. package/templates/next/.claude/skills/ai-elements/references/code-block.md +170 -0
  13. package/templates/next/.claude/skills/ai-elements/references/commit.md +177 -0
  14. package/templates/next/.claude/skills/ai-elements/references/confirmation.md +262 -0
  15. package/templates/next/.claude/skills/ai-elements/references/connection.md +34 -0
  16. package/templates/next/.claude/skills/ai-elements/references/context.md +126 -0
  17. package/templates/next/.claude/skills/ai-elements/references/controls.md +32 -0
  18. package/templates/next/.claude/skills/ai-elements/references/conversation.md +224 -0
  19. package/templates/next/.claude/skills/ai-elements/references/edge.md +52 -0
  20. package/templates/next/.claude/skills/ai-elements/references/environment-variables.md +102 -0
  21. package/templates/next/.claude/skills/ai-elements/references/file-tree.md +72 -0
  22. package/templates/next/.claude/skills/ai-elements/references/image.md +146 -0
  23. package/templates/next/.claude/skills/ai-elements/references/inline-citation.md +299 -0
  24. package/templates/next/.claude/skills/ai-elements/references/jsx-preview.md +104 -0
  25. package/templates/next/.claude/skills/ai-elements/references/message.md +237 -0
  26. package/templates/next/.claude/skills/ai-elements/references/mic-selector.md +189 -0
  27. package/templates/next/.claude/skills/ai-elements/references/model-selector.md +112 -0
  28. package/templates/next/.claude/skills/ai-elements/references/node.md +73 -0
  29. package/templates/next/.claude/skills/ai-elements/references/open-in-chat.md +67 -0
  30. package/templates/next/.claude/skills/ai-elements/references/package-info.md +95 -0
  31. package/templates/next/.claude/skills/ai-elements/references/panel.md +33 -0
  32. package/templates/next/.claude/skills/ai-elements/references/persona.md +166 -0
  33. package/templates/next/.claude/skills/ai-elements/references/plan.md +79 -0
  34. package/templates/next/.claude/skills/ai-elements/references/prompt-input.md +579 -0
  35. package/templates/next/.claude/skills/ai-elements/references/queue.md +172 -0
  36. package/templates/next/.claude/skills/ai-elements/references/reasoning.md +238 -0
  37. package/templates/next/.claude/skills/ai-elements/references/sandbox.md +129 -0
  38. package/templates/next/.claude/skills/ai-elements/references/schema-display.md +102 -0
  39. package/templates/next/.claude/skills/ai-elements/references/shimmer.md +48 -0
  40. package/templates/next/.claude/skills/ai-elements/references/snippet.md +64 -0
  41. package/templates/next/.claude/skills/ai-elements/references/sources.md +209 -0
  42. package/templates/next/.claude/skills/ai-elements/references/speech-input.md +163 -0
  43. package/templates/next/.claude/skills/ai-elements/references/stack-trace.md +224 -0
  44. package/templates/next/.claude/skills/ai-elements/references/suggestion.md +124 -0
  45. package/templates/next/.claude/skills/ai-elements/references/task.md +222 -0
  46. package/templates/next/.claude/skills/ai-elements/references/terminal.md +103 -0
  47. package/templates/next/.claude/skills/ai-elements/references/test-results.md +157 -0
  48. package/templates/next/.claude/skills/ai-elements/references/tool.md +285 -0
  49. package/templates/next/.claude/skills/ai-elements/references/toolbar.md +32 -0
  50. package/templates/next/.claude/skills/ai-elements/references/transcription.md +120 -0
  51. package/templates/next/.claude/skills/ai-elements/references/voice-selector.md +241 -0
  52. package/templates/next/.claude/skills/ai-elements/references/web-preview.md +200 -0
  53. package/templates/next/.claude/skills/ai-elements/scripts/agent.tsx +61 -0
  54. package/templates/next/.claude/skills/ai-elements/scripts/artifact.tsx +127 -0
  55. package/templates/next/.claude/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
  56. package/templates/next/.claude/skills/ai-elements/scripts/attachments-list.tsx +95 -0
  57. package/templates/next/.claude/skills/ai-elements/scripts/attachments.tsx +85 -0
  58. package/templates/next/.claude/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
  59. package/templates/next/.claude/skills/ai-elements/scripts/audio-player.tsx +68 -0
  60. package/templates/next/.claude/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
  61. package/templates/next/.claude/skills/ai-elements/scripts/checkpoint.tsx +110 -0
  62. package/templates/next/.claude/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
  63. package/templates/next/.claude/skills/ai-elements/scripts/code-block.tsx +120 -0
  64. package/templates/next/.claude/skills/ai-elements/scripts/commit.tsx +94 -0
  65. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
  66. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
  67. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
  68. package/templates/next/.claude/skills/ai-elements/scripts/confirmation.tsx +55 -0
  69. package/templates/next/.claude/skills/ai-elements/scripts/context.tsx +45 -0
  70. package/templates/next/.claude/skills/ai-elements/scripts/conversation.tsx +177 -0
  71. package/templates/next/.claude/skills/ai-elements/scripts/environment-variables.tsx +62 -0
  72. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
  73. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
  74. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
  75. package/templates/next/.claude/skills/ai-elements/scripts/file-tree.tsx +42 -0
  76. package/templates/next/.claude/skills/ai-elements/scripts/image.tsx +20 -0
  77. package/templates/next/.claude/skills/ai-elements/scripts/inline-citation.tsx +97 -0
  78. package/templates/next/.claude/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
  79. package/templates/next/.claude/skills/ai-elements/scripts/message.tsx +365 -0
  80. package/templates/next/.claude/skills/ai-elements/scripts/mic-selector.tsx +49 -0
  81. package/templates/next/.claude/skills/ai-elements/scripts/model-selector.tsx +365 -0
  82. package/templates/next/.claude/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
  83. package/templates/next/.claude/skills/ai-elements/scripts/package-info.tsx +51 -0
  84. package/templates/next/.claude/skills/ai-elements/scripts/persona-command.tsx +110 -0
  85. package/templates/next/.claude/skills/ai-elements/scripts/persona-glint.tsx +110 -0
  86. package/templates/next/.claude/skills/ai-elements/scripts/persona-halo.tsx +110 -0
  87. package/templates/next/.claude/skills/ai-elements/scripts/persona-mana.tsx +110 -0
  88. package/templates/next/.claude/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
  89. package/templates/next/.claude/skills/ai-elements/scripts/persona-opal.tsx +110 -0
  90. package/templates/next/.claude/skills/ai-elements/scripts/plan.tsx +65 -0
  91. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
  92. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
  93. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input.tsx +267 -0
  94. package/templates/next/.claude/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
  95. package/templates/next/.claude/skills/ai-elements/scripts/queue.tsx +295 -0
  96. package/templates/next/.claude/skills/ai-elements/scripts/reasoning.tsx +71 -0
  97. package/templates/next/.claude/skills/ai-elements/scripts/sandbox.tsx +178 -0
  98. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
  99. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
  100. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
  101. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
  102. package/templates/next/.claude/skills/ai-elements/scripts/schema-display.tsx +110 -0
  103. package/templates/next/.claude/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
  104. package/templates/next/.claude/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
  105. package/templates/next/.claude/skills/ai-elements/scripts/shimmer.tsx +17 -0
  106. package/templates/next/.claude/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
  107. package/templates/next/.claude/skills/ai-elements/scripts/snippet.tsx +25 -0
  108. package/templates/next/.claude/skills/ai-elements/scripts/sources-custom.tsx +39 -0
  109. package/templates/next/.claude/skills/ai-elements/scripts/sources.tsx +32 -0
  110. package/templates/next/.claude/skills/ai-elements/scripts/speech-input.tsx +84 -0
  111. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
  112. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
  113. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace.tsx +58 -0
  114. package/templates/next/.claude/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
  115. package/templates/next/.claude/skills/ai-elements/scripts/suggestion.tsx +32 -0
  116. package/templates/next/.claude/skills/ai-elements/scripts/task.tsx +59 -0
  117. package/templates/next/.claude/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
  118. package/templates/next/.claude/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
  119. package/templates/next/.claude/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
  120. package/templates/next/.claude/skills/ai-elements/scripts/terminal.tsx +82 -0
  121. package/templates/next/.claude/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
  122. package/templates/next/.claude/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
  123. package/templates/next/.claude/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
  124. package/templates/next/.claude/skills/ai-elements/scripts/test-results.tsx +102 -0
  125. package/templates/next/.claude/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
  126. package/templates/next/.claude/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
  127. package/templates/next/.claude/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
  128. package/templates/next/.claude/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
  129. package/templates/next/.claude/skills/ai-elements/scripts/tool.tsx +222 -0
  130. package/templates/next/.claude/skills/ai-elements/scripts/transcription.tsx +290 -0
  131. package/templates/next/.claude/skills/ai-elements/scripts/voice-selector.tsx +245 -0
  132. package/templates/next/.claude/skills/ai-elements/scripts/web-preview.tsx +115 -0
  133. package/templates/next/.claude/skills/ai-sdk/SKILL.md +78 -0
  134. package/templates/next/.claude/skills/frontend-design/LICENSE.txt +177 -0
  135. package/templates/next/.claude/skills/frontend-design/SKILL.md +55 -0
  136. package/templates/next/.claude/skills/gc-implement-figma-page/SKILL.md +93 -0
  137. package/templates/next/.claude/skills/migrate-ai-sdk-v6-to-v7/SKILL.md +108 -0
  138. package/templates/next/.claude/skills/vercel-composition-patterns/AGENTS.md +946 -0
  139. package/templates/next/.claude/skills/vercel-composition-patterns/README.md +60 -0
  140. package/templates/next/.claude/skills/vercel-composition-patterns/SKILL.md +89 -0
  141. package/templates/next/.claude/skills/vercel-composition-patterns/metadata.json +11 -0
  142. package/templates/next/.claude/skills/vercel-composition-patterns/rules/_sections.md +29 -0
  143. package/templates/next/.claude/skills/vercel-composition-patterns/rules/_template.md +24 -0
  144. package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  145. package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  146. package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  147. package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  148. package/templates/next/.claude/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  149. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  150. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  151. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  152. package/templates/next/.claude/skills/vercel-react-best-practices/AGENTS.md +3810 -0
  153. package/templates/next/.claude/skills/vercel-react-best-practices/README.md +123 -0
  154. package/templates/next/.claude/skills/vercel-react-best-practices/SKILL.md +149 -0
  155. package/templates/next/.claude/skills/vercel-react-best-practices/metadata.json +15 -0
  156. package/templates/next/.claude/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  157. package/templates/next/.claude/skills/vercel-react-best-practices/rules/_template.md +28 -0
  158. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  159. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  160. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  161. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  162. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  163. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  164. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  165. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  166. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  167. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  168. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  169. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  170. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  171. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  172. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  173. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  174. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  175. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  176. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  177. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  178. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  179. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  180. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  181. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  182. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  183. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  184. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  185. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  186. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  187. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  188. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  189. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  190. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  191. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  192. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  193. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  194. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  195. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  196. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  197. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  198. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  199. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  200. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  201. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  202. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  203. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  204. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  205. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  206. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  207. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  208. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  209. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  210. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  211. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  212. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  213. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  214. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  215. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  216. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  217. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  218. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  219. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  220. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  221. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  222. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  223. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  224. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  225. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  227. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  228. package/templates/next/.claude/skills/web-design-guidelines/SKILL.md +39 -0
  229. package/templates/next/CLAUDE.md +42 -0
  230. package/templates/next/README.md +30 -0
  231. package/templates/next/_gitignore +4 -0
  232. package/templates/next/app/globals.css +13 -0
  233. package/templates/next/app/layout.tsx +44 -0
  234. package/templates/next/app/page.tsx +30 -0
  235. package/templates/next/globals.d.ts +8 -0
  236. package/templates/next/next.config.mjs +6 -0
  237. package/templates/next/package.json +38 -0
  238. package/templates/next/postcss.config.mjs +5 -0
  239. package/templates/next/skills-lock.json +47 -0
  240. package/templates/next/tsconfig.json +36 -0
  241. package/templates/shopify-theme/.claude/skills/gc-shopify-block/SKILL.md +44 -0
  242. package/templates/shopify-theme/.claude/skills/shopify-dev/SKILL.md +51 -0
  243. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/log_skill_use.mjs +205 -0
  244. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/search_docs.mjs +272 -0
  245. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.ps1 +361 -0
  246. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.sh +527 -0
  247. package/templates/shopify-theme/.claude/skills/shopify-liquid/SKILL.md +343 -0
  248. package/templates/shopify-theme/.claude/skills/shopify-liquid/blocks/hero-slide.liquid +342 -0
  249. package/templates/shopify-theme/.claude/skills/shopify-liquid/config/settings_schema.json +1 -0
  250. package/templates/shopify-theme/.claude/skills/shopify-liquid/featured-collection.liquid +457 -0
  251. package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.json +10 -0
  252. package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.schema.json +103 -0
  253. package/templates/shopify-theme/.claude/skills/shopify-liquid/package.json +10 -0
  254. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/search_docs.mjs +759 -0
  255. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.ps1 +361 -0
  256. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.sh +527 -0
  257. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/validate.mjs +654 -0
  258. package/templates/shopify-theme/.claude/skills/shopify-liquid/sections/hero-banner.liquid +329 -0
  259. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/SKILL.md +165 -0
  260. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/log_skill_use.mjs +205 -0
  261. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.ps1 +361 -0
  262. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.sh +527 -0
  263. package/templates/shopify-theme/.shopifyignore +9 -0
  264. package/templates/shopify-theme/CLAUDE.md +51 -0
  265. package/templates/shopify-theme/README.md +92 -0
  266. package/templates/shopify-theme/assets/baseline.css +8390 -0
  267. package/templates/shopify-theme/assets/swiper-element-bundle.min.js +14 -0
  268. package/templates/shopify-theme/blocks/_accordion.liquid +59 -0
  269. package/templates/shopify-theme/blocks/_carousel-slide.liquid +24 -0
  270. package/templates/shopify-theme/blocks/_modal-body.liquid +18 -0
  271. package/templates/shopify-theme/blocks/_modal-footer.liquid +36 -0
  272. package/templates/shopify-theme/blocks/_modal-header.liquid +19 -0
  273. package/templates/shopify-theme/blocks/_modal-media.liquid +37 -0
  274. package/templates/shopify-theme/blocks/accordion-group.liquid +53 -0
  275. package/templates/shopify-theme/blocks/alert.liquid +92 -0
  276. package/templates/shopify-theme/blocks/avatar-group.liquid +51 -0
  277. package/templates/shopify-theme/blocks/avatar.liquid +56 -0
  278. package/templates/shopify-theme/blocks/badge.liquid +33 -0
  279. package/templates/shopify-theme/blocks/breadcrumb.liquid +45 -0
  280. package/templates/shopify-theme/blocks/button.liquid +51 -0
  281. package/templates/shopify-theme/blocks/buttons.liquid +41 -0
  282. package/templates/shopify-theme/blocks/card.liquid +67 -0
  283. package/templates/shopify-theme/blocks/carousel.liquid +55 -0
  284. package/templates/shopify-theme/blocks/column.liquid +33 -0
  285. package/templates/shopify-theme/blocks/image.liquid +37 -0
  286. package/templates/shopify-theme/blocks/modal.liquid +52 -0
  287. package/templates/shopify-theme/blocks/popover.liquid +24 -0
  288. package/templates/shopify-theme/blocks/skeleton.liquid +22 -0
  289. package/templates/shopify-theme/blocks/spinner.liquid +22 -0
  290. package/templates/shopify-theme/blocks/split.liquid +39 -0
  291. package/templates/shopify-theme/blocks/tab.liquid +19 -0
  292. package/templates/shopify-theme/blocks/tabs.liquid +78 -0
  293. package/templates/shopify-theme/blocks/tags.liquid +55 -0
  294. package/templates/shopify-theme/blocks/text.liquid +55 -0
  295. package/templates/shopify-theme/blocks/tooltip.liquid +50 -0
  296. package/templates/shopify-theme/blocks/typography.liquid +90 -0
  297. package/templates/shopify-theme/config/settings_data.json +4 -0
  298. package/templates/shopify-theme/config/settings_schema.json +10 -0
  299. package/templates/shopify-theme/layout/theme.liquid +21 -0
  300. package/templates/shopify-theme/locales/en.default.json +5 -0
  301. package/templates/shopify-theme/locales/en.default.schema.json +131 -0
  302. package/templates/shopify-theme/package.json +21 -0
  303. package/templates/shopify-theme/scripts/sync-tokens.mjs +32 -0
  304. package/templates/shopify-theme/sections/baseline-components.liquid +81 -0
  305. package/templates/shopify-theme/skills-lock.json +23 -0
  306. package/templates/shopify-theme/snippets/lucide.liquid +34 -0
  307. package/templates/shopify-theme/snippets/pagination.liquid +44 -0
  308. package/templates/shopify-theme/templates/collection.json +13 -0
  309. package/templates/shopify-theme/templates/gift_card.liquid +5 -0
  310. package/templates/shopify-theme/templates/index.json +135 -0
  311. package/templates/shopify-theme/templates/list-collections.json +13 -0
  312. package/templates/shopify-theme/templates/product.json +13 -0
  313. package/templates/wordpress/.claude/CLAUDE.md +37 -0
  314. package/templates/wordpress/.claude/skills/wp-block-development/SKILL.md +174 -0
  315. package/templates/wordpress/.claude/skills/wp-block-development/references/attributes-and-serialization.md +22 -0
  316. package/templates/wordpress/.claude/skills/wp-block-development/references/block-json.md +49 -0
  317. package/templates/wordpress/.claude/skills/wp-block-development/references/creating-new-blocks.md +46 -0
  318. package/templates/wordpress/.claude/skills/wp-block-development/references/debugging.md +36 -0
  319. package/templates/wordpress/.claude/skills/wp-block-development/references/deprecations.md +24 -0
  320. package/templates/wordpress/.claude/skills/wp-block-development/references/dynamic-rendering.md +23 -0
  321. package/templates/wordpress/.claude/skills/wp-block-development/references/inner-blocks.md +25 -0
  322. package/templates/wordpress/.claude/skills/wp-block-development/references/registration.md +30 -0
  323. package/templates/wordpress/.claude/skills/wp-block-development/references/supports-and-wrappers.md +18 -0
  324. package/templates/wordpress/.claude/skills/wp-block-development/references/tooling-and-testing.md +21 -0
  325. package/templates/wordpress/.claude/skills/wp-block-development/scripts/list_blocks.mjs +121 -0
  326. package/templates/wordpress/.claude/skills/wp-block-themes/SKILL.md +116 -0
  327. package/templates/wordpress/.claude/skills/wp-block-themes/references/creating-new-block-theme.md +37 -0
  328. package/templates/wordpress/.claude/skills/wp-block-themes/references/debugging.md +24 -0
  329. package/templates/wordpress/.claude/skills/wp-block-themes/references/patterns.md +18 -0
  330. package/templates/wordpress/.claude/skills/wp-block-themes/references/style-variations.md +14 -0
  331. package/templates/wordpress/.claude/skills/wp-block-themes/references/templates-and-parts.md +16 -0
  332. package/templates/wordpress/.claude/skills/wp-block-themes/references/theme-json.md +59 -0
  333. package/templates/wordpress/.claude/skills/wp-block-themes/scripts/detect_block_themes.mjs +117 -0
  334. package/templates/wordpress/.claude/skills/wp-performance/SKILL.md +146 -0
  335. package/templates/wordpress/.claude/skills/wp-performance/references/autoload-options.md +24 -0
  336. package/templates/wordpress/.claude/skills/wp-performance/references/cron.md +20 -0
  337. package/templates/wordpress/.claude/skills/wp-performance/references/database.md +20 -0
  338. package/templates/wordpress/.claude/skills/wp-performance/references/http-api.md +15 -0
  339. package/templates/wordpress/.claude/skills/wp-performance/references/measurement.md +21 -0
  340. package/templates/wordpress/.claude/skills/wp-performance/references/object-cache.md +24 -0
  341. package/templates/wordpress/.claude/skills/wp-performance/references/query-monitor-headless.md +38 -0
  342. package/templates/wordpress/.claude/skills/wp-performance/references/server-timing.md +22 -0
  343. package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-doctor.md +24 -0
  344. package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-profile.md +32 -0
  345. package/templates/wordpress/.claude/skills/wp-performance/scripts/perf_inspect.mjs +128 -0
  346. package/templates/wordpress/.claude/skills/wp-plugin-development/SKILL.md +112 -0
  347. package/templates/wordpress/.claude/skills/wp-plugin-development/references/data-and-cron.md +19 -0
  348. package/templates/wordpress/.claude/skills/wp-plugin-development/references/debugging.md +19 -0
  349. package/templates/wordpress/.claude/skills/wp-plugin-development/references/lifecycle.md +33 -0
  350. package/templates/wordpress/.claude/skills/wp-plugin-development/references/security.md +29 -0
  351. package/templates/wordpress/.claude/skills/wp-plugin-development/references/settings-api.md +22 -0
  352. package/templates/wordpress/.claude/skills/wp-plugin-development/references/structure.md +16 -0
  353. package/templates/wordpress/.claude/skills/wp-plugin-development/scripts/detect_plugins.mjs +122 -0
  354. package/templates/wordpress/.claude/skills/wp-rest-api/SKILL.md +114 -0
  355. package/templates/wordpress/.claude/skills/wp-rest-api/references/authentication.md +18 -0
  356. package/templates/wordpress/.claude/skills/wp-rest-api/references/custom-content-types.md +20 -0
  357. package/templates/wordpress/.claude/skills/wp-rest-api/references/discovery-and-params.md +20 -0
  358. package/templates/wordpress/.claude/skills/wp-rest-api/references/responses-and-fields.md +30 -0
  359. package/templates/wordpress/.claude/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
  360. package/templates/wordpress/.claude/skills/wp-rest-api/references/schema.md +22 -0
  361. package/templates/wordpress/.ddev/commands/web/seed +7 -0
  362. package/templates/wordpress/.ddev/config.yaml +18 -0
  363. package/templates/wordpress/.ddev/docker-compose.packages.yaml +14 -0
  364. package/templates/wordpress/.ddev/docker-compose.redis.yaml +11 -0
  365. package/templates/wordpress/.env.example +33 -0
  366. package/templates/wordpress/CLAUDE.md +34 -0
  367. package/templates/wordpress/README.md +45 -0
  368. package/templates/wordpress/_gitignore +33 -0
  369. package/templates/wordpress/auth.json.example +18 -0
  370. package/templates/wordpress/composer.json +91 -0
  371. package/templates/wordpress/composer.lock +1594 -0
  372. package/templates/wordpress/package.json +13 -0
  373. package/templates/wordpress/scripts/seed.sh +64 -0
  374. package/templates/wordpress/skills-lock.json +35 -0
  375. package/templates/wordpress/wp-config.php +89 -0
  376. package/templates/wordpress/wp-content/index.php +2 -0
  377. package/templates/wordpress/wp-content/mu-plugins/baseline-bootstrap.php +26 -0
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: wp-rest-api
3
+ description: "Use when building, extending, or debugging WordPress REST API endpoints/routes: register_rest_route, WP_REST_Controller/controller classes, schema/argument validation, permission_callback/authentication, response shaping, register_rest_field/register_meta, or exposing CPTs/taxonomies via show_in_rest."
4
+ compatibility: "Targets WordPress 6.9+ (PHP 7.2.24+). Filesystem-based agent with bash + node. Some workflows require WP-CLI."
5
+ ---
6
+
7
+ # WP REST API
8
+
9
+ ## When to use
10
+
11
+ Use this skill when you need to:
12
+
13
+ - create or update REST routes/endpoints
14
+ - debug 401/403/404 errors or permission/nonce issues
15
+ - add custom fields/meta to REST responses
16
+ - expose custom post types or taxonomies via REST
17
+ - implement schema + argument validation
18
+ - adjust response links/embedding/pagination
19
+
20
+ ## Inputs required
21
+
22
+ - Repo root + target plugin/theme/mu-plugin (path to entrypoint).
23
+ - Desired namespace + version (e.g. `my-plugin/v1`) and routes.
24
+ - Authentication mode (cookie + nonce vs application passwords vs auth plugin).
25
+ - Target WordPress version constraints (if below 6.9, call out).
26
+
27
+ ## Procedure
28
+
29
+ ### 0) Triage and locate REST usage
30
+
31
+ 1. Run triage:
32
+ - `node skills/wp-project-triage/scripts/detect_wp_project.mjs`
33
+ 2. Search for existing REST usage:
34
+ - `register_rest_route`
35
+ - `WP_REST_Controller`
36
+ - `rest_api_init`
37
+ - `show_in_rest`, `rest_base`, `rest_controller_class`
38
+
39
+ If this is a full site repo, pick the specific plugin/theme before changing code.
40
+
41
+ ### 1) Choose the right approach
42
+
43
+ - **Expose CPT/taxonomy in `wp/v2`:**
44
+ - Use `show_in_rest => true` + `rest_base` if needed.
45
+ - Optionally provide `rest_controller_class`.
46
+ - Read `references/custom-content-types.md`.
47
+ - **Custom endpoints:**
48
+ - Use `register_rest_route()` on `rest_api_init`.
49
+ - Prefer a controller class (`WP_REST_Controller` subclass) for anything non-trivial.
50
+ - Read `references/routes-and-endpoints.md` and `references/schema.md`.
51
+
52
+ ### 2) Register routes safely (namespaces, methods, permissions)
53
+
54
+ - Use a unique namespace `vendor/v1`; avoid `wp/*` unless core.
55
+ - Always provide `permission_callback` (use `__return_true` for public endpoints).
56
+ - Use `WP_REST_Server::READABLE/CREATABLE/EDITABLE/DELETABLE` constants.
57
+ - Return data via `rest_ensure_response()` or `WP_REST_Response`.
58
+ - Return errors via `WP_Error` with an explicit `status`.
59
+
60
+ Read `references/routes-and-endpoints.md`.
61
+
62
+ ### 3) Validate/sanitize request args
63
+
64
+ - Define `args` with `type`, `default`, `required`, `validate_callback`, `sanitize_callback`.
65
+ - Prefer JSON Schema validation with `rest_validate_value_from_schema` then `rest_sanitize_value_from_schema`.
66
+ - Never read `$_GET`/`$_POST` directly inside endpoints; use `WP_REST_Request`.
67
+
68
+ Read `references/schema.md`.
69
+
70
+ ### 4) Responses, fields, and links
71
+
72
+ - Do **not** remove core fields from default endpoints; add fields instead.
73
+ - Use `register_rest_field` for computed fields; `register_meta` with `show_in_rest` for meta.
74
+ - For `object`/`array` meta, define schema in `show_in_rest.schema`.
75
+ - If you need unfiltered post content (e.g., ToC plugins injecting HTML), request `?context=edit` to access `content.raw` (auth required). Pair with `_fields=content.raw` to keep responses small.
76
+ - Add related resource links via `WP_REST_Response::add_link()`.
77
+
78
+ Read `references/responses-and-fields.md`.
79
+
80
+ ### 5) Authentication and authorization
81
+
82
+ - For wp-admin/JS: cookie auth + `X-WP-Nonce` (action `wp_rest`).
83
+ - For external clients: application passwords (basic auth) or an auth plugin.
84
+ - Use capability checks in `permission_callback` (authorization), not just “logged in”.
85
+
86
+ Read `references/authentication.md`.
87
+
88
+ ### 6) Client-facing behavior (discovery, pagination, embeds)
89
+
90
+ - Ensure discovery works (`Link` header or `<link rel="https://api.w.org/">`).
91
+ - Support `_fields`, `_embed`, `_method`, `_envelope`, pagination headers.
92
+ - Remember `per_page` is capped at 100.
93
+
94
+ Read `references/discovery-and-params.md`.
95
+
96
+ ## Verification
97
+
98
+ - `/wp-json/` index includes your namespace.
99
+ - `OPTIONS` on your route returns schema (when provided).
100
+ - Endpoint returns expected data; permission failures return 401/403 as appropriate.
101
+ - CPT/taxonomy routes appear under `wp/v2` when `show_in_rest` is true.
102
+ - Run repo lint/tests and any PHP/JS build steps.
103
+
104
+ ## Failure modes / debugging
105
+
106
+ - 404: `rest_api_init` not firing, route typo, or permalinks off (use `?rest_route=`).
107
+ - 401/403: missing nonce/auth, or `permission_callback` too strict.
108
+ - `_doing_it_wrong` for missing `permission_callback`: add it (use `__return_true` if public).
109
+ - Invalid params: missing/incorrect `args` schema or validation callbacks.
110
+ - Fields missing: `show_in_rest` false, meta not registered, or CPT lacks `custom-fields` support.
111
+
112
+ ## Escalation
113
+
114
+ If version support or behavior is unclear, consult the REST API Handbook and core docs before inventing patterns.
@@ -0,0 +1,18 @@
1
+ # Authentication (summary)
2
+
3
+ ## Cookie authentication (in-dashboard / same-site)
4
+
5
+ - Standard for wp-admin and theme/plugin JS.
6
+ - Requires a REST nonce (`wp_rest`) sent as `X-WP-Nonce` header or `_wpnonce` param.
7
+ - If the nonce is missing, the request is treated as unauthenticated even if cookies exist.
8
+
9
+ ## Application Passwords (external clients)
10
+
11
+ - Available in WordPress 5.6+.
12
+ - Use HTTPS + Basic Auth with the application password.
13
+ - Recommended over the legacy Basic Auth plugin.
14
+
15
+ ## Auth plugins
16
+
17
+ - OAuth 1.0a or JWT plugins are common for external apps.
18
+ - Use only if required; follow plugin docs and security guidance.
@@ -0,0 +1,20 @@
1
+ # Custom Content Types (summary)
2
+
3
+ ## Custom post types
4
+
5
+ - Set `show_in_rest => true` in `register_post_type()` to expose in `wp/v2`.
6
+ - Use `rest_base` to change the route slug.
7
+ - Optionally set `rest_controller_class` (must extend `WP_REST_Controller`).
8
+
9
+ ## Custom taxonomies
10
+
11
+ - Set `show_in_rest => true` in `register_taxonomy()`.
12
+ - Use `rest_base` and optional `rest_controller_class` (default `WP_REST_Terms_Controller`).
13
+
14
+ ## Adding REST support to existing types
15
+
16
+ - Use `register_post_type_args` or `register_taxonomy_args` filters to enable `show_in_rest` for types you do not control.
17
+
18
+ ## Discovery links for custom controllers
19
+
20
+ - If you use a custom controller class, use `rest_route_for_post` or `rest_route_for_term` filters to map objects to routes.
@@ -0,0 +1,20 @@
1
+ # Discovery and Global Parameters (summary)
2
+
3
+ ## API discovery
4
+
5
+ - REST API root is discovered via the `Link` header: `rel="https://api.w.org/"`.
6
+ - HTML pages also include a `<link rel="https://api.w.org/" href="...">` element.
7
+ - For non-pretty permalinks, use `?rest_route=/`.
8
+
9
+ ## Global parameters
10
+
11
+ - `_fields` limits response fields (supports nested meta keys).
12
+ - `_embed` includes linked resources in `_embedded`.
13
+ - `_method` or `X-HTTP-Method-Override` allows POST to simulate PUT/DELETE.
14
+ - `_envelope` puts headers/status in the response body.
15
+ - `_jsonp` enables JSONP for legacy clients.
16
+
17
+ ## Pagination
18
+
19
+ - Collections accept `page`, `per_page` (1-100), and `offset`.
20
+ - Pagination headers: `X-WP-Total` and `X-WP-TotalPages`.
@@ -0,0 +1,30 @@
1
+ # Responses and Fields (summary)
2
+
3
+ ## Do not remove core fields
4
+
5
+ - Removing or changing core fields breaks clients (including wp-admin).
6
+ - Prefer adding new fields or using `_fields` to limit response size.
7
+
8
+ ## register_rest_field
9
+
10
+ - Use for computed or custom fields.
11
+ - Provide `get_callback`, optional `update_callback`, and `schema`.
12
+ - Register on `rest_api_init`.
13
+
14
+ ## Raw vs rendered content
15
+
16
+ - For posts, `content.rendered` reflects filters (plugins like ToC inject HTML).
17
+ - Use `?context=edit` (authenticated) to access `content.raw`.
18
+ - Combine with `_fields=content.raw` when you only need the editable body.
19
+
20
+ ## register_meta / register_post_meta / register_term_meta
21
+
22
+ - Use when the data is stored as meta.
23
+ - Set `show_in_rest => true` to expose under `.meta`.
24
+ - For `object` or `array` types, provide a JSON schema in `show_in_rest.schema`.
25
+
26
+ ## Links and embedding
27
+
28
+ - Add links with `WP_REST_Response::add_link( $rel, $href, $attrs )`.
29
+ - Use `embeddable => true` to allow `_embed`.
30
+ - Use IANA rels or a custom URI relation; CURIEs can be registered via `rest_response_link_curies`.
@@ -0,0 +1,36 @@
1
+ # Routes and Endpoints (summary)
2
+
3
+ ## Registering routes
4
+
5
+ - Register routes on the `rest_api_init` hook with `register_rest_route( $namespace, $route, $args )`.
6
+ - A **route** is the URL pattern; an **endpoint** is the method + callback bound to that route.
7
+ - For non-pretty permalinks, the route is accessed via `?rest_route=/namespace/route`.
8
+
9
+ ## Namespacing
10
+
11
+ - Always namespace routes (`vendor/v1`).
12
+ - **Do not** use the `wp/*` namespace unless you are targeting core.
13
+
14
+ ## Methods
15
+
16
+ - Use `WP_REST_Server::READABLE` (GET), `CREATABLE` (POST), `EDITABLE` (PUT/PATCH), `DELETABLE` (DELETE).
17
+ - Multiple endpoints can share a route, one per method.
18
+
19
+ ## permission_callback (required)
20
+
21
+ - Always provide `permission_callback`.
22
+ - Public endpoints should use `__return_true`.
23
+ - For restricted endpoints, use capability checks (`current_user_can`) or object-level authorization.
24
+ - Missing `permission_callback` emits a `_doing_it_wrong` notice in modern WP.
25
+
26
+ ## Arguments
27
+
28
+ - Register `args` to validate and sanitize inputs.
29
+ - Use `type`, `required`, `default`, `validate_callback`, `sanitize_callback`.
30
+ - Access params via the `WP_REST_Request` object, not `$_GET`/`$_POST`.
31
+
32
+ ## Return values
33
+
34
+ - Return data via `rest_ensure_response()` or a `WP_REST_Response`.
35
+ - Return `WP_Error` with a `status` in `data` for error responses.
36
+ - Do not call `wp_send_json()` in REST callbacks.
@@ -0,0 +1,22 @@
1
+ # Schema and Argument Validation (summary)
2
+
3
+ ## JSON Schema in WordPress
4
+
5
+ - REST API uses JSON Schema (draft 4 subset) for resource and argument definitions.
6
+ - Provide schema via `get_item_schema()` on controllers or `schema` callbacks on routes.
7
+ - Schema enables discovery (`OPTIONS`) and validation.
8
+
9
+ ## Validation + sanitization
10
+
11
+ - Use `rest_validate_value_from_schema( $value, $schema )` then `rest_sanitize_value_from_schema( $value, $schema )`.
12
+ - If you override `sanitize_callback`, built-in schema validation will not run; use `rest_validate_request_arg` to keep it.
13
+ - `WP_REST_Controller::get_endpoint_args_for_item_schema()` wires validation automatically.
14
+
15
+ ## Schema caching
16
+
17
+ - Cache the generated schema on the controller instance (`$this->schema`) to avoid recomputation.
18
+
19
+ ## Formats and types
20
+
21
+ - Common formats: `date-time`, `uri`, `email`, `ip`, `uuid`, `hex-color`.
22
+ - For `array` and `object` types, you must define `items` or `properties` schemas.
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ ## Description: Install WordPress core, activate the Baseline theme + plugins, and seed starter content (idempotent).
3
+ ## Usage: seed
4
+ ## Example: "ddev seed"
5
+
6
+ set -e
7
+ bash scripts/seed.sh
@@ -0,0 +1,18 @@
1
+ name: baseline-wordpress
2
+ type: wordpress
3
+ docroot: ""
4
+ php_version: "8.2"
5
+ webserver_type: nginx-fpm
6
+ xdebug_enabled: false
7
+ database:
8
+ type: mariadb
9
+ version: "10.11"
10
+ composer_version: "2"
11
+ use_dns_when_possible: true
12
+ web_environment:
13
+ - WP_ENV=development
14
+ hooks:
15
+ post-start:
16
+ - exec: '[ -f auth.json ] || echo "⚠ auth.json missing — copy auth.json.example → auth.json, fill in ACF/Gravity/Bitbucket credentials, then: ddev composer install"'
17
+ - exec: '[ -f auth.json ] && composer install --no-interaction --no-progress --prefer-dist || true'
18
+ - exec: 'wp core is-installed 2>/dev/null || echo "ℹ WordPress not installed yet — run: ddev seed"'
@@ -0,0 +1,14 @@
1
+ # Monorepo-only: bind-mount the Baseline theme + blocks plugin from packages/
2
+ # straight into wp-content (live — edit in packages/, refresh the site).
3
+ #
4
+ # DDEV only mounts this project dir, so the sibling packages/ aren't reachable by
5
+ # Composer in-container. This mounts them directly instead. ${DDEV_APPROOT} is the
6
+ # absolute host path to baselines/wordpress; ../../packages → repo/packages.
7
+ #
8
+ # In a standalone CLIENT repo (no monorepo), delete this file and instead
9
+ # `composer require goldencomm/wp-theme goldencomm/wp-blocks-plugin` from Bitbucket VCS.
10
+ services:
11
+ web:
12
+ volumes:
13
+ - "${DDEV_APPROOT}/../../packages/wp-theme:/var/www/html/wp-content/themes/baseline"
14
+ - "${DDEV_APPROOT}/../../packages/wp-blocks-plugin:/var/www/html/wp-content/plugins/baseline-blocks"
@@ -0,0 +1,11 @@
1
+ # Redis service for the redis-cache plugin (WP_REDIS_HOST=redis).
2
+ services:
3
+ redis:
4
+ container_name: ddev-${DDEV_SITENAME}-redis
5
+ image: redis:7-alpine
6
+ restart: "no"
7
+ labels:
8
+ com.ddev.site-name: ${DDEV_SITENAME}
9
+ com.ddev.approot: $DDEV_APPROOT
10
+ expose:
11
+ - "6379"
@@ -0,0 +1,33 @@
1
+ # Copy to .env and fill in. Locally, DDEV injects DB_* and IS_DDEV_PROJECT;
2
+ # other environments set these explicitly (AWS task env, WP Engine, etc.).
3
+
4
+ WP_ENV=development
5
+ WP_HOME=https://baseline-wordpress.ddev.site
6
+ WP_SITEURL="${WP_HOME}"
7
+
8
+ # Database (DDEV provides db/db/db/db locally)
9
+ DB_NAME=db
10
+ DB_USER=db
11
+ DB_PASSWORD=db
12
+ DB_HOST=db
13
+ DB_PREFIX=wp_
14
+
15
+ # Salts — generate with `wp config shuffle-salts` or https://roots.io/salts.html
16
+ AUTH_KEY=
17
+ SECURE_AUTH_KEY=
18
+ LOGGED_IN_KEY=
19
+ NONCE_KEY=
20
+ AUTH_SALT=
21
+ SECURE_AUTH_SALT=
22
+ LOGGED_IN_SALT=
23
+ NONCE_SALT=
24
+
25
+ # Redis object cache (DDEV provides a redis service)
26
+ WP_REDIS_HOST=redis
27
+ WP_REDIS_PORT=6379
28
+
29
+ # S3 media offload (production) — humanmade/s3-uploads
30
+ S3_UPLOADS_BUCKET=
31
+ S3_UPLOADS_REGION=
32
+ S3_UPLOADS_KEY=
33
+ S3_UPLOADS_SECRET=
@@ -0,0 +1,34 @@
1
+ # CLAUDE.md — Baseline WordPress site
2
+
3
+ The DDEV WordPress baseline for the Baseline design system (theme in
4
+ `packages/wp-theme`, custom blocks in `packages/wp-blocks-plugin`). See the repo-root
5
+ `CLAUDE.md` for design-system non-negotiables; component work follows the
6
+ `gc-wp-block` skill (core-blocks-first decision tree, gcds namespace rules).
7
+
8
+ ## Conventions
9
+ - Local dev: `pnpm dev:wp` / `pnpm dev:wp:down` (DDEV; ports may conflict with
10
+ other local sites).
11
+ - **On Windows, run these from inside a WSL2 shell — not from PowerShell.** DDEV
12
+ is a WSL2-native tool and this project lives on the Windows drive (`/mnt/c/…`).
13
+ Driving it from a Windows-spawned `wsl.exe` fails three ways: `ddev` isn't on
14
+ the Windows PATH; a name-based `ddev start <project>` computes an empty TLD
15
+ (invalid hostname `<project>.`); and `cd /mnt/c/… && ddev …` (even with
16
+ `wsl.exe --cd`) hits `stat .: input/output error` on the DrvFs mount. Inside an
17
+ interactive WSL2 shell the `cd baselines/wordpress && ddev start` script works
18
+ cleanly. So keep the scripts `cd`-based (no `wsl.exe` wrapper — it breaks both
19
+ sides). Contrast `dev:shopify`/`dev:next`/`dev:docs`, which run from Windows.
20
+ - Keep WP auto-updates ON — never disable the self-updater.
21
+ - No WP validator in the agent environment (no wp-cli) — changes are verified
22
+ visually by the developer via `pnpm dev:wp`; flag unverified work.
23
+
24
+ ## Skills upkeep
25
+ `.claude/skills/` vendors the official WordPress skills (`wp-block-development`,
26
+ `wp-block-themes`, `wp-plugin-development`, `wp-rest-api`, `wp-performance`),
27
+ tracked by this directory's `skills-lock.json`. Refresh from upstream with:
28
+
29
+ ```
30
+ npx skills update -p -y
31
+ ```
32
+
33
+ (Inside the design-system monorepo, run `pnpm skills:update` at the repo root
34
+ instead.) Review the diff before committing.
@@ -0,0 +1,45 @@
1
+ # Baseline WordPress
2
+
3
+ The **WordPress site-build scaffold** — a full, Composer-managed WordPress site wired to
4
+ the Baseline design system. Also the starter template for new client sites
5
+ (`create-baseline wordpress`, Phase 5). Scope: [`../../docs/wp-baseline-scope.md`](../../docs/wp-baseline-scope.md).
6
+
7
+ **Stack:** traditional WP-root + Composer (`composer/installers`) + `.env` + DDEV. Not
8
+ Bedrock — deploys to AWS, WP Engine, or anywhere with no docroot/conversion changes (see Q-004).
9
+
10
+ ## Prerequisites
11
+ - **DDEV inside WSL2** (on Windows). Run all commands from the WSL2 shell, not PowerShell.
12
+ - Docker (via WSL2), Composer 2.
13
+
14
+ ## Quick start
15
+ ```bash
16
+ cp auth.json.example auth.json # fill in ACF Pro / Gravity Forms / Bitbucket creds
17
+ cp .env.example .env # locally DDEV provides DB; set salts + WP_HOME
18
+ ddev start # boots PHP/MariaDB/Redis, runs `composer install`
19
+ ddev seed # installs WP core, activates theme + plugins, seeds content
20
+ ddev launch # open https://baseline-wordpress.ddev.site (admin/admin)
21
+ ```
22
+
23
+ ## What you get
24
+ - **Theme + blocks plugin:** in the monorepo these are **bind-mounted live** from
25
+ `packages/wp-theme` → `wp-content/themes/baseline` and `packages/wp-blocks-plugin` →
26
+ `wp-content/plugins/baseline-blocks` (see `.ddev/docker-compose.packages.yaml`) — edit in
27
+ `packages/`, refresh the site. In a standalone client repo, delete that file and
28
+ `composer require goldencomm/wp-theme goldencomm/wp-blocks-plugin` from Bitbucket VCS.
29
+ - **Plugins** (Composer): ACF Pro · Gravity Forms (+cli, recaptcha, smtp) · Yoast SEO ·
30
+ Wordfence · Redirection · UK Cookie Consent · WordPress Importer · Redis Cache ·
31
+ s3-uploads · gravityforms-offload-uploads · gc-wordpress-announcements · gc-cf7-user-info ·
32
+ Query Monitor (dev). `s3-uploads` + offload are deactivated locally (need prod S3).
33
+ - **Seed content:** Home (front page) + a Components demo (from Baseline patterns) + a
34
+ Primary nav menu + a sample post.
35
+ - **mu-plugin:** `baseline-bootstrap` (pattern category + non-prod indexing guard).
36
+ - **Claude config:** `skills-lock.json` (5 WP skills + `figma-implement-design`) +
37
+ `.claude/` (web-dev plugin config + project CLAUDE.md). No permissions are pre-granted —
38
+ you approve commands as they run.
39
+
40
+ ## Notes
41
+ - WP core is **pinned** (`WP_VERSION` in `scripts/seed.sh`) and downloaded via wp-cli — not committed.
42
+ - `wp-config.php` is committed; secrets live in `.env` / `auth.json` (both gitignored).
43
+ - Regenerate thumbnails with `ddev wp media regenerate` — no plugin required.
44
+ - For a real client: clone this dir, rename in `composer.json`/`.ddev`, point the theme/plugin
45
+ repos at Bitbucket VCS, and set production `.env`/`auth.json`.
@@ -0,0 +1,33 @@
1
+ # WordPress core — pinned + downloaded via wp-cli, not committed
2
+ /wp-admin/
3
+ /wp-includes/
4
+ /wp-*.php
5
+ !/wp-config.php
6
+ /index.php
7
+ /xmlrpc.php
8
+ /license.txt
9
+ /readme.html
10
+
11
+ # Composer
12
+ /vendor/
13
+
14
+ # Composer-managed themes & plugins
15
+ /wp-content/themes/
16
+ /wp-content/plugins/
17
+
18
+ # mu-plugins: keep the ones we author, ignore composer-installed
19
+ /wp-content/mu-plugins/*
20
+ !/wp-content/mu-plugins/baseline-bootstrap.php
21
+
22
+ # Generated / runtime
23
+ /.maintenance
24
+ /wp-content/uploads/
25
+ /wp-content/cache/
26
+ /wp-content/upgrade/
27
+ /wp-content/object-cache.php
28
+ /wp-content/advanced-cache.php
29
+
30
+ # Secrets & local
31
+ /.env
32
+ /auth.json
33
+ /wp-config-ddev.php
@@ -0,0 +1,18 @@
1
+ {
2
+ "http-basic": {
3
+ "connect.advancedcustomfields.com": {
4
+ "username": "<ACF_PRO_LICENSE_KEY>",
5
+ "password": "<SITE_URL>"
6
+ },
7
+ "composer.gravity.io": {
8
+ "username": "<GRAVITY_FORMS_LICENSE_KEY>",
9
+ "password": "<SITE_URL>"
10
+ }
11
+ },
12
+ "bitbucket-oauth": {
13
+ "bitbucket.org": {
14
+ "consumer-key": "<BITBUCKET_OAUTH_KEY>",
15
+ "consumer-secret": "<BITBUCKET_OAUTH_SECRET>"
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "goldencomm/baseline-wordpress",
3
+ "description": "Baseline — GoldenComm WordPress site-build scaffold (traditional root + Composer + DDEV). Starter template for new client sites.",
4
+ "type": "project",
5
+ "license": "proprietary",
6
+ "minimum-stability": "dev",
7
+ "prefer-stable": true,
8
+ "config": {
9
+ "allow-plugins": {
10
+ "composer/installers": true
11
+ }
12
+ },
13
+ "extra": {
14
+ "installer-paths": {
15
+ "wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
16
+ "wp-content/themes/{$name}/": ["type:wordpress-theme"],
17
+ "wp-content/mu-plugins/{$name}/": ["type:wordpress-muplugin"]
18
+ }
19
+ },
20
+ "repositories": [
21
+ {
22
+ "name": "advancedcustomfields",
23
+ "type": "composer",
24
+ "url": "https://connect.advancedcustomfields.com"
25
+ },
26
+ {
27
+ "name": "gravity",
28
+ "type": "composer",
29
+ "url": "https://composer.gravity.io"
30
+ },
31
+ {
32
+ "type": "composer",
33
+ "url": "https://wpackagist.org",
34
+ "only": ["wpackagist-plugin/*", "wpackagist-theme/*"]
35
+ },
36
+ {
37
+ "type": "package",
38
+ "package": {
39
+ "name": "goldencomm/gc-wordpress-announcements",
40
+ "type": "wordpress-plugin",
41
+ "version": "dev-master",
42
+ "source": { "url": "https://bitbucket.org/goldencomm/gc-wordpress-announcements.git", "type": "git", "reference": "master" }
43
+ }
44
+ },
45
+ {
46
+ "type": "package",
47
+ "package": {
48
+ "name": "goldencomm/gc-cf7-user-info",
49
+ "type": "wordpress-plugin",
50
+ "version": "dev-master",
51
+ "source": { "url": "https://bitbucket.org/goldencomm/gc-cf7-user-info.git", "type": "git", "reference": "master" }
52
+ }
53
+ },
54
+ {
55
+ "type": "package",
56
+ "package": {
57
+ "name": "vitaldevteam/gravityforms-offload-uploads",
58
+ "type": "wordpress-plugin",
59
+ "version": "2.0",
60
+ "source": { "url": "https://github.com/VitalDevTeam/gravityforms-offload-uploads.git", "type": "git", "reference": "2.0" }
61
+ }
62
+ }
63
+ ],
64
+ "require": {
65
+ "php": ">=8.2",
66
+ "composer/installers": "^1",
67
+
68
+ "wpengine/advanced-custom-fields-pro": "*",
69
+
70
+ "gravity/gravityforms": "*",
71
+ "gravity/gravityformscli": "*",
72
+ "gravity/gravityformsrecaptcha": "*",
73
+ "gravity/gravitysmtp": "*",
74
+
75
+ "wpackagist-plugin/wordpress-seo": "*",
76
+ "wpackagist-plugin/wordfence": "*",
77
+ "wpackagist-plugin/redirection": "*",
78
+ "wpackagist-plugin/uk-cookie-consent": "*",
79
+ "wpackagist-plugin/wordpress-importer": "*",
80
+ "wpackagist-plugin/redis-cache": "*",
81
+
82
+ "humanmade/s3-uploads": "^3.0",
83
+ "vitaldevteam/gravityforms-offload-uploads": "^2.0",
84
+
85
+ "goldencomm/gc-wordpress-announcements": "dev-master",
86
+ "goldencomm/gc-cf7-user-info": "dev-master"
87
+ },
88
+ "require-dev": {
89
+ "wpackagist-plugin/query-monitor": "*"
90
+ }
91
+ }