jettypod 4.4.0 โ†’ 4.4.2

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.
@@ -11,6 +11,21 @@ Guides Claude through feature planning including UX approach exploration, option
11
11
 
12
12
  When this skill is activated, you are helping discover the best approach for a feature. Follow this structured approach:
13
13
 
14
+ ## ๐Ÿ”‘ Critical Command Distinction
15
+
16
+ **Two different commands, two different purposes:**
17
+
18
+ | Command | Used For | When | Phase |
19
+ |---------|----------|------|-------|
20
+ | `work implement <feature-id>` | Transition feature to implementation phase | During feature planning (Step 8B) | Feature Planning |
21
+ | `work start <chore-id>` | Start implementing a specific chore | After feature planning complete (Step 8D) | Speed Mode |
22
+
23
+ **CRITICAL:** Both commands are run by **Claude**, not the user. The distinction is:
24
+ - `work implement` = Ends feature planning, creates chores
25
+ - `work start` = Begins implementing a chore (triggers speed-mode skill)
26
+
27
+ ---
28
+
14
29
  ### Step 1: Understand the Feature Context
15
30
 
16
31
  You'll receive context about:
@@ -96,15 +111,42 @@ If user wants prototypes:
96
111
  1. **Build prototypes** in `/prototypes/feature-[id]-[approach-name]/`
97
112
  2. **Name format**: `YYYY-MM-DD-[feature-slug]-[option].ext`
98
113
  3. **Focus on UX**: Show the feel, not production code
99
- 4. **Add prototype header**:
100
- ```
101
- // Prototype: [feature] - [option]
102
- // Created: [date]
103
- // Purpose: [what this explores]
104
- // Decision: [to be filled after testing]
114
+ 4. **Add visible banner header at TOP of page** (for HTML/web prototypes):
115
+ ```html
116
+ <div style="background: #f0f0f0; border: 2px solid #333; padding: 16px; margin-bottom: 24px; font-family: monospace;">
117
+ <strong>๐Ÿงช PROTOTYPE</strong><br>
118
+ Feature: [feature name]<br>
119
+ Option: [option number/name]<br>
120
+ Created: [YYYY-MM-DD]<br>
121
+ Purpose: [what this explores]<br>
122
+ Decision: [to be filled after testing]
123
+ </div>
105
124
  ```
125
+ For CLI/terminal prototypes, add similar info as first output.
106
126
  5. **Offer to open them**: "Want me to open these in your browser?"
107
127
 
128
+ <details>
129
+ <summary><strong>๐Ÿ“‹ Prototyping Guidelines (click to expand)</strong></summary>
130
+
131
+ **Use fastest tech to demonstrate UX:**
132
+ - Quick HTML+JS for web UX
133
+ - Simple CLI scripts for command-line UX
134
+ - Minimal frameworks, maximum clarity
135
+
136
+ **What to prototype:**
137
+ - User interaction flow
138
+ - Visual layout (if UI)
139
+ - Command structure (if CLI)
140
+ - API shape (if API)
141
+
142
+ **What NOT to prototype:**
143
+ - Production error handling
144
+ - Database layer
145
+ - Authentication (unless that's the feature)
146
+ - Test coverage
147
+
148
+ </details>
149
+
108
150
  ### Step 5: Choose Winner
109
151
 
110
152
  After user tests (or skips prototyping):
@@ -124,10 +166,12 @@ Based on chosen approach, generate:
124
166
  **A. Scenario file** at `features/[feature-slug].feature` using Write tool:
125
167
 
126
168
  1. **Create file** at `features/[feature-slug].feature` using Write tool
127
- 2. **ONLY include happy path scenario**:
128
- - Happy path ONLY - the core user journey that proves it works
169
+ 2. **Include all "make it work" scenarios**:
170
+ - All success paths - required functionality AND optional features
171
+ - Multiple valid workflows if the feature supports them
172
+ - Success variations (different outcomes that are all correct)
129
173
  - NO error handling scenarios (added in stable mode)
130
- - NO edge cases (added in stable mode)
174
+ - NO validation failures (added in stable mode)
131
175
  - NO security/compliance scenarios (added in production mode)
132
176
 
133
177
  **B. Step definitions file** at `features/step_definitions/[feature-slug].steps.js` using Write tool:
@@ -147,7 +191,7 @@ Based on chosen approach, generate:
147
191
  sqlite3 .jettypod/work.db "UPDATE work_items SET scenario_file = 'features/[feature-slug].feature' WHERE id = <feature-id>"
148
192
  ```
149
193
 
