jettypod 3.0.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.
Files changed (122) hide show
  1. package/.claude/PROTECT_SKILLS.md +28 -0
  2. package/.claude/settings.json +24 -0
  3. package/.claude/settings.local.json +16 -0
  4. package/.claude/skills/epic-discover/SKILL.md +262 -0
  5. package/.claude/skills/feature-discover/SKILL.md +393 -0
  6. package/.claude/skills/speed-mode/SKILL.md +364 -0
  7. package/.claude/skills/stable-mode/SKILL.md +591 -0
  8. package/.github/workflows/test-safety.yml +85 -0
  9. package/README.md +25 -0
  10. package/SPEED-STABLE-AUDIT.md +853 -0
  11. package/SYSTEM-BEHAVIOR.md +1241 -0
  12. package/TEST_SAFETY_AUDIT.md +314 -0
  13. package/TEST_SAFETY_IMPLEMENTATION.md +97 -0
  14. package/cucumber.js +8 -0
  15. package/docs/COMMAND_REFERENCE.md +903 -0
  16. package/docs/DECISIONS.md +68 -0
  17. package/docs/README.md +48 -0
  18. package/docs/STANDARDS-SYSTEM-DOCUMENTATION.md +374 -0
  19. package/docs/TEST-REWRITE-PLAN.md +261 -0
  20. package/docs/ai-test-writing-requirements.md +219 -0
  21. package/docs/claude-code-skills.md +607 -0
  22. package/docs/core-jettypod-methodology/comprehensive-jettypod-methodology.md +582 -0
  23. package/docs/core-jettypod-methodology/deprecated/jettypod-comprehensive-standards.md +1222 -0
  24. package/docs/core-jettypod-methodology/deprecated/jettypod-operating-guide.md +3399 -0
  25. package/docs/core-jettypod-methodology/deprecated/jettypod-technical-checklist.md +1325 -0
  26. package/docs/core-jettypod-methodology/deprecated/jettypod-vibe-coding-framework.md +1544 -0
  27. package/docs/core-jettypod-methodology/deprecated/prompt-engineering-guide.md +320 -0
  28. package/docs/core-jettypod-methodology/deprecated/vibe-coding-cheatsheet (1).md +516 -0
  29. package/docs/core-jettypod-methodology/deprecated/vibe-coding-framework.md +1544 -0
  30. package/docs/features/jettypod-standards-explained.md +543 -0
  31. package/docs/features/standards-inventory.md +257 -0
  32. package/docs/gap-analysis-current-vs-comprehensive-methodology.md +939 -0
  33. package/docs/jettypod-system-overview.md +409 -0
  34. package/features/auto-generate-production-chores.feature +14 -0
  35. package/features/claude-md-protection/steps.js +487 -0
  36. package/features/decisions/index.js +490 -0
  37. package/features/decisions/index.test.js +208 -0
  38. package/features/git-hooks/git-hooks.feature +30 -0
  39. package/features/git-hooks/index.js +93 -0
  40. package/features/git-hooks/index.test.js +137 -0
  41. package/features/git-hooks/post-commit +56 -0
  42. package/features/git-hooks/post-merge +47 -0
  43. package/features/git-hooks/pre-commit +28 -0
  44. package/features/git-hooks/simple-steps.js +53 -0
  45. package/features/git-hooks/simple-test.feature +10 -0
  46. package/features/git-hooks/steps.js +196 -0
  47. package/features/jettypod-update-command.feature +46 -0
  48. package/features/mode-prompts/index.js +95 -0
  49. package/features/mode-prompts/simple-steps.js +44 -0
  50. package/features/mode-prompts/simple-test.feature +9 -0
  51. package/features/mode-prompts/validation.test.js +120 -0
  52. package/features/refactor-mode/steps.js +217 -0
  53. package/features/refactor-mode.feature +49 -0
  54. package/features/skills-update/index.test.js +216 -0
  55. package/features/step_definitions/auto-generate-production-chores.steps.js +162 -0
  56. package/features/step_definitions/terminal-logo.steps.js +145 -0
  57. package/features/step_definitions/update-command.steps.js +183 -0
  58. package/features/terminal-logo/index.js +39 -0
  59. package/features/terminal-logo/terminal-logo.feature +30 -0
  60. package/features/update-command/index.js +181 -0
  61. package/features/update-command/index.test.js +225 -0
  62. package/features/work-commands/bug-workflow-display.feature +22 -0
  63. package/features/work-commands/index.js +311 -0
  64. package/features/work-commands/simple-steps.js +69 -0
  65. package/features/work-commands/stable-tests.feature +57 -0
  66. package/features/work-commands/steps.js +1120 -0
  67. package/features/work-commands/validation.test.js +88 -0
  68. package/features/work-commands/work-commands.feature +13 -0
  69. package/features/work-tracking/discovery-validation.test.js +228 -0
  70. package/features/work-tracking/index.js +1511 -0
  71. package/features/work-tracking/mode-required.feature +112 -0
  72. package/features/work-tracking/phase-tracking.test.js +482 -0
  73. package/features/work-tracking/prototype-tracking.test.js +485 -0
  74. package/features/work-tracking/tree-view.test.js +310 -0
  75. package/features/work-tracking/work-set-mode.feature +71 -0
  76. package/features/work-tracking/work-start-mode.feature +88 -0
  77. package/full-test.txt +0 -0
  78. package/install.sh +89 -0
  79. package/jettypod.js +1640 -0
  80. package/lib/bug-workflow.js +94 -0
  81. package/lib/bug-workflow.test.js +177 -0
  82. package/lib/claudemd.js +130 -0
  83. package/lib/claudemd.test.js +195 -0
  84. package/lib/comprehensive-standards-full.json +1778 -0
  85. package/lib/config.js +181 -0
  86. package/lib/config.test.js +511 -0
  87. package/lib/constants.js +107 -0
  88. package/lib/constants.test.js +164 -0
  89. package/lib/current-work.js +130 -0
  90. package/lib/current-work.test.js +146 -0
  91. package/lib/database-project-config.test.js +107 -0
  92. package/lib/database.js +256 -0
  93. package/lib/database.test.js +106 -0
  94. package/lib/decisions-generator.js +102 -0
  95. package/lib/decisions-generator.test.js +457 -0
  96. package/lib/decisions-helpers.js +119 -0
  97. package/lib/decisions-helpers.test.js +310 -0
  98. package/lib/discovery-checkpoint.js +83 -0
  99. package/lib/docs-generator.js +280 -0
  100. package/lib/external-checklist.js +177 -0
  101. package/lib/git.js +142 -0
  102. package/lib/git.test.js +145 -0
  103. package/lib/logo.js +3 -0
  104. package/lib/migrations/001-epic-to-parent.js +24 -0
  105. package/lib/migrations/002-default-work-item-modes.js +37 -0
  106. package/lib/migrations/002-default-work-item-modes.test.js +351 -0
  107. package/lib/migrations/003-epic-discovery-fields.js +52 -0
  108. package/lib/migrations/004-discovery-decisions-table.js +32 -0
  109. package/lib/migrations/005-migrate-decision-data.js +62 -0
  110. package/lib/migrations/006-feature-phase-field.js +61 -0
  111. package/lib/migrations/007-prototype-tracking.js +38 -0
  112. package/lib/migrations/008-scenario-file-field.js +24 -0
  113. package/lib/migrations/index.js +74 -0
  114. package/lib/production-helpers.js +69 -0
  115. package/lib/project-state.test.js +92 -0
  116. package/lib/test-helpers.js +184 -0
  117. package/lib/test-helpers.test.js +255 -0
  118. package/package.json +36 -0
  119. package/prototypes/test/index.html +1 -0
  120. package/setup-dist-repo.sh +68 -0
  121. package/test-safety-check.sh +80 -0
  122. package/work-item-tracking-plan.md +199 -0
