@dedesfr/prompter 0.9.0 → 1.1.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 (225) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +105 -77
  3. package/dist/cli/index.js +25 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +35 -9
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/login.d.ts +4 -0
  9. package/dist/commands/login.d.ts.map +1 -0
  10. package/dist/commands/login.js +56 -0
  11. package/dist/commands/login.js.map +1 -0
  12. package/dist/commands/logout.d.ts +4 -0
  13. package/dist/commands/logout.d.ts.map +1 -0
  14. package/dist/commands/logout.js +14 -0
  15. package/dist/commands/logout.js.map +1 -0
  16. package/dist/commands/update.d.ts +0 -2
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +19 -48
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/commands/whoami.d.ts +4 -0
  21. package/dist/commands/whoami.d.ts.map +1 -0
  22. package/dist/commands/whoami.js +42 -0
  23. package/dist/commands/whoami.js.map +1 -0
  24. package/dist/core/auth-store.d.ts +10 -0
  25. package/dist/core/auth-store.d.ts.map +1 -0
  26. package/dist/core/auth-store.js +39 -0
  27. package/dist/core/auth-store.js.map +1 -0
  28. package/dist/core/config.d.ts +0 -7
  29. package/dist/core/config.d.ts.map +1 -1
  30. package/dist/core/config.js +0 -128
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/registry.d.ts +18 -0
  33. package/dist/core/registry.d.ts.map +1 -0
  34. package/dist/core/registry.js +94 -0
  35. package/dist/core/registry.js.map +1 -0
  36. package/package.json +7 -1
  37. package/AGENTS.md +0 -123
  38. package/CLAUDE.md +0 -17
  39. package/build.js +0 -20
  40. package/convex-setup.md +0 -403
  41. package/dist/core/prompt-templates.d.ts +0 -23
  42. package/dist/core/prompt-templates.d.ts.map +0 -1
  43. package/dist/core/prompt-templates.js +0 -3485
  44. package/dist/core/prompt-templates.js.map +0 -1
  45. package/prompt/ai-humanizer.md +0 -45
  46. package/prompt/api-contract-generator.md +0 -234
  47. package/prompt/apply.md +0 -17
  48. package/prompt/archive.md +0 -21
  49. package/prompt/design-system.md +0 -210
  50. package/prompt/document-explainer.md +0 -149
  51. package/prompt/epic-generator.md +0 -198
  52. package/prompt/epic-single.md +0 -47
  53. package/prompt/erd-generator.md +0 -130
  54. package/prompt/fsd-generator.md +0 -157
  55. package/prompt/prd-agent-generator.md +0 -147
  56. package/prompt/prd-generator.md +0 -195
  57. package/prompt/product-brief.md +0 -289
  58. package/prompt/proposal.md +0 -22
  59. package/prompt/qa-test-scenario.md +0 -133
  60. package/prompt/skill-creator.md +0 -350
  61. package/prompt/story-generator.md +0 -278
  62. package/prompt/story-single.md +0 -70
  63. package/prompt/tdd-generator.md +0 -294
  64. package/prompt/tdd-lite-generator.md +0 -224
  65. package/prompt/wireframe-generator.md +0 -219
  66. package/skills/ai-context-generator/SKILL.md +0 -54
  67. package/skills/ai-context-generator/references/AGENTS.template.md +0 -83
  68. package/skills/ai-context-generator/references/CLAUDE.template.md +0 -39
  69. package/skills/ai-context-generator/references/behavioral-guidelines.md +0 -71
  70. package/skills/ai-context-generator/references/discovery-checklist.md +0 -40
  71. package/skills/ai-context-generator/references/examples/AGENTS.good.md +0 -103
  72. package/skills/ai-context-generator/references/extraction-checklist.md +0 -23
  73. package/skills/ai-context-generator/references/overlays/laravel.md +0 -44
  74. package/skills/ai-humanizer/SKILL.md +0 -50
  75. package/skills/api-contract-generator/SKILL.md +0 -243
  76. package/skills/apply/SKILL.md +0 -23
  77. package/skills/archive/SKILL.md +0 -27
  78. package/skills/cerebro/SKILL.md +0 -187
  79. package/skills/cerebro/references/agents.md +0 -213
  80. package/skills/code-review/SKILL.md +0 -373
  81. package/skills/code-review/assets/report-template-agent.md +0 -212
  82. package/skills/code-review/assets/report-template-compact.md +0 -81
  83. package/skills/code-review/assets/report-template-full.md +0 -264
  84. package/skills/code-review/assets/report-template-human.md +0 -168
  85. package/skills/code-review/references/universal-patterns.md +0 -495
  86. package/skills/design-md/README.md +0 -34
  87. package/skills/design-md/SKILL.md +0 -172
  88. package/skills/design-md/examples/DESIGN.md +0 -154
  89. package/skills/design-system/SKILL.md +0 -216
  90. package/skills/design-system-generator/SKILL.md +0 -324
  91. package/skills/design-system-generator/assets/design-system-template.md +0 -348
  92. package/skills/design-system-generator/references/extraction-patterns.md +0 -321
  93. package/skills/doc-builder/SKILL.md +0 -115
  94. package/skills/doc-builder/references/ui-patterns.md +0 -394
  95. package/skills/document-explainer/SKILL.md +0 -155
  96. package/skills/document-translator/SKILL.md +0 -58
  97. package/skills/enhance/SKILL.md +0 -47
  98. package/skills/enhance-prompt/README.md +0 -34
  99. package/skills/enhance-prompt/SKILL.md +0 -204
  100. package/skills/enhance-prompt/references/KEYWORDS.md +0 -114
  101. package/skills/epic-generator/SKILL.md +0 -204
  102. package/skills/epic-single/SKILL.md +0 -63
  103. package/skills/erd-generator/SKILL.md +0 -138
  104. package/skills/feature-planner/SKILL.md +0 -305
  105. package/skills/feature-planner/assets/implementation-plan-template.md +0 -85
  106. package/skills/frontend-design/LICENSE.txt +0 -177
  107. package/skills/frontend-design/SKILL.md +0 -42
  108. package/skills/fsd-generator/SKILL.md +0 -163
  109. package/skills/gamma-builder/SKILL.md +0 -134
  110. package/skills/laravel-code-review/SKILL.md +0 -383
  111. package/skills/laravel-code-review/assets/report-template-agent.md +0 -195
  112. package/skills/laravel-code-review/assets/report-template-compact.md +0 -79
  113. package/skills/laravel-code-review/assets/report-template-full.md +0 -253
  114. package/skills/laravel-code-review/assets/report-template-human.md +0 -159
  115. package/skills/laravel-code-review/references/laravel-patterns.md +0 -571
  116. package/skills/laravel-code-review/references/php84-features.md +0 -442
  117. package/skills/mcp-builder/LICENSE.txt +0 -202
  118. package/skills/mcp-builder/SKILL.md +0 -236
  119. package/skills/mcp-builder/reference/evaluation.md +0 -602
  120. package/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  121. package/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  122. package/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  123. package/skills/mcp-builder/scripts/connections.py +0 -151
  124. package/skills/mcp-builder/scripts/evaluation.py +0 -373
  125. package/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  126. package/skills/mcp-builder/scripts/requirements.txt +0 -2
  127. package/skills/meeting-notes/SKILL.md +0 -159
  128. package/skills/meeting-notes/evals/evals.json +0 -23
  129. package/skills/prd-agent-generator/SKILL.md +0 -132
  130. package/skills/prd-generator/SKILL.md +0 -211
  131. package/skills/product-brief/SKILL.md +0 -141
  132. package/skills/project-orchestrator/SKILL.md +0 -487
  133. package/skills/project-orchestrator/assets/caddy-vps-setup.md +0 -180
  134. package/skills/project-orchestrator/assets/plan-summary-template.md +0 -159
  135. package/skills/prompter-specs/SKILL.md +0 -115
  136. package/skills/prompter-workflow/SKILL.md +0 -166
  137. package/skills/prompter-workflow/evals/evals.json +0 -89
  138. package/skills/proposal/SKILL.md +0 -28
  139. package/skills/qa-test-scenario/SKILL.md +0 -149
  140. package/skills/skill-creator/SKILL.md +0 -173
  141. package/skills/sph-generator/SKILL.md +0 -488
  142. package/skills/story-generator/SKILL.md +0 -285
  143. package/skills/story-single/SKILL.md +0 -86
  144. package/skills/tdd-generator/SKILL.md +0 -300
  145. package/skills/tdd-lite-generator/SKILL.md +0 -230
  146. package/skills/ui-ux-pro/SKILL.md +0 -199
  147. package/skills/ui-ux-pro/assets/design-spec-template.md +0 -173
  148. package/skills/ui-ux-pro/references/component-patterns.md +0 -255
  149. package/skills/ui-ux-pro/references/design-principles.md +0 -167
  150. package/skills/wireframe-generator/SKILL.md +0 -227
  151. package/src/cli/index.ts +0 -223
  152. package/src/commands/archive.ts +0 -302
  153. package/src/commands/change.ts +0 -292
  154. package/src/commands/config.ts +0 -233
  155. package/src/commands/guide.ts +0 -50
  156. package/src/commands/init.ts +0 -597
  157. package/src/commands/list.ts +0 -194
  158. package/src/commands/show.ts +0 -138
  159. package/src/commands/spec.ts +0 -251
  160. package/src/commands/update.ts +0 -129
  161. package/src/commands/upgrade.ts +0 -30
  162. package/src/commands/validate.ts +0 -326
  163. package/src/core/artifact-graph/graph.ts +0 -167
  164. package/src/core/artifact-graph/index.ts +0 -44
  165. package/src/core/artifact-graph/instruction-loader.ts +0 -302
  166. package/src/core/artifact-graph/resolver.ts +0 -226
  167. package/src/core/artifact-graph/schema.ts +0 -124
  168. package/src/core/artifact-graph/state.ts +0 -64
  169. package/src/core/artifact-graph/types.ts +0 -65
  170. package/src/core/completions/command-registry.ts +0 -382
  171. package/src/core/completions/completion-provider.ts +0 -128
  172. package/src/core/completions/generators/bash-generator.ts +0 -191
  173. package/src/core/completions/generators/fish-generator.ts +0 -188
  174. package/src/core/completions/generators/powershell-generator.ts +0 -223
  175. package/src/core/completions/generators/zsh-generator.ts +0 -281
  176. package/src/core/completions/templates/bash-templates.ts +0 -24
  177. package/src/core/completions/templates/fish-templates.ts +0 -40
  178. package/src/core/completions/templates/powershell-templates.ts +0 -25
  179. package/src/core/completions/templates/zsh-templates.ts +0 -36
  180. package/src/core/completions/types.ts +0 -90
  181. package/src/core/config-schema.ts +0 -230
  182. package/src/core/config.ts +0 -181
  183. package/src/core/configurators/slash/antigravity.ts +0 -10
  184. package/src/core/configurators/slash/base.ts +0 -109
  185. package/src/core/configurators/slash/claude.ts +0 -10
  186. package/src/core/configurators/slash/codex.ts +0 -10
  187. package/src/core/configurators/slash/droid.ts +0 -10
  188. package/src/core/configurators/slash/forge.ts +0 -10
  189. package/src/core/configurators/slash/github-copilot.ts +0 -10
  190. package/src/core/configurators/slash/index.ts +0 -10
  191. package/src/core/configurators/slash/kilocode.ts +0 -10
  192. package/src/core/configurators/slash/opencode.ts +0 -10
  193. package/src/core/configurators/slash/registry.ts +0 -51
  194. package/src/core/converters/json-converter.ts +0 -62
  195. package/src/core/global-config.ts +0 -136
  196. package/src/core/parsers/change-parser.ts +0 -234
  197. package/src/core/parsers/markdown-parser.ts +0 -237
  198. package/src/core/parsers/requirement-blocks.ts +0 -234
  199. package/src/core/prompt-templates.ts +0 -3504
  200. package/src/core/schemas/base.schema.ts +0 -20
  201. package/src/core/schemas/change.schema.ts +0 -42
  202. package/src/core/schemas/index.ts +0 -20
  203. package/src/core/schemas/spec.schema.ts +0 -17
  204. package/src/core/skill-discovery.ts +0 -68
  205. package/src/core/specs-apply.ts +0 -483
  206. package/src/core/styles/palette.ts +0 -8
  207. package/src/core/templates/agents-template.ts +0 -459
  208. package/src/core/templates/claude-template.ts +0 -2
  209. package/src/core/templates/index.ts +0 -3
  210. package/src/core/templates/project-template.ts +0 -32
  211. package/src/core/validation/constants.ts +0 -48
  212. package/src/core/validation/types.ts +0 -19
  213. package/src/core/validation/validator.ts +0 -449
  214. package/src/core/view.ts +0 -219
  215. package/src/index.ts +0 -1
  216. package/src/utils/change-metadata.ts +0 -171
  217. package/src/utils/change-utils.ts +0 -131
  218. package/src/utils/file-system.ts +0 -252
  219. package/src/utils/index.ts +0 -12
  220. package/src/utils/interactive.ts +0 -29
  221. package/src/utils/item-discovery.ts +0 -66
  222. package/src/utils/match.ts +0 -26
  223. package/src/utils/shell-detection.ts +0 -62
  224. package/src/utils/task-progress.ts +0 -43
  225. package/tsconfig.json +0 -28
