hub-launch 1.11.0 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.11.1] - 2026-07-09
11
+
12
+ ### Added
13
+
14
+ - Offer to launch automatically after plan validation completes, so you can go straight from a validated plan into a run without a separate step.
15
+
10
16
  ## [1.11.0] - 2026-07-08
11
17
 
12
18
  ### Added
package/README.md CHANGED
@@ -100,6 +100,9 @@ The primary use case is AI-assisted issue development via the hula-project serve
100
100
  ```bash
101
101
  # 1. Plan the feature
102
102
  # Validation runs automatically in the same session after the plan is saved.
103
+ # When validation finishes, the assistant offers to launch right away with a
104
+ # default issue name derived from the plan (reply "yes" to launch, or decline
105
+ # and run /hula-launch <name> yourself later).
103
106
  /hula-plan Add password reset support
104
107
 
105
108
  # 2. Upload the plan to origin/main
@@ -240,6 +240,7 @@ After generating and saving the draft plan file (following Phase 6 below), infor
240
240
  3. **Execute validation inline**: Read `.hublaunch/proceed-instructions.md` and run the full validation workflow against the plan file you just saved
241
241
  4. **Skip the file-location guard**: The plan path is already known from this session — do not ask "Is this correct?"
242
242
  5. **Carry forward context**: Use everything learned during planning to resolve validation questions where possible
243
+ 6. **Offer the launch**: After validation completes, follow the "Launch Offer" section of `.hublaunch/proceed-instructions.md` — determine the issue name, ask the launch question, and on an affirmative reply execute the `/hula-launch` workflow. Never launch without an affirmative reply.
243
244
 
244
245
  **Output format after saving the plan file:**
245
246
 
@@ -700,7 +701,7 @@ src/
700
701
  - Phase 3: Create DRAFT plan
701
702
  - Phase 4: Save the plan file immediately
702
703
  - 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
+ - Phase 6: Inline validation (replaces separate `/hula-confirm`; the standalone command remains available) — ends with the Launch Offer (see `.hublaunch/proceed-instructions.md`)
704
705
 
705
706
  4. **PLAN FOR AI IMPLEMENTATION**: The plan must be self-contained
706
707
 
@@ -305,9 +305,66 @@ R2. Do another validation pass? (A: Yes / B: No, complete)
305
305
  - ✅ Testing strategy
306
306
  - ✅ User approved
307
307
 
308
- **Next step:** Run `/hula-launch <branch-name>` to create a GitHub issue and start AI-assisted implementation.
308
+ 🚀 Are you ready to launch? (Unless you tell me otherwise, I'll use the issue name `<issueName>`.)
309
309
  ```
310
310
 
311
+ The `🚀 Are you ready to launch?` line is not a static message — it begins the **Launch Offer** procedure below. Resolve `<issueName>`, ask the question, and act on the reply as specified next.
312
+
313
+ ## Launch Offer
314
+
315
+ After the Completion Format block is printed, offer to launch the plan for the user instead of leaving them to run `/hula-launch` by hand. This turns the usual next step (plan → launch) into a single confirmation.
316
+
317
+ **⚠️ Launching is an outward-facing action** — it creates a GitHub issue and starts a cloud implementation run. **Never launch without a clear affirmative reply from the user.** Silence, an ambiguous reply, or the end of the session must never trigger a launch.
318
+
319
+ ### 1. Resolve the issue name
320
+
321
+ Determine `<issueName>` before asking the question:
322
+
323
+ 1. **Look for a name the user specified** anywhere in this conversation — e.g. "use the branch name `foo`", "call the issue `bar`", or a name passed in the original `/hula-plan` arguments. If more than one was mentioned, **the most recent wins**. Use that name verbatim (kebab-case it if needed).
324
+ 2. **Otherwise derive the default from the plan file's basename** (the subfolder is never part of the name):
325
+ - Strip the leading timestamp prefix matching `YYYY-MM-DD-HH:MM-` and the trailing `.md`.
326
+ - The remaining text is the title slug (e.g. `auto-launch-offer-after-plan`).
327
+ - If the slug is **longer than 3 words**, shorten it to the 2–3 most distinctive words (e.g. `auto-launch-offer-after-plan` → `auto-launch`). Otherwise keep it as-is.
328
+ - Always **kebab-case** (lowercase words joined by hyphens), never camelCase — these become git branch names.
329
+ - Example: `.hublaunch/plans/skills/2026-07-09-14:28-auto-launch-offer-after-plan.md` → slug `auto-launch-offer-after-plan` → `<issueName>` = `auto-launch`.
330
+
331
+ ### 2. Ask the launch question
332
+
333
+ Ask exactly this (as a literal line), substituting the resolved name for `<issueName>`:
334
+
335
+ ```
336
+ 🚀 Are you ready to launch? (Unless you tell me otherwise, I'll use the issue name `<issueName>`.)
337
+ ```
338
+
339
+ Then **STOP and wait** for the user's reply. Do not launch until they answer.
340
+
341
+ ### 3. Interpret the reply
342
+
343
+ | Reply | Action |
344
+ |---|---|
345
+ | Affirmative ("yes", "go", "launch", 👍, etc.) with no other content | Launch with `<issueName>`. |
346
+ | Affirmative **with a different name** (e.g. "yes, but call it `payment-fix`") | Launch with the new name instead. |
347
+ | Just a bare name (e.g. "`payment-fix`") | Treat as affirmative supplying the name — launch with that name. |
348
+ | Reply contains `--handoff <username>` and/or `--test` | Pass those flags through to the launch. |
349
+ | Negative or deferring ("no", "not yet", "later") | Print the fallback message below and **stop** — do not launch. |
350
+ | Ambiguous (neither clearly yes nor no) | Ask once more for a clear yes/no; still never launch without a clear affirmative. |
351
+
352
+ **Fallback message** (print verbatim, substituting `<issueName>`) when the user declines or defers:
353
+
354
+ ```
355
+ 👍 No problem. When you're ready, run `/hula-launch <issueName>` (or any name you prefer).
356
+ ```
357
+
358
+ ### 4. Execute the launch
359
+
360
+ On a clear affirmative, read `.agents/skills/hula-launch/SKILL.md` and execute its workflow with the arguments `<issueName> <planPath>` (plus any `--handoff`/`--test` flags from the reply). Pass the plan path explicitly — it is known in this session — rather than relying on chat-history extraction.
361
+
362
+ All error handling, JSON output parsing, and result display come from the `hula-launch` skill's own Steps 2–3. Do **not** duplicate or re-implement them. Launch failures (branch already exists, plan missing on origin, etc.) are reported by the launch script's JSON output and displayed per that skill; do **not** auto-retry.
363
+
364
+ ### Note
365
+
366
+ The user may always run `/hula-launch <branch-name>` explicitly instead — that path is unchanged. The launch offer is a convenience, not a replacement.
367
+
311
368
  ## Common Validation Patterns