@@ -0,0 +1,28 @@
1
+ # ⚠️ CRITICAL: Skills Directory Protection
2
+
3
+ The `.claude/skills/` directory contains essential skill files:
4
+ - epic-discover
5
+ - feature-discover
6
+ - speed-mode
7
+ - stable-mode
8
+
9
+ **These files should NEVER be deleted or modified by automated processes.**
10
+
11
+ If skills go missing, restore from git:
12
+ ```bash
13
+ git restore .claude/skills/
14
+ ```
15
+
16
+ ## Root Cause Investigation
17
+
18
+ The skills have been mysteriously deleted multiple times. Safety checks added to:
19
+ - `features/work-commands/steps.js`
20
+ - `features/work-commands/simple-steps.js`
21
+
22
+ All `fs.rmSync()` operations now verify the target is in `/tmp/` before deleting.
23
+
24
+ **If this keeps happening, check:**
25
+ 1. IDE file watchers or plugins
26
+ 2. Git hooks or operations
27
+ 3. Claude Code's internal file management
28
+ 4. Any other test cleanup scripts
@@ -0,0 +1,24 @@
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "Edit",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": ".jettypod/hooks/protect-claude-md.js"
10
+ }
11
+ ]
12
+ },
13
+ {
14
+ "matcher": "Write",
15
+ "hooks": [
16
+ {
17
+ "type": "command",
18
+ "command": ".jettypod/hooks/protect-claude-md.js"
19
+ }
20
+ ]
21
+ }
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(git reset:*)",
5
+ "Bash(mv:*)",
6
+ "Bash(npm install)",
7
+ "Bash(npx cucumber-js:*)",
8
+ "Bash(git add:*)",
9
+ "Bash(npm test:*)",
10
+ "Bash(npx cucumber:*)",
11
+ "Bash(find:*)"
12
+ ],
13
+ "deny": [],
14
+ "ask": []
15
+ }
16
+ }
@@ -0,0 +1,262 @@
1
+ ---
2
+ name: epic-discover
3
+ description: Guide epic planning with feature brainstorming and optional architectural decision prototyping. Use when user asks to plan an epic, mentions planning features for an epic, says "help me plan epic", or when they just created an epic and want to break it down into features.
4
+ ---
5
+
6
+ # Epic Discovery Skill
7
+
8
+ Guides Claude through comprehensive epic planning including feature identification and architectural decisions.
9
+
10
+ ## Instructions
11
+
12
+ When this skill is activated, you are helping plan an epic. Follow this structured approach:
13
+
14
+ ### Step 1: Understand the Epic
15
+
16
+ You'll receive context about the epic being planned. Review:
17
+ - Epic title and description
18
+ - Project context
19
+ - Any parent context
20
+
21
+ ### Step 2: Check Existing Decisions
22
+
23
+ **CRITICAL:** Before suggesting approaches, check if architectural decisions already exist for this epic:
24
+
25
+ ```javascript
26
+ const { getDecisionsForEpic } = require('../../lib/decisions-helpers');
27
+ const epicDecisions = await getDecisionsForEpic(epicId);
28
+ ```
29
+
30
+ If decisions exist, present them to the user:
31
+
32
+ ```
33
+ 🎯 **Existing Architectural Decisions for This Epic:**
34
+
35
+ [For each decision:]
36
+ - **[Aspect]:** [Decision]
37
+ *Rationale:* [Why this was chosen]
38
+ *Decided:* [Date]
39
+
40
+ These decisions were made previously. Before we continue:
41
+ 1. Do these decisions still apply?
42
+ 2. Should we revisit any of them?
43
+ 3. Are there additional aspects we need to decide?
44
+ ```
45
+
46
+ Only proceed with suggesting new architectural options if:
47
+ - No decisions exist yet, OR
48
+ - User confirms decisions need to be revisited, OR
49
+ - User identifies new aspects to decide
50
+
51
+ ### Step 3: Brainstorm Features
52
+
53
+ Based on the epic's purpose, suggest features that belong in this epic:
54
+
55
+ ```
56
+ I'll help you plan the features for this epic.
57
+
58
+ Based on [epic name], here are the features I recommend:
59
+
60
+ **Feature 1: [Name]** - [Brief description of what users can do]
61
+ **Feature 2: [Name]** - [Brief description]
62
+ **Feature 3: [Name]** - [Brief description]
63
+ ...
64
+
65
+ **Questions:**
66
+ - [Any clarifying questions about scope]
67
+ - [Missing features to consider]
68
+
69
+ What features should we include? What am I missing?
70
+ ```
71
+
72
+ ### Step 4: Architectural Decision (Optional)
73
+
74
+ After features are defined, ask if this epic needs a shared technical approach:
75
+
76
+ ```
77
+ **Architectural question:** Does this epic need a shared technical decision?
78
+
79
+ For example:
80
+ - Which library/framework for this capability?
81
+ - What data structure or protocol?
82
+ - What architectural pattern?
83
+
84
+ Examples where architectural decisions matter:
85
+ - Real-time features: WebSockets vs SSE vs polling?
86
+ - Auth system: Which auth library and token strategy?
87
+ - Data sync: Optimistic vs pessimistic locking?
88
+
89
+ Should we explore different architectural approaches?
90
+ ```
91
+
92
+ ### Step 5A: If Architectural Decision Needed
93
+
94
+ If the epic needs architectural decision, suggest exactly 3 approaches:
95
+
96
+ ```
97
+ Here are 3 different architectural approaches for [epic name]:
98
+
99
+ **Option 1: [Simple/Conservative approach name]**
100
+ - **Pros**: ✅ [2-3 advantages - proven, reliable, fast to implement]
101
+ - **Cons**: ❌ [2-3 trade-offs - limitations, constraints]
102
+ - **Technical Impact**: [How this affects the features in this epic]
103
+
104
+ **Option 2: [Balanced approach name]**
105
+ - **Pros**: ✅ [2-3 advantages - good balance]
106
+ - **Cons**: ❌ [2-3 trade-offs]
107
+ - **Technical Impact**: [How this affects the features in this epic]
108
+
109
+ **Option 3: [Advanced/Modern approach name]**
110
+ - **Pros**: ✅ [2-3 advantages - powerful, flexible]
111
+ - **Cons**: ❌ [2-3 trade-offs - complexity, learning curve]
112
+ - **Technical Impact**: [How this affects the features in this epic]
113
+
114
+ **Additional approaches considered but not recommended:**
115
+ - *[Alternative 1]*: [Brief] - Not selected because [reason]
116
+ - *[Alternative 2]*: [Brief] - Not selected because [reason]
117
+
118
+ Would you like me to create working prototypes of these architectural approaches?
119
+ ```
120
+
121
+ ### Step 5B: If Prototyping Needed
122
+
123
+ If user wants to prototype approaches:
124
+
125
+ 1. Build 2-3 prototype approaches in `/prototypes/epic-[id]-[approach-name]/`
126
+ 2. Each prototype should demonstrate the architectural difference
127
+ 3. **Add prototype header**:
128
+ ```
129
+ // Prototype: Epic [epic-id] - [approach name]
130
+ // Created: [date]
131
+ // Purpose: Demonstrate [architectural aspect]
132
+ // Decision: [to be filled after testing]
133
+ ```
134
+ 4. After user tests, help them choose the winner
135
+ 5. Document the decision and rationale
136
+
137
+ ### Step 5C: If Approach Already Known
138
+
139
+ If user already knows the approach or skips prototyping:
140
+
141
+ ```
142
+ Which architectural approach works best for this epic?
143
+ ```
144
+
145
+ Then record their decision.
146
+
147
+ ### Step 6: Create Features and Complete Discovery
148
+
149
+ Once features are defined and architectural decision is made (if needed):
150
+
151
+ ```
152
+ I'll create these features now:
153
+
154
+ [Run commands to create features]
155
+
156
+ jettypod work create feature "[Feature 1]" "[Description]" --parent=[epic-id]
157
+ jettypod work create feature "[Feature 2]" "[Description]" --parent=[epic-id]
158
+ ...
159
+
160
+ [If architectural decision was made, confirm rationale first]
161
+
162
+ **Propose the rationale to the user:**
163
+
164
+ "I'm going to record this architectural decision:
165
+
166
+ Aspect: Architecture
167
+ Decision: [architectural approach chosen]
168
+ Rationale: [why this approach was selected]
169
+
170
+ Does this rationale capture why you chose this approach? (You can edit it if needed)"
171
+
172
+ WAIT for user to confirm or provide edited rationale.
173
+
174
+ **Then record with final rationale:**
175
+
176
+ jettypod work epic-implement [epic-id] \
177
+ --aspect="Architecture" \
178
+ --decision="[architectural approach chosen]" \
179
+ --rationale="[user's confirmed/edited rationale]"
180
+
181
+ ✅ Epic planning complete!
182
+
183
+ **Next step:** Plan your first feature
184
+ Run: jettypod work discover [feature-id]
185
+ Or talk to Claude Code: "Let's do feature discovery for #[feature-id]"
186
+ ```
187
+
188
+ ## Key Principles
189
+
190
+ 1. **Feature brainstorming is always required** - Don't skip this even if architectural decision is clear
191
+ 2. **Architectural decision is optional** - Not all epics need one (e.g., "Q1 Goals" is just grouping)
192
+ 3. **Always suggest exactly 3 options** when architectural decision needed - Simple/Conservative, Balanced, Advanced
193
+ 4. **Be specific about features** - Each feature should be user-facing capability
194
+ 5. **Use the Approach Suggestion template** - Pros, Cons, Technical Impact format
195
+ 6. **Suggest next step** - Always end with clear guidance on what to do next
196
+ 7. **Use jettypod commands** - Create features using jettypod CLI, record decisions with epic-implement
197
+
198
+ ## Example: Epic with Architectural Decision
199
+
200
+ Epic: "Real-time Collaboration"
201
+
202
+ **Features brainstormed:**
203
+ - Live cursor tracking
204
+ - Concurrent editing with conflict resolution
205
+ - Presence indicators
206
+ - Real-time chat
207
+
208
+ **Architectural approaches suggested:**
209
+
210
+ **Option 1: Long Polling (REST)**
211
+ - **Pros**: ✅ Simple, works with all proxies, uses existing HTTP infrastructure
212
+ - **Cons**: ❌ Higher latency (1-2s), more server load, inefficient for high-frequency updates
213
+ - **Technical Impact**: Each feature polls independently, easy to implement per feature
214
+
215
+ **Option 2: Server-Sent Events (SSE)**
216
+ - **Pros**: ✅ Lightweight, auto-reconnection, efficient one-way streaming
217
+ - **Cons**: ❌ One-direction only (server→client), limited browser connections (6 per domain)
218
+ - **Technical Impact**: Good for cursor/presence, requires separate POST for edits
219
+
220
+ **Option 3: WebSockets (Socket.io)**
221
+ - **Pros**: ✅ Bidirectional, low latency (<100ms), perfect for real-time, fallback support
222
+ - **Cons**: ❌ More complex infrastructure, requires sticky sessions, WebSocket proxies needed
223
+ - **Technical Impact**: All features use unified connection, best UX but infrastructure complexity
224
+
225
+ **Additional approaches considered:**
226
+ - *WebRTC Data Channels*: Peer-to-peer, low latency - Not selected due to NAT/firewall traversal complexity
227
+ - *GraphQL Subscriptions*: Good for selective updates - Not selected as overkill for this use case
228
+
229
+ **User choice:** Option 3 (WebSockets with Socket.io)
230
+
231
+ **Rationale confirmation:**
232
+ Claude proposes: "Bidirectional real-time updates needed for collaboration, Socket.io provides fallbacks and auto-reconnection"
233
+ User confirms: "Yes, that's right"
234
+
235
+ **Command run:**
236
+ ```bash
237
+ jettypod work epic-implement 5 \
238
+ --aspect="Architecture" \
239
+ --decision="WebSockets with Socket.io" \
240
+ --rationale="Bidirectional real-time updates needed for collaboration, Socket.io provides fallbacks and auto-reconnection"
241
+ ```
242
+
243
+ ## Example: Epic without Architectural Decision
244
+
245
+ Epic: "User Management"
246
+
247
+ **Features brainstormed:**
248
+ - User registration
249
+ - Profile editing
250
+ - Password reset
251
+ - Account deletion
252
+
253
+ **Architectural decision:** None needed - these are independent features using existing auth system
254
+
255
+ ## Validation
256
+
257
+ Before completing epic discovery, ensure:
258
+ - [ ] At least 2-3 features identified
259
+ - [ ] Features are user-facing capabilities (not technical tasks)
260
+ - [ ] Architectural decision documented if needed
261
+ - [ ] Features created in database
262
+ - [ ] User knows next step .jettypod work discover [feature-id])