@@ -1,487 +0,0 @@
1
- ---
2
- name: project-orchestrator
3
- description: Interview users to define and verify a software project plan through a structured conversation. Collects project description, MVP scope, user roles, features, tech stack, integrations, and deployment preferences. Asks minimal clarifying questions grouped logically, provides tailored recommendations after each answer, and produces a verified project plan summary. Use when a user wants to plan a new software project, define MVP scope, choose a tech stack, or create a project brief.
4
- ---
5
-
6
- # Project Orchestrator
7
-
8
- Interview the user to define a verified software project plan. Guide them through scope, features, tech stack, and deployment with minimal, focused questions. Provide a recommendation after every answer.
9
-
10
- ## Quick Start
11
-
12
- 1. **COLLECT** -- Ask for project description + top 3 MVP features
13
- 2. **VERIFY** -- Walk through scope, roles, data, integrations, non-functional needs
14
- 3. **SELECT STACK** -- Present bundled stack options, resolve sub-choices
15
- 4. **CONFIGURE** -- Docker preference, deployment, environments
16
- 5. **SUMMARIZE** -- Output the verified plan using the final summary template
17
- 6. **CONFIRM** -- Ask the user to approve or correct the plan
18
-
19
- ---
20
-
21
- ## Before You Begin (REQUIRED)
22
-
23
- Before starting the interview, **always read `prompter/AGENTS.md`** and follow its instructions. This ensures the final output is structured as a proper spec that integrates with the Prompter workflow.
24
-
25
- ---
26
-
27
- ## Interactive Terminal Tool (REQUIRED)
28
-
29
- Use the `AskUserQuestion` tool for **every question** in the interview. This renders an interactive UI in the terminal instead of plain text, making it easier for the user to respond.
30
-
31
- ### How to Use AskUserQuestion
32
-
33
- - **Single-choice questions**: Set `multiSelect: false`. Use for mutually exclusive picks (e.g., stack selection, database choice, Docker yes/no).
34
- - **Multi-choice questions**: Set `multiSelect: true`. Use for checklists (e.g., integrations, roles, features).
35
- - **Keep options concise**: Labels should be 1–5 words. Add detail in the `description` field.
36
- - **Always include an "Unsure" option** when the user may not know. Handle it by recommending a default.
37
- - **Group related sub-choices** into one `AskUserQuestion` call with multiple `questions` when they are always asked together and order doesn't matter.
38
-
39
- ### Example: Stack Selection
40
-
41
- ```json
42
- {
43
- "questions": [
44
- {
45
- "question": "Which tech stack bundle fits your project best?",
46
- "header": "Stack",
47
- "multiSelect": false,
48
- "options": [
49
- { "label": "JS/TS Full-Stack", "description": "React or Next.js + Drizzle + Express or NestJS + PostgreSQL/MySQL" },
50
- { "label": "React + Convex", "description": "React (Vite or Next.js) + Convex (real-time backend + built-in DB)" },
51
- { "label": "Laravel Classic", "description": "Laravel + Blade + Tailwind + PostgreSQL/MySQL" },
52
- { "label": "Laravel + React", "description": "Laravel + Inertia.js (React) + PostgreSQL/MySQL" },
53
- { "label": "Laravel + Filament", "description": "Laravel + Filament (admin panel & CRUD) + Tailwind + PostgreSQL/MySQL" },
54
- { "label": "Unsure", "description": "I'll recommend based on your project needs" }
55
- ]
56
- }
57
- ]
58
- }
59
- ```
60
-
61
- ### Example: Integrations Checklist
62
-
63
- ```json
64
- {
65
- "questions": [
66
- {
67
- "question": "Which integrations or capabilities does your MVP need?",
68
- "header": "Integrations",
69
- "multiSelect": true,
70
- "options": [
71
- { "label": "Caching", "description": "e.g., Redis for fast data access" },
72
- { "label": "Queues / Jobs", "description": "e.g., sending emails, processing uploads" },
73
- { "label": "Real-Time", "description": "e.g., live chat, notifications, WebSockets" },
74
- { "label": "File Storage", "description": "e.g., S3, local uploads" }
75
- ]
76
- }
77
- ]
78
- }
79
- ```
80
-
81
- ---
82
-
83
- ## Core Rules
84
-
85
- - Use `AskUserQuestion` for every question -- never ask interview questions as plain text.
86
- - Ask one question or one small grouped set at a time. Never overwhelm.
87
- - After every answer (or group), provide a short recommendation tailored to what the user said.
88
- - Use plain language. Only introduce jargon if the user shows technical comfort.
89
- - If the user says "unsure", recommend a pragmatic default and explain briefly.
90
- - Keep optional topics gated -- only go deeper if the user says yes or unsure.
91
-
92
- ---
93
-
94
- ## Project Setup Commands (PRIORITY)
95
-
96
- Always use these exact commands when scaffolding projects. Include the correct command in the final summary's "Recommended Next Steps" based on the chosen stack.
97
-
98
- | Technology | Command |
99
- |------------|---------|
100
- | React (Vite) | `npm create vite@latest` |
101
- | Next.js | `npx create-next-app@latest {project_name} --yes` |
102
- | Express | `npm install express --save` |
103
- | NestJS | `npm i -g @nestjs/cli && nest new {project_name}` |
104
- | Laravel 12 | `composer create-project laravel/laravel:^12.0 {project_name}` |
105
- | Filament | `composer require filament/filament && php artisan filament:install --panels` |
106
- | React + Convex | `npm create convex@latest` |
107
-
108
- **Rules:**
109
- - Always include the matching setup command(s) as the first recommended next step in the final plan.
110
- - For Bundle 1 (JS/TS Full-Stack): include the frontend command (React via Vite or Next.js) AND the backend command (Express or NestJS).
111
- - For Bundle 2 (React + Convex): include only `npm create convex@latest` -- it scaffolds both the React frontend and Convex backend in one step.
112
- - For Bundles 3 and 4 (Laravel): include only the Laravel command -- Blade, Inertia, and Tailwind are configured within the Laravel project.
113
- - For Bundle 5 (Laravel + Filament): include the Laravel command first, then the Filament install command (`composer require filament/filament && php artisan filament:install --panels`).
114
- - Never invent or substitute alternative installation commands. Use these exactly as shown.
115
-
116
- ---
117
-
118
- ## Step 1: Project Description (REQUIRED)
119
-
120
- Open with:
121
-
122
- ```
123
- Let's define your project. To start, tell me:
124
-
125
- 1. What problem does your project solve, and who is it for?
126
- 2. What is the desired outcome (e.g., a web app, mobile app, SaaS platform)?
127
- 3. What are your top 3 MVP features -- the minimum needed to launch?
128
- ```
129
-
130
- Wait for the user's response. Summarize what you understood and give a brief recommendation (e.g., "This sounds like a good fit for a standard web app with auth and a dashboard. Let's verify the details.").
131
-
132
- ---
133
-
134
- ## Step 2: MVP Scope Confirmation
135
-
136
- Based on the user's description, present a draft scope:
137
-
138
- ```
139
- Here's what I'd put in scope for the MVP:
140
-
141
- **In scope:**
142
- - [feature 1]
143
- - [feature 2]
144
- - [feature 3]
145
-
146
- **Out of scope (for later):**
147
- - [deferred item 1]
148
- - [deferred item 2]
149
-
150
- Does this match your expectations? Anything to add or move?
151
- ```
152
-
153
- Recommendation: Briefly explain why you deferred certain items (e.g., "Reporting dashboards add complexity -- better to ship core functionality first and add analytics in v2.").
154
-
155
- ---
156
-
157
- ## Step 3: Users & Roles
158
-
159
- Ask:
160
-
161
- ```
162
- Who will use this application? For example:
163
- - Public visitors (unauthenticated)
164
- - Registered users
165
- - Admins
166
- - Other roles (e.g., moderators, vendors, managers)
167
-
168
- Which roles does the MVP need?
169
- ```
170
-
171
- Recommendation: Suggest a minimal role set (e.g., "For MVP, I'd recommend just User + Admin. You can add granular roles later without rearchitecting.").
172
-
173
- ---
174
-
175
- ## Step 4: Data & Content Types
176
-
177
- Ask:
178
-
179
- ```
180
- What are the main things your app manages? For example:
181
- - Users / profiles
182
- - Products / listings
183
- - Orders / bookings
184
- - Posts / articles
185
- - Messages / notifications
186
-
187
- List the key entities your MVP needs to store and manage.
188
- ```
189
-
190
- Recommendation: Sketch a quick high-level data model (e.g., "So we'd have Users, Products, and Orders as core entities, with Orders linking Users to Products.").
191
-
192
- ---
193
-
194
- ## Step 5: Integrations & Optional Capabilities
195
-
196
- Present optional topics as a checklist. Do NOT deep-dive unless the user says yes or unsure.
197
-
198
- ```
199
- Do you need any of the following? (Yes / No / Unsure for each)
200
-
201
- 1. Caching (e.g., Redis for fast data access)
202
- 2. Queues / background jobs (e.g., sending emails, processing uploads)
203
- 3. Real-time features (e.g., live chat, notifications, WebSockets)
204
- 4. Full-text search (e.g., Elasticsearch, Algolia, Meilisearch)
205
- 5. File storage / uploads (e.g., S3, local storage)
206
- 6. Email or SMS notifications
207
- 7. Analytics / event tracking
208
- 8. Payments (e.g., Stripe, PayPal)
209
- 9. Third-party integrations (e.g., social login, maps, calendar)
210
- ```
211
-
212
- For each "yes" or "unsure":
213
- - Ask which service they prefer (or recommend one).
214
- - Give a 1-2 sentence recommendation (e.g., "For queues, Redis with a simple job runner is the easiest starting point. You can scale to dedicated queue services later.").
215
-
216
- For each "no": Move on. Don't push.
217
-
218
- ---
219
-
220
- ## Step 6: Non-Functional Requirements
221
-
222
- Ask as a grouped set:
223
-
224
- ```
225
- A few quick questions about non-functional needs:
226
-
227
- 1. **Security**: Any specific requirements beyond standard auth? (e.g., 2FA, encryption at rest, compliance like GDPR/HIPAA)
228
- 2. **Performance**: Expected traffic volume? (e.g., <1k users, 1k-10k, 10k+)
229
- 3. **SEO**: Does this app need to rank in search engines? (important for stack choice)
230
- ```
231
-
232
- Recommendation: Tailor to their answers (e.g., "With SEO needs, server-side rendering will matter -- that'll influence our stack choice next." or "At <1k users, you won't need to worry about caching or CDN right away.").
233
-
234
- ---
235
-
236
- ## Step 7: Tech Stack Selection (REQUIRED)
237
-
238
- Present exactly these bundled options:
239
-
240
- ```
241
- Let's pick your tech stack. Here are four proven bundles:
242
-
243
- 1. **JS/TS Full-Stack**: React or Next.js + Drizzle ORM + Express or NestJS + MySQL or PostgreSQL
244
- 2. **React + Convex**: React (Vite or Next.js) + Convex (real-time backend + built-in document DB, no SQL setup needed)
245
- 3. **Laravel Classic**: Laravel + Blade + Tailwind CSS + MySQL or PostgreSQL
246
- 4. **Laravel + React**: Laravel + Inertia.js (React) + MySQL or PostgreSQL
247
- 5. **Laravel + Filament**: Laravel + Filament (admin panel & CRUD generator) + Tailwind CSS + MySQL or PostgreSQL
248
-
249
- Which bundle fits your project best? (Pick 1-5, or say "unsure")
250
- ```
251
-
252
- If unsure: Recommend based on what you've learned (e.g., "Since you need SEO and prefer a simpler setup, I'd go with Laravel Classic -- it's fast to build, great for server-rendered pages, and has excellent built-in tooling." Or "If you want real-time features out of the box with minimal backend setup, React + Convex is a great choice." Or "If your app is primarily an admin panel, back-office tool, or data management system, Laravel + Filament gives you a complete CRUD interface with minimal custom frontend work.").
253
-
254
- ### Sub-Choices
255
-
256
- After the user picks a bundle, ask ONLY the necessary sub-choices:
257
-
258
- **Bundle 1 sub-choices:**
259
- - Next.js vs React SPA? (Recommend Next.js if SEO matters or if they want SSR; React SPA if it's a dashboard/internal tool)
260
- - Express vs NestJS? (Recommend Express for simplicity and speed; NestJS if they want structure and the app is complex)
261
- - MySQL vs PostgreSQL? (Recommend PostgreSQL as the default -- richer features, JSON support, better for most new projects. Recommend MySQL if team is already familiar or hosting is MySQL-only)
262
-
263
- **Bundle 2 sub-choices:**
264
- - Next.js vs React (Vite)? (Recommend Next.js if SEO matters; Vite if it's a dashboard or real-time app where SSR isn't needed)
265
- - No database sub-choice needed -- Convex includes a built-in document database with real-time sync.
266
- - **Convex hosting**: Convex Cloud (managed, easiest) vs Self-Hosted (Docker, full control)? (Recommend Convex Cloud for most projects -- zero infrastructure overhead. Recommend Self-Hosted if the user needs data sovereignty, air-gapped environments, or wants to avoid vendor lock-in.)
267
- - **Convex storage backend** (Self-Hosted only): SQLite vs Postgres?
268
- - **SQLite** — single file on disk, zero config. Fine for dev/hobby projects up to ~1–2 GB data on a single server. Back up by copying the file.
269
- - **Postgres** — networked database. Required for production: handles concurrent connections, proper backups (`pg_dump` to S3/R2), point-in-time recovery, and horizontal scaling. Add a `postgres` service to `docker-compose.yml` and pass `DATABASE_URL` to Convex.
270
- - **Important framing**: Postgres is Convex's *storage engine*, not your application database. You never write SQL or query Postgres directly — Convex reads/writes its own internal format there. You only touch Postgres for ops: running the container and taking backups.
271
- - Recommend Postgres for any self-hosted project with real users. Recommend SQLite only for solo dev environments or throwaway prototypes.
272
-
273
- **Bundle 3 sub-choices:**
274
- - MySQL vs PostgreSQL? (Same guidance as above)
275
-
276
- **Bundle 4 sub-choices:**
277
- - MySQL vs PostgreSQL? (Same guidance as above)
278
-
279
- **Bundle 5 sub-choices:**
280
- - MySQL vs PostgreSQL? (Same guidance as above)
281
- - Filament panels: Admin only, or also a user-facing app panel? (Recommend admin-only for MVP -- add a user-facing panel later if needed. If the user needs a public-facing frontend beyond Filament, suggest combining with Blade or consider Bundle 4 instead.)
282
-
283
- Provide a brief recommendation for each sub-choice based on the project's stated needs.
284
-
285
- ---
286
-
287
- ## Step 8: Docker Preference (REQUIRED)
288
-
289
- Always ask:
290
-
291
- ```
292
- Do you want Docker for this project? (Yes / No / Unsure)
293
-
294
- Quick context: Docker makes it easy to set up identical dev environments across machines and simplifies deployment. The tradeoff is a small learning curve and slightly more setup upfront.
295
- ```
296
-
297
- If unsure: Recommend based on team size and deployment target (e.g., "For a solo project deploying to a single VPS, Docker is optional. For a team or cloud deployment, I'd recommend it.").
298
-
299
- ### Web Server / Reverse Proxy Guidelines
300
-
301
- When Docker is used and a web server or reverse proxy is needed (e.g., for Laravel, Express, NestJS, or a Dockerized frontend):
302
-
303
- - **Always use Caddy** as the web server and reverse proxy -- do NOT use or recommend Nginx or Apache.
304
- - Caddy automatically handles HTTPS (via Let's Encrypt or ZeroSSL) in production with zero extra configuration.
305
- - For local development, Caddy serves HTTP by default -- no certificate setup needed.
306
- - Mention Caddy in the final plan summary under the Docker/web server row and in the recommended next steps.
307
-
308
- **Always install Caddy directly on the host** (via the OS package manager) -- do NOT run Caddy inside Docker. Running Caddy on the host avoids Docker network overhead, survives Docker daemon restarts, and is managed by systemd automatically. Do NOT embed Caddy in any project's `docker-compose.yml`.
309
-
310
- The correct setup:
311
-
312
- 1. **Caddy installed on the host** via `apt install caddy` (Ubuntu/Debian) or equivalent. Systemd manages it -- starts on boot, restarts on failure.
313
- 2. **Each project exposes only an internal port** (e.g., `3001`, `3002`) -- no `ports: - "80:80"` in their `docker-compose.yml`.
314
- 3. The host Caddyfile (`/etc/caddy/Caddyfile`) routes by domain:
315
-
316
- ```caddy
317
- project-a.com {
318
- reverse_proxy localhost:3001
319
- }
320
-
321
- project-b.com {
322
- reverse_proxy localhost:3002
323
- }
324
- ```
325
-
326
- 4. After editing the Caddyfile, reload with `sudo systemctl reload caddy`.
327
-
328
- During Step 9 (Deployment), ask whether Caddy is already installed on the VPS:
329
-
330
- - **Yes** -- skip installing Caddy. Just add a new block to `/etc/caddy/Caddyfile` for the new domain, then run `sudo systemctl reload caddy`. Include only this step in the recommended next steps.
331
- - **No** -- include the full Caddy install in the recommended next steps:
332
- ```bash
333
- sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
334
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
335
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
336
- sudo apt update && sudo apt install caddy
337
- ```
338
-
339
- Include the appropriate Caddy setup in the final plan summary and recommended next steps.
340
-
341
- ### Laravel + Docker Guidelines
342
-
343
- When the user chooses a Laravel stack (Bundle 3, 4, or 5) with Docker:
344
-
345
- - **Use regular Docker and Docker Compose** -- do NOT use or recommend Laravel Sail. Set up a standard `Dockerfile` and `docker-compose.yml` with services for the app, database, and any other dependencies (e.g., Redis).
346
- - **Use Supervisor** for managing background processes inside the container. Laravel workers like `php artisan queue:work` must run continuously -- Supervisor ensures they stay alive and restart on failure. Include a `supervisord.conf` that manages:
347
- - `php artisan queue:work` (queue worker)
348
- - Any other long-running processes the project needs (e.g., scheduler via `php artisan schedule:work`)
349
- - Mention this in the final plan summary under the Docker row and in the recommended next steps.
350
-
351
- ### Convex Self-Hosted Guidelines
352
-
353
- When the user chooses React + Convex (Bundle 2) with **self-hosted** deployment:
354
-
355
- - **Storage backend**: Include in `docker-compose.yml` based on what the user chose:
356
- - **SQLite** (dev/hobby): No extra service needed — Convex stores data in a local SQLite file inside the container. Mount a volume to persist it across restarts.
357
- - **Postgres** (production): Add a `postgres` service (e.g., `postgres:16`) and pass `DATABASE_URL` to the Convex container. Postgres is Convex's internal filing cabinet — the user's data lives in `document_json` columns managed by Convex, not in SQL tables they'd recognize. The user never writes SQL; they only run `pg_dump` for backups.
358
- - **Use Docker Compose** with two Convex services:
359
- - `convex` — backend image `ghcr.io/get-convex/convex-backend:latest`
360
- - `convex-dashboard` — dashboard image `ghcr.io/get-convex/convex-dashboard:latest`
361
- - **Two environment files** are required:
362
- - `.env.dev` (Docker Compose config) — contains `CONVEX_PORT`, `CONVEX_DASHBOARD_PORT`, `CONVEX_DASHBOARD_UI_PORT`, `VITE_CONVEX_URL`, `CONVEX_ADMIN_KEY`, `CONVEX_CLOUD_ORIGIN`, `CONVEX_SITE_ORIGIN`
363
- - `.env.local` (CLI and frontend, never committed) — contains `VITE_CONVEX_URL`, `CONVEX_SELF_HOSTED_URL`, `CONVEX_SELF_HOSTED_ADMIN_KEY`
364
- - **Admin key generation**: After starting the backend, generate the CLI admin key from the running container:
365
- ```bash
366
- docker compose --env-file .env.dev exec convex ./generate_admin_key.sh
367
- ```
368
- Copy the printed `convex-self-hosted|...` value into `.env.local` as `CONVEX_SELF_HOSTED_ADMIN_KEY`. Never use a random string or the Docker `CONVEX_ADMIN_KEY` value directly for CLI use.
369
- - **Add a deploy script** to `package.json`:
370
- ```json
371
- "deploy:selfhosted": "convex deploy --url $CONVEX_SELF_HOSTED_URL --admin-key $CONVEX_SELF_HOSTED_ADMIN_KEY"
372
- ```
373
- - **Reserved index names**: Self-hosted Convex does not allow reserved index names such as `by_id`. Rename them to non-reserved names (e.g., `by_external_id`) before deploying.
374
- - **Frontend wiring**: The frontend reads `VITE_CONVEX_URL` at build time. Ensure this value is reachable by the browser and is passed as a Docker build argument when building the frontend image.
375
- - Mention this setup in the final plan summary under the Docker/Convex row and in the recommended next steps.
376
-
377
- ---
378
-
379
- ## Step 9: Deployment & Hosting
380
-
381
- Ask:
382
-
383
- ```
384
- Where do you plan to deploy?
385
-
386
- Common options:
387
- - **VPS** (e.g., DigitalOcean, Hetzner, Linode) -- most flexible, you manage the server
388
- - **PaaS** (e.g., Railway, Render, Fly.io) -- easier, less control
389
- - **Cloud** (e.g., AWS, GCP, Azure) -- most scalable, most complex
390
- - **Shared hosting** (e.g., cPanel) -- cheapest, limited
391
-
392
- Also: do you need separate environments? (e.g., dev / staging / production)
393
- ```
394
-
395
- Recommendation: Match to their context (e.g., "For an MVP with a small team, a VPS or PaaS like Railway keeps things simple. You can migrate to AWS later if you need to scale.").
396
-
397
- ---
398
-
399
- ## Step 10: Final Summary (REQUIRED)
400
-
401
- After all questions are answered, produce the verified plan using the template in `assets/plan-summary-template.md`.
402
-
403
- Present it to the user and ask (using `AskUserQuestion`):
404
-
405
- ```json
406
- {
407
- "questions": [
408
- {
409
- "question": "Does this project plan look correct?",
410
- "header": "Plan Review",
411
- "multiSelect": false,
412
- "options": [
413
- { "label": "Looks good", "description": "Approve and save the plan" },
414
- { "label": "Needs changes", "description": "I'll tell you what to correct" }
415
- ]
416
- }
417
- ]
418
- }
419
- ```
420
-
421
- Iterate if the user requests changes. The plan is final only when the user confirms.
422
-
423
- ### Save the Plan (REQUIRED)
424
-
425
- Once the user approves, **write the final plan to `prompter/project-plan.md`** using the Write tool. Use the filled-in plan summary template as the file content.
426
-
427
- ```
428
- Write the approved plan content to: prompter/project-plan.md
429
- ```
430
-
431
- After saving, confirm to the user:
432
-
433
- ```
434
- Your project plan has been saved to prompter/project-plan.md.
435
- ```
436
-
437
- ### Proposal Creation (Conditional)
438
-
439
- After confirming the plan is saved, check whether the proposal feature is installed by verifying that `prompter/core/proposal.md` exists (use the Glob tool). If the file does not exist, skip this section entirely.
440
-
441
- If the file exists, ask the user using `AskUserQuestion`:
442
-
443
- ```json
444
- {
445
- "questions": [
446
- {
447
- "question": "Would you like to create a Prompter change proposal based on this project plan?",
448
- "header": "Create Proposal",
449
- "multiSelect": false,
450
- "options": [
451
- { "label": "Yes, create a proposal", "description": "Scaffold a change proposal using the project plan as context" },
452
- { "label": "No, skip", "description": "I'll create the proposal manually later" }
453
- ]
454
- }
455
- ]
456
- }
457
- ```
458
-
459
- If the user agrees, read `prompter/core/proposal.md` and `prompter/AGENTS.md` and follow their instructions to scaffold the proposal. Use the approved project plan from `prompter/project-plan.md` as the source of context (e.g., to derive the change-id, capabilities, requirements, and tasks).
460
-
461
- ---
462
-
463
- ## Conversation Tips
464
-
465
- ### Handling "I don't know" / "Unsure"
466
- - Always recommend a sensible default.
467
- - Explain the recommendation in 1-2 sentences.
468
- - Frame it as: "You can always change this later."
469
-
470
- ### Handling Overly Complex Requests
471
- - Gently suggest deferring non-essential features.
472
- - Use: "That's a great v2 feature. For MVP, I'd recommend [simpler alternative]."
473
-
474
- ### Handling Very Technical Users
475
- - Skip basic explanations if the user demonstrates expertise.
476
- - Engage at their level -- discuss tradeoffs, not definitions.
477
-
478
- ### Handling Non-Technical Users
479
- - Avoid jargon. Use analogies when helpful.
480
- - Make decisions for them when they're stuck, but always explain why.
481
-
482
- ---
483
-
484
- ## Resources
485
-
486
- - **Plan summary template**: [plan-summary-template.md](assets/plan-summary-template.md) -- Structured output format for the final verified plan
487
- - **Caddy VPS setup guide**: [caddy-vps-setup.md](assets/caddy-vps-setup.md) -- Step-by-step guide for installing and managing Caddy on a VPS (share this with users who are unfamiliar with VPS operations)
@@ -1,180 +0,0 @@
1
- # Caddy Setup on a VPS (Step-by-Step)
2
-
3
- This guide walks you through installing and managing Caddy as a reverse proxy on a Ubuntu/Debian VPS. Caddy automatically handles HTTPS for all your domains — no manual SSL certificate setup needed.
4
-
5
- ---
6
-
7
- ## Prerequisites
8
-
9
- Before starting, make sure:
10
-
11
- 1. You have a VPS running **Ubuntu 22.04 or Debian 12** (or newer).
12
- 2. You have SSH access to the VPS as a user with `sudo` privileges.
13
- 3. Your domain's **A record points to your VPS IP address** (set this in your domain registrar's DNS panel). DNS changes can take up to 30 minutes to propagate.
14
-
15
- ---
16
-
17
- ## Step 1: Connect to Your VPS
18
-
19
- Open a terminal and connect via SSH:
20
-
21
- ```bash
22
- ssh your-user@your-vps-ip
23
- ```
24
-
25
- ---
26
-
27
- ## Step 2: Install Caddy
28
-
29
- Run these commands one by one:
30
-
31
- ```bash
32
- sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
33
-
34
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
35
- | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
36
-
37
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
38
- | sudo tee /etc/apt/sources.list.d/caddy-stable.list
39
-
40
- sudo apt update && sudo apt install caddy
41
- ```
42
-
43
- Verify the install:
44
-
45
- ```bash
46
- caddy version
47
- ```
48
-
49
- You should see a version number like `v2.x.x`.
50
-
51
- ---
52
-
53
- ## Step 3: Check That Caddy Is Running
54
-
55
- Caddy starts automatically after install. Confirm it's active:
56
-
57
- ```bash
58
- sudo systemctl status caddy
59
- ```
60
-
61
- Look for `Active: active (running)`. If it's not running, start it:
62
-
63
- ```bash
64
- sudo systemctl start caddy
65
- sudo systemctl enable caddy # make it start on boot
66
- ```
67
-
68
- ---
69
-
70
- ## Step 4: Open Firewall Ports
71
-
72
- Allow HTTP and HTTPS traffic:
73
-
74
- ```bash
75
- sudo ufw allow 80
76
- sudo ufw allow 443
77
- sudo ufw allow 22 # keep SSH open
78
- sudo ufw enable
79
- sudo ufw status
80
- ```
81
-
82
- ---
83
-
84
- ## Step 5: Configure Your First Domain
85
-
86
- The Caddy config file lives at `/etc/caddy/Caddyfile`. Open it:
87
-
88
- ```bash
89
- sudo nano /etc/caddy/Caddyfile
90
- ```
91
-
92
- Replace the default content with:
93
-
94
- ```caddy
95
- your-domain.com {
96
- reverse_proxy localhost:3001
97
- }
98
- ```
99
-
100
- > Replace `your-domain.com` with your actual domain, and `3001` with the port your app is running on.
101
-
102
- Save and close: press `Ctrl+X`, then `Y`, then `Enter`.
103
-
104
- ---
105
-
106
- ## Step 6: Reload Caddy
107
-
108
- Apply the new config without downtime:
109
-
110
- ```bash
111
- sudo systemctl reload caddy
112
- ```
113
-
114
- Caddy will automatically obtain an SSL certificate for your domain. Visit `https://your-domain.com` — it should work with HTTPS out of the box.
115
-
116
- ---
117
-
118
- ## Adding a New Project Later
119
-
120
- When you deploy a new project on the same VPS, just add a new block to the Caddyfile:
121
-
122
- ```bash
123
- sudo nano /etc/caddy/Caddyfile
124
- ```
125
-
126
- Add below the existing block:
127
-
128
- ```caddy
129
- your-domain.com {
130
- reverse_proxy localhost:3001
131
- }
132
-
133
- another-project.com {
134
- reverse_proxy localhost:3002
135
- }
136
- ```
137
-
138
- Then reload:
139
-
140
- ```bash
141
- sudo systemctl reload caddy
142
- ```
143
-
144
- Each project gets its own SSL certificate automatically.
145
-
146
- ---
147
-
148
- ## Common Commands
149
-
150
- | Task | Command |
151
- |------|---------|
152
- | Check Caddy status | `sudo systemctl status caddy` |
153
- | Reload after config change | `sudo systemctl reload caddy` |
154
- | Restart Caddy | `sudo systemctl restart caddy` |
155
- | View live logs | `sudo journalctl -u caddy -f` |
156
- | Validate config before reload | `caddy validate --config /etc/caddy/Caddyfile` |
157
- | View current config | `cat /etc/caddy/Caddyfile` |
158
-
159
- ---
160
-
161
- ## Troubleshooting
162
-
163
- **HTTPS not working / certificate error**
164
- - Check that your domain's A record points to the VPS IP: `dig your-domain.com`
165
- - Make sure ports 80 and 443 are open: `sudo ufw status`
166
- - Check Caddy logs for errors: `sudo journalctl -u caddy -f`
167
-
168
- **502 Bad Gateway**
169
- - Your app is not running or not listening on the expected port.
170
- - Check that your Docker containers are up: `docker compose ps`
171
- - Verify the port in your Caddyfile matches the port your app exposes.
172
-
173
- **Port already in use**
174
- - Another process (e.g., Apache or Nginx) may be using port 80/443.
175
- - Check: `sudo ss -tlnp | grep -E ':80|:443'`
176
- - Stop the conflicting service: `sudo systemctl stop nginx` or `sudo systemctl stop apache2`
177
-
178
- **Config change not taking effect**
179
- - Always run `sudo systemctl reload caddy` after editing the Caddyfile.
180
- - Validate first to catch syntax errors: `caddy validate --config /etc/caddy/Caddyfile`