@oyolincc/create 0.2.1 → 0.4.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 (450) hide show
  1. package/dist/index.d.mts +2 -2
  2. package/dist/index.mjs +2 -2
  3. package/dist/index.mjs.map +1 -1
  4. package/package.json +18 -1
  5. package/templates/hono-fullstack/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  6. package/templates/hono-fullstack/.agents/skills/ask-matt/SKILL.md +90 -0
  7. package/templates/hono-fullstack/.agents/skills/ask-matt/agents/openai.yaml +5 -0
  8. package/templates/hono-fullstack/.agents/skills/code-review/SKILL.md +87 -0
  9. package/templates/hono-fullstack/.agents/skills/code-review/agents/openai.yaml +3 -0
  10. package/templates/hono-fullstack/.agents/skills/codebase-design/DEEPENING.md +37 -0
  11. package/templates/hono-fullstack/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  12. package/templates/hono-fullstack/.agents/skills/codebase-design/SKILL.md +114 -0
  13. package/templates/hono-fullstack/.agents/skills/codebase-design/agents/openai.yaml +3 -0
  14. package/templates/hono-fullstack/.agents/skills/confirm-requirements/SKILL.md +25 -0
  15. package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/SKILL.md +140 -0
  16. package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  17. package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  18. package/templates/hono-fullstack/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  19. package/templates/hono-fullstack/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  20. package/templates/hono-fullstack/.agents/skills/domain-modeling/SKILL.md +74 -0
  21. package/templates/hono-fullstack/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
  22. package/templates/hono-fullstack/.agents/skills/grill-me/SKILL.md +7 -0
  23. package/templates/hono-fullstack/.agents/skills/grill-me/agents/openai.yaml +5 -0
  24. package/templates/hono-fullstack/.agents/skills/grilling/SKILL.md +22 -0
  25. package/templates/hono-fullstack/.agents/skills/grilling/agents/openai.yaml +3 -0
  26. package/templates/hono-fullstack/.agents/skills/implement/SKILL.md +15 -0
  27. package/templates/hono-fullstack/.agents/skills/implement/agents/openai.yaml +5 -0
  28. package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  29. package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/SKILL.md +71 -0
  30. package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  31. package/templates/hono-fullstack/.agents/skills/prototype/LOGIC.md +67 -0
  32. package/templates/hono-fullstack/.agents/skills/prototype/SKILL.md +26 -0
  33. package/templates/hono-fullstack/.agents/skills/prototype/UI.md +112 -0
  34. package/templates/hono-fullstack/.agents/skills/prototype/agents/openai.yaml +3 -0
  35. package/templates/hono-fullstack/.agents/skills/research/SKILL.md +12 -0
  36. package/templates/hono-fullstack/.agents/skills/research/agents/openai.yaml +3 -0
  37. package/templates/hono-fullstack/.agents/skills/resolving-merge-conflicts/SKILL.md +14 -0
  38. package/templates/hono-fullstack/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  39. package/templates/hono-fullstack/.agents/skills/scoped-code-review/SKILL.md +113 -0
  40. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/SKILL.md +116 -0
  41. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  42. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/domain.md +51 -0
  43. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  44. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  45. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  46. package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  47. package/templates/hono-fullstack/.agents/skills/tdd/SKILL.md +38 -0
  48. package/templates/hono-fullstack/.agents/skills/tdd/agents/openai.yaml +3 -0
  49. package/templates/hono-fullstack/.agents/skills/tdd/mocking.md +59 -0
  50. package/templates/hono-fullstack/.agents/skills/tdd/tests.md +77 -0
  51. package/templates/hono-fullstack/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  52. package/templates/hono-fullstack/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  53. package/templates/hono-fullstack/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  54. package/templates/hono-fullstack/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  55. package/templates/hono-fullstack/.agents/skills/teach/SKILL.md +140 -0
  56. package/templates/hono-fullstack/.agents/skills/teach/agents/openai.yaml +5 -0
  57. package/templates/hono-fullstack/.agents/skills/to-questionnaire/SKILL.md +53 -0
  58. package/templates/hono-fullstack/.agents/skills/to-questionnaire/agents/openai.yaml +5 -0
  59. package/templates/hono-fullstack/.agents/skills/triage/AGENT-BRIEF.md +207 -0
  60. package/templates/hono-fullstack/.agents/skills/triage/OUT-OF-SCOPE.md +105 -0
  61. package/templates/hono-fullstack/.agents/skills/triage/SKILL.md +112 -0
  62. package/templates/hono-fullstack/.agents/skills/triage/agents/openai.yaml +5 -0
  63. package/templates/hono-fullstack/.agents/skills/wait-what/SKILL.md +7 -0
  64. package/templates/hono-fullstack/.agents/skills/wait-what/agents/openai.yaml +5 -0
  65. package/templates/hono-fullstack/.agents/skills/wayfinder/SKILL.md +128 -0
  66. package/templates/hono-fullstack/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  67. package/templates/hono-fullstack/.agents/skills/wizard/SKILL.md +44 -0
  68. package/templates/hono-fullstack/.agents/skills/wizard/agents/openai.yaml +3 -0
  69. package/templates/hono-fullstack/.agents/skills/wizard/template.sh +204 -0
  70. package/templates/hono-fullstack/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  71. package/templates/hono-fullstack/.agents/skills/writing-for-agents/SKILL.md +81 -0
  72. package/templates/hono-fullstack/.agents/skills/writing-for-agents/agents/openai.yaml +3 -0
  73. package/templates/hono-fullstack/.changeset/README.md +8 -0
  74. package/templates/hono-fullstack/.changeset/config.json +11 -0
  75. package/templates/hono-fullstack/.editorconfig +31 -0
  76. package/templates/hono-fullstack/.gitattributes +39 -0
  77. package/templates/hono-fullstack/.vscode/extensions.json +5 -0
  78. package/templates/hono-fullstack/.vscode/launch.json +36 -0
  79. package/templates/hono-fullstack/.vscode/settings.json +26 -0
  80. package/templates/hono-fullstack/AGENTS.md +50 -0
  81. package/templates/hono-fullstack/README.md +51 -0
  82. package/templates/hono-fullstack/_gitignore +35 -0
  83. package/templates/hono-fullstack/apps/server/.dev.vars.example +9 -0
  84. package/templates/hono-fullstack/apps/server/package.json +63 -0
  85. package/templates/hono-fullstack/apps/server/src/adapters/cloudflare/entry.ts +36 -0
  86. package/templates/hono-fullstack/apps/server/src/adapters/nodejs/bootstrap.ts +61 -0
  87. package/templates/hono-fullstack/apps/server/src/adapters/nodejs/entry.ts +62 -0
  88. package/templates/hono-fullstack/apps/server/src/app.ts +43 -0
  89. package/templates/hono-fullstack/apps/server/src/config.ts +47 -0
  90. package/templates/hono-fullstack/apps/server/src/infra/logger/getter.ts +74 -0
  91. package/templates/hono-fullstack/apps/server/src/infra/logger/pino.ts +126 -0
  92. package/templates/hono-fullstack/apps/server/src/infra/work-runner/constants.ts +23 -0
  93. package/templates/hono-fullstack/apps/server/src/infra/work-runner/errors.ts +40 -0
  94. package/templates/hono-fullstack/apps/server/src/infra/work-runner/example/worker-entry.ts +13 -0
  95. package/templates/hono-fullstack/apps/server/src/infra/work-runner/pass-through/runner.ts +42 -0
  96. package/templates/hono-fullstack/apps/server/src/infra/work-runner/piscina/runner.ts +185 -0
  97. package/templates/hono-fullstack/apps/server/src/infra/work-runner/types.ts +118 -0
  98. package/templates/hono-fullstack/apps/server/src/infra/work-runner/utils/business-error.ts +19 -0
  99. package/templates/hono-fullstack/apps/server/src/infra/work-runner/utils/message.ts +49 -0
  100. package/templates/hono-fullstack/apps/server/src/infra/work-runner/utils/transfer.ts +144 -0
  101. package/templates/hono-fullstack/apps/server/src/middlewares/cors.ts +26 -0
  102. package/templates/hono-fullstack/apps/server/src/modules/example/contracts.ts +9 -0
  103. package/templates/hono-fullstack/apps/server/src/modules/example/routes.ts +73 -0
  104. package/templates/hono-fullstack/apps/server/src/modules/example/work-task/tasks.test.ts +49 -0
  105. package/templates/hono-fullstack/apps/server/src/modules/example/work-task/tasks.ts +58 -0
  106. package/templates/hono-fullstack/apps/server/src/shared/app/types.ts +44 -0
  107. package/templates/hono-fullstack/apps/server/src/shared/errors/constants.ts +152 -0
  108. package/templates/hono-fullstack/apps/server/src/shared/errors/defs/index.ts +15 -0
  109. package/templates/hono-fullstack/apps/server/src/shared/errors/handler.ts +16 -0
  110. package/templates/hono-fullstack/apps/server/src/shared/errors/log.ts +67 -0
  111. package/templates/hono-fullstack/apps/server/src/shared/errors/proto.ts +42 -0
  112. package/templates/hono-fullstack/apps/server/src/shared/errors/types.ts +29 -0
  113. package/templates/hono-fullstack/apps/server/src/shared/network/fetcher.ts +35 -0
  114. package/templates/hono-fullstack/apps/server/src/shared/network/openapi/index.ts +50 -0
  115. package/templates/hono-fullstack/apps/server/src/shared/network/openapi/res-defs.ts +39 -0
  116. package/templates/hono-fullstack/apps/server/src/shared/network/types.ts +3 -0
  117. package/templates/hono-fullstack/apps/server/src/shared/network/utils.ts +36 -0
  118. package/templates/hono-fullstack/apps/server/src/shared/network/validator.ts +28 -0
  119. package/templates/hono-fullstack/apps/server/src/shared/utils/index.ts +30 -0
  120. package/templates/hono-fullstack/apps/server/src/virtual-modules.d.ts +5 -0
  121. package/templates/hono-fullstack/apps/server/tsconfig.json +17 -0
  122. package/templates/hono-fullstack/apps/server/vite.config.ts +87 -0
  123. package/templates/hono-fullstack/apps/server/wrangler.jsonc +29 -0
  124. package/templates/hono-fullstack/apps/stack/backend/cloudflare.ts +5 -0
  125. package/templates/hono-fullstack/apps/stack/backend/node.ts +3 -0
  126. package/templates/hono-fullstack/apps/stack/frontend/components/general/ErrorMessage.tsx +4 -0
  127. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/AppLayout.tsx +11 -0
  128. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/Header.tsx +7 -0
  129. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/Page.tsx +5 -0
  130. package/templates/hono-fullstack/apps/stack/frontend/components/layouts/PageContainer.tsx +5 -0
  131. package/templates/hono-fullstack/apps/stack/frontend/modules/example/api.ts +13 -0
  132. package/templates/hono-fullstack/apps/stack/frontend/modules/example/components/ExampleForm.tsx +45 -0
  133. package/templates/hono-fullstack/apps/stack/frontend/modules/example/components/ExampleList.tsx +13 -0
  134. package/templates/hono-fullstack/apps/stack/frontend/modules/example/hooks/api-hooks.ts +27 -0
  135. package/templates/hono-fullstack/apps/stack/frontend/modules/example/stores/index.ts +3 -0
  136. package/templates/hono-fullstack/apps/stack/frontend/routeTree.gen.ts +73 -0
  137. package/templates/hono-fullstack/apps/stack/frontend/router.tsx +22 -0
  138. package/templates/hono-fullstack/apps/stack/frontend/routes/__root.tsx +61 -0
  139. package/templates/hono-fullstack/apps/stack/frontend/routes/api/$.ts +18 -0
  140. package/templates/hono-fullstack/apps/stack/frontend/routes/index.tsx +61 -0
  141. package/templates/hono-fullstack/apps/stack/frontend/shared/network/client.ts +19 -0
  142. package/templates/hono-fullstack/apps/stack/frontend/shared/network/constants.ts +1 -0
  143. package/templates/hono-fullstack/apps/stack/frontend/shared/network/errors.ts +33 -0
  144. package/templates/hono-fullstack/apps/stack/frontend/shared/network/query-hooks.ts +33 -0
  145. package/templates/hono-fullstack/apps/stack/frontend/styles.css +23 -0
  146. package/templates/hono-fullstack/apps/stack/frontend/vite-env.d.ts +6 -0
  147. package/templates/hono-fullstack/apps/stack/package.json +59 -0
  148. package/templates/hono-fullstack/apps/stack/tsconfig.json +13 -0
  149. package/templates/hono-fullstack/apps/stack/tsr.config.json +5 -0
  150. package/templates/hono-fullstack/apps/stack/vite.config.ts +82 -0
  151. package/templates/hono-fullstack/apps/stack/wrangler.jsonc +20 -0
  152. package/templates/hono-fullstack/docs/agents/domain.md +41 -0
  153. package/templates/hono-fullstack/docs/agents/issue-tracker.md +30 -0
  154. package/templates/hono-fullstack/docs/agents/triage-labels.md +15 -0
  155. package/templates/hono-fullstack/envs/.env.example.server +12 -0
  156. package/templates/hono-fullstack/envs/.env.example.sqlite +1 -0
  157. package/templates/hono-fullstack/envs/.env.example.sqlite-d1 +3 -0
  158. package/templates/hono-fullstack/libs/db/drizzle-kit/sqlite-d1.config.ts +22 -0
  159. package/templates/hono-fullstack/libs/db/drizzle-kit/sqlite.config.ts +22 -0
  160. package/templates/hono-fullstack/libs/db/package.json +42 -0
  161. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/client.ts +35 -0
  162. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/d1-client.ts +12 -0
  163. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/columns.ts +37 -0
  164. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/index.ts +7 -0
  165. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +22 -0
  166. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/relations.ts +5 -0
  167. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/tables.ts +5 -0
  168. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/types.ts +7 -0
  169. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/schema/vo.ts +1 -0
  170. package/templates/hono-fullstack/libs/db/src/dialects/sqlite/utils.ts +8 -0
  171. package/templates/hono-fullstack/libs/db/src/shared/types.ts +26 -0
  172. package/templates/hono-fullstack/libs/db/tsconfig.json +10 -0
  173. package/templates/hono-fullstack/libs/db/vite.config.ts +25 -0
  174. package/templates/hono-fullstack/libs/definition/package.json +30 -0
  175. package/templates/hono-fullstack/libs/definition/src/backend.ts +2 -0
  176. package/templates/hono-fullstack/libs/definition/src/configs/defs/log.ts +53 -0
  177. package/templates/hono-fullstack/libs/definition/src/configs/defs/middleware.ts +16 -0
  178. package/templates/hono-fullstack/libs/definition/src/configs/defs/runtime.ts +12 -0
  179. package/templates/hono-fullstack/libs/definition/src/configs/defs/sqlite.ts +26 -0
  180. package/templates/hono-fullstack/libs/definition/src/configs/defs/worker.ts +29 -0
  181. package/templates/hono-fullstack/libs/definition/src/configs/index.ts +5 -0
  182. package/templates/hono-fullstack/libs/definition/src/configs/proto.ts +81 -0
  183. package/templates/hono-fullstack/libs/definition/src/configs/schema.ts +23 -0
  184. package/templates/hono-fullstack/libs/definition/src/frontend.ts +1 -0
  185. package/templates/hono-fullstack/libs/definition/src/modules/example/index.ts +16 -0
  186. package/templates/hono-fullstack/libs/definition/src/modules/index.ts +1 -0
  187. package/templates/hono-fullstack/libs/definition/tsconfig.json +5 -0
  188. package/templates/hono-fullstack/libs/definition/vite.config.ts +16 -0
  189. package/templates/hono-fullstack/oyo.config.json +17 -0
  190. package/templates/hono-fullstack/package.json +25 -0
  191. package/templates/hono-fullstack/pnpm-workspace.yaml +84 -0
  192. package/templates/hono-fullstack/tsconfig.json +4 -0
  193. package/templates/hono-fullstack/turbo.json +36 -0
  194. package/templates/hono-fullstack/vite.config.ts +14 -0
  195. package/templates/hono-server/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  196. package/templates/hono-server/.agents/skills/ask-matt/SKILL.md +90 -0
  197. package/templates/hono-server/.agents/skills/ask-matt/agents/openai.yaml +5 -0
  198. package/templates/hono-server/.agents/skills/code-review/SKILL.md +87 -0
  199. package/templates/hono-server/.agents/skills/code-review/agents/openai.yaml +3 -0
  200. package/templates/hono-server/.agents/skills/codebase-design/DEEPENING.md +37 -0
  201. package/templates/hono-server/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  202. package/templates/hono-server/.agents/skills/codebase-design/SKILL.md +114 -0
  203. package/templates/hono-server/.agents/skills/codebase-design/agents/openai.yaml +3 -0
  204. package/templates/hono-server/.agents/skills/confirm-requirements/SKILL.md +25 -0
  205. package/templates/hono-server/.agents/skills/diagnosing-bugs/SKILL.md +140 -0
  206. package/templates/hono-server/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  207. package/templates/hono-server/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  208. package/templates/hono-server/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  209. package/templates/hono-server/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  210. package/templates/hono-server/.agents/skills/domain-modeling/SKILL.md +74 -0
  211. package/templates/hono-server/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
  212. package/templates/hono-server/.agents/skills/grill-me/SKILL.md +7 -0
  213. package/templates/hono-server/.agents/skills/grill-me/agents/openai.yaml +5 -0
  214. package/templates/hono-server/.agents/skills/grilling/SKILL.md +22 -0
  215. package/templates/hono-server/.agents/skills/grilling/agents/openai.yaml +3 -0
  216. package/templates/hono-server/.agents/skills/implement/SKILL.md +15 -0
  217. package/templates/hono-server/.agents/skills/implement/agents/openai.yaml +5 -0
  218. package/templates/hono-server/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  219. package/templates/hono-server/.agents/skills/improve-codebase-architecture/SKILL.md +71 -0
  220. package/templates/hono-server/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  221. package/templates/hono-server/.agents/skills/prototype/LOGIC.md +67 -0
  222. package/templates/hono-server/.agents/skills/prototype/SKILL.md +26 -0
  223. package/templates/hono-server/.agents/skills/prototype/UI.md +112 -0
  224. package/templates/hono-server/.agents/skills/prototype/agents/openai.yaml +3 -0
  225. package/templates/hono-server/.agents/skills/research/SKILL.md +12 -0
  226. package/templates/hono-server/.agents/skills/research/agents/openai.yaml +3 -0
  227. package/templates/hono-server/.agents/skills/resolving-merge-conflicts/SKILL.md +14 -0
  228. package/templates/hono-server/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  229. package/templates/hono-server/.agents/skills/scoped-code-review/SKILL.md +113 -0
  230. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/SKILL.md +116 -0
  231. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  232. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/domain.md +51 -0
  233. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  234. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  235. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  236. package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  237. package/templates/hono-server/.agents/skills/tdd/SKILL.md +38 -0
  238. package/templates/hono-server/.agents/skills/tdd/agents/openai.yaml +3 -0
  239. package/templates/hono-server/.agents/skills/tdd/mocking.md +59 -0
  240. package/templates/hono-server/.agents/skills/tdd/tests.md +77 -0
  241. package/templates/hono-server/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  242. package/templates/hono-server/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  243. package/templates/hono-server/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  244. package/templates/hono-server/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  245. package/templates/hono-server/.agents/skills/teach/SKILL.md +140 -0
  246. package/templates/hono-server/.agents/skills/teach/agents/openai.yaml +5 -0
  247. package/templates/hono-server/.agents/skills/to-questionnaire/SKILL.md +53 -0
  248. package/templates/hono-server/.agents/skills/to-questionnaire/agents/openai.yaml +5 -0
  249. package/templates/hono-server/.agents/skills/triage/AGENT-BRIEF.md +207 -0
  250. package/templates/hono-server/.agents/skills/triage/OUT-OF-SCOPE.md +105 -0
  251. package/templates/hono-server/.agents/skills/triage/SKILL.md +112 -0
  252. package/templates/hono-server/.agents/skills/triage/agents/openai.yaml +5 -0
  253. package/templates/hono-server/.agents/skills/wait-what/SKILL.md +7 -0
  254. package/templates/hono-server/.agents/skills/wait-what/agents/openai.yaml +5 -0
  255. package/templates/hono-server/.agents/skills/wayfinder/SKILL.md +128 -0
  256. package/templates/hono-server/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  257. package/templates/hono-server/.agents/skills/wizard/SKILL.md +44 -0
  258. package/templates/hono-server/.agents/skills/wizard/agents/openai.yaml +3 -0
  259. package/templates/hono-server/.agents/skills/wizard/template.sh +204 -0
  260. package/templates/hono-server/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  261. package/templates/hono-server/.agents/skills/writing-for-agents/SKILL.md +81 -0
  262. package/templates/hono-server/.agents/skills/writing-for-agents/agents/openai.yaml +3 -0
  263. package/templates/hono-server/.changeset/README.md +8 -0
  264. package/templates/hono-server/.changeset/config.json +11 -0
  265. package/templates/hono-server/.editorconfig +31 -0
  266. package/templates/hono-server/.gitattributes +39 -0
  267. package/templates/hono-server/.vscode/extensions.json +5 -0
  268. package/templates/hono-server/.vscode/launch.json +29 -0
  269. package/templates/hono-server/.vscode/settings.json +26 -0
  270. package/templates/hono-server/AGENTS.md +50 -0
  271. package/templates/hono-server/README.md +44 -0
  272. package/templates/hono-server/_gitignore +35 -0
  273. package/templates/hono-server/apps/server/.dev.vars.example +9 -0
  274. package/templates/hono-server/apps/server/package.json +64 -0
  275. package/templates/hono-server/apps/server/src/adapters/cloudflare/entry.ts +36 -0
  276. package/templates/hono-server/apps/server/src/adapters/nodejs/bootstrap.ts +61 -0
  277. package/templates/hono-server/apps/server/src/adapters/nodejs/entry.ts +62 -0
  278. package/templates/hono-server/apps/server/src/app.ts +43 -0
  279. package/templates/hono-server/apps/server/src/config.ts +47 -0
  280. package/templates/hono-server/apps/server/src/infra/logger/getter.ts +74 -0
  281. package/templates/hono-server/apps/server/src/infra/logger/pino.ts +126 -0
  282. package/templates/hono-server/apps/server/src/infra/work-runner/constants.ts +23 -0
  283. package/templates/hono-server/apps/server/src/infra/work-runner/errors.ts +40 -0
  284. package/templates/hono-server/apps/server/src/infra/work-runner/example/worker-entry.ts +13 -0
  285. package/templates/hono-server/apps/server/src/infra/work-runner/pass-through/runner.ts +42 -0
  286. package/templates/hono-server/apps/server/src/infra/work-runner/piscina/runner.ts +185 -0
  287. package/templates/hono-server/apps/server/src/infra/work-runner/types.ts +118 -0
  288. package/templates/hono-server/apps/server/src/infra/work-runner/utils/business-error.ts +19 -0
  289. package/templates/hono-server/apps/server/src/infra/work-runner/utils/message.ts +49 -0
  290. package/templates/hono-server/apps/server/src/infra/work-runner/utils/transfer.ts +144 -0
  291. package/templates/hono-server/apps/server/src/middlewares/cors.ts +26 -0
  292. package/templates/hono-server/apps/server/src/modules/example/contracts.ts +9 -0
  293. package/templates/hono-server/apps/server/src/modules/example/routes.ts +73 -0
  294. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.test.ts +49 -0
  295. package/templates/hono-server/apps/server/src/modules/example/work-task/tasks.ts +58 -0
  296. package/templates/hono-server/apps/server/src/shared/app/types.ts +44 -0
  297. package/templates/hono-server/apps/server/src/shared/errors/constants.ts +152 -0
  298. package/templates/hono-server/apps/server/src/shared/errors/defs/index.ts +15 -0
  299. package/templates/hono-server/apps/server/src/shared/errors/handler.ts +16 -0
  300. package/templates/hono-server/apps/server/src/shared/errors/log.ts +67 -0
  301. package/templates/hono-server/apps/server/src/shared/errors/proto.ts +42 -0
  302. package/templates/hono-server/apps/server/src/shared/errors/types.ts +29 -0
  303. package/templates/hono-server/apps/server/src/shared/network/fetcher.ts +35 -0
  304. package/templates/hono-server/apps/server/src/shared/network/openapi/index.ts +50 -0
  305. package/templates/hono-server/apps/server/src/shared/network/openapi/res-defs.ts +39 -0
  306. package/templates/hono-server/apps/server/src/shared/network/types.ts +3 -0
  307. package/templates/hono-server/apps/server/src/shared/network/utils.ts +36 -0
  308. package/templates/hono-server/apps/server/src/shared/network/validator.ts +28 -0
  309. package/templates/hono-server/apps/server/src/shared/utils/index.ts +30 -0
  310. package/templates/hono-server/apps/server/src/virtual-modules.d.ts +5 -0
  311. package/templates/hono-server/apps/server/tsconfig.json +17 -0
  312. package/templates/hono-server/apps/server/vite.config.ts +87 -0
  313. package/templates/hono-server/apps/server/wrangler.jsonc +29 -0
  314. package/templates/hono-server/docker/.env.example +4 -0
  315. package/templates/hono-server/docker/README.md +5 -0
  316. package/templates/hono-server/docker/local/compose.local.app.yml +21 -0
  317. package/templates/hono-server/docker/local/local-app-deploy.sh +8 -0
  318. package/templates/hono-server/docker/local/local-app-down.sh +8 -0
  319. package/templates/hono-server/docker/prod/.env.example.server +11 -0
  320. package/templates/hono-server/docker/prod/compose.prod.stack.yml +21 -0
  321. package/templates/hono-server/docker/prod/update.sh +7 -0
  322. package/templates/hono-server/docker/server.Dockerfile +38 -0
  323. package/templates/hono-server/docker/server.Dockerfile.dockerignore +23 -0
  324. package/templates/hono-server/docs/agents/domain.md +41 -0
  325. package/templates/hono-server/docs/agents/issue-tracker.md +30 -0
  326. package/templates/hono-server/docs/agents/triage-labels.md +15 -0
  327. package/templates/hono-server/envs/.env.example.server +12 -0
  328. package/templates/hono-server/envs/.env.example.sqlite +1 -0
  329. package/templates/hono-server/envs/.env.example.sqlite-d1 +3 -0
  330. package/templates/hono-server/libs/db/drizzle-kit/sqlite-d1.config.ts +22 -0
  331. package/templates/hono-server/libs/db/drizzle-kit/sqlite.config.ts +22 -0
  332. package/templates/hono-server/libs/db/package.json +42 -0
  333. package/templates/hono-server/libs/db/src/dialects/sqlite/client.ts +35 -0
  334. package/templates/hono-server/libs/db/src/dialects/sqlite/d1-client.ts +12 -0
  335. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/columns.ts +37 -0
  336. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/index.ts +7 -0
  337. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/modules/examples/examples.ts +22 -0
  338. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/relations.ts +5 -0
  339. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/tables.ts +5 -0
  340. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/types.ts +7 -0
  341. package/templates/hono-server/libs/db/src/dialects/sqlite/schema/vo.ts +1 -0
  342. package/templates/hono-server/libs/db/src/dialects/sqlite/utils.ts +8 -0
  343. package/templates/hono-server/libs/db/src/shared/types.ts +26 -0
  344. package/templates/hono-server/libs/db/tsconfig.json +10 -0
  345. package/templates/hono-server/libs/db/vite.config.ts +25 -0
  346. package/templates/hono-server/libs/definition/package.json +29 -0
  347. package/templates/hono-server/libs/definition/src/backend.ts +2 -0
  348. package/templates/hono-server/libs/definition/src/configs/defs/log.ts +53 -0
  349. package/templates/hono-server/libs/definition/src/configs/defs/middleware.ts +16 -0
  350. package/templates/hono-server/libs/definition/src/configs/defs/runtime.ts +12 -0
  351. package/templates/hono-server/libs/definition/src/configs/defs/sqlite.ts +26 -0
  352. package/templates/hono-server/libs/definition/src/configs/defs/worker.ts +29 -0
  353. package/templates/hono-server/libs/definition/src/configs/index.ts +5 -0
  354. package/templates/hono-server/libs/definition/src/configs/proto.ts +81 -0
  355. package/templates/hono-server/libs/definition/src/configs/schema.ts +23 -0
  356. package/templates/hono-server/libs/definition/src/modules/example/index.ts +16 -0
  357. package/templates/hono-server/libs/definition/src/modules/index.ts +1 -0
  358. package/templates/hono-server/libs/definition/tsconfig.json +5 -0
  359. package/templates/hono-server/libs/definition/vite.config.ts +15 -0
  360. package/templates/hono-server/oyo.config.json +17 -0
  361. package/templates/hono-server/package.json +25 -0
  362. package/templates/hono-server/pnpm-workspace.yaml +66 -0
  363. package/templates/hono-server/scripts/.env.example.docker +4 -0
  364. package/templates/hono-server/scripts/build-docker-server.sh +13 -0
  365. package/templates/hono-server/scripts/common.sh +20 -0
  366. package/templates/hono-server/tsconfig.json +4 -0
  367. package/templates/hono-server/turbo.json +36 -0
  368. package/templates/hono-server/vite.config.ts +14 -0
  369. package/templates/monorepo/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  370. package/templates/monorepo/.agents/skills/ask-matt/SKILL.md +90 -0
  371. package/templates/monorepo/.agents/skills/ask-matt/agents/openai.yaml +5 -0
  372. package/templates/monorepo/.agents/skills/code-review/SKILL.md +87 -0
  373. package/templates/monorepo/.agents/skills/code-review/agents/openai.yaml +3 -0
  374. package/templates/monorepo/.agents/skills/codebase-design/DEEPENING.md +37 -0
  375. package/templates/monorepo/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  376. package/templates/monorepo/.agents/skills/codebase-design/SKILL.md +114 -0
  377. package/templates/monorepo/.agents/skills/codebase-design/agents/openai.yaml +3 -0
  378. package/templates/monorepo/.agents/skills/confirm-requirements/SKILL.md +25 -0
  379. package/templates/monorepo/.agents/skills/diagnosing-bugs/SKILL.md +140 -0
  380. package/templates/monorepo/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  381. package/templates/monorepo/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  382. package/templates/monorepo/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  383. package/templates/monorepo/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  384. package/templates/monorepo/.agents/skills/domain-modeling/SKILL.md +74 -0
  385. package/templates/monorepo/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
  386. package/templates/monorepo/.agents/skills/grill-me/SKILL.md +7 -0
  387. package/templates/monorepo/.agents/skills/grill-me/agents/openai.yaml +5 -0
  388. package/templates/monorepo/.agents/skills/grilling/SKILL.md +22 -0
  389. package/templates/monorepo/.agents/skills/grilling/agents/openai.yaml +3 -0
  390. package/templates/monorepo/.agents/skills/implement/SKILL.md +15 -0
  391. package/templates/monorepo/.agents/skills/implement/agents/openai.yaml +5 -0
  392. package/templates/monorepo/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  393. package/templates/monorepo/.agents/skills/improve-codebase-architecture/SKILL.md +71 -0
  394. package/templates/monorepo/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  395. package/templates/monorepo/.agents/skills/prototype/LOGIC.md +67 -0
  396. package/templates/monorepo/.agents/skills/prototype/SKILL.md +26 -0
  397. package/templates/monorepo/.agents/skills/prototype/UI.md +112 -0
  398. package/templates/monorepo/.agents/skills/prototype/agents/openai.yaml +3 -0
  399. package/templates/monorepo/.agents/skills/research/SKILL.md +12 -0
  400. package/templates/monorepo/.agents/skills/research/agents/openai.yaml +3 -0
  401. package/templates/monorepo/.agents/skills/resolving-merge-conflicts/SKILL.md +14 -0
  402. package/templates/monorepo/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  403. package/templates/monorepo/.agents/skills/scoped-code-review/SKILL.md +113 -0
  404. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/SKILL.md +116 -0
  405. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  406. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/domain.md +51 -0
  407. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  408. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  409. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  410. package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  411. package/templates/monorepo/.agents/skills/tdd/SKILL.md +38 -0
  412. package/templates/monorepo/.agents/skills/tdd/agents/openai.yaml +3 -0
  413. package/templates/monorepo/.agents/skills/tdd/mocking.md +59 -0
  414. package/templates/monorepo/.agents/skills/tdd/tests.md +77 -0
  415. package/templates/monorepo/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  416. package/templates/monorepo/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  417. package/templates/monorepo/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  418. package/templates/monorepo/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  419. package/templates/monorepo/.agents/skills/teach/SKILL.md +140 -0
  420. package/templates/monorepo/.agents/skills/teach/agents/openai.yaml +5 -0
  421. package/templates/monorepo/.agents/skills/to-questionnaire/SKILL.md +53 -0
  422. package/templates/monorepo/.agents/skills/to-questionnaire/agents/openai.yaml +5 -0
  423. package/templates/monorepo/.agents/skills/triage/AGENT-BRIEF.md +207 -0
  424. package/templates/monorepo/.agents/skills/triage/OUT-OF-SCOPE.md +105 -0
  425. package/templates/monorepo/.agents/skills/triage/SKILL.md +112 -0
  426. package/templates/monorepo/.agents/skills/triage/agents/openai.yaml +5 -0
  427. package/templates/monorepo/.agents/skills/wait-what/SKILL.md +7 -0
  428. package/templates/monorepo/.agents/skills/wait-what/agents/openai.yaml +5 -0
  429. package/templates/monorepo/.agents/skills/wayfinder/SKILL.md +128 -0
  430. package/templates/monorepo/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  431. package/templates/monorepo/.agents/skills/wizard/SKILL.md +44 -0
  432. package/templates/monorepo/.agents/skills/wizard/agents/openai.yaml +3 -0
  433. package/templates/monorepo/.agents/skills/wizard/template.sh +204 -0
  434. package/templates/monorepo/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  435. package/templates/monorepo/.agents/skills/writing-for-agents/SKILL.md +81 -0
  436. package/templates/monorepo/.agents/skills/writing-for-agents/agents/openai.yaml +3 -0
  437. package/templates/monorepo/.vscode/extensions.json +5 -0
  438. package/templates/monorepo/.vscode/launch.json +0 -3
  439. package/templates/monorepo/.vscode/settings.json +3 -1
  440. package/templates/monorepo/AGENTS.md +50 -0
  441. package/templates/monorepo/README.md +27 -0
  442. package/templates/monorepo/_gitignore +5 -0
  443. package/templates/monorepo/docs/agents/domain.md +41 -0
  444. package/templates/monorepo/docs/agents/issue-tracker.md +30 -0
  445. package/templates/monorepo/docs/agents/triage-labels.md +15 -0
  446. package/templates/monorepo/oyo.config.json +5 -1
  447. package/templates/monorepo/package.json +4 -3
  448. package/templates/monorepo/pnpm-workspace.yaml +23 -26
  449. package/templates/monorepo/turbo.json +27 -3
  450. package/templates/monorepo/vite.config.ts +1 -0
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@repo/stack",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "pnpm dev:node",
8
+ "build": "pnpm build:node",
9
+ "preview": "pnpm preview:node",
10
+ "dev:node-chain": "turbo watch dev:node --filter=@repo/stack",
11
+ "dev:node": "DEPLOY_TARGET=node SERVER_BASE_PATH=/api oyo env server -- vp dev",
12
+ "build:node-chain": "turbo build:node --filter=@repo/stack",
13
+ "build:node": "DEPLOY_TARGET=node SERVER_BASE_PATH=/api oyo env server -- vp build",
14
+ "preview:node": "DEPLOY_TARGET=node SERVER_BASE_PATH=/api oyo env server -- vp preview",
15
+ "dev:cloudflare-chain": "turbo watch dev:cloudflare --filter=@repo/stack",
16
+ "dev:cloudflare": "DEPLOY_TARGET=cloudflare vp dev",
17
+ "build:cloudflare-chain": "turbo build:cloudflare --filter=@repo/stack",
18
+ "build:cloudflare": "DEPLOY_TARGET=cloudflare vp build",
19
+ "preview:cloudflare": "DEPLOY_TARGET=cloudflare vp preview",
20
+ "deploy:cloudflare": "pnpm build:cloudflare-chain && wrangler deploy",
21
+ "db:migrate:cloudflare:local": "wrangler d1 migrations apply DB --local --config wrangler.jsonc --persist-to ../../.wrangler/state",
22
+ "cf:typegen": "wrangler types",
23
+ "cf:typecheck": "wrangler types --check",
24
+ "generate-routes": "tsr generate",
25
+ "test": "vp test",
26
+ "check": "vp check"
27
+ },
28
+ "dependencies": {
29
+ "@repo/definition": "workspace:*",
30
+ "@repo/server": "workspace:*",
31
+ "@tanstack/react-query": "catalog:frontend",
32
+ "@tanstack/react-router": "catalog:frontend",
33
+ "@tanstack/react-start": "catalog:frontend",
34
+ "jotai": "catalog:frontend",
35
+ "ky": "catalog:shared",
36
+ "nitro": "catalog:",
37
+ "react": "catalog:frontend",
38
+ "react-dom": "catalog:frontend"
39
+ },
40
+ "devDependencies": {
41
+ "@cloudflare/vite-plugin": "catalog:",
42
+ "@oyolincc/cli": "catalog:",
43
+ "@oyolincc/dev-config": "catalog:",
44
+ "@rollup/pluginutils": "catalog:",
45
+ "@tailwindcss/vite": "catalog:frontend",
46
+ "@tanstack/react-query-devtools": "catalog:frontend",
47
+ "@tanstack/react-router-devtools": "catalog:frontend",
48
+ "@tanstack/router-cli": "catalog:frontend",
49
+ "@types/node": "catalog:",
50
+ "@types/react": "catalog:frontend",
51
+ "@types/react-dom": "catalog:frontend",
52
+ "@vitejs/plugin-react": "catalog:",
53
+ "fast-glob": "catalog:",
54
+ "tailwindcss": "catalog:frontend",
55
+ "typescript": "catalog:",
56
+ "vite-plus": "catalog:",
57
+ "wrangler": "catalog:"
58
+ }
59
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "@oyolincc/dev-config/tsconfig.frontend.json",
3
+ "compilerOptions": {
4
+ "types": ["./worker-configuration.d.ts"],
5
+ "jsx": "react-jsx",
6
+ "paths": {
7
+ "#/*": ["./frontend/*"],
8
+ "@/*": ["./nitro/*"]
9
+ }
10
+ },
11
+ "files": [],
12
+ "include": ["frontend", "backend", "nitro", "./*.ts", "./*.mts"]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "react",
3
+ "routesDirectory": "./frontend/routes",
4
+ "generatedRouteTree": "./frontend/routeTree.gen.ts"
5
+ }
@@ -0,0 +1,82 @@
1
+ import { defineConfig, lazyPlugins, type PluginOption } from 'vite-plus'
2
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
3
+ import tailwindcss from '@tailwindcss/vite'
4
+ import viteReact from '@vitejs/plugin-react'
5
+ import path from 'node:path'
6
+
7
+ export default defineConfig(() => {
8
+ const deployTarget = process.env.DEPLOY_TARGET || 'node'
9
+ if (deployTarget !== 'node' && deployTarget !== 'cloudflare') {
10
+ throw new Error(`DEPLOY_TARGET must be "node" or "cloudflare", received: ${deployTarget}`)
11
+ }
12
+ const serverExternal = /^@repo\/server(?:\/|$)/
13
+
14
+ return {
15
+ ...(deployTarget === 'node'
16
+ ? {
17
+ environments: {
18
+ ssr: {
19
+ resolve: {
20
+ // 拦住第一次:Vite/TanStack SSR bundle
21
+ external: ['@repo/server/nodejs'],
22
+ },
23
+ },
24
+ },
25
+ }
26
+ : {
27
+ environments: {
28
+ ssr: {
29
+ resolve: {
30
+ mainFields: ['browser', 'module', 'jsnext:main', 'jsnext'],
31
+ },
32
+ },
33
+ },
34
+ }),
35
+ server: {
36
+ port: 3000,
37
+ warmup: {
38
+ clientFiles: ['./frontend/router.tsx'],
39
+ ssrFiles: ['./frontend/router.tsx'],
40
+ },
41
+ },
42
+ preview: {
43
+ port: 3000,
44
+ strictPort: true,
45
+ },
46
+ resolve: {
47
+ tsconfigPaths: true,
48
+ alias: {
49
+ '#server-runtime': path.resolve(import.meta.dirname, `./backend/${deployTarget}.ts`),
50
+ },
51
+ },
52
+ optimizeDeps: { include: ['@repo/definition/frontend'] },
53
+ plugins: lazyPlugins(async () => {
54
+ const runtimePlugins =
55
+ deployTarget === 'cloudflare'
56
+ ? [
57
+ (await import('@cloudflare/vite-plugin')).cloudflare({
58
+ viteEnvironment: { name: 'ssr' },
59
+ persistState: {
60
+ path: path.resolve(import.meta.dirname, '../../.wrangler/state'),
61
+ },
62
+ }),
63
+ ]
64
+ : (await import('nitro/vite')).nitro({
65
+ preset: 'node_server',
66
+ serverDir: './nitro',
67
+ // 拦住第二次:Nitro 最终 server bundle
68
+ rollupConfig: {
69
+ external: [serverExternal],
70
+ },
71
+ })
72
+
73
+ const pluginOptions = [
74
+ ...runtimePlugins,
75
+ ...tanstackStart({ srcDirectory: './frontend' }),
76
+ ...tailwindcss(),
77
+ ...viteReact(),
78
+ ] as PluginOption[]
79
+ return pluginOptions
80
+ }),
81
+ }
82
+ })
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "./node_modules/wrangler/config-schema.json",
3
+ "name": "repo-stack",
4
+ "main": "@tanstack/react-start/server-entry",
5
+ "compatibility_date": "2026-09-23",
6
+ "compatibility_flags": ["nodejs_compat"],
7
+ "observability": {
8
+ "logs": { "enabled": true, "invocation_logs": true },
9
+ "traces": { "enabled": false },
10
+ },
11
+ "d1_databases": [
12
+ {
13
+ "binding": "DB",
14
+ "database_name": "repo-db",
15
+ "database_id": "00000000-0000-0000-0000-000000000000",
16
+ "migrations_dir": "../../libs/db/migrations/sqlite-d1",
17
+ "migrations_pattern": "../../libs/db/migrations/sqlite-d1/*/migration.sql",
18
+ },
19
+ ],
20
+ }
@@ -0,0 +1,41 @@
1
+ # Domain Docs
2
+
3
+ How the engineering skills should consume this repo's domain documentation when exploring the codebase.
4
+
5
+ ## Before exploring, read these
6
+
7
+ - **`CONTEXT-MAP.md`** at the repo root. It points at the `CONTEXT.md` file for each relevant app or library context; read the entries relevant to the topic.
8
+ - **`docs/adr/`** — read ADRs that touch the area you're about to work in.
9
+ - Context-specific `docs/adr/` directories — check the ADR directory alongside the relevant context when one exists.
10
+
11
+ If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest creating them upfront. The `/domain-modeling` skill (reached via `/grill-with-docs` and `/improve-codebase-architecture`) creates them lazily when terms or decisions actually get resolved.
12
+
13
+ ## File structure
14
+
15
+ This repo uses a multi-context layout:
16
+
17
+ ```text
18
+ /
19
+ ├── CONTEXT-MAP.md ← index of all contexts
20
+ ├── docs/adr/ ← system-wide decisions
21
+ ├── apps/
22
+ │ └── <app>/
23
+ │ ├── CONTEXT.md
24
+ │ └── docs/adr/ ← app-specific decisions
25
+ └── libs/
26
+ └── <library>/
27
+ ├── CONTEXT.md
28
+ └── docs/adr/ ← library-specific decisions
29
+ ```
30
+
31
+ ## Use the glossary's vocabulary
32
+
33
+ When your output names a domain concept (in an issue title, a refactor proposal, a hypothesis, a test name), use the term as defined in the relevant context's `CONTEXT.md`. Don't drift to synonyms the glossary explicitly avoids.
34
+
35
+ If the concept you need isn't in the relevant glossary yet, that's a signal — either you're inventing language the project doesn't use (reconsider) or there's a real gap (note it for `/domain-modeling`).
36
+
37
+ ## Flag ADR conflicts
38
+
39
+ If your output contradicts an existing ADR, surface it explicitly rather than silently overriding:
40
+
41
+ > _Contradicts ADR-0007 (event-sourced orders) — but worth reopening because…_
@@ -0,0 +1,30 @@
1
+ # Issue tracker: Local Markdown
2
+
3
+ Issues and specs for this repo live as markdown files in `.scratch/`.
4
+
5
+ ## Conventions
6
+
7
+ - One feature per directory: `.scratch/<feature-slug>/`
8
+ - The spec is `.scratch/<feature-slug>/spec.md`
9
+ - Implementation issues are one file per ticket at `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01` — never a single combined tickets file
10
+ - Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings)
11
+ - Comments and conversation history append to the bottom of the file under a `## Comments` heading
12
+
13
+ ## When a skill says "publish to the issue tracker"
14
+
15
+ Create a new file under `.scratch/<feature-slug>/` (creating the directory if needed).
16
+
17
+ ## When a skill says "fetch the relevant ticket"
18
+
19
+ Read the file at the referenced path. The user will normally pass the path or the issue number directly.
20
+
21
+ ## Wayfinding operations
22
+
23
+ Used by `/wayfinder`. The **map** is a file with one **child** file per ticket.
24
+
25
+ - **Map**: `.scratch/<effort>/map.md` — the Notes / Decisions-so-far / Fog body.
26
+ - **Child ticket**: `.scratch/<effort>/issues/NN-<slug>.md`, numbered from `01`, with the question in the body. A `Type:` line records the ticket type (`research`/`prototype`/`grilling`/`task`); a `Status:` line records `claimed`/`resolved`.
27
+ - **Blocking**: a `Blocked by: NN, NN` line near the top. A ticket is unblocked when every file it lists is `resolved`.
28
+ - **Frontier**: scan `.scratch/<effort>/issues/` for files that are open, unblocked, and unclaimed; first by number wins.
29
+ - **Claim**: set `Status: claimed` and save before any work.
30
+ - **Resolve**: append the answer under an `## Answer` heading, set `Status: resolved`, then append a context pointer (gist + link) to the map's Decisions-so-far in `map.md`.
@@ -0,0 +1,15 @@
1
+ # Triage Labels
2
+
3
+ The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
4
+
5
+ | Label in mattpocock/skills | Label in our tracker | Meaning |
6
+ | -------------------------- | -------------------- | ---------------------------------------- |
7
+ | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
8
+ | `needs-info` | `needs-info` | Waiting on reporter for more information |
9
+ | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
10
+ | `ready-for-human` | `ready-for-human` | Requires human implementation |
11
+ | `wontfix` | `wontfix` | Will not be actioned |
12
+
13
+ When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
14
+
15
+ Edit the right-hand column to match whatever vocabulary you actually use.
@@ -0,0 +1,12 @@
1
+ NODE_PORT=6464
2
+ SERVER_BASE_PATH=/api
3
+ SERVER_ENV=local
4
+ LOGGER_DIR=./logs
5
+ LOGGER_FILE_BASE=app
6
+ # LOGGER_LEVEL=debug
7
+ CORS_DOMAINS='*'
8
+ # MIN_THREADS=1
9
+ # MAX_THREADS=4
10
+ # CONCURRENT_TASKS_PER_WORKER=1
11
+ # MAX_QUEUE=12
12
+ # WORKER_TASK_TIMEOUT_MS=30000
@@ -0,0 +1 @@
1
+ DB_PATH=/absolute/path/to/repo.sqlite
@@ -0,0 +1,3 @@
1
+ CLOUDFLARE_ACCOUNT_ID=
2
+ CLOUDFLARE_DATABASE_ID=
3
+ CLOUDFLARE_TOKEN=
@@ -0,0 +1,22 @@
1
+ import path from 'node:path'
2
+ import { defineConfig } from 'drizzle-kit'
3
+ import { d1SchemaConfig } from '@repo/definition/backend'
4
+
5
+ const configDir = import.meta.dirname
6
+
7
+ const { cloudflareAccountId, cloudflareDatabaseId, cloudflareToken } = d1SchemaConfig.resolve({
8
+ context: process.env,
9
+ matchContextKey: 'constantCase',
10
+ })
11
+
12
+ export default defineConfig({
13
+ dialect: 'sqlite',
14
+ driver: 'd1-http',
15
+ schema: path.join(configDir, '../src/dialects/sqlite/schema/tables.ts'),
16
+ out: path.join(configDir, '../migrations/sqlite-d1'),
17
+ dbCredentials: {
18
+ accountId: cloudflareAccountId,
19
+ databaseId: cloudflareDatabaseId,
20
+ token: cloudflareToken,
21
+ },
22
+ })
@@ -0,0 +1,22 @@
1
+ import path from 'node:path'
2
+ import { defineConfig } from 'drizzle-kit'
3
+ import { ensureDatabaseDirectory } from '../src/dialects/sqlite/utils'
4
+ import { sqliteSchemaConfig } from '@repo/definition/backend'
5
+
6
+ const configDir = import.meta.dirname
7
+
8
+ const { dbPath } = sqliteSchemaConfig.resolve({
9
+ context: process.env,
10
+ matchContextKey: 'constantCase',
11
+ })
12
+
13
+ ensureDatabaseDirectory(dbPath)
14
+
15
+ export default defineConfig({
16
+ dialect: 'sqlite',
17
+ schema: path.join(configDir, '../src/dialects/sqlite/schema/tables.ts'),
18
+ out: path.join(configDir, '../migrations/sqlite'),
19
+ dbCredentials: {
20
+ url: dbPath,
21
+ },
22
+ })
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@repo/db",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "exports": {
10
+ "./sqlite/d1-client": "./dist/sqlite/d1-client.mjs",
11
+ "./sqlite/schema": "./dist/sqlite/schema.mjs",
12
+ "./sqlite/sqlite": "./dist/sqlite/sqlite.mjs",
13
+ "./package.json": "./package.json"
14
+ },
15
+ "scripts": {
16
+ "build": "vp pack",
17
+ "dev": "vp pack --watch",
18
+ "test": "vp test",
19
+ "check": "vp check",
20
+ "sqlite:export": "oyo env sqlite -- drizzle-kit export --config=drizzle-kit/sqlite.config.ts",
21
+ "dev:sqlite:push": "oyo env sqlite -- drizzle-kit push --config=drizzle-kit/sqlite.config.ts",
22
+ "dev:sqlite:gen": "oyo env sqlite -- drizzle-kit generate --config=drizzle-kit/sqlite.config.ts",
23
+ "dev:sqlite:migrate": "oyo env sqlite -- drizzle-kit migrate --config=drizzle-kit/sqlite.config.ts",
24
+ "dev:d1:gen": "oyo env sqlite-d1 -- drizzle-kit generate --config=drizzle-kit/sqlite-d1.config.ts",
25
+ "dev:d1:migrate": "oyo env sqlite-d1 -- drizzle-kit migrate --config=drizzle-kit/sqlite-d1.config.ts"
26
+ },
27
+ "dependencies": {
28
+ "@repo/definition": "workspace:*",
29
+ "better-sqlite3": "catalog:db",
30
+ "drizzle-orm": "catalog:db"
31
+ },
32
+ "devDependencies": {
33
+ "@oyolincc/cli": "catalog:",
34
+ "@oyolincc/dev-config": "catalog:",
35
+ "@types/better-sqlite3": "catalog:db",
36
+ "@types/node": "catalog:",
37
+ "drizzle-kit": "catalog:db",
38
+ "tsx": "catalog:",
39
+ "typescript": "catalog:",
40
+ "vite-plus": "catalog:"
41
+ }
42
+ }
@@ -0,0 +1,35 @@
1
+ import Database from 'better-sqlite3'
2
+ import { drizzle } from 'drizzle-orm/better-sqlite3'
3
+ import { relations, type SqliteDBType } from './schema'
4
+ import { ensureDatabaseDirectory } from './utils'
5
+
6
+ export type SqliteDatabase = SqliteDBType
7
+
8
+ export interface SqliteClient {
9
+ db: SqliteDatabase
10
+ close(): void
11
+ }
12
+
13
+ export function createSqliteClient(databaseFile: string): SqliteClient {
14
+ if (!databaseFile) throw new Error('databaseFile must not be empty')
15
+
16
+ ensureDatabaseDirectory(databaseFile)
17
+
18
+ const client = new Database(databaseFile)
19
+ client.pragma('foreign_keys = ON')
20
+ if (databaseFile !== ':memory:') client.pragma('journal_mode = WAL')
21
+
22
+ const db = drizzle({ client, relations })
23
+
24
+ let closed = false
25
+
26
+ return {
27
+ db,
28
+ close() {
29
+ if (!closed) {
30
+ client.close()
31
+ closed = true
32
+ }
33
+ },
34
+ }
35
+ }
@@ -0,0 +1,12 @@
1
+ import { drizzle, type AnyD1Database } from 'drizzle-orm/d1'
2
+ import { relations } from './schema'
3
+
4
+ export type D1Binding = AnyD1Database
5
+
6
+ export function createD1Client(database: D1Binding) {
7
+ if (!database) throw new Error('database must not be empty')
8
+
9
+ const db = drizzle(database, { relations })
10
+
11
+ return { db }
12
+ }
@@ -0,0 +1,37 @@
1
+ import { sql } from 'drizzle-orm'
2
+ import { customType, integer, text } from 'drizzle-orm/sqlite-core'
3
+
4
+ export const idType = customType<{ data: string; driverData: number | bigint }>({
5
+ dataType() {
6
+ return 'integer'
7
+ },
8
+ fromDriver(value) {
9
+ return String(value)
10
+ },
11
+ })
12
+
13
+ export const autoIncrementId = (name: string) =>
14
+ idType(name)
15
+ .primaryKey({ autoIncrement: true })
16
+ .$defaultFn(() => sql`null`)
17
+
18
+ export function timestampMsColumn(name: string) {
19
+ return integer(name, { mode: 'timestamp_ms' })
20
+ .notNull()
21
+ .default(sql`(unixepoch('subsec') * 1000)`)
22
+ }
23
+
24
+ export const updatedAtCol = () => timestampMsColumn('updated_at').$onUpdateFn(() => new Date())
25
+
26
+ /**
27
+ * createdAt 和 updatedAt 是数据库行的创建/修改时间,SQLite 保存毫秒时间戳,代码里使用 Date。
28
+ * syncState.updatedTime 是客户端同步版本号,和这两个时间不是一回事,不要混用。
29
+ */
30
+ export const modifiedTimeCols = () => ({
31
+ createdAt: timestampMsColumn('created_at'),
32
+ updatedAt: updatedAtCol(),
33
+ })
34
+
35
+ export function jsonColumn<T>(name: string) {
36
+ return text(name, { mode: 'json' }).$type<T>()
37
+ }
@@ -0,0 +1,7 @@
1
+ export * from './relations'
2
+ export * from './tables'
3
+ export * from './types'
4
+ export * from './vo'
5
+ export * from '@/shared/types'
6
+
7
+ export { relations } from './relations'
@@ -0,0 +1,22 @@
1
+ import { sqliteTable, text } from 'drizzle-orm/sqlite-core'
2
+ import { autoIncrementId, modifiedTimeCols } from '../../columns'
3
+ import type { SelectVOResults } from '@/shared/types'
4
+ import { defineVO } from '@/shared/types'
5
+
6
+ export const examples = sqliteTable('examples', {
7
+ id: autoIncrementId('id'),
8
+ message: text('message').notNull(),
9
+ ...modifiedTimeCols(),
10
+ })
11
+
12
+ export type InsertExample = typeof examples.$inferInsert
13
+
14
+ export const voExamples = defineVO({
15
+ id: examples.id,
16
+ message: examples.message,
17
+ createdAt: examples.createdAt,
18
+ updatedAt: examples.updatedAt,
19
+ })
20
+ export type IExamplesVO = SelectVOResults<typeof voExamples>
21
+
22
+ export const vcExamples = { default: voExamples } as const
@@ -0,0 +1,5 @@
1
+ import { defineRelations } from 'drizzle-orm'
2
+ import { sqliteTableDefs } from './tables'
3
+
4
+ /** The example table has no relationships; keep the relations entrypoint for future modules. */
5
+ export const relations = defineRelations(sqliteTableDefs)
@@ -0,0 +1,5 @@
1
+ export { examples, type InsertExample } from './modules/examples/examples'
2
+
3
+ import { examples } from './modules/examples/examples'
4
+
5
+ export const sqliteTableDefs = { examples } as const
@@ -0,0 +1,7 @@
1
+ import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3'
2
+ import type { AnySQLiteColumn, AnySQLiteTable } from 'drizzle-orm/sqlite-core'
3
+ import type { relations } from './relations'
4
+
5
+ export type SqliteDBType = BetterSQLite3Database<typeof relations>
6
+ export type SqliteTableType = AnySQLiteTable
7
+ export type SqliteColType = AnySQLiteColumn
@@ -0,0 +1 @@
1
+ export { vcExamples, voExamples, type IExamplesVO } from './modules/examples/examples'
@@ -0,0 +1,8 @@
1
+ import { mkdirSync } from 'node:fs'
2
+ import { dirname } from 'node:path'
3
+
4
+ export function ensureDatabaseDirectory(databaseFile: string): void {
5
+ if (!databaseFile || databaseFile === ':memory:') return
6
+
7
+ mkdirSync(dirname(databaseFile), { recursive: true })
8
+ }
@@ -0,0 +1,26 @@
1
+ import type { AnyColumn, GetColumnData, InferModelFromColumns, Table } from 'drizzle-orm'
2
+
3
+ export type AnyTableType = Table
4
+ export type AnyColType = AnyColumn
5
+
6
+ export type TableColsMap<T extends AnyTableType> = T['_']['columns']
7
+ export type TableField<T extends AnyTableType> = keyof TableColsMap<T> & string
8
+ export type TableFieldValue<T extends AnyTableType, K extends TableField<T>> = GetColumnData<
9
+ TableColsMap<T>[K],
10
+ 'query'
11
+ >
12
+
13
+ export type VO<TColumn extends AnyColType = AnyColType> = Record<string, TColumn>
14
+ export type InsertModel<T extends AnyTableType> = InferModelFromColumns<TableColsMap<T>, 'insert'>
15
+
16
+ export function defineVO<T extends VO>(vo: T): T {
17
+ return vo
18
+ }
19
+
20
+ export type SelectVOResults<V extends VO> = {
21
+ [K in keyof V]: GetColumnData<V[K], 'query'>
22
+ }
23
+
24
+ export type VOColsOption<V extends VO> = {
25
+ [K in keyof V]: true
26
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "@oyolincc/dev-config/tsconfig.bundler.json",
3
+ "compilerOptions": {
4
+ "paths": {
5
+ "@/*": ["./src/*"]
6
+ }
7
+ },
8
+ "files": [],
9
+ "include": ["src", "drizzle-kit", "./*.ts", "./*.mts"]
10
+ }
@@ -0,0 +1,25 @@
1
+ import { defineConfig } from 'vite-plus'
2
+ import { packConfig } from '@oyolincc/dev-config'
3
+ import path from 'node:path'
4
+
5
+ const __dirname = import.meta.dirname
6
+
7
+ export default defineConfig({
8
+ test: {
9
+ clearMocks: false,
10
+ },
11
+ pack: {
12
+ ...packConfig,
13
+ entry: {
14
+ 'sqlite/schema': 'src/dialects/sqlite/schema/index.ts',
15
+ 'sqlite/sqlite': 'src/dialects/sqlite/client.ts',
16
+ 'sqlite/d1-client': 'src/dialects/sqlite/d1-client.ts',
17
+ },
18
+ exports: true,
19
+ },
20
+ resolve: {
21
+ alias: {
22
+ '@': path.resolve(__dirname, './src'),
23
+ },
24
+ },
25
+ })
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@repo/definition",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "exports": {
10
+ "./backend": "./dist/backend.mjs",
11
+ "./frontend": "./dist/frontend.mjs",
12
+ "./package.json": "./package.json"
13
+ },
14
+ "scripts": {
15
+ "build": "vp pack",
16
+ "dev": "vp pack --watch",
17
+ "test": "vp test",
18
+ "check": "vp check"
19
+ },
20
+ "dependencies": {
21
+ "change-case": "catalog:shared",
22
+ "valibot": "catalog:shared"
23
+ },
24
+ "devDependencies": {
25
+ "@oyolincc/dev-config": "catalog:",
26
+ "@types/node": "catalog:",
27
+ "typescript": "catalog:",
28
+ "vite-plus": "catalog:"
29
+ }
30
+ }
@@ -0,0 +1,2 @@
1
+ export * from './modules'
2
+ export * from './configs'