312
369
 
313
370
  ### Pattern: Missing API Details
@@ -449,5 +506,6 @@ Plan says: "Add deployment preview feature using the API we discussed"
449
506
  - **Preserve content** - enhance, don't replace
450
507
  - **Iterate if needed** - refinement is a process
451
508
  - **Ensure readiness** - plan must stand alone for AI implementation
509
+ - **Offer the launch** - after completion, resolve the issue name and ask the launch question; never launch without an affirmative reply
452
510
 
453
511
  The goal is to ensure every plan can be successfully implemented by an AI agent without any clarification questions.
@@ -293,9 +293,11 @@ After updating the plan:
293
293
  - ✅ Edge case coverage
294
294
  - ✅ Testing strategy
295
295
 
296
- **Next step:** Run `/hula-launch <branch-name>` to create the GitHub issue and start the AI-assisted implementation pipeline.
296
+ 🚀 Are you ready to launch? (Unless you tell me otherwise, I'll use the issue name `<issueName>`.)
297
297
  ```
298
298
 
299
+ Then follow the **Launch Offer** section of `.hublaunch/proceed-instructions.md`: resolve `<issueName>`, ask the launch question, and on an affirmative reply execute the `/hula-launch` workflow with `<issueName> <planPath>` (plus any `--handoff`/`--test` flags). Never launch without an affirmative reply; on a negative or deferring reply, print the fallback message and stop.
300
+
299
301
  ## Important Guidelines
300
302
 
301
303
  ### Auto-Fix Capability
@@ -144,5 +144,6 @@ Read `.hublaunch/proceed-instructions.md` and execute the full validation workfl
144
144
  > ⚠️ Auto-validation could not complete. Run `/hula-confirm <path>` to resume.
145
145
 
146
146
  where `<path>` is the plan file path.
147
+ - **Finish with the Launch Offer** — after validation completes, execute the "Launch Offer" section of `.hublaunch/proceed-instructions.md` (issue-name resolution, the launch question, and launching on an affirmative reply). Never launch without an affirmative reply.
147
148
 
148
- **Note:** The plan is saved locally. When you run `/hula-launch`, the plan is automatically synced to `origin/main` before the GitHub issue is created and the implementation begins — no separate upload step needed. `/hula-confirm` remains available as a standalone command for re-validation at any time.
149
+ **Note:** The plan is saved locally. When you run `/hula-launch`, the plan is automatically synced to `origin/main` before the GitHub issue is created and the implementation begins — no separate upload step needed. Because validation ends with the Launch Offer, an affirmative reply runs the `/hula-launch` workflow for the user automatically; they can also decline and run `/hula-launch` themselves later. `/hula-confirm` remains available as a standalone command for re-validation at any time.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hub-launch",
3
- "version": "1.11.0",
3
+ "version": "1.11.1",
4
4
  "description": "GitHub Issue and PR automation CLI tool with plugin/hook system for project-specific customizations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",