jettypod 4.1.2 → 4.1.4
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/.nvmrc +1 -0
- package/docs/COMPLETE-TESTING-STRATEGY.md +970 -0
- package/docs/DECISIONS.md +10 -12
- package/docs/NODE_VERSION.md +83 -0
- package/docs/TDD-INFRASTRUCTURE-STRATEGY.md +1374 -0
- package/docs/TESTING-FOR-NON-ENGINEERS.md +1588 -0
- package/docs/TESTING-STRATEGY-AUDIT.md +698 -0
- package/hooks/post-checkout +17 -0
- package/hooks/post-merge +17 -0
- package/hooks/pre-commit +30 -0
- package/jettypod.js +259 -120
- package/lib/coverage-tracker.js +218 -0
- package/lib/database.js +2 -0
- package/lib/db-export.js +192 -0
- package/lib/db-import.js +193 -0
- package/lib/external-transition-handler.js +32 -0
- package/lib/git-hook-helpers.js +174 -0
- package/lib/git-root.js +90 -0
- package/lib/infrastructure-chore-generator.js +45 -0
- package/lib/install-hooks.js +52 -0
- package/lib/jettypod-backup.js +238 -0
- package/lib/merge-lock.js +193 -0
- package/lib/migrations/012-add-worktree-path.js +38 -0
- package/lib/migrations/013-worktrees-table.js +86 -0
- package/lib/migrations/014-migrate-worktree-data.js +161 -0
- package/lib/migrations/015-merge-locks-table.js +67 -0
- package/lib/pattern-finder.js +152 -0
- package/lib/process-manager.js +140 -0
- package/lib/production-standards-reader.js +13 -2
- package/lib/production-standards-writer.js +85 -0
- package/lib/skills/feature-planning/dry-run-validator.js +135 -0
- package/lib/skills/feature-planning/validation-formatter.js +160 -0
- package/lib/smart-conflict-detection.js +168 -0
- package/lib/smart-fetch-rebase.js +614 -0
- package/lib/step-definition-parser.js +76 -0
- package/lib/unit-test-generator.js +232 -0
- package/lib/verification-command-generator.js +66 -0
- package/lib/worktree-diagnostics.js +413 -0
- package/lib/worktree-facade.js +174 -0
- package/lib/worktree-manager.js +636 -0
- package/lib/worktree-reconciler.js +429 -0
- package/package.json +30 -3
- package/skills-templates/external-transition/SKILL.md +34 -3
- package/skills-templates/feature-planning/SKILL.md +190 -24
- package/skills-templates/production-mode/SKILL.md +127 -9
- package/skills-templates/speed-mode/SKILL.md +454 -51
- package/skills-templates/stable-mode/SKILL.md +285 -76
- package/.claude/PROTECT_SKILLS.md +0 -28
- package/.claude/settings.json +0 -24
- package/.claude/settings.local.json +0 -16
- package/.claude/skills/epic-planning/SKILL.md +0 -297
- package/.claude/skills/external-transition/SKILL.md +0 -384
- package/.claude/skills/feature-planning/SKILL.md +0 -464
- package/.claude/skills/production-mode/SKILL.md +0 -369
- package/.claude/skills/speed-mode/SKILL.md +0 -481
- package/.claude/skills/stable-mode/SKILL.md +0 -713
- package/.claude/skills.backup-2025-11-10T23-33-09-368Z/epic-planning/SKILL.md +0 -297
- package/.claude/skills.backup-2025-11-10T23-33-09-368Z/feature-planning/SKILL.md +0 -464
- package/.claude/skills.backup-2025-11-10T23-33-09-368Z/speed-mode/SKILL.md +0 -467
- package/.claude/skills.backup-2025-11-10T23-33-09-368Z/stable-mode/SKILL.md +0 -673
- package/.claude/skills.backup-2025-11-11T16-15-10-070Z/epic-discover/SKILL.md +0 -297
- package/.claude/skills.backup-2025-11-11T16-42-43-212Z/epic-planning/SKILL.md +0 -297
- package/.claude/skills.backup-2025-11-11T16-42-43-212Z/feature-planning/SKILL.md +0 -464
- package/.claude/skills.backup-2025-11-11T16-42-43-212Z/speed-mode/SKILL.md +0 -467
- package/.claude/skills.backup-2025-11-11T16-42-43-212Z/stable-mode/SKILL.md +0 -673
- package/.claude/skills.backup-2025-11-11T17-06-09-783Z/epic-planning/SKILL.md +0 -297
- package/.claude/skills.backup-2025-11-11T17-06-09-783Z/feature-planning/SKILL.md +0 -464
- package/.claude/skills.backup-2025-11-11T17-06-09-783Z/speed-mode/SKILL.md +0 -467
- package/.claude/skills.backup-2025-11-11T17-06-09-783Z/stable-mode/SKILL.md +0 -673
- package/.devpod/current-work.json +0 -10
- package/.devpod/work.db +0 -0
- package/.github/workflows/test-safety.yml +0 -85
- package/.jettypod/config.json +0 -5
- package/.jettypod/current-work.json +0 -10
- package/.jettypod/hooks/README.md +0 -77
- package/.jettypod/hooks/protect-claude-md.js +0 -338
- package/.jettypod/test-work.db +0 -0
- package/.jettypod/work.db +0 -0
- package/CLAUDE.md +0 -49
- package/SPEED-STABLE-AUDIT.md +0 -853
- package/SYSTEM-BEHAVIOR.md +0 -2199
- package/TEST_SAFETY_AUDIT.md +0 -314
- package/TEST_SAFETY_IMPLEMENTATION.md +0 -97
- package/cucumber-report.html +0 -45
- package/dist/devpod-linux +0 -0
- package/dist/devpod-macos +0 -0
- package/dist/devpod-win.exe +0 -0
- package/docs/features/jettypod-standards-explained.md +0 -543
- package/docs/features/standards-inventory.md +0 -257
- package/features/auto-generate-production-chores.feature +0 -13
- package/features/backlog-command.feature +0 -26
- package/features/backlog-filtering-production.feature +0 -10
- package/features/claude-md-protection/steps.js +0 -498
- package/features/decisions/index.js +0 -490
- package/features/decisions/index.test.js +0 -208
- package/features/fix-text-wrapping.feature +0 -42
- package/features/git-hooks/git-hooks.feature +0 -30
- package/features/git-hooks/index.js +0 -93
- package/features/git-hooks/index.test.js +0 -137
- package/features/git-hooks/post-commit +0 -56
- package/features/git-hooks/post-merge +0 -47
- package/features/git-hooks/pre-commit +0 -28
- package/features/git-hooks/simple-steps.js +0 -53
- package/features/git-hooks/simple-test.feature +0 -10
- package/features/git-hooks/steps.js +0 -196
- package/features/jettypod-update-command.feature +0 -46
- package/features/mode-prompts/index.js +0 -95
- package/features/mode-prompts/simple-steps.js +0 -44
- package/features/mode-prompts/simple-test.feature +0 -9
- package/features/mode-prompts/validation.test.js +0 -120
- package/features/multiple-claude-instances.feature +0 -121
- package/features/production-mode-skill.feature +0 -121
- package/features/refactor-mode/steps.js +0 -217
- package/features/refactor-mode.feature +0 -49
- package/features/simplify-external-transition.feature +0 -166
- package/features/skills-update/index.test.js +0 -216
- package/features/step_definitions/backlog-command.steps.js +0 -37
- package/features/step_definitions/fix-text-wrapping.steps.js +0 -271
- package/features/step_definitions/multiple-claude-instances.steps.js +0 -621
- package/features/step_definitions/production-mode-skill.steps.js +0 -862
- package/features/step_definitions/simplify-external-transition.steps.js +0 -370
- package/features/step_definitions/terminal-logo.steps.js +0 -145
- package/features/step_definitions/update-command.steps.js +0 -183
- package/features/support/hooks.js +0 -9
- package/features/terminal-logo/index.js +0 -39
- package/features/terminal-logo/terminal-logo.feature +0 -30
- package/features/update-command/index.js +0 -181
- package/features/update-command/index.test.js +0 -225
- package/features/work-commands/bug-workflow-display.feature +0 -22
- package/features/work-commands/index.js +0 -498
- package/features/work-commands/simple-steps.js +0 -69
- package/features/work-commands/stable-tests.feature +0 -57
- package/features/work-commands/steps.js +0 -1174
- package/features/work-commands/validation.test.js +0 -88
- package/features/work-commands/work-commands.feature +0 -13
- package/features/work-tracking/discovery-validation.test.js +0 -228
- package/features/work-tracking/index.js +0 -1921
- package/features/work-tracking/mode-required.feature +0 -112
- package/features/work-tracking/phase-tracking.test.js +0 -482
- package/features/work-tracking/prototype-tracking.test.js +0 -485
- package/features/work-tracking/tree-view.test.js +0 -310
- package/features/work-tracking/work-set-mode.feature +0 -71
- package/features/work-tracking/work-start-mode.feature +0 -88
- package/full-test.txt +0 -0
- package/lib/bug-workflow.test.js +0 -177
- package/lib/claudemd.test.js +0 -195
- package/lib/config.test.js +0 -511
- package/lib/constants.test.js +0 -164
- package/lib/current-work.test.js +0 -146
- package/lib/database-project-config.test.js +0 -111
- package/lib/database.test.js +0 -106
- package/lib/decisions-generator.test.js +0 -457
- package/lib/decisions-helpers.test.js +0 -310
- package/lib/git-coordinator.js +0 -167
- package/lib/git.test.js +0 -145
- package/lib/migrations/002-default-work-item-modes.test.js +0 -351
- package/lib/production-chore-generator.test.js +0 -432
- package/lib/production-context-detector.test.js +0 -277
- package/lib/production-scenario-appender.test.js +0 -235
- package/lib/production-scenario-validator.test.js +0 -246
- package/lib/production-standards-reader.test.js +0 -270
- package/lib/project-state.test.js +0 -92
- package/lib/push-queue.js +0 -417
- package/lib/queue-processor.js +0 -74
- package/lib/test-helpers.js +0 -202
- package/lib/test-helpers.test.js +0 -255
- package/prototypes/2025-01-11-production-mode-autonomous.js +0 -119
- package/prototypes/2025-01-11-production-mode-collaborative.js +0 -166
- package/prototypes/2025-01-11-production-mode-guided.js +0 -217
- package/prototypes/2025-01-11-production-mode-smart-context.js +0 -347
- package/prototypes/2025-01-11-production-standards-example.md +0 -204
- package/prototypes/2025-11-10-backlog-filtering-tree-aware.js +0 -242
- package/prototypes/test/index.html +0 -1
- package/setup-dist-repo.sh +0 -68
- package/test-production-standards-engine.js +0 -130
- package/test-results.json +0 -2195
- package/test-safety-check.sh +0 -80
- package/work-item-tracking-plan.md +0 -199
- /package/{.jettypod/devpod.db → jettypod.db} +0 -0
|
@@ -1,464 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: feature-planning
|
|
3
|
-
description: Guide feature planning with UX approach exploration and BDD scenario generation. Use when user asks to plan a feature, mentions designing/implementing a feature, says "help me plan feature", or wants to explore UX approaches for a specific feature.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Feature Planning Skill
|
|
7
|
-
|
|
8
|
-
Guides Claude through feature planning including UX approach exploration, optional prototyping, and BDD scenario generation.
|
|
9
|
-
|
|
10
|
-
## Instructions
|
|
11
|
-
|
|
12
|
-
When this skill is activated, you are helping discover the best approach for a feature. Follow this structured approach:
|
|
13
|
-
|
|
14
|
-
### Step 1: Understand the Feature Context
|
|
15
|
-
|
|
16
|
-
You'll receive context about:
|
|
17
|
-
- Feature title and description
|
|
18
|
-
- Parent epic (if any)
|
|
19
|
-
- Project context
|
|
20
|
-
|
|
21
|
-
### Step 2: Check Epic Architectural Decisions
|
|
22
|
-
|
|
23
|
-
**CRITICAL:** If this feature belongs to an epic, check for existing architectural decisions:
|
|
24
|
-
|
|
25
|
-
```javascript
|
|
26
|
-
const { getDecisionsForEpic } = require('../../lib/decisions-helpers');
|
|
27
|
-
|
|
28
|
-
if (parentEpicId) {
|
|
29
|
-
const epicDecisions = await getDecisionsForEpic(parentEpicId);
|
|
30
|
-
// Surface decisions to user
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Display the context with decisions:
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
✨ Planning Feature: [Feature Name]
|
|
38
|
-
Epic: [Epic Name]
|
|
39
|
-
|
|
40
|
-
🎯 **Epic Architectural Decisions:**
|
|
41
|
-
[If decisions exist:]
|
|
42
|
-
- **[Aspect]:** [Decision]
|
|
43
|
-
*Rationale:* [Why this was chosen]
|
|
44
|
-
*Impact:* [How this constrains/guides this feature]
|
|
45
|
-
|
|
46
|
-
[If no decisions:]
|
|
47
|
-
No architectural decisions recorded for this epic yet.
|
|
48
|
-
|
|
49
|
-
Let's explore different approaches for this feature [that align with these decisions].
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**IMPORTANT:** When suggesting UX approaches in the next step, ensure they respect/align with the epic's architectural decisions.
|
|
53
|
-
|
|
54
|
-
### Step 3: Suggest 3 UX Approaches
|
|
55
|
-
|
|
56
|
-
Propose exactly 3 approaches with varying complexity/trade-offs:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
Here are 3 different approaches for [feature name]:
|
|
60
|
-
|
|
61
|
-
**Option 1: [Simple/Minimal approach name]**
|
|
62
|
-
- **Pros**: ✅ [2-3 advantages]
|
|
63
|
-
- **Cons**: ❌ [2-3 trade-offs]
|
|
64
|
-
- **Experience**: [What it feels like to use]
|
|
65
|
-
|
|
66
|
-
**Option 2: [Balanced approach name]**
|
|
67
|
-
- **Pros**: ✅ [2-3 advantages]
|
|
68
|
-
- **Cons**: ❌ [2-3 trade-offs]
|
|
69
|
-
- **Experience**: [What it feels like to use]
|
|
70
|
-
|
|
71
|
-
**Option 3: [Advanced/Comprehensive approach name]**
|
|
72
|
-
- **Pros**: ✅ [2-3 advantages]
|
|
73
|
-
- **Cons**: ❌ [2-3 trade-offs]
|
|
74
|
-
- **Experience**: [What it feels like to use]
|
|
75
|
-
|
|
76
|
-
**Additional approaches considered but not recommended:**
|
|
77
|
-
- *[Alternative 1]*: [Brief] - Not selected because [reason]
|
|
78
|
-
- *[Alternative 2]*: [Brief] - Not selected because [reason]
|
|
79
|
-
|
|
80
|
-
Would you like me to create working prototypes of these approaches?
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Step 4: Optional Prototyping
|
|
84
|
-
|
|
85
|
-
If user wants prototypes:
|
|
86
|
-
|
|
87
|
-
1. **Build prototypes** in `/prototypes/feature-[id]-[approach-name]/`
|
|
88
|
-
2. **Name format**: `YYYY-MM-DD-[feature-slug]-[option].ext`
|
|
89
|
-
3. **Focus on UX**: Show the feel, not production code
|
|
90
|
-
4. **Add prototype header**:
|
|
91
|
-
```
|
|
92
|
-
// Prototype: [feature] - [option]
|
|
93
|
-
// Created: [date]
|
|
94
|
-
// Purpose: [what this explores]
|
|
95
|
-
// Decision: [to be filled after testing]
|
|
96
|
-
```
|
|
97
|
-
5. **Offer to open them**: "Want me to open these in your browser?"
|
|
98
|
-
|
|
99
|
-
### Step 5: Choose Winner
|
|
100
|
-
|
|
101
|
-
After user tests (or skips prototyping):
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
Which approach works best?
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
User picks winner. Record it.
|
|
108
|
-
|
|
109
|
-
### Step 6: Generate BDD Scenarios AND Step Definitions
|
|
110
|
-
|
|
111
|
-
**CRITICAL:** BDD scenarios and step definitions must ALWAYS be created together. Never create scenarios without step definitions.
|
|
112
|
-
|
|
113
|
-
Based on chosen approach, generate:
|
|
114
|
-
|
|
115
|
-
**A. Scenario file** at `features/[feature-slug].feature` using Write tool:
|
|
116
|
-
|
|
117
|
-
1. **Create file** at `features/[feature-slug].feature` using Write tool
|
|
118
|
-
2. **ONLY include happy path scenario**:
|
|
119
|
-
- Happy path ONLY - the core user journey that proves it works
|
|
120
|
-
- NO error handling scenarios (added in stable mode)
|
|
121
|
-
- NO edge cases (added in stable mode)
|
|
122
|
-
- NO security/compliance scenarios (added in production mode)
|
|
123
|
-
|
|
124
|
-
**B. Step definitions file** at `features/step_definitions/[feature-slug].steps.js` using Write tool:
|
|
125
|
-
|
|
126
|
-
1. **Create file** at `features/step_definitions/[feature-slug].steps.js`
|
|
127
|
-
2. **Implement all Given/When/Then steps** from the scenarios
|
|
128
|
-
3. **Follow existing patterns** - check other `.steps.js` files for conventions
|
|
129
|
-
4. **Include**:
|
|
130
|
-
- Test environment setup/cleanup
|
|
131
|
-
- All Given steps (setup state)
|
|
132
|
-
- All When steps (execute actions)
|
|
133
|
-
- All Then steps (verify outcomes)
|
|
134
|
-
|
|
135
|
-
3. **Update database** with scenario file path:
|
|
136
|
-
```javascript
|
|
137
|
-
// After creating scenario file AND step definitions
|
|
138
|
-
const { getDb } = require('../../lib/database');
|
|
139
|
-
const db = getDb();
|
|
140
|
-
|
|
141
|
-
db.run(
|
|
142
|
-
`UPDATE work_items SET scenario_file = ? WHERE id = ?`,
|
|
143
|
-
['features/[feature-slug].feature', featureId],
|
|
144
|
-
(err) => {
|
|
145
|
-
if (err) console.error('Failed to update scenario_file:', err);
|
|
146
|
-
}
|
|
147
|
-
);
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
**Template for speed mode (happy path only):**
|
|
151
|
-
|
|
152
|
-
```gherkin
|
|
153
|
-
Feature: [Feature Name]
|
|
154
|
-
[Brief description based on chosen UX approach]
|
|
155
|
-
|
|
156
|
-
Epic: [Epic name if applicable]
|
|
157
|
-
Approach: [Chosen approach name]
|
|
158
|
-
|
|
159
|
-
Scenario: [Happy path scenario - core user journey]
|
|
160
|
-
Given [initial state]
|
|
161
|
-
When [user takes main action]
|
|
162
|
-
Then [expected successful outcome]
|
|
163
|
-
And [observable UI/system state change]
|
|
164
|
-
|
|
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
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
**Example for Login feature (speed mode):**
|
|
171
|
-
```gherkin
|
|
172
|
-
Feature: Email/Password Login
|
|
173
|
-
Simple inline form with email and password fields
|
|
174
|
-
|
|
175
|
-
Epic: User Authentication
|
|
176
|
-
Approach: Simple inline form
|
|
177
|
-
|
|
178
|
-
Scenario: User successfully logs in with valid credentials
|
|
179
|
-
Given I am on the login page
|
|
180
|
-
When I enter valid email and password
|
|
181
|
-
And I click the login button
|
|
182
|
-
Then I am redirected to the dashboard
|
|
183
|
-
And I see a welcome message with my name
|
|
184
|
-
And I have an active session token
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Step 7: Propose Speed Mode Chores
|
|
188
|
-
|
|
189
|
-
**CRITICAL:** After generating BDD scenarios, analyze the codebase and propose technical implementation chores with rich breadcrumbs for speed mode execution.
|
|
190
|
-
|
|
191
|
-
**Your analysis should consider:**
|
|
192
|
-
- The BDD scenarios (especially the happy path)
|
|
193
|
-
- Existing codebase structure and patterns
|
|
194
|
-
- Epic's architectural decisions (if any)
|
|
195
|
-
- Tech stack and framework conventions
|
|
196
|
-
- Which scenario steps each chore addresses
|
|
197
|
-
- Similar code patterns to follow
|
|
198
|
-
- Specific step definitions that should pass
|
|
199
|
-
|
|
200
|
-
**Say to the user:**
|
|
201
|
-
|
|
202
|
-
```
|
|
203
|
-
Now let me analyze the codebase and propose implementation chores for speed mode.
|
|
204
|
-
|
|
205
|
-
[Analyze codebase, read relevant files, check patterns]
|
|
206
|
-
|
|
207
|
-
Based on the scenario and codebase, here are the chores I recommend for speed mode:
|
|
208
|
-
|
|
209
|
-
**Chore 1: [Technical task title]**
|
|
210
|
-
- Why: [What this accomplishes toward the scenario]
|
|
211
|
-
- Scenario steps addressed:
|
|
212
|
-
• [Which Given/When/Then steps this chore makes work]
|
|
213
|
-
- Implementation guidance:
|
|
214
|
-
• Files to create/modify: [specific paths]
|
|
215
|
-
• Patterns to follow: [reference existing similar code]
|
|
216
|
-
• Key functions/components needed: [list]
|
|
217
|
-
- Verification:
|
|
218
|
-
• Step definitions that should pass: [specific steps from .steps.js]
|
|
219
|
-
|
|
220
|
-
**Chore 2: [Technical task title]**
|
|
221
|
-
- Why: [What this accomplishes]
|
|
222
|
-
- Scenario steps addressed:
|
|
223
|
-
• [Which steps]
|
|
224
|
-
- Implementation guidance:
|
|
225
|
-
• Files to create/modify: [paths]
|
|
226
|
-
• Patterns to follow: [references]
|
|
227
|
-
• Key functions/components needed: [list]
|
|
228
|
-
- Verification:
|
|
229
|
-
• Step definitions that should pass: [steps]
|
|
230
|
-
|
|
231
|
-
[etc.]
|
|
232
|
-
|
|
233
|
-
These chores will make the happy path scenario pass.
|
|
234
|
-
|
|
235
|
-
Sound good? Any adjustments?
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
**Wait for user confirmation/adjustments.**
|
|
239
|
-
|
|
240
|
-
**Then create the chores with rich descriptions:**
|
|
241
|
-
|
|
242
|
-
```javascript
|
|
243
|
-
// For each confirmed chore:
|
|
244
|
-
const { create } = require('./features/work-tracking');
|
|
245
|
-
|
|
246
|
-
const description = `[Technical description]
|
|
247
|
-
|
|
248
|
-
Scenario steps addressed:
|
|
249
|
-
• [Which Given/When/Then steps this chore makes work]
|
|
250
|
-
|
|
251
|
-
Implementation guidance:
|
|
252
|
-
• Files to create/modify: [specific paths]
|
|
253
|
-
• Patterns to follow: [reference existing similar code]
|
|
254
|
-
• Key functions/components needed: [list]
|
|
255
|
-
|
|
256
|
-
Verification:
|
|
257
|
-
• Step definitions that should pass: [specific steps from .steps.js file]`;
|
|
258
|
-
|
|
259
|
-
await create('chore', 'Chore Title', description, featureId, 'speed', false);
|
|
260
|
-
// Repeat for each chore
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
**Example chore description:**
|
|
264
|
-
|
|
265
|
-
```
|
|
266
|
-
Build login form component with email/password fields
|
|
267
|
-
|
|
268
|
-
Scenario steps addressed:
|
|
269
|
-
• Given I am on the login page
|
|
270
|
-
• When I enter valid credentials and submit
|
|
271
|
-
|
|
272
|
-
Implementation guidance:
|
|
273
|
-
• Create: src/components/LoginForm.jsx
|
|
274
|
-
• Follow pattern: src/components/SignupForm.jsx (similar form structure)
|
|
275
|
-
• Key components: EmailInput, PasswordInput, SubmitButton
|
|
276
|
-
• Key functions: handleSubmit(), validateEmailFormat()
|
|
277
|
-
|
|
278
|
-
Verification:
|
|
279
|
-
• features/step_definitions/login.steps.js - 'I am on the login page' should pass
|
|
280
|
-
• features/step_definitions/login.steps.js - 'I enter valid credentials and submit' should pass
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
**Report:**
|
|
284
|
-
```
|
|
285
|
-
✅ Created X chores for speed mode
|
|
286
|
-
|
|
287
|
-
Each chore includes:
|
|
288
|
-
• Scenario steps it addresses
|
|
289
|
-
• Implementation guidance with file paths and patterns
|
|
290
|
-
• Step definitions to verify against
|
|
291
|
-
|
|
292
|
-
Ready to start implementation: jettypod work start [first-chore-id]
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### Step 8: Transition to Implementation
|
|
296
|
-
|
|
297
|
-
Complete the discovery phase by transitioning the feature from discovery to implementation.
|
|
298
|
-
|
|
299
|
-
**CRITICAL: You must EXECUTE the transition command using the Bash tool. Do NOT just display it as text.**
|
|
300
|
-
|
|
301
|
-
#### Step 8A: Propose Rationale
|
|
302
|
-
|
|
303
|
-
Display to user:
|
|
304
|
-
|
|
305
|
-
```
|
|
306
|
-
I'm going to record this decision:
|
|
307
|
-
|
|
308
|
-
Winner: [approach name or prototypes/winner-file]
|
|
309
|
-
Rationale: [Why this approach was chosen]
|
|
310
|
-
|
|
311
|
-
Does this rationale capture why you chose this approach? (You can edit it if needed)
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
**WAIT for user to confirm or provide edited rationale.**
|
|
315
|
-
|
|
316
|
-
#### Step 8B: Execute Transition
|
|
317
|
-
|
|
318
|
-
**CRITICAL: After user confirms, use Bash tool to EXECUTE the work implement command:**
|
|
319
|
-
|
|
320
|
-
```javascript
|
|
321
|
-
// Use Bash tool to execute:
|
|
322
|
-
node jettypod.js work implement [feature-id] \
|
|
323
|
-
--winner="[approach-name or prototypes/winner-file]" \
|
|
324
|
-
--rationale="[user's confirmed/edited rationale]"
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
**DO NOT display this as example text. EXECUTE IT using the Bash tool.**
|
|
328
|
-
|
|
329
|
-
After execution succeeds, verify the feature transitioned to implementation phase and display:
|
|
330
|
-
|
|
331
|
-
```
|
|
332
|
-
✅ Feature transitioned to implementation phase
|
|
333
|
-
|
|
334
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
335
|
-
🎯 Feature Discovery Complete!
|
|
336
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
337
|
-
|
|
338
|
-
📋 BDD scenarios: features/[feature-slug].feature
|
|
339
|
-
🧪 Step definitions: features/step_definitions/[feature-slug].steps.js
|
|
340
|
-
✅ Feature phase: Implementation
|
|
341
|
-
🚀 Feature mode: Speed
|
|
342
|
-
|
|
343
|
-
**Next step:** Start implementing the first chore
|
|
344
|
-
Run: jettypod work start [first-chore-id]
|
|
345
|
-
|
|
346
|
-
Build code that passes the happy path scenarios we just wrote.
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
## Key Principles
|
|
350
|
-
|
|
351
|
-
1. **Always suggest exactly 3 options** - Simple, Balanced, Advanced
|
|
352
|
-
2. **Show epic's architectural decision** - Feature should align with epic's technical approach
|
|
353
|
-
3. **UX first, tech second** - Focus on what it feels like to use, not implementation details
|
|
354
|
-
4. **Prototypes are optional but valuable** - User can skip if approach is obvious
|
|
355
|
-
5. **BDD scenarios are required** - Discovery isn't complete without scenarios
|
|
356
|
-
6. **Guide to next step** - Always end with clear action
|
|
357
|
-
|
|
358
|
-
## Prototyping Guidelines
|
|
359
|
-
|
|
360
|
-
**Use fastest tech to demonstrate UX:**
|
|
361
|
-
- Quick HTML+JS for web UX
|
|
362
|
-
- Simple CLI scripts for command-line UX
|
|
363
|
-
- Minimal frameworks, maximum clarity
|
|
364
|
-
|
|
365
|
-
**What to prototype:**
|
|
366
|
-
- User interaction flow
|
|
367
|
-
- Visual layout (if UI)
|
|
368
|
-
- Command structure (if CLI)
|
|
369
|
-
- API shape (if API)
|
|
370
|
-
|
|
371
|
-
**What NOT to prototype:**
|
|
372
|
-
- Production error handling
|
|
373
|
-
- Database layer
|
|
374
|
-
- Authentication (unless that's the feature)
|
|
375
|
-
- Test coverage
|
|
376
|
-
|
|
377
|
-
## BDD Scenario Guidelines
|
|
378
|
-
|
|
379
|
-
**Scenario naming:**
|
|
380
|
-
- Use present tense
|
|
381
|
-
- Be specific about what's being tested
|
|
382
|
-
- Focus on user behavior
|
|
383
|
-
|
|
384
|
-
**Given/When/Then structure:**
|
|
385
|
-
- **Given**: Set up initial state
|
|
386
|
-
- **When**: User action
|
|
387
|
-
- **Then**: Observable outcome
|
|
388
|
-
|
|
389
|
-
**What feature-discover creates:**
|
|
390
|
-
|
|
391
|
-
**Feature discovery ONLY creates speed mode scenarios (happy path):**
|
|
392
|
-
```gherkin
|
|
393
|
-
Scenario: User successfully [does the thing]
|
|
394
|
-
Given [setup]
|
|
395
|
-
When [action]
|
|
396
|
-
Then [success]
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
**Additional scenarios are added LATER by stable-mode skill:**
|
|
400
|
-
|
|
401
|
-
Stable mode adds error handling:
|
|
402
|
-
```gherkin
|
|
403
|
-
Scenario: Handle invalid input
|
|
404
|
-
Given [setup]
|
|
405
|
-
When [invalid action]
|
|
406
|
-
Then [appropriate error]
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
Production mode adds security/scale/compliance:
|
|
410
|
-
```gherkin
|
|
411
|
-
Scenario: Prevent unauthorized access
|
|
412
|
-
Given [unauthorized user]
|
|
413
|
-
When [attempts action]
|
|
414
|
-
Then [access denied with proper error]
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
**IMPORTANT:** Feature discovery only creates happy path. Stable/production chores add more scenarios later.
|
|
418
|
-
|
|
419
|
-
## Example: Feature Discovery Flow
|
|
420
|
-
|
|
421
|
-
**Feature:** "Email/password login"
|
|
422
|
-
**Epic decision:** "Using Auth.js with JWT tokens"
|
|
423
|
-
|
|
424
|
-
**Suggested approaches:**
|
|
425
|
-
1. **Simple inline form** - Email + password fields, inline validation
|
|
426
|
-
2. **Multi-step flow** - Step 1: Email, Step 2: Password (better mobile UX)
|
|
427
|
-
3. **Unified auth form** - Combined login/signup (switches based on email)
|
|
428
|
-
|
|
429
|
-
**User picks:** Option 1 (Simple inline form)
|
|
430
|
-
|
|
431
|
-
**Scenarios generated:**
|
|
432
|
-
```gherkin
|
|
433
|
-
Feature: Email/Password Login
|
|
434
|
-
|
|
435
|
-
Scenario: Successful login
|
|
436
|
-
Given I am on the login page
|
|
437
|
-
When I enter valid credentials and submit
|
|
438
|
-
Then I am redirected to the dashboard
|
|
439
|
-
And I have an active JWT token
|
|
440
|
-
|
|
441
|
-
Scenario: Invalid credentials
|
|
442
|
-
Given I am on the login page
|
|
443
|
-
When I enter invalid credentials
|
|
444
|
-
Then I see an error message
|
|
445
|
-
And I remain on the login page
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
**Rationale confirmation:**
|
|
449
|
-
Claude proposes: "Simple inline form chosen - fastest for users, cleanest UX"
|
|
450
|
-
User confirms: "Yes, perfect"
|
|
451
|
-
|
|
452
|
-
**Transition:** `jettypod work implement 10 --winner="prototypes/2025-10-30-login-simple.html" --rationale="Simple inline form chosen - fastest for users, cleanest UX"`
|
|
453
|
-
|
|
454
|
-
## Validation
|
|
455
|
-
|
|
456
|
-
Before completing feature discovery, ensure:
|
|
457
|
-
- [ ] Epic's architectural decision is shown (if exists)
|
|
458
|
-
- [ ] Exactly 3 approaches suggested
|
|
459
|
-
- [ ] Winner chosen (with prototypes or without)
|
|
460
|
-
- [ ] BDD scenarios written
|
|
461
|
-
- [ ] Step definitions written for ALL scenario steps
|
|
462
|
-
- [ ] Scenarios file exists at `features/[feature-slug].feature`
|
|
463
|
-
- [ ] Step definitions file exists at `features/step_definitions/[feature-slug].steps.js`
|
|
464
|
-
- [ ] User knows next step .jettypod work start [feature-id])
|