jettypod 4.4.39 → 4.4.40
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/package.json
CHANGED
|
@@ -84,14 +84,36 @@ jettypod work start [chore-id]
|
|
|
84
84
|
|
|
85
85
|
This creates a worktree at `.jettypod-work/[id]-[title-slug]` and switches to a new branch.
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
**🛑 VALIDATION REQUIRED:** After running `work start`, verify the worktree was created:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
sqlite3 .jettypod/work.db "SELECT worktree_path FROM worktrees WHERE work_item_id = [chore-id] AND status = 'active'"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
| Result | What it means | Action |
|
|
94
|
+
|--------|---------------|--------|
|
|
95
|
+
| **Has a path** | ✅ Worktree created successfully | Continue to Step 3 |
|
|
96
|
+
| **Empty/no rows** | ❌ Worktree creation failed | **STOP - check the error output from `work start` and resolve before continuing** |
|
|
97
|
+
|
|
98
|
+
**Display (on success):**
|
|
88
99
|
|
|
89
100
|
```
|
|
90
101
|
📁 Worktree created: .jettypod-work/[id]-[title-slug]
|
|
91
102
|
Branch: chore-[id]-[title-slug]
|
|
92
103
|
```
|
|
93
104
|
|
|
94
|
-
**
|
|
105
|
+
**Display (on failure):**
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
❌ Worktree creation failed. Check:
|
|
109
|
+
- Are there uncommitted changes? Run: git status
|
|
110
|
+
- Does the branch already exist? Run: git branch -a | grep [chore-id]
|
|
111
|
+
- Is there a worktree conflict? Run: git worktree list
|
|
112
|
+
|
|
113
|
+
Resolve the issue before continuing.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Move to Step 3 only if worktree was created successfully.**
|
|
95
117
|
|
|
96
118
|
### Step 3: Establish Test Baseline
|
|
97
119
|
|
|
@@ -449,10 +449,40 @@ Multiple step definitions match
|
|
|
449
449
|
**If validation succeeds:**
|
|
450
450
|
Display: "✅ BDD infrastructure validated - all steps have definitions"
|
|
451
451
|
|
|
452
|
-
**Proceed to Step
|
|
452
|
+
**Proceed to Step 6.6.**
|
|
453
453
|
|
|
454
454
|
**Note:** Unit tests are created during speed mode implementation, not during feature planning. Feature planning focuses on BDD scenarios (user experience); speed mode handles unit tests (implementation details).
|
|
455
455
|
|
|
456
|
+
### Step 6.6: Commit BDD Files to Main
|
|
457
|
+
|
|
458
|
+
**CRITICAL:** The BDD files must be committed to main BEFORE creating worktrees. If you skip this step, worktrees won't have the scenario files and speed-mode will fail.
|
|
459
|
+
|
|
460
|
+
**Commit the BDD files:**
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
git add features/${FEATURE_SLUG}.feature features/steps/${FEATURE_SLUG}.* features/step_definitions/${FEATURE_SLUG}.*
|
|
464
|
+
git commit -m "test: Add BDD scenarios for ${FEATURE_TITLE}
|
|
465
|
+
|
|
466
|
+
- Feature file: features/${FEATURE_SLUG}.feature
|
|
467
|
+
- Step definitions for speed mode scenarios"
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Replace `${FEATURE_SLUG}` and `${FEATURE_TITLE}` with actual values. Example:
|
|
471
|
+
```bash
|
|
472
|
+
git add features/email-password-login.feature features/steps/email-password-login.* features/step_definitions/email-password-login.*
|
|
473
|
+
git commit -m "test: Add BDD scenarios for Email Password Login
|
|
474
|
+
|
|
475
|
+
- Feature file: features/email-password-login.feature
|
|
476
|
+
- Step definitions for speed mode scenarios"
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Why this matters:**
|
|
480
|
+
- Worktrees are created from the current branch (usually main)
|
|
481
|
+
- If BDD files aren't committed, they won't exist in the worktree
|
|
482
|
+
- Speed-mode will fail trying to run tests against non-existent files
|
|
483
|
+
|
|
484
|
+
**Proceed to Step 7.**
|
|
485
|
+
|
|
456
486
|
### Step 7: Propose Speed Mode Chores
|
|
457
487
|
|
|
458
488
|
**CRITICAL:** After BDD validation passes, analyze the codebase and propose technical implementation chores. **DO NOT CREATE CHORES YET** - the feature must transition to implementation mode first (Step 8).
|
|
@@ -538,30 +568,9 @@ Does this rationale capture why you chose this approach? (You can edit it if nee
|
|
|
538
568
|
|
|
539
569
|
**WAIT for user to confirm or provide edited rationale.**
|
|
540
570
|
|
|
541
|
-
#### Step 8B:
|
|
542
|
-
|
|
543
|
-
**CRITICAL: After user confirms, use Bash tool to EXECUTE the work implement command:**
|
|
571
|
+
#### Step 8B: Create the Chores
|
|
544
572
|
|
|
545
|
-
|
|
546
|
-
jettypod work implement ${FEATURE_ID} \
|
|
547
|
-
--winner="[approach-name or prototypes/winner-file]" \
|
|
548
|
-
--rationale="[user's confirmed/edited rationale]"
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
Replace `${FEATURE_ID}` with actual ID. Example:
|
|
552
|
-
```bash
|
|
553
|
-
jettypod work implement 42 --winner="Simple inline form" --rationale="Fastest UX, cleanest implementation"
|
|
554
|
-
```
|
|
555
|
-
|
|
556
|
-
**DO NOT display this as example text. EXECUTE IT using the Bash tool.**
|
|
557
|
-
|
|
558
|
-
**If the command fails**, check the error message:
|
|
559
|
-
- "Feature not found" → Verify the feature ID
|
|
560
|
-
- "Already in implementation" → Feature was already transitioned, proceed to Step 8C
|
|
561
|
-
|
|
562
|
-
#### Step 8C: Create the Chores
|
|
563
|
-
|
|
564
|
-
**CRITICAL: NOW create the chores.** The feature has transitioned to implementation mode, so chore creation will succeed.
|
|
573
|
+
**CRITICAL: Create chores BEFORE running `work implement`.** The system validates that chores exist before allowing the transition.
|
|
565
574
|
|
|
566
575
|
For each chore that the user confirmed in Step 7, use the Bash tool to create it:
|
|
567
576
|
|
|
@@ -574,10 +583,6 @@ Replace `${FEATURE_ID}` with actual ID. Example:
|
|
|
574
583
|
jettypod work create chore "Set up auth routes" "Create login/logout endpoints..." --parent=42
|
|
575
584
|
```
|
|
576
585
|
|
|
577
|
-
**If chore creation fails**, check:
|
|
578
|
-
- "Parent not found" → Verify the feature ID
|
|
579
|
-
- "Parent not in implementation phase" → Run Step 8B first
|
|
580
|
-
|
|
581
586
|
**CRITICAL: Copy the EXACT proposal from Step 7 into each chore description.** Do not paraphrase or summarize - the implementation guidance must be preserved verbatim:
|
|
582
587
|
|
|
583
588
|
```
|
|
@@ -595,7 +600,29 @@ Verification:
|
|
|
595
600
|
• [EXACT step definitions from Step 7]
|
|
596
601
|
```
|
|
597
602
|
|
|
598
|
-
|
|
603
|
+
#### Step 8C: Execute Transition
|
|
604
|
+
|
|
605
|
+
**After ALL chores are created, use Bash tool to EXECUTE the work implement command:**
|
|
606
|
+
|
|
607
|
+
```bash
|
|
608
|
+
jettypod work implement ${FEATURE_ID} \
|
|
609
|
+
--winner="[approach-name or prototypes/winner-file]" \
|
|
610
|
+
--rationale="[user's confirmed/edited rationale]"
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Replace `${FEATURE_ID}` with actual ID. Example:
|
|
614
|
+
```bash
|
|
615
|
+
jettypod work implement 42 --winner="Simple inline form" --rationale="Fastest UX, cleanest implementation"
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
**DO NOT display this as example text. EXECUTE IT using the Bash tool.**
|
|
619
|
+
|
|
620
|
+
**If the command fails**, check the error message:
|
|
621
|
+
- "Feature not found" → Verify the feature ID
|
|
622
|
+
- "No chores exist" → You skipped Step 8B - go back and create chores first
|
|
623
|
+
- "Already in implementation" → Feature was already transitioned, proceed to Step 8D
|
|
624
|
+
|
|
625
|
+
After successful transition, display:
|
|
599
626
|
|
|
600
627
|
```
|
|
601
628
|
✅ Feature transitioned to implementation phase
|
|
@@ -648,15 +675,39 @@ End feature-planning skill without starting a chore. Do NOT invoke speed-mode.
|
|
|
648
675
|
jettypod work start [chore-id]
|
|
649
676
|
```
|
|
650
677
|
|
|
651
|
-
|
|
678
|
+
**🛑 STOP AND CHECK:** Look at the output of `work start`. You should see:
|
|
679
|
+
```
|
|
680
|
+
✅ Created worktree: /path/to/.jettypod-work/[id]-[title-slug]
|
|
681
|
+
Branch: feature/work-[id]-[title-slug]
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
**If you see `⚠️ Working in main repository (worktree creation failed)`:**
|
|
685
|
+
- **DO NOT proceed to speed-mode**
|
|
686
|
+
- Investigate why worktree failed (uncommitted changes? branch conflict?)
|
|
687
|
+
- Fix the issue and re-run `work start`
|
|
688
|
+
- Only continue after seeing `✅ Created worktree`
|
|
689
|
+
|
|
690
|
+
**Step 2: Verify worktree exists before invoking speed-mode:**
|
|
691
|
+
```bash
|
|
692
|
+
sqlite3 .jettypod/work.db "SELECT worktree_path FROM worktrees WHERE work_item_id = [chore-id] AND status = 'active'"
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
If this returns empty/no rows, **STOP** - the worktree wasn't created properly.
|
|
696
|
+
|
|
697
|
+
**Step 3: State the chore ID clearly in your response:**
|
|
652
698
|
> "I'll start implementing Chore #[id]: [title]"
|
|
653
699
|
|
|
654
|
-
**Step
|
|
700
|
+
**Step 4: IMMEDIATELY invoke speed-mode using the Skill tool:**
|
|
655
701
|
```
|
|
656
702
|
Use the Skill tool with skill: "speed-mode"
|
|
657
703
|
```
|
|
658
704
|
|
|
659
|
-
**🛑 CRITICAL:** You MUST
|
|
705
|
+
**🛑 CRITICAL:** You MUST:
|
|
706
|
+
1. Run `work start` first
|
|
707
|
+
2. Verify the worktree was created (not fallback to main)
|
|
708
|
+
3. THEN invoke speed-mode using the Skill tool
|
|
709
|
+
|
|
710
|
+
If you skip `work start` or proceed when worktree creation failed, the merge workflow will break later.
|
|
660
711
|
|
|
661
712
|
**Feature-planning skill is now complete.** Speed-mode takes over and handles the implementation.
|
|
662
713
|
|
|
@@ -48,6 +48,39 @@ When this skill is activated, you are helping implement a speed mode chore to ma
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
+
## 🛑 PRE-FLIGHT VALIDATION (REQUIRED)
|
|
52
|
+
|
|
53
|
+
**Before proceeding with ANY implementation, you MUST validate the worktree exists.**
|
|
54
|
+
|
|
55
|
+
Run this query FIRST:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.status, wt.worktree_path, wt.branch_name FROM work_items wi LEFT JOIN worktrees wt ON wi.id = wt.work_item_id WHERE wi.status = 'in_progress' AND wi.type = 'chore'"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Check the result:**
|
|
62
|
+
|
|
63
|
+
| worktree_path | What it means | Action |
|
|
64
|
+
|---------------|---------------|--------|
|
|
65
|
+
| **Has a path** (e.g., `/path/to/.jettypod-work/...`) | ✅ Worktree exists, ready to proceed | Continue to Step 0 |
|
|
66
|
+
| **NULL or empty** | ❌ `work start` was not called | **STOP - run `jettypod work start [chore-id]` first** |
|
|
67
|
+
| **No rows returned** | ❌ No chore is in progress | **STOP - verify the chore exists and run `work start`** |
|
|
68
|
+
|
|
69
|
+
**🛑 STOP GATE:** If `worktree_path` is NULL or no rows returned, you MUST run `jettypod work start [chore-id]` before continuing. DO NOT proceed without a valid worktree.
|
|
70
|
+
|
|
71
|
+
**Example of valid output:**
|
|
72
|
+
```
|
|
73
|
+
4|Add nav link|in_progress|/Users/erik/project/.jettypod-work/4-add-nav-link|feature/work-4-add-nav-link
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Example of INVALID output (missing worktree):**
|
|
77
|
+
```
|
|
78
|
+
4|Add nav link|in_progress||
|
|
79
|
+
```
|
|
80
|
+
↑ Empty worktree_path means `work start` was never called. Run it now.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
51
84
|
### Overview
|
|
52
85
|
|
|
53
86
|
**Speed Mode Goal:** Make it work - implement ALL functionality (integration + required + optional features) to make success scenarios pass, assuming everything works correctly.
|
|
@@ -52,6 +52,39 @@ When this skill is activated, you are helping implement a stable mode chore to a
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
+
## 🛑 PRE-FLIGHT VALIDATION (REQUIRED)
|
|
56
|
+
|
|
57
|
+
**Before proceeding with ANY implementation, you MUST validate the worktree exists.**
|
|
58
|
+
|
|
59
|
+
Run this query FIRST:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.status, wt.worktree_path, wt.branch_name FROM work_items wi LEFT JOIN worktrees wt ON wi.id = wt.work_item_id WHERE wi.status = 'in_progress' AND wi.type = 'chore'"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Check the result:**
|
|
66
|
+
|
|
67
|
+
| worktree_path | What it means | Action |
|
|
68
|
+
|---------------|---------------|--------|
|
|
69
|
+
| **Has a path** (e.g., `/path/to/.jettypod-work/...`) | ✅ Worktree exists, ready to proceed | Continue to Step 0 |
|
|
70
|
+
| **NULL or empty** | ❌ `work start` was not called | **STOP - run `jettypod work start [chore-id]` first** |
|
|
71
|
+
| **No rows returned** | ❌ No chore is in progress | **STOP - verify the chore exists and run `work start`** |
|
|
72
|
+
|
|
73
|
+
**🛑 STOP GATE:** If `worktree_path` is NULL or no rows returned, you MUST run `jettypod work start [chore-id]` before continuing. DO NOT proceed without a valid worktree.
|
|
74
|
+
|
|
75
|
+
**Example of valid output:**
|
|
76
|
+
```
|
|
77
|
+
4|Add error handling|in_progress|/Users/erik/project/.jettypod-work/4-add-error-handling|feature/work-4-add-error-handling
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Example of INVALID output (missing worktree):**
|
|
81
|
+
```
|
|
82
|
+
4|Add error handling|in_progress||
|
|
83
|
+
```
|
|
84
|
+
↑ Empty worktree_path means `work start` was never called. Run it now.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
55
88
|
### Overview
|
|
56
89
|
|
|
57
90
|
**Stable Mode Goal:** Transform speed mode's "make it work" implementation into robust, reliable code with comprehensive error handling and validation.
|