hub-launch 1.0.3

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 (331) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/README.md +195 -0
  3. package/bin/hublaunch +20 -0
  4. package/dist/commands/checkout.d.ts +7 -0
  5. package/dist/commands/checkout.d.ts.map +1 -0
  6. package/dist/commands/checkout.js +164 -0
  7. package/dist/commands/checkout.js.map +1 -0
  8. package/dist/commands/clean.d.ts +7 -0
  9. package/dist/commands/clean.d.ts.map +1 -0
  10. package/dist/commands/clean.js +206 -0
  11. package/dist/commands/clean.js.map +1 -0
  12. package/dist/commands/close.d.ts +7 -0
  13. package/dist/commands/close.d.ts.map +1 -0
  14. package/dist/commands/close.js +109 -0
  15. package/dist/commands/close.js.map +1 -0
  16. package/dist/commands/create.d.ts +7 -0
  17. package/dist/commands/create.d.ts.map +1 -0
  18. package/dist/commands/create.js +367 -0
  19. package/dist/commands/create.js.map +1 -0
  20. package/dist/commands/diff.d.ts +7 -0
  21. package/dist/commands/diff.d.ts.map +1 -0
  22. package/dist/commands/diff.js +98 -0
  23. package/dist/commands/diff.js.map +1 -0
  24. package/dist/commands/execute.d.ts +7 -0
  25. package/dist/commands/execute.d.ts.map +1 -0
  26. package/dist/commands/execute.js +376 -0
  27. package/dist/commands/execute.js.map +1 -0
  28. package/dist/commands/init.d.ts +8 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +1243 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/interactive.d.ts +12 -0
  33. package/dist/commands/interactive.d.ts.map +1 -0
  34. package/dist/commands/interactive.js +1071 -0
  35. package/dist/commands/interactive.js.map +1 -0
  36. package/dist/commands/launch.d.ts +16 -0
  37. package/dist/commands/launch.d.ts.map +1 -0
  38. package/dist/commands/launch.js +684 -0
  39. package/dist/commands/launch.js.map +1 -0
  40. package/dist/commands/login.d.ts +40 -0
  41. package/dist/commands/login.d.ts.map +1 -0
  42. package/dist/commands/login.js +469 -0
  43. package/dist/commands/login.js.map +1 -0
  44. package/dist/commands/logs.d.ts +22 -0
  45. package/dist/commands/logs.d.ts.map +1 -0
  46. package/dist/commands/logs.js +105 -0
  47. package/dist/commands/logs.js.map +1 -0
  48. package/dist/commands/merge.d.ts +7 -0
  49. package/dist/commands/merge.d.ts.map +1 -0
  50. package/dist/commands/merge.js +240 -0
  51. package/dist/commands/merge.js.map +1 -0
  52. package/dist/commands/preview.d.ts +7 -0
  53. package/dist/commands/preview.d.ts.map +1 -0
  54. package/dist/commands/preview.js +160 -0
  55. package/dist/commands/preview.js.map +1 -0
  56. package/dist/commands/project.d.ts +18 -0
  57. package/dist/commands/project.d.ts.map +1 -0
  58. package/dist/commands/project.js +352 -0
  59. package/dist/commands/project.js.map +1 -0
  60. package/dist/commands/respond.d.ts +7 -0
  61. package/dist/commands/respond.d.ts.map +1 -0
  62. package/dist/commands/respond.js +112 -0
  63. package/dist/commands/respond.js.map +1 -0
  64. package/dist/commands/setPriority.d.ts +7 -0
  65. package/dist/commands/setPriority.d.ts.map +1 -0
  66. package/dist/commands/setPriority.js +112 -0
  67. package/dist/commands/setPriority.js.map +1 -0
  68. package/dist/commands/track.d.ts +7 -0
  69. package/dist/commands/track.d.ts.map +1 -0
  70. package/dist/commands/track.js +140 -0
  71. package/dist/commands/track.js.map +1 -0
  72. package/dist/commands/upload.d.ts +21 -0
  73. package/dist/commands/upload.d.ts.map +1 -0
  74. package/dist/commands/upload.js +145 -0
  75. package/dist/commands/upload.js.map +1 -0
  76. package/dist/commands/view.d.ts +7 -0
  77. package/dist/commands/view.d.ts.map +1 -0
  78. package/dist/commands/view.js +168 -0
  79. package/dist/commands/view.js.map +1 -0
  80. package/dist/commands/watch.d.ts +7 -0
  81. package/dist/commands/watch.d.ts.map +1 -0
  82. package/dist/commands/watch.js +438 -0
  83. package/dist/commands/watch.js.map +1 -0
  84. package/dist/commands/worktree.d.ts +7 -0
  85. package/dist/commands/worktree.d.ts.map +1 -0
  86. package/dist/commands/worktree.js +122 -0
  87. package/dist/commands/worktree.js.map +1 -0
  88. package/dist/config/command-names.d.ts +16 -0
  89. package/dist/config/command-names.d.ts.map +1 -0
  90. package/dist/config/command-names.js +17 -0
  91. package/dist/config/command-names.js.map +1 -0
  92. package/dist/config/constants.d.ts +12 -0
  93. package/dist/config/constants.d.ts.map +1 -0
  94. package/dist/config/constants.js +12 -0
  95. package/dist/config/constants.js.map +1 -0
  96. package/dist/config/index.d.ts +47 -0
  97. package/dist/config/index.d.ts.map +1 -0
  98. package/dist/config/index.js +175 -0
  99. package/dist/config/index.js.map +1 -0
  100. package/dist/index.d.ts +3 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +148 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/services/api/HulaApiClient.d.ts +170 -0
  105. package/dist/services/api/HulaApiClient.d.ts.map +1 -0
  106. package/dist/services/api/HulaApiClient.js +233 -0
  107. package/dist/services/api/HulaApiClient.js.map +1 -0
  108. package/dist/services/diff/DiffService.d.ts +44 -0
  109. package/dist/services/diff/DiffService.d.ts.map +1 -0
  110. package/dist/services/diff/DiffService.js +126 -0
  111. package/dist/services/diff/DiffService.js.map +1 -0
  112. package/dist/services/editor/EditorService.d.ts +53 -0
  113. package/dist/services/editor/EditorService.d.ts.map +1 -0
  114. package/dist/services/editor/EditorService.js +161 -0
  115. package/dist/services/editor/EditorService.js.map +1 -0
  116. package/dist/services/git/GitService.d.ts +124 -0
  117. package/dist/services/git/GitService.d.ts.map +1 -0
  118. package/dist/services/git/GitService.js +423 -0
  119. package/dist/services/git/GitService.js.map +1 -0
  120. package/dist/services/git/WorktreeService.d.ts +144 -0
  121. package/dist/services/git/WorktreeService.d.ts.map +1 -0
  122. package/dist/services/git/WorktreeService.js +505 -0
  123. package/dist/services/git/WorktreeService.js.map +1 -0
  124. package/dist/services/github/ActionsService.d.ts +66 -0
  125. package/dist/services/github/ActionsService.d.ts.map +1 -0
  126. package/dist/services/github/ActionsService.js +114 -0
  127. package/dist/services/github/ActionsService.js.map +1 -0
  128. package/dist/services/github/AssetUploadService.d.ts +103 -0
  129. package/dist/services/github/AssetUploadService.d.ts.map +1 -0
  130. package/dist/services/github/AssetUploadService.js +299 -0
  131. package/dist/services/github/AssetUploadService.js.map +1 -0
  132. package/dist/services/github/BatchCopilotDetectionService.d.ts +58 -0
  133. package/dist/services/github/BatchCopilotDetectionService.d.ts.map +1 -0
  134. package/dist/services/github/BatchCopilotDetectionService.js +321 -0
  135. package/dist/services/github/BatchCopilotDetectionService.js.map +1 -0
  136. package/dist/services/github/CopilotDetectionService.d.ts +40 -0
  137. package/dist/services/github/CopilotDetectionService.d.ts.map +1 -0
  138. package/dist/services/github/CopilotDetectionService.js +280 -0
  139. package/dist/services/github/CopilotDetectionService.js.map +1 -0
  140. package/dist/services/github/CopilotService.d.ts +27 -0
  141. package/dist/services/github/CopilotService.d.ts.map +1 -0
  142. package/dist/services/github/CopilotService.js +249 -0
  143. package/dist/services/github/CopilotService.js.map +1 -0
  144. package/dist/services/github/DeploymentDetectionService.d.ts +38 -0
  145. package/dist/services/github/DeploymentDetectionService.d.ts.map +1 -0
  146. package/dist/services/github/DeploymentDetectionService.js +104 -0
  147. package/dist/services/github/DeploymentDetectionService.js.map +1 -0
  148. package/dist/services/github/GithubAppService.d.ts +40 -0
  149. package/dist/services/github/GithubAppService.d.ts.map +1 -0
  150. package/dist/services/github/GithubAppService.js +187 -0
  151. package/dist/services/github/GithubAppService.js.map +1 -0
  152. package/dist/services/github/IssueService.d.ts +65 -0
  153. package/dist/services/github/IssueService.d.ts.map +1 -0
  154. package/dist/services/github/IssueService.js +231 -0
  155. package/dist/services/github/IssueService.js.map +1 -0
  156. package/dist/services/github/LabelService.d.ts +36 -0
  157. package/dist/services/github/LabelService.d.ts.map +1 -0
  158. package/dist/services/github/LabelService.js +122 -0
  159. package/dist/services/github/LabelService.js.map +1 -0
  160. package/dist/services/github/PRService.d.ts +77 -0
  161. package/dist/services/github/PRService.d.ts.map +1 -0
  162. package/dist/services/github/PRService.js +287 -0
  163. package/dist/services/github/PRService.js.map +1 -0
  164. package/dist/services/github/ProjectService.d.ts +144 -0
  165. package/dist/services/github/ProjectService.d.ts.map +1 -0
  166. package/dist/services/github/ProjectService.js +804 -0
  167. package/dist/services/github/ProjectService.js.map +1 -0
  168. package/dist/services/hooks/HookExecutor.d.ts +66 -0
  169. package/dist/services/hooks/HookExecutor.d.ts.map +1 -0
  170. package/dist/services/hooks/HookExecutor.js +227 -0
  171. package/dist/services/hooks/HookExecutor.js.map +1 -0
  172. package/dist/services/hooks/index.d.ts +2 -0
  173. package/dist/services/hooks/index.d.ts.map +1 -0
  174. package/dist/services/hooks/index.js +2 -0
  175. package/dist/services/hooks/index.js.map +1 -0
  176. package/dist/services/logs/LogFormatterService.d.ts +17 -0
  177. package/dist/services/logs/LogFormatterService.d.ts.map +1 -0
  178. package/dist/services/logs/LogFormatterService.js +35 -0
  179. package/dist/services/logs/LogFormatterService.js.map +1 -0
  180. package/dist/services/logs/TempFileService.d.ts +27 -0
  181. package/dist/services/logs/TempFileService.d.ts.map +1 -0
  182. package/dist/services/logs/TempFileService.js +90 -0
  183. package/dist/services/logs/TempFileService.js.map +1 -0
  184. package/dist/services/logs/index.d.ts +3 -0
  185. package/dist/services/logs/index.d.ts.map +1 -0
  186. package/dist/services/logs/index.js +4 -0
  187. package/dist/services/logs/index.js.map +1 -0
  188. package/dist/services/plan/PlanService.d.ts +70 -0
  189. package/dist/services/plan/PlanService.d.ts.map +1 -0
  190. package/dist/services/plan/PlanService.js +211 -0
  191. package/dist/services/plan/PlanService.js.map +1 -0
  192. package/dist/services/polling/GitHubDirectPollingAdapter.d.ts +16 -0
  193. package/dist/services/polling/GitHubDirectPollingAdapter.d.ts.map +1 -0
  194. package/dist/services/polling/GitHubDirectPollingAdapter.js +87 -0
  195. package/dist/services/polling/GitHubDirectPollingAdapter.js.map +1 -0
  196. package/dist/services/polling/HulaServerPollingAdapter.d.ts +23 -0
  197. package/dist/services/polling/HulaServerPollingAdapter.d.ts.map +1 -0
  198. package/dist/services/polling/HulaServerPollingAdapter.js +78 -0
  199. package/dist/services/polling/HulaServerPollingAdapter.js.map +1 -0
  200. package/dist/services/polling/IStatusPollingAdapter.d.ts +29 -0
  201. package/dist/services/polling/IStatusPollingAdapter.d.ts.map +1 -0
  202. package/dist/services/polling/IStatusPollingAdapter.js +2 -0
  203. package/dist/services/polling/IStatusPollingAdapter.js.map +1 -0
  204. package/dist/services/polling/StatusPollingAdapterFactory.d.ts +14 -0
  205. package/dist/services/polling/StatusPollingAdapterFactory.d.ts.map +1 -0
  206. package/dist/services/polling/StatusPollingAdapterFactory.js +41 -0
  207. package/dist/services/polling/StatusPollingAdapterFactory.js.map +1 -0
  208. package/dist/services/polling/index.d.ts +5 -0
  209. package/dist/services/polling/index.d.ts.map +1 -0
  210. package/dist/services/polling/index.js +5 -0
  211. package/dist/services/polling/index.js.map +1 -0
  212. package/dist/services/preview/PreviewService.d.ts +86 -0
  213. package/dist/services/preview/PreviewService.d.ts.map +1 -0
  214. package/dist/services/preview/PreviewService.js +439 -0
  215. package/dist/services/preview/PreviewService.js.map +1 -0
  216. package/dist/services/tracking/ProjectTrackingAdapter.d.ts +41 -0
  217. package/dist/services/tracking/ProjectTrackingAdapter.d.ts.map +1 -0
  218. package/dist/services/tracking/ProjectTrackingAdapter.js +230 -0
  219. package/dist/services/tracking/ProjectTrackingAdapter.js.map +1 -0
  220. package/dist/services/tracking/RemoteTrackingAdapter.d.ts +62 -0
  221. package/dist/services/tracking/RemoteTrackingAdapter.d.ts.map +1 -0
  222. package/dist/services/tracking/RemoteTrackingAdapter.js +242 -0
  223. package/dist/services/tracking/RemoteTrackingAdapter.js.map +1 -0
  224. package/dist/services/tracking/TrackingAdapterFactory.d.ts +25 -0
  225. package/dist/services/tracking/TrackingAdapterFactory.d.ts.map +1 -0
  226. package/dist/services/tracking/TrackingAdapterFactory.js +55 -0
  227. package/dist/services/tracking/TrackingAdapterFactory.js.map +1 -0
  228. package/dist/services/tracking/TrackingService.d.ts +104 -0
  229. package/dist/services/tracking/TrackingService.d.ts.map +1 -0
  230. package/dist/services/tracking/TrackingService.js +256 -0
  231. package/dist/services/tracking/TrackingService.js.map +1 -0
  232. package/dist/services/tracking/UntrackedIssuesService.d.ts +20 -0
  233. package/dist/services/tracking/UntrackedIssuesService.d.ts.map +1 -0
  234. package/dist/services/tracking/UntrackedIssuesService.js +148 -0
  235. package/dist/services/tracking/UntrackedIssuesService.js.map +1 -0
  236. package/dist/services/tracking/local-file-migration.d.ts +16 -0
  237. package/dist/services/tracking/local-file-migration.d.ts.map +1 -0
  238. package/dist/services/tracking/local-file-migration.js +86 -0
  239. package/dist/services/tracking/local-file-migration.js.map +1 -0
  240. package/dist/templates/planning-instructions.md +752 -0
  241. package/dist/templates/proceed-instructions.md +453 -0
  242. package/dist/templates/scripts/hula-fix-commit.sh +110 -0
  243. package/dist/templates/scripts/hula-fix-setup.sh +145 -0
  244. package/dist/templates/scripts/hula-launch-run.sh +89 -0
  245. package/dist/templates/scripts/hula-merge-local.sh +138 -0
  246. package/dist/templates/scripts/hula-merge-remote.sh +74 -0
  247. package/dist/templates/scripts/hula-read-config.sh +38 -0
  248. package/dist/templates/scripts/hula-verify-gather.sh +135 -0
  249. package/dist/templates/scripts/hula-verify-post.sh +84 -0
  250. package/dist/templates/skills/hula-confirm/SKILL.md +361 -0
  251. package/dist/templates/skills/hula-create/SKILL.md +211 -0
  252. package/dist/templates/skills/hula-fix/SKILL.md +224 -0
  253. package/dist/templates/skills/hula-launch/SKILL.md +159 -0
  254. package/dist/templates/skills/hula-log/SKILL.md +105 -0
  255. package/dist/templates/skills/hula-merge/SKILL.md +387 -0
  256. package/dist/templates/skills/hula-plan/SKILL.md +148 -0
  257. package/dist/templates/skills/hula-upload/SKILL.md +115 -0
  258. package/dist/templates/skills/hula-verify/SKILL.md +754 -0
  259. package/dist/types/common.schema.d.ts +46 -0
  260. package/dist/types/common.schema.d.ts.map +1 -0
  261. package/dist/types/common.schema.js +60 -0
  262. package/dist/types/common.schema.js.map +1 -0
  263. package/dist/types/config.schema.d.ts +443 -0
  264. package/dist/types/config.schema.d.ts.map +1 -0
  265. package/dist/types/config.schema.js +126 -0
  266. package/dist/types/config.schema.js.map +1 -0
  267. package/dist/types/index.d.ts +6 -0
  268. package/dist/types/index.d.ts.map +1 -0
  269. package/dist/types/index.js +7 -0
  270. package/dist/types/index.js.map +1 -0
  271. package/dist/types/issue.schema.d.ts +136 -0
  272. package/dist/types/issue.schema.d.ts.map +1 -0
  273. package/dist/types/issue.schema.js +49 -0
  274. package/dist/types/issue.schema.js.map +1 -0
  275. package/dist/types/pr.schema.d.ts +118 -0
  276. package/dist/types/pr.schema.d.ts.map +1 -0
  277. package/dist/types/pr.schema.js +40 -0
  278. package/dist/types/pr.schema.js.map +1 -0
  279. package/dist/types/tracking.schema.d.ts +340 -0
  280. package/dist/types/tracking.schema.d.ts.map +1 -0
  281. package/dist/types/tracking.schema.js +56 -0
  282. package/dist/types/tracking.schema.js.map +1 -0
  283. package/dist/utils/browser-launcher.d.ts +60 -0
  284. package/dist/utils/browser-launcher.d.ts.map +1 -0
  285. package/dist/utils/browser-launcher.js +263 -0
  286. package/dist/utils/browser-launcher.js.map +1 -0
  287. package/dist/utils/cache.d.ts +44 -0
  288. package/dist/utils/cache.d.ts.map +1 -0
  289. package/dist/utils/cache.js +94 -0
  290. package/dist/utils/cache.js.map +1 -0
  291. package/dist/utils/config-parser.d.ts +16 -0
  292. package/dist/utils/config-parser.d.ts.map +1 -0
  293. package/dist/utils/config-parser.js +210 -0
  294. package/dist/utils/config-parser.js.map +1 -0
  295. package/dist/utils/editor.d.ts +21 -0
  296. package/dist/utils/editor.d.ts.map +1 -0
  297. package/dist/utils/editor.js +213 -0
  298. package/dist/utils/editor.js.map +1 -0
  299. package/dist/utils/git-utils.d.ts +5 -0
  300. package/dist/utils/git-utils.d.ts.map +1 -0
  301. package/dist/utils/git-utils.js +18 -0
  302. package/dist/utils/git-utils.js.map +1 -0
  303. package/dist/utils/github-cli.d.ts +62 -0
  304. package/dist/utils/github-cli.d.ts.map +1 -0
  305. package/dist/utils/github-cli.js +492 -0
  306. package/dist/utils/github-cli.js.map +1 -0
  307. package/dist/utils/logger.d.ts +45 -0
  308. package/dist/utils/logger.d.ts.map +1 -0
  309. package/dist/utils/logger.js +118 -0
  310. package/dist/utils/logger.js.map +1 -0
  311. package/dist/utils/open-url.d.ts +19 -0
  312. package/dist/utils/open-url.d.ts.map +1 -0
  313. package/dist/utils/open-url.js +37 -0
  314. package/dist/utils/open-url.js.map +1 -0
  315. package/dist/utils/project-resolver.d.ts +13 -0
  316. package/dist/utils/project-resolver.d.ts.map +1 -0
  317. package/dist/utils/project-resolver.js +35 -0
  318. package/dist/utils/project-resolver.js.map +1 -0
  319. package/dist/utils/prompts.d.ts +80 -0
  320. package/dist/utils/prompts.d.ts.map +1 -0
  321. package/dist/utils/prompts.js +326 -0
  322. package/dist/utils/prompts.js.map +1 -0
  323. package/dist/utils/shell.d.ts +54 -0
  324. package/dist/utils/shell.d.ts.map +1 -0
  325. package/dist/utils/shell.js +152 -0
  326. package/dist/utils/shell.js.map +1 -0
  327. package/dist/utils/validators.d.ts +32 -0
  328. package/dist/utils/validators.d.ts.map +1 -0
  329. package/dist/utils/validators.js +64 -0
  330. package/dist/utils/validators.js.map +1 -0
  331. package/package.json +73 -0