150
- **Template for speed mode (happy path only):**
194
+ **Template for speed mode (make it work):**
151
195
 
152
196
  ```gherkin
153
197
  Feature: [Feature Name]
@@ -156,15 +200,20 @@ Feature: [Feature Name]
156
200
  Epic: [Epic name if applicable]
157
201
  Approach: [Chosen approach name]
158
202
 
159
- Scenario: [Happy path scenario - core user journey]
203
+ Scenario: [Core functionality - required workflow]
160
204
  Given [initial state]
161
205
  When [user takes main action]
162
206
  Then [expected successful outcome]
163
207
  And [observable UI/system state change]
164
208
 
165
- # SPEED MODE: Only happy path above
166
- # STABLE MODE: Will add error handling, edge cases, validation scenarios
167
- # These additional scenarios are added by stable-mode skill, NOT during feature discovery
209
+ Scenario: [Optional feature 1 - if applicable]
210
+ Given [initial state]
211
+ When [user uses optional feature]
212
+ Then [feature works correctly]
213
+
214
+ # SPEED MODE: All success scenarios above (required + optional functionality)
215
+ # STABLE MODE: Will add error handling, validation failures, edge cases
216
+ # These failure scenarios are added by stable-mode skill, NOT during feature discovery
168
217
  ```
169
218
 
170
219
  **Example for Login feature (speed mode):**
@@ -182,8 +231,66 @@ Scenario: User successfully logs in with valid credentials
182
231
  Then I am redirected to the dashboard
183
232
  And I see a welcome message with my name
184
233
  And I have an active session token
234
+
235
+ Scenario: User logs in with "Remember me" option (optional feature)
236
+ Given I am on the login page
237
+ When I enter valid credentials
238
+ And I check the "Remember me" checkbox
239
+ And I click the login button
240
+ Then I am redirected to the dashboard
241
+ And my session persists for 30 days
185
242
  ```
186
243
 
244
+ <details>
245
+ <summary><strong>๐Ÿ“‹ BDD Scenario Guidelines (click to expand)</strong></summary>
246
+
247
+ **Scenario naming:**
248
+ - Use present tense
249
+ - Be specific about what's being tested
250
+ - Focus on user behavior
251
+
252
+ **Given/When/Then structure:**
253
+ - **Given**: Set up initial state
254
+ - **When**: User action
255
+ - **Then**: Observable outcome
256
+
257
+ **What feature planning creates:**
258
+
259
+ Feature planning creates speed mode scenarios (make it work - all success paths):
260
+ ```gherkin
261
+ Scenario: User successfully [does the required thing]
262
+ Given [setup]
263
+ When [action]
264
+ Then [success]
265
+
266
+ Scenario: User successfully [uses optional feature]
267
+ Given [setup]
268
+ When [uses optional capability]
269
+ Then [feature works correctly]
270
+ ```
271
+
272
+ **Additional scenarios are added LATER by stable-mode skill:**
273
+
274
+ Stable mode adds error handling and validation:
275
+ ```gherkin
276
+ Scenario: Handle invalid input
277
+ Given [setup]
278
+ When [invalid action]
279
+ Then [appropriate error]
280
+ ```
281
+
282
+ Production mode adds security/scale/compliance:
283
+ ```gherkin
284
+ Scenario: Prevent unauthorized access
285
+ Given [unauthorized user]
286
+ When [attempts action]
287
+ Then [access denied with proper error]
288
+ ```
289
+
290
+ **IMPORTANT:** Feature planning creates all success scenarios (required + optional). Stable/production chores add failure scenarios later.
291
+
292
+ </details>
293
+
187
294
  ### Step 6.5: Validate BDD Infrastructure
188
295
 
189
296
  **CRITICAL:** After creating both scenario and step definition files, automatically validate them with cucumber dry-run to catch errors immediately.
@@ -236,7 +343,7 @@ console.log(''); // Extra line before continuing
236
343
 
237
344
  The speed-mode skill guides Claude to:
238
345
  1. Implement the feature code
239
- 2. Create corresponding unit tests for the happy path
346
+ 2. Create corresponding unit tests for all success scenarios
240
347
  3. Ensure tests pass before completing the chore
241
348
 
242
349
  This keeps feature planning focused on BDD scenarios (what users experience) while speed mode handles unit tests (implementation details).
@@ -246,7 +353,7 @@ This keeps feature planning focused on BDD scenarios (what users experience) whi
246
353
  **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).
247
354
 
248
355
  **Your analysis should consider:**
249
- - The BDD scenarios (especially the happy path)
356
+ - The BDD scenarios (all success paths - required + optional features)
250
357
  - Existing codebase structure and patterns
251
358
  - Epic's architectural decisions (if any)
252
359
  - Tech stack and framework conventions
@@ -286,7 +393,7 @@ Based on the scenario and my understanding of the codebase, here are the chores
286
393
 
287
394
  [etc.]
288
395
 
289
- These chores will make the happy path scenario pass.
396
+ These chores will make all success scenarios pass (required + optional features).
290
397
 
291
398
  Sound good? Any adjustments?
292
399
  ```
