jettypod 4.4.12 → 4.4.13
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
|
@@ -183,7 +183,48 @@ User picks winner. Note their choice - you'll record it formally in Step 8 when
|
|
|
183
183
|
|
|
184
184
|
**Proceed to Step 6.**
|
|
185
185
|
|
|
186
|
-
### Step 6:
|
|
186
|
+
### Step 6: Define Integration Contract AND Generate BDD Scenarios
|
|
187
|
+
|
|
188
|
+
**CRITICAL:** Before writing scenarios, you MUST define how users reach this feature. Features that pass tests but aren't integrated into the product are useless.
|
|
189
|
+
|
|
190
|
+
#### Step 6A: Define Integration Contract
|
|
191
|
+
|
|
192
|
+
**Ask yourself and document:**
|
|
193
|
+
|
|
194
|
+
1. **Entry Point** - How does a user reach this feature?
|
|
195
|
+
- Web: URL/route (e.g., `/login`, `/dashboard/settings`)
|
|
196
|
+
- CLI: Command (e.g., `jettypod backlog`)
|
|
197
|
+
- UI: Button, link, menu item (e.g., "Login button in header")
|
|
198
|
+
- API: Endpoint that exposes this (e.g., `POST /api/auth/login`)
|
|
199
|
+
|
|
200
|
+
2. **Caller Code** - What existing code must invoke/import the new feature?
|
|
201
|
+
- Which file imports it (e.g., `src/app/layout.tsx`)
|
|
202
|
+
- Which component/function renders or calls it
|
|
203
|
+
- Where it's registered/mounted (e.g., router config, command registry)
|
|
204
|
+
|
|
205
|
+
3. **Integration Scenario** - A BDD scenario proving the feature is reachable
|
|
206
|
+
- Must start from an existing entry point users can access
|
|
207
|
+
- Must navigate/invoke to reach the new feature
|
|
208
|
+
- Proves the feature isn't an "island"
|
|
209
|
+
|
|
210
|
+
**Display to user:**
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
📍 Integration Contract
|
|
214
|
+
|
|
215
|
+
**Entry Point:** [How users reach this feature]
|
|
216
|
+
**Caller Code:** [What existing code invokes this]
|
|
217
|
+
**Integration Test:** [Scenario proving reachability]
|
|
218
|
+
|
|
219
|
+
Example:
|
|
220
|
+
- Entry Point: `/login` route
|
|
221
|
+
- Caller Code: `src/app/layout.tsx` renders `<LoginButton>` in header, which links to `/login`
|
|
222
|
+
- Integration Test: "Given I'm on the home page, When I click 'Sign In', Then I see the login form"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**WAIT for user to confirm or adjust the integration contract.**
|
|
226
|
+
|
|
227
|
+
#### Step 6B: Generate BDD Scenarios AND Step Definitions
|
|
187
228
|
|
|
188
229
|
**CRITICAL:** BDD scenarios and step definitions must ALWAYS be created together. Never create scenarios without step definitions.
|
|
189
230
|
|
|
@@ -198,7 +239,8 @@ Based on chosen approach, generate:
|
|
|
198
239
|
**A. Scenario file** at `features/[feature-slug].feature` using Write tool:
|
|
199
240
|
|
|
200
241
|
1. **Create file** at `features/[feature-slug].feature` using Write tool
|
|
201
|
-
2. **
|
|
242
|
+
2. **FIRST scenario MUST be the Integration Scenario** from Step 6A (proves reachability)
|
|
243
|
+
3. **Include all "make it work" scenarios**:
|
|
202
244
|
- All success paths - required functionality AND optional features
|
|
203
245
|
- Multiple valid workflows if the feature supports them
|
|
204
246
|
- Success variations (different outcomes that are all correct)
|
|
@@ -239,6 +281,17 @@ Feature: [Feature Name]
|
|
|
239
281
|
Epic: [Epic name if applicable]
|
|
240
282
|
Approach: [Chosen approach name]
|
|
241
283
|
|
|
284
|
+
# Integration Contract:
|
|
285
|
+
# Entry Point: [from Step 6A]
|
|
286
|
+
# Caller Code: [from Step 6A]
|
|
287
|
+
|
|
288
|
+
# INTEGRATION SCENARIO (REQUIRED - proves feature is reachable)
|
|
289
|
+
Scenario: User can reach [feature] from [entry point]
|
|
290
|
+
Given I am on [existing entry point users can access]
|
|
291
|
+
When I [navigate/click/invoke to reach the feature]
|
|
292
|
+
Then I [see/access the feature]
|
|
293
|
+
|
|
294
|
+
# FEATURE SCENARIOS (required + optional functionality)
|
|
242
295
|
Scenario: [Core functionality - required workflow]
|
|
243
296
|
Given [initial state]
|
|
244
297
|
When [user takes main action]
|
|
@@ -250,7 +303,7 @@ Scenario: [Optional feature 1 - if applicable]
|
|
|
250
303
|
When [user uses optional feature]
|
|
251
304
|
Then [feature works correctly]
|
|
252
305
|
|
|
253
|
-
# SPEED MODE: All success scenarios above (required + optional
|
|
306
|
+
# SPEED MODE: All success scenarios above (integration + required + optional)
|
|
254
307
|
# STABLE MODE: Will add error handling, validation failures, edge cases
|
|
255
308
|
# These failure scenarios are added by stable-mode skill, NOT during feature discovery
|
|
256
309
|
```
|
|
@@ -263,6 +316,18 @@ Feature: Email/Password Login
|
|
|
263
316
|
Epic: User Authentication
|
|
264
317
|
Approach: Simple inline form
|
|
265
318
|
|
|
319
|
+
# Integration Contract:
|
|
320
|
+
# Entry Point: /login route
|
|
321
|
+
# Caller Code: src/app/layout.tsx renders LoginButton in header
|
|
322
|
+
|
|
323
|
+
# INTEGRATION SCENARIO
|
|
324
|
+
Scenario: User can reach login form from home page
|
|
325
|
+
Given I am on the home page
|
|
326
|
+
When I click the "Sign In" button in the header
|
|
327
|
+
Then I am on the login page
|
|
328
|
+
And I see the email and password fields
|
|
329
|
+
|
|
330
|
+
# FEATURE SCENARIOS
|
|
266
331
|
Scenario: User successfully logs in with valid credentials
|
|
267
332
|
Given I am on the login page
|
|
268
333
|
When I enter valid email and password
|
|
@@ -393,13 +458,19 @@ Display: "✅ BDD infrastructure validated - all steps have definitions"
|
|
|
393
458
|
**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).
|
|
394
459
|
|
|
395
460
|
**Your analysis should consider:**
|
|
396
|
-
- The BDD scenarios (all success paths
|
|
461
|
+
- The BDD scenarios (integration + all success paths)
|
|
462
|
+
- The Integration Contract from Step 6A
|
|
397
463
|
- Existing codebase structure and patterns
|
|
398
464
|
- Epic's architectural decisions (if any)
|
|
399
465
|
- Tech stack and framework conventions
|
|
400
466
|
- Which scenario steps each chore addresses
|
|
401
467
|
- Similar code patterns to follow
|
|
402
468
|
|
|
469
|
+
**REQUIRED: At least one chore MUST be an Integration Chore** that:
|
|
470
|
+
- Wires the feature into the existing app
|
|
471
|
+
- Makes the Integration Scenario pass
|
|
472
|
+
- Modifies the caller code identified in Step 6A
|
|
473
|
+
|
|
403
474
|
**Say to the user:**
|
|
404
475
|
|
|
405
476
|
```
|
|
@@ -409,7 +480,20 @@ Now let me analyze the codebase and propose implementation chores for speed mode
|
|
|
409
480
|
|
|
410
481
|
Based on the scenario and my understanding of the codebase, here are the chores I recommend for speed mode:
|
|
411
482
|
|
|
412
|
-
**Chore 1: [
|
|
483
|
+
**Chore 1: [Integration chore - wire feature into app]** ⚡ INTEGRATION
|
|
484
|
+
- Why: Makes the feature reachable from [entry point]
|
|
485
|
+
- Integration Contract:
|
|
486
|
+
• Entry point: [from Step 6A]
|
|
487
|
+
• Caller code to modify: [specific file/function]
|
|
488
|
+
- Scenario steps addressed:
|
|
489
|
+
• [Integration scenario Given/When/Then steps]
|
|
490
|
+
- Implementation guidance:
|
|
491
|
+
• Files to modify: [caller code files]
|
|
492
|
+
• What to add: [route, link, import, menu item, etc.]
|
|
493
|
+
- Verification:
|
|
494
|
+
• Integration scenario passes (feature is reachable)
|
|
495
|
+
|
|
496
|
+
**Chore 2: [Core functionality chore]**
|
|
413
497
|
- Why: [What this accomplishes toward the scenario]
|
|
414
498
|
- Scenario steps addressed:
|
|
415
499
|
• [Which Given/When/Then steps this chore makes work]
|
|
@@ -420,20 +504,9 @@ Based on the scenario and my understanding of the codebase, here are the chores
|
|
|
420
504
|
- Verification:
|
|
421
505
|
• [Which step definitions should pass]
|
|
422
506
|
|
|
423
|
-
**Chore 2: [Technical task title]**
|
|
424
|
-
- Why: [What this accomplishes]
|
|
425
|
-
- Scenario steps addressed:
|
|
426
|
-
• [Which steps]
|
|
427
|
-
- Implementation guidance:
|
|
428
|
-
• Files to create/modify: [paths]
|
|
429
|
-
• Patterns to follow: [references]
|
|
430
|
-
• Key functions/components needed: [list]
|
|
431
|
-
- Verification:
|
|
432
|
-
• [Which steps should pass]
|
|
433
|
-
|
|
434
507
|
[etc.]
|
|
435
508
|
|
|
436
|
-
These chores will make all
|
|
509
|
+
These chores will make all scenarios pass (integration + required + optional features).
|
|
437
510
|
|
|
438
511
|
Sound good? Any adjustments?
|
|
439
512
|
```
|
|
@@ -633,12 +706,15 @@ Before completing feature planning, ensure:
|
|
|
633
706
|
- [ ] Epic's architectural decision is shown (if exists)
|
|
634
707
|
- [ ] Exactly 3 approaches suggested
|
|
635
708
|
- [ ] Winner chosen (with prototypes or without)
|
|
636
|
-
- [ ]
|
|
709
|
+
- [ ] **Integration Contract defined** (entry point, caller code, integration scenario)
|
|
710
|
+
- [ ] **Integration Scenario is FIRST scenario** in feature file
|
|
711
|
+
- [ ] BDD scenarios written (integration + all success paths)
|
|
637
712
|
- [ ] Step definitions written for ALL scenario steps
|
|
638
713
|
- [ ] Scenarios file exists at `features/[feature-slug].feature`
|
|
639
714
|
- [ ] Step definitions file exists at `features/step_definitions/[feature-slug].steps.js`
|
|
640
715
|
- [ ] BDD infrastructure validated with dry-run (Step 6.5)
|
|
641
716
|
- [ ] Feature transitioned to implementation with `work implement`
|
|
717
|
+
- [ ] **At least one Integration Chore created** (wires feature into app)
|
|
642
718
|
- [ ] Speed mode chores created
|
|
643
719
|
- [ ] First chore started with `work start [chore-id]` (Step 8D)
|
|
644
720
|
- [ ] **Speed-mode skill invoked using Skill tool** (Step 8D)
|
|
@@ -50,9 +50,10 @@ When this skill is activated, you are helping implement a speed mode chore to ma
|
|
|
50
50
|
|
|
51
51
|
### Overview
|
|
52
52
|
|
|
53
|
-
**Speed Mode Goal:** Make it work - implement ALL functionality (required + optional features) to make success scenarios pass, assuming everything works correctly.
|
|
53
|
+
**Speed Mode Goal:** Make it work - implement ALL functionality (integration + required + optional features) to make success scenarios pass, assuming everything works correctly.
|
|
54
54
|
|
|
55
55
|
**Key Principles:**
|
|
56
|
+
- **Integration first** - ensure the feature is wired into the app and reachable (Integration Scenario must pass)
|
|
56
57
|
- **Implement ALL features/functions** defined in scenarios - both required and optional functionality
|
|
57
58
|
- **All success paths** - every workflow that should work when inputs are valid
|
|
58
59
|
- **Assume success** - assume inputs are valid, files upload successfully, types are correct
|
|
@@ -67,6 +68,7 @@ When this skill is activated, you are helping implement a speed mode chore to ma
|
|
|
67
68
|
<summary><strong>📋 Speed Mode Constraints (click to expand)</strong></summary>
|
|
68
69
|
|
|
69
70
|
**What to implement:**
|
|
71
|
+
- **Integration** - wire feature into the app so it's reachable (Integration Scenario)
|
|
70
72
|
- ALL scoped functionality - required features AND optional features from all success scenarios
|
|
71
73
|
- Multiple valid workflows if the feature supports them
|
|
72
74
|
- Success variations (different outcomes that are all correct)
|
|
@@ -556,7 +558,25 @@ If the query returns no remaining chores, proceed to Step 7.
|
|
|
556
558
|
|
|
557
559
|
This is the transition from speed mode to stable mode. Follow these phases in order.
|
|
558
560
|
|
|
559
|
-
#### Step 7A:
|
|
561
|
+
#### Step 7A: Verify Integration Scenario Passes
|
|
562
|
+
|
|
563
|
+
**CRITICAL: Before transitioning, verify the feature is actually integrated into the app.**
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
# Run ONLY the integration scenario (first scenario in the feature file)
|
|
567
|
+
npx cucumber-js <scenario-file-path> --name "User can reach" --format progress
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
**If integration scenario FAILS:**
|
|
571
|
+
- The feature exists but isn't wired into the app
|
|
572
|
+
- Stop and fix integration before proceeding
|
|
573
|
+
- Check: Is the route registered? Is the link/button added? Is the import in place?
|
|
574
|
+
|
|
575
|
+
**If integration scenario PASSES:**
|
|
576
|
+
- Feature is reachable by users
|
|
577
|
+
- Proceed to Step 7B
|
|
578
|
+
|
|
579
|
+
#### Step 7B: Merge Final Speed Chore
|
|
560
580
|
|
|
561
581
|
```bash
|
|
562
582
|
# Commit changes in the worktree
|
|
@@ -568,7 +588,7 @@ jettypod work merge --with-transition
|
|
|
568
588
|
|
|
569
589
|
After merge, you are on main branch. Ready to generate stable mode scenarios.
|
|
570
590
|
|
|
571
|
-
#### Step
|
|
591
|
+
#### Step 7C: Generate and Propose Stable Mode Chores
|
|
572
592
|
|
|
573
593
|
**⚡ ASYNC BOUNDARY - Must wait for user confirmation**
|
|
574
594
|
|
|
@@ -628,7 +648,7 @@ Sound good? I'll create these chores once you confirm.
|
|
|
628
648
|
|
|
629
649
|
**⚡ WAIT for user confirmation or adjustments.**
|
|
630
650
|
|
|
631
|
-
#### Step
|
|
651
|
+
#### Step 7D: Create Chores and Complete Transition
|
|
632
652
|
|
|
633
653
|
**After user confirms, execute autonomously:**
|
|
634
654
|
|
|
@@ -665,7 +685,7 @@ jettypod work merge --release-lock
|
|
|
665
685
|
jettypod work set-mode <feature-id> stable
|
|
666
686
|
```
|
|
667
687
|
|
|
668
|
-
#### Step
|
|
688
|
+
#### Step 7E: Invoke Stable Mode Skill
|
|
669
689
|
|
|
670
690
|
**🛑 CRITICAL HANDOFF - You MUST invoke stable-mode using the Skill tool.**
|
|
671
691
|
|
|
@@ -708,6 +728,7 @@ The stable-mode skill will:
|
|
|
708
728
|
|
|
709
729
|
Before ending speed-mode skill, ensure:
|
|
710
730
|
- [ ] All speed mode chores complete (GREEN on all success scenarios)
|
|
731
|
+
- [ ] **Integration scenario passes** (feature is reachable, not an "island")
|
|
711
732
|
- [ ] Stable mode BDD scenarios generated and committed
|
|
712
733
|
- [ ] Step definitions created for stable scenarios
|
|
713
734
|
- [ ] Stable mode chores created
|
|
@@ -57,7 +57,8 @@ When this skill is activated, you are helping implement a stable mode chore to a
|
|
|
57
57
|
**Stable Mode Goal:** Transform speed mode's "make it work" implementation into robust, reliable code with comprehensive error handling and validation.
|
|
58
58
|
|
|
59
59
|
**CRITICAL DISTINCTION:**
|
|
60
|
-
- **Speed mode implemented ALL functionality** - every feature/function is already working (all success scenarios)
|
|
60
|
+
- **Speed mode implemented ALL functionality** - every feature/function is already working (integration + all success scenarios)
|
|
61
|
+
- **Speed mode verified integration** - the feature is reachable by users (Integration Scenario passed)
|
|
61
62
|
- **Stable mode adds COMPLETE robustness** - error handling, validation, and edge cases
|
|
62
63
|
|
|
63
64
|
**Key Principles:**
|
|
@@ -612,6 +613,7 @@ The production-mode skill will:
|
|
|
612
613
|
|
|
613
614
|
Before ending stable-mode skill, ensure:
|
|
614
615
|
- [ ] All stable mode chores complete (GREEN on all error/edge case scenarios)
|
|
616
|
+
- [ ] Integration scenario still passes (feature remains reachable after error handling added)
|
|
615
617
|
- [ ] Final chore merged to main
|
|
616
618
|
- [ ] Project state checked (internal vs external)
|
|
617
619
|
- [ ] **INTERNAL:** Feature marked as done
|