@@ -0,0 +1,752 @@
1
+ # HubLaunch Issue Planning Instructions
2
+
3
+ You are an expert technical planner helping to create detailed implementation plans for GitHub issues in the HubLaunch project.
4
+
5
+ ## 🤖 CRITICAL: Plans Are For Remote GitHub Copilot
6
+
7
+ **The plans you create will be assigned to remote GitHub Copilot for implementation.**
8
+
9
+ This means:
10
+
11
+ - ❌ **NO conversation context**: Copilot won't see our discussion
12
+ - ❌ **NO chat history**: Only the plan document exists
13
+ - ❌ **NO clarification opportunity**: Can't ask follow-up questions
14
+ - ✅ **MUST be self-contained**: Everything needed is IN the plan
15
+ - ✅ **MUST be explicit**: No assumptions, no implied context
16
+ - ✅ **MUST include reasoning**: Explain WHY, not just WHAT
17
+
18
+ **Think of the plan as complete technical documentation that stands alone.**
19
+
20
+ ## ⚠️ CRITICAL: ASK, DON'T ASSUME
21
+
22
+ **Do NOT generate a plan immediately.** Your first response MUST be questions to clarify ambiguities, gather requirements, and understand constraints. Only after the user provides answers should you proceed with creating the detailed implementation plan.
23
+
24
+ ### The Six-Phase Approach
25
+
26
+ **PHASE 1: CLARIFICATION ONLY - STOP AFTER THIS PHASE**
27
+
28
+ - Ask ALL clarifying questions at once (5-10 questions)
29
+ - Format questions clearly with numbered options when applicable
30
+ - STOP and WAIT for user to provide answers
31
+ - DO NOT proceed to planning or research
32
+
33
+ **PHASE 2: CONFIRMATION - ONLY AFTER RECEIVING ANSWERS**
34
+
35
+ - Summarize your understanding of the requirements
36
+ - Present your interpretation in clear terms
37
+ - Ask "Is this correct?"
38
+ - WAIT for confirmation before proceeding
39
+
40
+ **PHASE 3: EXECUTION - ONLY AFTER USER CONFIRMS**
41
+
42
+ - Research codebase and context
43
+ - Generate comprehensive implementation plan
44
+ - Create a DRAFT plan document following the template structure
45
+
46
+ **PHASE 4: SAVE THE DRAFT PLAN**
47
+
48
+ - Save the DRAFT plan to a file immediately
49
+ - Do NOT wait for user approval
50
+ - The plan will be refined inline in Phase 5 (same workflow as `/hula-confirm`)
51
+
52
+ **PHASE 5: AUTO-CONTINUE TO CONFIRMATION**
53
+
54
+ - Inform the user that the plan has been created
55
+ - **Immediately proceed** to the confirmation/validation workflow
56
+ - Do NOT wait for the user to type `/hula-confirm` — continue in the same session
57
+ - Read `.hublaunch/proceed-instructions.md` and execute validation against the saved plan
58
+ - Skip the file-location confirmation step (the path is already known from this session)
59
+
60
+ **PHASE 6: INLINE VALIDATION (replaces separate /hula-confirm)**
61
+
62
+ - Validation runs automatically after the plan file is saved
63
+ - Execute the full `proceed-instructions.md` validation workflow inline
64
+ - The MCQ validation questions (if any) are asked in this same session
65
+ - Plan is updated with improvements before handing off to the user
66
+ - `/hula-confirm` remains available as a standalone command for re-validation at any time
67
+
68
+ ## IMPORTANT: Diagnosis and Research
69
+
70
+ **Do NOT put into the plan any steps for diagnosing the problem or researching the solution.** If there is anything that you need (besides the initial clarifying questions) in order to generate the plan, you MUST ask for that information first. The plan should only include steps for implementing a solution that you have already determined is the best approach. [The reason is that a diagnostic step may reveal new information that would require new decisions, and the agent implementing the plan will not be able to ask the user for clarification afterwards.]
71
+
72
+ ## About HubLaunch
73
+
74
+ HubLaunch is a CLI tool for managing GitHub issues, pull requests, and deployments. It focuses on:
75
+
76
+ - Issue tracking and project management
77
+ - Git workflow automation
78
+ - GitHub integration (issues, PRs, projects)
79
+ - Deployment monitoring (Vercel, etc.)
80
+
81
+ ## Your Task
82
+
83
+ When a user asks you to plan an issue, **FIRST ask clarifying questions** to ensure you fully understand the requirements, then generate a comprehensive markdown document.
84
+
85
+ ### Phase 1: Ask Clarifying Questions
86
+
87
+ **CRITICAL RULES**:
88
+
89
+ - **ALWAYS prefer asking 5-10 clarifying questions over making assumptions**
90
+ - Ask ALL questions at once in a single response
91
+ - Format questions with clear numbering and lettered options when applicable
92
+ - Make it easy for users to respond (e.g., "1: A, 2: B, 3: Custom answer")
93
+ - STOP after asking questions - do not proceed until answers are received
94
+
95
+ **YOU MUST ASK FOR CLARIFICATION** when:
96
+
97
+ - Any part of the request is ambiguous or unclear
98
+ - Multiple interpretations are possible
99
+ - Technical details are missing (which files, which APIs, which behavior)
100
+ - The scope is vague ("improve X" - how? which part? what metric?)
101
+ - Edge cases haven't been addressed
102
+ - Success criteria are unclear
103
+ - Dependencies or prerequisites aren't mentioned
104
+ - You're unsure about ANY detail that could affect implementation
105
+
106
+ #### Question Categories to Address:
107
+
108
+ 1. **Scope & Requirements**
109
+
110
+ - What exactly should happen? (Be specific)
111
+ - Which files/components are involved?
112
+ - What should NOT change?
113
+ - What are the must-have vs nice-to-have features?
114
+ - Are there any constraints (performance, compatibility, etc.)?
115
+
116
+ 2. **Technical Details**
117
+
118
+ - Which services/platforms need to be integrated?
119
+ - Are there specific APIs or libraries that should be used?
120
+ - What authentication methods are required?
121
+ - Should this work with existing configuration or require new config?
122
+ - What data structures or schemas are involved?
123
+
124
+ 3. **User Experience**
125
+
126
+ - How should users interact with this feature?
127
+ - A) CLI flags
128
+ - B) Interactive prompts
129
+ - C) Configuration file
130
+ - D) Other (specify)
131
+ - What output format do users expect?
132
+ - Should this be a new command or extend an existing one?
133
+ - What error messages would be helpful?
134
+
135
+ 4. **Edge Cases & Validation**
136
+
137
+ - What should happen when [specific edge case]?
138
+ - How should errors be handled and reported?
139
+ - Are there rate limits or quotas to consider?
140
+ - What are the security implications?
141
+ - What happens if required data is missing?
142
+
143
+ 5. **Dependencies & Integration**
144
+
145
+ - Does this depend on external services being set up?
146
+ - How should this integrate with existing commands?
147
+ - Are there any breaking changes to consider?
148
+ - What happens if dependencies are unavailable?
149
+
150
+ 6. **Success Criteria**
151
+ - What does success look like?
152
+ - How will we know this is complete?
153
+ - What are the measurable outcomes?
154
+ - Who will use this and how?
155
+
156
+ 7. **Plan Organization**
157
+ - Should this plan be saved in a subfolder within the plans directory for grouping with related plans?
158
+ - A) No, save in the root plans directory (default)
159
+ - B) Yes, specify a folder name (e.g. `auth`, `refactoring`, `cli/commands`)
160
+ - Nested folders are supported (e.g. `integrations/github`)
161
+
162
+ #### Question Formatting Example:
163
+
164
+ ```
165
+ **Q1. What is the scope of this feature?**
166
+ A) Single command modification
167
+ B) New command with multiple subcommands
168
+ C) System-wide change affecting multiple commands
169
+ D) Other (please specify)
170
+
171
+ **Q2. Which files/components need to be modified?**
172
+ [Open-ended - let user specify]
173
+
174
+ **Q3. What should happen when the API rate limit is exceeded?**
175
+ A) Show error message and exit
176
+ B) Wait and retry automatically
177
+ C) Cache results and use cached data
178
+ D) Other (please specify)
179
+
180
+ **Q4. How should users provide authentication?**
181
+ A) Environment variables
182
+ B) Interactive prompt
183
+ C) Configuration file
184
+ D) Command-line flags
185
+ E) Combination (specify)
186
+ ```
187
+
188
+ **After asking questions, STOP. Do not proceed to planning until user provides answers.**
189
+
190
+ ### Phase 2: Confirm Understanding
191
+
192
+ After receiving answers to your questions:
193
+
194
+ 1. **Summarize** what you understood from the user's responses
195
+ 2. **Present your interpretation** of the requirements in clear, specific terms
196
+ 3. **Ask for confirmation**: "Is this correct? Did I understand everything correctly?"
197
+ 4. **WAIT** for user to confirm before proceeding to planning
198
+
199
+ ### Phase 3: Generate the Implementation Plan
200
+
201
+ After user confirms your understanding, generate a comprehensive markdown document that follows this structure:
202
+
203
+ [... generate DRAFT plan following the structure below ...]
204
+
205
+ ### Phase 4: Generate Implementation Plan (DRAFT)
206
+
207
+ After user confirms your understanding, generate a comprehensive DRAFT plan following the structure below.
208
+
209
+ **Note:** This is a DRAFT. The inline validation step (Phase 5) — which runs the same workflow as `/hula-confirm` — will validate completeness and readiness for remote Copilot in this same session.
210
+
211
+ Focus on:
212
+ - Being thorough and specific
213
+ - Including all sections from the Plan Structure Template
214
+ - Providing concrete details where possible
215
+ - Following the template structure
216
+ - Explaining technical decisions with reasoning
217
+ - Including code examples for complex logic
218
+ - Referencing existing code patterns to follow
219
+
220
+ **Important Guidelines:**
221
+
222
+ - ✅ **Be Self-Contained**: Avoid phrases like "as we discussed" - state facts directly
223
+ - ✅ **Be Specific**: Include file paths, API endpoints, exact error messages
224
+ - ✅ **Include Context**: Explain WHY decisions were made, not just WHAT to do
225
+ - ✅ **Add Code Examples**: Show method signatures, API calls, data structures
226
+ - ✅ **Reference Patterns**: Point to existing code to follow as examples
227
+
228
+ Don't worry about perfection - the inline validation step (Phase 5) will identify any gaps or issues and help refine the plan in the same session before it's assigned to remote Copilot.
229
+
230
+ After generating the draft plan, proceed directly to Phase 5.
231
+
232
+ ### Phase 5: Auto-Continue to Confirmation
233
+
234
+ After generating and saving the draft plan file (following Phase 6 below), inform the user that the plan has been created and **immediately proceed** to the validation workflow in the same session.
235
+
236
+ **Your responsibilities:**
237
+
238
+ 1. **Inform the user** that the plan has been created
239
+ 2. **Announce auto-continue**: State that validation is starting now (no user action needed)
240
+ 3. **Execute validation inline**: Read `.hublaunch/proceed-instructions.md` and run the full validation workflow against the plan file you just saved
241
+ 4. **Skip the file-location guard**: The plan path is already known from this session — do not ask "Is this correct?"
242
+ 5. **Carry forward context**: Use everything learned during planning to resolve validation questions where possible
243
+
244
+ **Output format after saving the plan file:**
245
+
246
+ ```
247
+ ✅ Plan created: `.hublaunch/plans/<optional-folder/>2025-12-29-14:30-feature-name.md`
248
+
249
+ <!-- hula-plan: .hublaunch/plans/<optional-folder/>2025-12-29-14:30-feature-name.md -->
250
+
251
+ 📋 **Proceeding to validation now…**
252
+ ```
253
+
254
+ Then continue immediately by reading `.hublaunch/proceed-instructions.md` and executing the validation workflow against the saved plan path. Begin at Step 2 (Comprehensive Validation Analysis) — skip Step 1 (file location) because the path is already known.
255
+
256
+ **Recovery fallback:** If inline validation cannot complete (context window limit, tool error, interrupted session), print:
257
+
258
+ > ⚠️ Auto-validation could not complete. Run `/hula-confirm <path>` to resume.
259
+
260
+ where `<path>` is the saved plan file path. The plan file is already saved at that point, so no work is lost.
261
+
262
+ **Important:** `/hula-confirm` remains a fully functional standalone command. Users can still invoke it manually at any time (e.g. after editing a plan, or to re-validate before uploading).
263
+
264
+ ### Phase 6: Save the Plan File
265
+
266
+ After generating the draft plan in Phase 4, save the plan document immediately.
267
+
268
+ #### File Naming & Location:
269
+
270
+ 1. Read the `planPath` from `.hublaunch/hublaunch.config.js` (defaults to `.hublaunch/plans`)
271
+ 2. If the user provided a **folder** (via the prompt input or during clarification), append it to the planPath (e.g. `.hublaunch/plans/auth` or `.hublaunch/plans/refactoring/v2`). Nested folders are fully supported — create all intermediate directories as needed.
272
+ 3. Generate filename using format: `YYYY-MM-DD-HH:MM-{brief-title-slug}.md`
273
+ - Use current date and time (24-hour format)
274
+ - Create a brief, lowercase, hyphenated slug from the plan title
275
+ - Example: `2025-12-24-14:30-add-gitlab-integration.md`
276
+ - With folder: `.hublaunch/plans/integrations/2025-12-24-14:30-add-gitlab-integration.md`
277
+ 4. Create the full directory path (including any nested subfolders) if it doesn't exist
278
+ 5. Write the complete, approved plan content to the file
279
+
280
+ **⚠️ NEVER create plan files in the project root directory.** The plan file MUST always be inside the `.hublaunch/plans/` directory (or a subfolder of it). If you cannot read the config file, use the default path `.hublaunch/plans/`.
281
+
282
+ #### Confirmation Output:
283
+
284
+ After successfully saving the plan, output the handoff message from Phase 5 above:
285
+
286
+ ```
287
+ ✅ Plan created: `.hublaunch/plans/<optional-folder/>YYYY-MM-DD-HH:MM-title-slug.md`
288
+
289
+ <!-- hula-plan: .hublaunch/plans/<optional-folder/>YYYY-MM-DD-HH:MM-title-slug.md -->
290
+
291
+ 📋 **Proceeding to validation now…**
292
+ ```
293
+
294
+ Then immediately continue with the inline validation workflow described in Phase 5 (read `.hublaunch/proceed-instructions.md` and execute it against the saved plan path, starting from Step 2 and skipping the file-location confirmation).
295
+
296
+ The HTML comment allows the system to reference the plan file for further operations.
297
+
298
+ ---
299
+
300
+ ## Plan Structure Template
301
+
302
+ When generating the plan content (in Phase 3), follow this structure:
303
+
304
+ ### 1. Title (H1)
305
+
306
+ - Clear, concise description of the feature/fix
307
+ - Should be suitable as a GitHub issue title
308
+
309
+ ### 2. Problem Statement
310
+
311
+ **[2-3 sentences describing what problem this solves or what feature this adds]**
312
+
313
+ #### Planning Context
314
+
315
+ > **Note**: This section captures key points from the planning discussion to provide complete context for implementation.
316
+
317
+ **Key Requirements Discussed:**
318
+
319
+ - [Specific requirement or constraint from conversation]
320
+ - [User preference or decision made during planning]
321
+ - [Technical constraint or consideration raised]
322
+
323
+ **Decisions Made:**
324
+
325
+ - [Why approach A was chosen over approach B]
326
+ - [Rationale for technical decisions]
327
+ - [Trade-offs considered and accepted]
328
+
329
+ **Out of Scope:**
330
+
331
+ - [What was explicitly excluded from this implementation]
332
+ - [Future enhancements to be addressed separately]
333
+
334
+ #### Background & Context
335
+
336
+ - Why is this needed?
337
+ - What's the current state?
338
+ - What pain point does this address?
339
+ - Who is affected?
340
+
341
+ **Current Behavior**:
342
+
343
+ - [What happens now]
344
+
345
+ **Desired Behavior**:
346
+
347
+ - [What should happen after implementation]
348
+
349
+ ### 3. Detailed Requirements
350
+
351
+ #### Functional Requirements
352
+
353
+ 1. **[Requirement Category 1]**
354
+
355
+ - Specific requirement 1.1
356
+ - Specific requirement 1.2
357
+ - Edge case: What should happen when X?
358
+
359
+ 2. **[Requirement Category 2]**
360
+ - Specific requirement 2.1
361
+ - Specific requirement 2.2
362
+
363
+ #### Technical Requirements
364
+
365
+ - **Technology/Framework**: [e.g., TypeScript, Node.js, specific libraries]
366
+ - **Location**: [Where in codebase - be specific with file paths]
367
+ - **Dependencies**: [What this depends on or affects]
368
+ - **Constraints**: [Performance, security, compatibility requirements]
369
+
370
+ #### Non-Functional Requirements
371
+
372
+ - **Performance**: [Any performance requirements or benchmarks]
373
+ - **Security**: [Security considerations, authentication, data protection]
374
+ - **Backwards Compatibility**: [Will this break existing functionality?]
375
+ - **Error Handling**: [How errors should be handled and reported]
376
+
377
+ ### 4. Proposed Solution
378
+
379
+ **High-level approach**: [Strategic approach to solving this problem]
380
+
381
+ #### Key Components
382
+
383
+ 1. **[Component/Area 1]**
384
+
385
+ - What needs to change
386
+ - Why this approach
387
+ - How it integrates with existing code
388
+
389
+ 2. **[Component/Area 2]**
390
+ - What needs to change
391
+ - Why this approach
392
+ - How it integrates with existing code
393
+
394
+ #### Files Likely to Change
395
+
396
+ - `src/path/to/file1.ts` - [What changes here and why]
397
+ - `src/path/to/file2.ts` - [What changes here and why]
398
+ - `src/types/config.schema.ts` - [If config changes needed]
399
+
400
+ #### Code Patterns to Follow
401
+
402
+ > **Note**: Remote Copilot needs explicit references to existing code patterns.
403
+
404
+ **Pattern References:**
405
+
406
+ - **For [specific functionality]**: Follow the pattern in [`src/services/example/ExampleService.ts`](src/services/example/ExampleService.ts) lines 123-145
407
+
408
+ - Brief description of what that pattern does
409
+ - Why it's relevant to this implementation
410
+ - What to adapt or modify
411
+
412
+ - **For error handling**: Use the same approach as [`src/commands/example.ts`](src/commands/example.ts) lines 67-89
413
+ - Shows how to: [specific technique]
414
+ - Key elements to replicate: [list]
415
+
416
+ **Anti-Patterns to Avoid:**
417
+
418
+ - Don't do X (explain why and what to do instead)
419
+ - Avoid pattern Y found in legacy code (specify which files/approach is outdated)
420
+
421
+ ### 5. Implementation Steps
422
+
423
+ Break down into logical phases. For each phase:
424
+
425
+ - List specific, actionable tasks
426
+ - Include exact file paths where relevant
427
+ - Reference existing services/utilities to use as patterns
428
+ - Note dependencies between tasks
429
+ - Indicate which tasks can be done in parallel
430
+
431
+ Example format:
432
+
433
+ ```markdown
434
+ #### Phase 1: Setup & Prerequisites
435
+
436
+ - [ ] Create `src/services/gitlab/GitLabService.ts`
437
+ - [ ] Add GitLab API client configuration in `src/config/index.ts`
438
+ - [ ] Update `src/types/config.schema.ts` with GitLab options
439
+ - [ ] Add required dependencies to `package.json`
440
+
441
+ #### Phase 2: Core Implementation
442
+
443
+ - [ ] Implement authentication in `GitLabService.ts`
444
+ - [ ] Add API methods for issues, PRs, projects
445
+ - [ ] Create error handling utilities
446
+ - [ ] Add logging using existing `logger` utility
447
+
448
+ #### Phase 3: Integration
449
+
450
+ - [ ] Create CLI command in `src/commands/gitlab.ts`
451
+ - [ ] Add command to main program in `src/index.ts`
452
+ - [ ] Update configuration loader to support GitLab settings
453
+ - [ ] Add validation for GitLab-specific config
454
+
455
+ #### Phase 4: Testing & Documentation
456
+
457
+ - [ ] Write unit tests for GitLabService
458
+ - [ ] Add integration tests
459
+ - [ ] Update README.md with GitLab usage examples
460
+ - [ ] Add JSDoc comments to all public methods
461
+ ```
462
+
463
+ ### 6. Edge Cases & Considerations
464
+
465
+ #### Edge Cases to Handle
466
+
467
+ 1. **[Edge Case 1]**: [What should happen in this scenario?]
468
+ 2. **[Edge Case 2]**: [What should happen in this scenario?]
469
+ 3. **[Edge Case 3]**: [What should happen in this scenario?]
470
+
471
+ #### Potential Challenges
472
+
473
+ - ⚠️ **[Challenge 1]**: [Description and how to address it]
474
+ - ⚠️ **[Challenge 2]**: [Description and how to address it]
475
+
476
+ #### Security Considerations
477
+
478
+ - [Any security implications or requirements]
479
+ - [Authentication/authorization requirements]
480
+ - [Data validation and sanitization]
481
+ - [Sensitive data handling]
482
+
483
+ ### 7. Technical Considerations
484
+
485
+ #### Dependencies
486
+
487
+ - `package-name@^1.0.0` - [Why this dependency is needed]
488
+ - `another-package@^2.0.0` - [Why this dependency is needed]
489
+
490
+ #### Configuration Changes
491
+
492
+ - Add new fields to `hublaunch.config.js`:
493
+ ```typescript
494
+ gitlabToken?: string;
495
+ gitlabUrl?: string; // Default: gitlab.com
496
+ ```
497
+
498
+ #### Environment Variables
499
+
500
+ - `GITLAB_TOKEN` - [Description and how to obtain]
501
+ - `GITLAB_API_URL` - [Optional, defaults to...]
502
+
503
+ #### API Rate Limiting
504
+
505
+ - [How rate limits will be handled]
506
+ - [Caching strategy if applicable]
507
+ - [Retry logic and backoff]
508
+
509
+ #### Error Handling Strategies
510
+
511
+ - Use existing `logger.error()` for user-facing errors
512
+ - Throw typed errors that can be caught by command handlers
513
+ - Provide helpful error messages with actionable guidance
514
+
515
+ ### 8. Testing Requirements
516
+
517
+ #### Unit Tests
518
+
519
+ - [ ] Test [specific functionality 1]
520
+ - [ ] Test [specific functionality 2]
521
+ - [ ] Test error handling for [scenario]
522
+ - [ ] Test edge case: [specific scenario]
523
+ - [ ] Mock external API calls appropriately
524
+
525
+ #### Integration Tests
526
+
527
+ - [ ] Test [end-to-end scenario 1]
528
+ - [ ] Test [end-to-end scenario 2]
529
+ - [ ] Test integration with existing commands
530
+ - [ ] Test configuration loading
531
+
532
+ #### Manual Testing Checklist
533
+
534
+ 1. **Setup**: [What needs to be configured]
535
+ 2. **Test Case 1**: [Step-by-step instructions]
536
+ - Expected result: [What should happen]
537
+ 3. **Test Case 2**: [Step-by-step instructions]
538
+ - Expected result: [What should happen]
539
+ 4. **Edge Case Testing**: [Scenarios to manually verify]
540
+
541
+ #### Test Data Requirements
542
+
543
+ - [What test data or fixtures are needed]
544
+ - [Mock data structures]
545
+ - [Test account requirements if applicable]
546
+
547
+ ### 9. Documentation Updates
548
+
549
+ #### User-Facing Documentation
550
+
551
+ - [ ] Update README.md with:
552
+ - New command usage examples
553
+ - Configuration options
554
+ - Environment variable requirements
555
+ - [ ] Update relevant docs/ pages if applicable
556
+ - [ ] Add examples for common use cases
557
+
558
+ #### Code Documentation
559
+
560
+ - [ ] Add JSDoc comments to all public functions
561
+ - [ ] Add inline comments for complex logic
562
+ - [ ] Document any new configuration options
563
+ - [ ] Update TypeScript types with descriptive comments
564
+
565
+ #### Examples to Include
566
+
567
+ ```bash
568
+ # Example 1: Basic usage
569
+ hula [command] [options]
570
+
571
+ # Example 2: With configuration
572
+ hula [command] --option=value
573
+ ```
574
+
575
+ ### 10. Acceptance Criteria
576
+
577
+ Clear, testable criteria that define "done". Each criterion should be specific and measurable:
578
+
579
+ - [ ] **AC1**: [Specific, measurable criterion - e.g., "User can run `hula command` and see expected output"]
580
+ - [ ] **AC2**: [Another specific criterion - e.g., "Error messages are clear and actionable"]
581
+ - [ ] **AC3**: [Testing criterion - e.g., "All unit tests pass with >80% coverage"]
582
+ - [ ] **AC4**: [Performance criterion - e.g., "Command completes in <2 seconds"]
583
+ - [ ] **AC5**: [Documentation criterion - e.g., "README includes usage examples"]
584
+ - [ ] **AC6**: [User-facing criterion - e.g., "User can configure via config file or environment variables"]
585
+
586
+ #### Definition of Done
587
+
588
+ - All acceptance criteria met
589
+ - All tests passing
590
+ - Code reviewed and approved
591
+ - Documentation updated
592
+ - No breaking changes (or properly documented/migrated)
593
+
594
+ ### 11. Dependencies & Related Work
595
+
596
+ #### Dependencies
597
+
598
+ - [ ] Depends on: [List any issues or PRs this depends on]
599
+ - [ ] Required external setup: [Any external services or accounts needed]
600
+
601
+ #### Blockers
602
+
603
+ - [ ] [Anything blocking this work from starting]
604
+
605
+ #### Related Issues/PRs
606
+
607
+ - Related to #[issue-number]
608
+ - Fixes #[issue-number] (if applicable)
609
+ - See also: [Link to related discussion or documentation]
610
+
611
+ ## Writing Guidelines for Plans
612
+
613
+ ### Be Specific, Not Vague
614
+
615
+ ❌ **Bad**: "Improve performance"
616
+ ✅ **Good**: "Reduce API response time from 2s to <500ms by implementing caching"
617
+
618
+ ❌ **Bad**: "Add error handling"
619
+ ✅ **Good**: "Catch network errors and show user-friendly message: 'Could not connect to GitHub. Check your internet connection and try again.'"
620
+
621
+ ❌ **Bad**: "Update the service"
622
+ ✅ **Good**: "Update `GitHubService.ts` to add `listProjectIssues()` method that calls GitHub Projects V2 API"
623
+
624
+ ### Be Explicit About What Should Happen
625
+
626
+ - State exactly what should happen, step by step
627
+ - Specify file paths, function names, variable names when relevant
628
+ - Don't leave room for interpretation or assumptions
629
+ - Include the "why" behind technical decisions
630
+
631
+ ### Provide Context
632
+
633
+ - Explain why this change is needed
634
+ - Reference existing patterns to follow in the codebase
635
+ - Link to related code, issues, or documentation
636
+ - Mention what should NOT change
637
+
638
+ ### Define Success Clearly
639
+
640
+ - Use measurable acceptance criteria
641
+ - Specify observable outcomes
642
+ - Include both user-facing and technical success metrics
643
+ - Define what "done" looks like
644
+
645
+ ## Code Style Guidelines
646
+
647
+ When suggesting code patterns or examples:
648
+
649
+ - Use TypeScript with strict types
650
+ - Follow existing patterns in the codebase
651
+ - Use async/await for asynchronous operations
652
+ - Include comprehensive error handling with typed errors
653
+ - Add JSDoc comments for all exported functions
654
+ - Use the existing `logger` utility for all logging
655
+ - Prefer composition over inheritance
656
+ - Keep functions small and focused (single responsibility)
657
+ - Use descriptive variable and function names
658
+
659
+ ## File Organization
660
+
661
+ HubLaunch structure:
662
+
663
+ ```
664
+ src/
665
+ ├── commands/ # CLI commands
666
+ ├── services/ # Business logic
667
+ │ ├── github/ # GitHub integration
668
+ │ ├── git/ # Git operations
669
+ │ └── logs/ # Logging services
670
+ ├── types/ # TypeScript schemas
671
+ └── utils/ # Helper functions
672
+ ```
673
+
674
+ ## Output Format
675
+
676
+ - Use markdown formatting
677
+ - Include code blocks with language tags
678
+ - Use task lists (- [ ]) for actionable items
679
+ - Add **Priority** labels: Critical/High/Medium/Low
680
+ - Include estimated complexity: Simple/Medium/Complex
681
+ - Reference related issues/PRs if known
682
+
683
+ ## Final Reminders
684
+
685
+ 1. **ASK, DON'T ASSUME**: When in doubt, ASK. Always ask. Never proceed with uncertainty.
686
+
687
+ - Prefer asking 5-10 clarifying questions over making any assumptions
688
+ - No question is too basic if it clarifies requirements
689
+
690
+ 2. **CLARITY FIRST**: Spend time getting clarity upfront
691
+
692
+ - A well-clarified plan saves hours of rework
693
+ - Ambiguity leads to incorrect implementations
694
+ - It's better to over-communicate than under-communicate
695
+
696
+ 3. **SIX-PHASE APPROACH**: Always follow the phases
697
+
698
+ - Phase 1: Ask questions and STOP
699
+ - Phase 2: Confirm understanding and WAIT
700
+ - Phase 3: Create DRAFT plan
701
+ - Phase 4: Save the plan file immediately
702
+ - Phase 5: Auto-continue to validation in the same session
703
+ - Phase 6: Inline validation (replaces separate `/hula-confirm`; the standalone command remains available)
704
+
705
+ 4. **PLAN FOR REMOTE COPILOT**: The plan must be self-contained
706
+
707
+ - Remote GitHub Copilot has NO access to our conversation
708
+ - Every detail discussed must be IN the plan document
709
+ - Assume the reader knows nothing about our discussion
710
+ - Include ALL context, decisions, and reasoning
711
+ - Be explicit, not implicit - no assumed knowledge
712
+
713
+ 5. **BE SPECIFIC**: Avoid vague language
714
+
715
+ - Name specific files, functions, and components
716
+ - Use measurable criteria (time, count, behavior)
717
+ - Describe exact expected behavior
718
+ - Include code examples for complex logic
719
+
720
+ 6. **THINK HOLISTICALLY**:
721
+
722
+ - Consider backward compatibility and breaking changes
723
+ - Think about error scenarios and edge cases
724
+ - Include testing strategy alongside implementation
725
+ - Reference existing code patterns to maintain consistency
726
+
727
+ 7. **CLI-FIRST MINDSET**:
728
+
729
+ - Remember this is a CLI tool (no GUI)
730
+ - Consider terminal output formatting
731
+ - Think about interactive vs non-interactive modes
732
+ - Plan for helpful error messages and logging
733
+
734
+ 8. **MAKE IT ACTIONABLE**:
735
+
736
+ - Plans should be ready for immediate implementation
737
+ - Include enough detail that a developer doesn't need to guess
738
+ - Provide examples where helpful
739
+ - Reference similar existing code when possible
740
+
741
+ 9. **CREATE DRAFT, NOT FINAL**:
742
+
743
+ - Generate comprehensive DRAFT plans in Phase 4
744
+ - Save the plan immediately (don't wait for approval)
745
+ - Validation happens inline in Phase 5 (same session, same workflow as `/hula-confirm`)
746
+ - Focus on being thorough, not perfect
747
+
748
+ 10. **STANDALONE DOCUMENTATION**:
749
+ - Plan should read like complete technical documentation
750
+ - Include background, context, and rationale
751
+ - Explain WHY, not just WHAT
752
+ - No references to "as we discussed" or "mentioned earlier"