@@ -362,7 +469,7 @@ After creating all chores, display:
362
469
  โœ… Created X chores for speed mode
363
470
 
364
471
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
365
- ๐ŸŽฏ Feature Discovery Complete!
472
+ ๐ŸŽฏ Feature Planning Complete!
366
473
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
367
474
 
368
475
  ๐Ÿ“‹ BDD scenarios: features/[feature-slug].feature
@@ -373,97 +480,30 @@ After creating all chores, display:
373
480
  Ready to start implementation?
374
481
  ```
375
482
 
376
- #### Step 8D: Transition to Speed Mode
483
+ #### Step 8D: Start First Chore
377
484
 
378
- **WAIT for user confirmation.**
485
+ **Feature planning is now complete.** The feature has been transitioned to implementation phase and chores are ready.
379
486
 
380
- When user confirms they want to proceed with implementation (responds with "yes", "let's go", "proceed", "start", or similar):
487
+ **Ask user which chore to start with:**
381
488
 
382
- **IMMEDIATELY invoke the speed-mode skill using the Skill tool:**
383
-
384
- ```
385
- Use the Skill tool with skill: "speed-mode"
386
489
  ```
387
-
388
- **The speed-mode skill will then:**
389
- 1. Guide the user to start the first chore with `jettypod work start [chore-id]`
390
- 2. Create a worktree for the chore
391
- 3. Follow TDD workflow to implement the chore
392
- 4. Merge when complete
393
-
394
- **End feature-planning skill after invoking speed-mode.**
395
-
396
- ## Key Principles
397
-
398
- 1. **Always suggest exactly 3 options** - Simple, Balanced, Advanced
399
- 2. **Show epic's architectural decision** - Feature should align with epic's technical approach
400
- 3. **UX first, tech second** - Focus on what it feels like to use, not implementation details
401
- 4. **Prototypes are optional but valuable** - User can skip if approach is obvious
402
- 5. **BDD scenarios are required** - Discovery isn't complete without scenarios
403
- 6. **Guide to next step** - Always end with clear action
404
-
405
- ## Prototyping Guidelines
406
-
407
- **Use fastest tech to demonstrate UX:**
408
- - Quick HTML+JS for web UX
409
- - Simple CLI scripts for command-line UX
410
- - Minimal frameworks, maximum clarity
411
-
412
- **What to prototype:**
413
- - User interaction flow
414
- - Visual layout (if UI)
415
- - Command structure (if CLI)
416
- - API shape (if API)
417
-
418
- **What NOT to prototype:**
419
- - Production error handling
420
- - Database layer
421
- - Authentication (unless that's the feature)
422
- - Test coverage
423
-
424
- ## BDD Scenario Guidelines
425
-
426
- **Scenario naming:**
427
- - Use present tense
428
- - Be specific about what's being tested
429
- - Focus on user behavior
430
-
431
- **Given/When/Then structure:**
432
- - **Given**: Set up initial state
433
- - **When**: User action
434
- - **Then**: Observable outcome
435
-
436
- **What feature-discover creates:**
437
-
438
- **Feature discovery ONLY creates speed mode scenarios (happy path):**
439
- ```gherkin
440
- Scenario: User successfully [does the thing]
441
- Given [setup]
442
- When [action]
443
- Then [success]
490
+ Ready to start implementation? Which chore should we start with?
444
491
  ```
445
492
 
446
- **Additional scenarios are added LATER by stable-mode skill:**
493
+ **After user picks a chore, use Bash tool to run:**
447
494
 
448
- Stable mode adds error handling:
449
- ```gherkin
450
- Scenario: Handle invalid input
451
- Given [setup]
452
- When [invalid action]
453
- Then [appropriate error]
495
+ ```bash
496
+ jettypod work start [chore-id]
454
497
  ```
455
498
 
456
- Production mode adds security/scale/compliance:
457
- ```gherkin
458
- Scenario: Prevent unauthorized access
459
- Given [unauthorized user]
460
- When [attempts action]
461
- Then [access denied with proper error]
462
- ```
499
+ **This command will:**
500
+ 1. Create a git worktree and branch for the chore
501
+ 2. Automatically invoke the speed-mode skill
502
+ 3. Begin TDD implementation workflow in the isolated worktree
463
503
 
464
- **IMPORTANT:** Feature discovery only creates happy path. Stable/production chores add more scenarios later.
504
+ **The speed-mode skill takes over from here and handles the implementation.**
465
505
 
466
- ## Example: Feature Discovery Flow
506
+ ## Example: Feature Planning Flow
467
507
 
468
508
  **Feature:** "Email/password login"
469
509
  **Epic decision:** "Using Auth.js with JWT tokens"
@@ -475,17 +515,25 @@ Scenario: Prevent unauthorized access
475
515
 
476
516
  **User picks:** Option 1 (Simple inline form)
477
517
 
478
- **Scenarios generated (happy path only for speed mode):**
518
+ **Scenarios generated (speed mode - all success paths):**
479
519
  ```gherkin
480
520
  Feature: Email/Password Login
481
521
 
482
- Scenario: Successful login
522
+ Scenario: Successful login with credentials
483
523
  Given I am on the login page
484
524
  When I enter valid credentials and submit
485
525
  Then I am redirected to the dashboard
486
526
  And I have an active JWT token
487
527
 
488
- # SPEED MODE: Only happy path above
528
+ Scenario: Login with "Remember me" option
529
+ Given I am on the login page
530
+ When I enter valid credentials
531
+ And I check "Remember me"
532
+ And I submit
533
+ Then I am redirected to the dashboard
534
+ And my session persists for 30 days
535
+
536
+ # SPEED MODE: All success scenarios above (required + optional features)
489
537
  # STABLE MODE: Will add error handling scenarios like "Invalid credentials"
490
538
  ```
491
539
 
@@ -495,15 +543,17 @@ User confirms: "Yes, perfect"
495
543
 
496
544
  **Transition:** `jettypod work implement 10 --winner="prototypes/2025-10-30-login-simple.html" --rationale="Simple inline form chosen - fastest for users, cleanest UX"`
497
545
 
498
- ## Validation
546
+ ## Validation Checklist
499
547
 
500
- Before completing feature discovery, ensure:
548
+ Before completing feature planning, ensure:
501
549
  - [ ] Epic's architectural decision is shown (if exists)
502
550
  - [ ] Exactly 3 approaches suggested
503
551
  - [ ] Winner chosen (with prototypes or without)
504
- - [ ] BDD scenarios written
552
+ - [ ] BDD scenarios written (all success paths)
505
553
  - [ ] Step definitions written for ALL scenario steps
506
554
  - [ ] Scenarios file exists at `features/[feature-slug].feature`
507
555
  - [ ] Step definitions file exists at `features/step_definitions/[feature-slug].steps.js`
508
556
  - [ ] BDD infrastructure validated with dry-run (Step 6.5)
509
- - [ ] User knows next step .jettypod work start [feature-id])
557
+ - [ ] Feature transitioned to implementation with `work implement`
558
+ - [ ] Speed mode chores created
559
+ - [ ] First chore started with `work start [chore-id]` (Step 8D)
@@ -39,8 +39,8 @@ When this skill is activated, you are helping implement a production mode chore
39
39
  **To detect context, check these conditions:**
40
40
 
41
41
  ```bash
42
- # Get current work and parent feature
43
- jettypod work current
42
+ # Get current work item and parent feature
43
+ sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.type, wi.parent_id, wi.epic_id, parent.title as parent_title FROM work_items wi LEFT JOIN work_items parent ON wi.parent_id = parent.id WHERE wi.status = 'in_progress'"
44
44
 
45
45
  # Check for production scenarios in the feature file
46
46
  # (Look for scenarios tagged with @production or containing production-related keywords)
@@ -230,11 +230,8 @@ This will:
230
230
  **Get current work and identify target scenario:**
231
231
 
232
232
  ```bash
233
- # Get current chore details
234
- jettypod work current
235
-
236
- # Get parent feature's scenario file
237
- sqlite3 .jettypod/work.db "SELECT scenario_file FROM work_items WHERE id = <parent-feature-id>"
233
+ # Get current chore details and parent feature's scenario file
234
+ sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.description, wi.parent_id, parent.scenario_file FROM work_items wi LEFT JOIN work_items parent ON wi.parent_id = parent.id WHERE wi.status = 'in_progress'"
238
235
  ```
239
236
 
240
237
  Parse the chore description to find which scenario it addresses (look for "Scenario: ..." in the description).