jettypod 4.1.0 → 4.1.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 (377) hide show
  1. package/SYSTEM-BEHAVIOR.md +18 -18
  2. package/features/work-commands/steps.js +41 -2
  3. package/features/work-tracking/mode-required.feature +9 -9
  4. package/features/work-tracking/work-start-mode.feature +3 -3
  5. package/package.json +1 -1
  6. package/skills-templates/external-transition/SKILL.md +384 -0
  7. package/skills-templates/production-mode/SKILL.md +369 -0
  8. package/test-tmp/external-transition-1762982642301/.claude/settings.json +24 -0
  9. package/test-tmp/external-transition-1762982642301/.claude/skills/epic-planning/SKILL.md +297 -0
  10. package/test-tmp/external-transition-1762982642301/.claude/skills/feature-planning/SKILL.md +464 -0
  11. package/test-tmp/external-transition-1762982642301/.claude/skills/speed-mode/SKILL.md +481 -0
  12. package/test-tmp/external-transition-1762982642301/.claude/skills/stable-mode/SKILL.md +687 -0
  13. package/test-tmp/external-transition-1762982642564/.claude/settings.json +24 -0
  14. package/test-tmp/external-transition-1762982642564/.claude/skills/epic-planning/SKILL.md +297 -0
  15. package/test-tmp/external-transition-1762982642564/.claude/skills/feature-planning/SKILL.md +464 -0
  16. package/test-tmp/external-transition-1762982642564/.claude/skills/speed-mode/SKILL.md +481 -0
  17. package/test-tmp/external-transition-1762982642564/.claude/skills/stable-mode/SKILL.md +687 -0
  18. package/test-tmp/external-transition-1762982642808/.claude/settings.json +24 -0
  19. package/test-tmp/external-transition-1762982642808/.claude/skills/epic-planning/SKILL.md +297 -0
  20. package/test-tmp/external-transition-1762982642808/.claude/skills/feature-planning/SKILL.md +464 -0
  21. package/test-tmp/external-transition-1762982642808/.claude/skills/speed-mode/SKILL.md +481 -0
  22. package/test-tmp/external-transition-1762982642808/.claude/skills/stable-mode/SKILL.md +687 -0
  23. package/test-tmp/external-transition-1762982643116/.claude/settings.json +24 -0
  24. package/test-tmp/external-transition-1762982643116/.claude/skills/epic-planning/SKILL.md +297 -0
  25. package/test-tmp/external-transition-1762982643116/.claude/skills/feature-planning/SKILL.md +464 -0
  26. package/test-tmp/external-transition-1762982643116/.claude/skills/speed-mode/SKILL.md +481 -0
  27. package/test-tmp/external-transition-1762982643116/.claude/skills/stable-mode/SKILL.md +687 -0
  28. package/test-tmp/external-transition-1762982643364/.claude/settings.json +24 -0
  29. package/test-tmp/external-transition-1762982643364/.claude/skills/epic-planning/SKILL.md +297 -0
  30. package/test-tmp/external-transition-1762982643364/.claude/skills/feature-planning/SKILL.md +464 -0
  31. package/test-tmp/external-transition-1762982643364/.claude/skills/speed-mode/SKILL.md +481 -0
  32. package/test-tmp/external-transition-1762982643364/.claude/skills/stable-mode/SKILL.md +687 -0
  33. package/test-tmp/external-transition-1762982643618/.claude/settings.json +24 -0
  34. package/test-tmp/external-transition-1762982643618/.claude/skills/epic-planning/SKILL.md +297 -0
  35. package/test-tmp/external-transition-1762982643618/.claude/skills/feature-planning/SKILL.md +464 -0
  36. package/test-tmp/external-transition-1762982643618/.claude/skills/speed-mode/SKILL.md +481 -0
  37. package/test-tmp/external-transition-1762982643618/.claude/skills/stable-mode/SKILL.md +687 -0
  38. package/test-tmp/external-transition-1762982643860/.claude/settings.json +24 -0
  39. package/test-tmp/external-transition-1762982643860/.claude/skills/epic-planning/SKILL.md +297 -0
  40. package/test-tmp/external-transition-1762982643860/.claude/skills/feature-planning/SKILL.md +464 -0
  41. package/test-tmp/external-transition-1762982643860/.claude/skills/speed-mode/SKILL.md +481 -0
  42. package/test-tmp/external-transition-1762982643860/.claude/skills/stable-mode/SKILL.md +687 -0
  43. package/test-tmp/external-transition-1762982643991/.claude/settings.json +24 -0
  44. package/test-tmp/external-transition-1762982643991/.claude/skills/epic-planning/SKILL.md +297 -0
  45. package/test-tmp/external-transition-1762982643991/.claude/skills/feature-planning/SKILL.md +464 -0
  46. package/test-tmp/external-transition-1762982643991/.claude/skills/speed-mode/SKILL.md +481 -0
  47. package/test-tmp/external-transition-1762982643991/.claude/skills/stable-mode/SKILL.md +687 -0
  48. package/test-tmp/external-transition-1762982644134/.claude/settings.json +24 -0
  49. package/test-tmp/external-transition-1762982644134/.claude/skills/epic-planning/SKILL.md +297 -0
  50. package/test-tmp/external-transition-1762982644134/.claude/skills/feature-planning/SKILL.md +464 -0
  51. package/test-tmp/external-transition-1762982644134/.claude/skills/speed-mode/SKILL.md +481 -0
  52. package/test-tmp/external-transition-1762982644134/.claude/skills/stable-mode/SKILL.md +687 -0
  53. package/test-tmp/external-transition-1762982644269/.claude/settings.json +24 -0
  54. package/test-tmp/external-transition-1762982644269/.claude/skills/epic-planning/SKILL.md +297 -0
  55. package/test-tmp/external-transition-1762982644269/.claude/skills/feature-planning/SKILL.md +464 -0
  56. package/test-tmp/external-transition-1762982644269/.claude/skills/speed-mode/SKILL.md +481 -0
  57. package/test-tmp/external-transition-1762982644269/.claude/skills/stable-mode/SKILL.md +687 -0
  58. package/test-tmp/external-transition-1762982644399/.claude/settings.json +24 -0
  59. package/test-tmp/external-transition-1762982644399/.claude/skills/epic-planning/SKILL.md +297 -0
  60. package/test-tmp/external-transition-1762982644399/.claude/skills/feature-planning/SKILL.md +464 -0
  61. package/test-tmp/external-transition-1762982644399/.claude/skills/speed-mode/SKILL.md +481 -0
  62. package/test-tmp/external-transition-1762982644399/.claude/skills/stable-mode/SKILL.md +687 -0
  63. package/test-tmp/external-transition-1762982644526/.claude/settings.json +24 -0
  64. package/test-tmp/external-transition-1762982644526/.claude/skills/epic-planning/SKILL.md +297 -0
  65. package/test-tmp/external-transition-1762982644526/.claude/skills/feature-planning/SKILL.md +464 -0
  66. package/test-tmp/external-transition-1762982644526/.claude/skills/speed-mode/SKILL.md +481 -0
  67. package/test-tmp/external-transition-1762982644526/.claude/skills/stable-mode/SKILL.md +687 -0
  68. package/test-tmp/external-transition-1762982644652/.claude/settings.json +24 -0
  69. package/test-tmp/external-transition-1762982644652/.claude/skills/epic-planning/SKILL.md +297 -0
  70. package/test-tmp/external-transition-1762982644652/.claude/skills/feature-planning/SKILL.md +464 -0
  71. package/test-tmp/external-transition-1762982644652/.claude/skills/speed-mode/SKILL.md +481 -0
  72. package/test-tmp/external-transition-1762982644652/.claude/skills/stable-mode/SKILL.md +687 -0
  73. package/test-tmp/external-transition-1762982644891/.claude/settings.json +24 -0
  74. package/test-tmp/external-transition-1762982644891/.claude/skills/epic-planning/SKILL.md +297 -0
  75. package/test-tmp/external-transition-1762982644891/.claude/skills/feature-planning/SKILL.md +464 -0
  76. package/test-tmp/external-transition-1762982644891/.claude/skills/speed-mode/SKILL.md +481 -0
  77. package/test-tmp/external-transition-1762982644891/.claude/skills/stable-mode/SKILL.md +687 -0
  78. package/test-tmp/external-transition-1762982645161/.claude/settings.json +24 -0
  79. package/test-tmp/external-transition-1762982645161/.claude/skills/epic-planning/SKILL.md +297 -0
  80. package/test-tmp/external-transition-1762982645161/.claude/skills/feature-planning/SKILL.md +464 -0
  81. package/test-tmp/external-transition-1762982645161/.claude/skills/speed-mode/SKILL.md +481 -0
  82. package/test-tmp/external-transition-1762982645161/.claude/skills/stable-mode/SKILL.md +687 -0
  83. package/test-tmp/external-transition-1762982685251/.claude/settings.json +24 -0
  84. package/test-tmp/external-transition-1762982685251/.claude/skills/epic-planning/SKILL.md +297 -0
  85. package/test-tmp/external-transition-1762982685251/.claude/skills/feature-planning/SKILL.md +464 -0
  86. package/test-tmp/external-transition-1762982685251/.claude/skills/speed-mode/SKILL.md +481 -0
  87. package/test-tmp/external-transition-1762982685251/.claude/skills/stable-mode/SKILL.md +687 -0
  88. package/test-tmp/external-transition-1762982685496/.claude/settings.json +24 -0
  89. package/test-tmp/external-transition-1762982685496/.claude/skills/epic-planning/SKILL.md +297 -0
  90. package/test-tmp/external-transition-1762982685496/.claude/skills/feature-planning/SKILL.md +464 -0
  91. package/test-tmp/external-transition-1762982685496/.claude/skills/speed-mode/SKILL.md +481 -0
  92. package/test-tmp/external-transition-1762982685496/.claude/skills/stable-mode/SKILL.md +687 -0
  93. package/test-tmp/external-transition-1762982685793/.claude/settings.json +24 -0
  94. package/test-tmp/external-transition-1762982685793/.claude/skills/epic-planning/SKILL.md +297 -0
  95. package/test-tmp/external-transition-1762982685793/.claude/skills/feature-planning/SKILL.md +464 -0
  96. package/test-tmp/external-transition-1762982685793/.claude/skills/speed-mode/SKILL.md +481 -0
  97. package/test-tmp/external-transition-1762982685793/.claude/skills/stable-mode/SKILL.md +687 -0
  98. package/test-tmp/external-transition-1762982686068/.claude/settings.json +24 -0
  99. package/test-tmp/external-transition-1762982686068/.claude/skills/epic-planning/SKILL.md +297 -0
  100. package/test-tmp/external-transition-1762982686068/.claude/skills/feature-planning/SKILL.md +464 -0
  101. package/test-tmp/external-transition-1762982686068/.claude/skills/speed-mode/SKILL.md +481 -0
  102. package/test-tmp/external-transition-1762982686068/.claude/skills/stable-mode/SKILL.md +687 -0
  103. package/test-tmp/external-transition-1762982686347/.claude/settings.json +24 -0
  104. package/test-tmp/external-transition-1762982686347/.claude/skills/epic-planning/SKILL.md +297 -0
  105. package/test-tmp/external-transition-1762982686347/.claude/skills/feature-planning/SKILL.md +464 -0
  106. package/test-tmp/external-transition-1762982686347/.claude/skills/speed-mode/SKILL.md +481 -0
  107. package/test-tmp/external-transition-1762982686347/.claude/skills/stable-mode/SKILL.md +687 -0
  108. package/test-tmp/external-transition-1762982686671/.claude/settings.json +24 -0
  109. package/test-tmp/external-transition-1762982686671/.claude/skills/epic-planning/SKILL.md +297 -0
  110. package/test-tmp/external-transition-1762982686671/.claude/skills/feature-planning/SKILL.md +464 -0
  111. package/test-tmp/external-transition-1762982686671/.claude/skills/speed-mode/SKILL.md +481 -0
  112. package/test-tmp/external-transition-1762982686671/.claude/skills/stable-mode/SKILL.md +687 -0
  113. package/test-tmp/external-transition-1762982686913/.claude/settings.json +24 -0
  114. package/test-tmp/external-transition-1762982686913/.claude/skills/epic-planning/SKILL.md +297 -0
  115. package/test-tmp/external-transition-1762982686913/.claude/skills/feature-planning/SKILL.md +464 -0
  116. package/test-tmp/external-transition-1762982686913/.claude/skills/speed-mode/SKILL.md +481 -0
  117. package/test-tmp/external-transition-1762982686913/.claude/skills/stable-mode/SKILL.md +687 -0
  118. package/test-tmp/external-transition-1762982687076/.claude/settings.json +24 -0
  119. package/test-tmp/external-transition-1762982687076/.claude/skills/epic-planning/SKILL.md +297 -0
  120. package/test-tmp/external-transition-1762982687076/.claude/skills/feature-planning/SKILL.md +464 -0
  121. package/test-tmp/external-transition-1762982687076/.claude/skills/speed-mode/SKILL.md +481 -0
  122. package/test-tmp/external-transition-1762982687076/.claude/skills/stable-mode/SKILL.md +687 -0
  123. package/test-tmp/external-transition-1762982687204/.claude/settings.json +24 -0
  124. package/test-tmp/external-transition-1762982687204/.claude/skills/epic-planning/SKILL.md +297 -0
  125. package/test-tmp/external-transition-1762982687204/.claude/skills/feature-planning/SKILL.md +464 -0
  126. package/test-tmp/external-transition-1762982687204/.claude/skills/speed-mode/SKILL.md +481 -0
  127. package/test-tmp/external-transition-1762982687204/.claude/skills/stable-mode/SKILL.md +687 -0
  128. package/test-tmp/external-transition-1762982687327/.claude/settings.json +24 -0
  129. package/test-tmp/external-transition-1762982687327/.claude/skills/epic-planning/SKILL.md +297 -0
  130. package/test-tmp/external-transition-1762982687327/.claude/skills/feature-planning/SKILL.md +464 -0
  131. package/test-tmp/external-transition-1762982687327/.claude/skills/speed-mode/SKILL.md +481 -0
  132. package/test-tmp/external-transition-1762982687327/.claude/skills/stable-mode/SKILL.md +687 -0
  133. package/test-tmp/external-transition-1762982687448/.claude/settings.json +24 -0
  134. package/test-tmp/external-transition-1762982687448/.claude/skills/epic-planning/SKILL.md +297 -0
  135. package/test-tmp/external-transition-1762982687448/.claude/skills/feature-planning/SKILL.md +464 -0
  136. package/test-tmp/external-transition-1762982687448/.claude/skills/speed-mode/SKILL.md +481 -0
  137. package/test-tmp/external-transition-1762982687448/.claude/skills/stable-mode/SKILL.md +687 -0
  138. package/test-tmp/external-transition-1762982687677/.claude/settings.json +24 -0
  139. package/test-tmp/external-transition-1762982687677/.claude/skills/epic-planning/SKILL.md +297 -0
  140. package/test-tmp/external-transition-1762982687677/.claude/skills/feature-planning/SKILL.md +464 -0
  141. package/test-tmp/external-transition-1762982687677/.claude/skills/speed-mode/SKILL.md +481 -0
  142. package/test-tmp/external-transition-1762982687677/.claude/skills/stable-mode/SKILL.md +687 -0
  143. package/test-tmp/external-transition-1762982687813/.claude/settings.json +24 -0
  144. package/test-tmp/external-transition-1762982687813/.claude/skills/epic-planning/SKILL.md +297 -0
  145. package/test-tmp/external-transition-1762982687813/.claude/skills/feature-planning/SKILL.md +464 -0
  146. package/test-tmp/external-transition-1762982687813/.claude/skills/speed-mode/SKILL.md +481 -0
  147. package/test-tmp/external-transition-1762982687813/.claude/skills/stable-mode/SKILL.md +687 -0
  148. package/test-tmp/external-transition-1762982688062/.claude/settings.json +24 -0
  149. package/test-tmp/external-transition-1762982688062/.claude/skills/epic-planning/SKILL.md +297 -0
  150. package/test-tmp/external-transition-1762982688062/.claude/skills/feature-planning/SKILL.md +464 -0
  151. package/test-tmp/external-transition-1762982688062/.claude/skills/speed-mode/SKILL.md +481 -0
  152. package/test-tmp/external-transition-1762982688062/.claude/skills/stable-mode/SKILL.md +687 -0
  153. package/test-tmp/external-transition-1762982688189/.claude/settings.json +24 -0
  154. package/test-tmp/external-transition-1762982688189/.claude/skills/epic-planning/SKILL.md +297 -0
  155. package/test-tmp/external-transition-1762982688189/.claude/skills/feature-planning/SKILL.md +464 -0
  156. package/test-tmp/external-transition-1762982688189/.claude/skills/speed-mode/SKILL.md +481 -0
  157. package/test-tmp/external-transition-1762982688189/.claude/skills/stable-mode/SKILL.md +687 -0
  158. package/test-tmp/external-transition-1762982737358/.claude/settings.json +24 -0
  159. package/test-tmp/external-transition-1762982737358/.claude/skills/epic-planning/SKILL.md +297 -0
  160. package/test-tmp/external-transition-1762982737358/.claude/skills/feature-planning/SKILL.md +464 -0
  161. package/test-tmp/external-transition-1762982737358/.claude/skills/speed-mode/SKILL.md +481 -0
  162. package/test-tmp/external-transition-1762982737358/.claude/skills/stable-mode/SKILL.md +687 -0
  163. package/test-tmp/external-transition-1762982737594/.claude/settings.json +24 -0
  164. package/test-tmp/external-transition-1762982737594/.claude/skills/epic-planning/SKILL.md +297 -0
  165. package/test-tmp/external-transition-1762982737594/.claude/skills/feature-planning/SKILL.md +464 -0
  166. package/test-tmp/external-transition-1762982737594/.claude/skills/speed-mode/SKILL.md +481 -0
  167. package/test-tmp/external-transition-1762982737594/.claude/skills/stable-mode/SKILL.md +687 -0
  168. package/test-tmp/external-transition-1762982737931/.claude/settings.json +24 -0
  169. package/test-tmp/external-transition-1762982737931/.claude/skills/epic-planning/SKILL.md +297 -0
  170. package/test-tmp/external-transition-1762982737931/.claude/skills/feature-planning/SKILL.md +464 -0
  171. package/test-tmp/external-transition-1762982737931/.claude/skills/speed-mode/SKILL.md +481 -0
  172. package/test-tmp/external-transition-1762982737931/.claude/skills/stable-mode/SKILL.md +687 -0
  173. package/test-tmp/external-transition-1762982738184/.claude/settings.json +24 -0
  174. package/test-tmp/external-transition-1762982738184/.claude/skills/epic-planning/SKILL.md +297 -0
  175. package/test-tmp/external-transition-1762982738184/.claude/skills/feature-planning/SKILL.md +464 -0
  176. package/test-tmp/external-transition-1762982738184/.claude/skills/speed-mode/SKILL.md +481 -0
  177. package/test-tmp/external-transition-1762982738184/.claude/skills/stable-mode/SKILL.md +687 -0
  178. package/test-tmp/external-transition-1762982738500/.claude/settings.json +24 -0
  179. package/test-tmp/external-transition-1762982738500/.claude/skills/epic-planning/SKILL.md +297 -0
  180. package/test-tmp/external-transition-1762982738500/.claude/skills/feature-planning/SKILL.md +464 -0
  181. package/test-tmp/external-transition-1762982738500/.claude/skills/speed-mode/SKILL.md +481 -0
  182. package/test-tmp/external-transition-1762982738500/.claude/skills/stable-mode/SKILL.md +687 -0
  183. package/test-tmp/external-transition-1762982738729/.claude/settings.json +24 -0
  184. package/test-tmp/external-transition-1762982738729/.claude/skills/epic-planning/SKILL.md +297 -0
  185. package/test-tmp/external-transition-1762982738729/.claude/skills/feature-planning/SKILL.md +464 -0
  186. package/test-tmp/external-transition-1762982738729/.claude/skills/speed-mode/SKILL.md +481 -0
  187. package/test-tmp/external-transition-1762982738729/.claude/skills/stable-mode/SKILL.md +687 -0
  188. package/test-tmp/external-transition-1762982738960/.claude/settings.json +24 -0
  189. package/test-tmp/external-transition-1762982738960/.claude/skills/epic-planning/SKILL.md +297 -0
  190. package/test-tmp/external-transition-1762982738960/.claude/skills/feature-planning/SKILL.md +464 -0
  191. package/test-tmp/external-transition-1762982738960/.claude/skills/speed-mode/SKILL.md +481 -0
  192. package/test-tmp/external-transition-1762982738960/.claude/skills/stable-mode/SKILL.md +687 -0
  193. package/test-tmp/external-transition-1762982739084/.claude/settings.json +24 -0
  194. package/test-tmp/external-transition-1762982739084/.claude/skills/epic-planning/SKILL.md +297 -0
  195. package/test-tmp/external-transition-1762982739084/.claude/skills/feature-planning/SKILL.md +464 -0
  196. package/test-tmp/external-transition-1762982739084/.claude/skills/speed-mode/SKILL.md +481 -0
  197. package/test-tmp/external-transition-1762982739084/.claude/skills/stable-mode/SKILL.md +687 -0
  198. package/test-tmp/external-transition-1762982739206/.claude/settings.json +24 -0
  199. package/test-tmp/external-transition-1762982739206/.claude/skills/epic-planning/SKILL.md +297 -0
  200. package/test-tmp/external-transition-1762982739206/.claude/skills/feature-planning/SKILL.md +464 -0
  201. package/test-tmp/external-transition-1762982739206/.claude/skills/speed-mode/SKILL.md +481 -0
  202. package/test-tmp/external-transition-1762982739206/.claude/skills/stable-mode/SKILL.md +687 -0
  203. package/test-tmp/external-transition-1762982739402/.claude/settings.json +24 -0
  204. package/test-tmp/external-transition-1762982739402/.claude/skills/epic-planning/SKILL.md +297 -0
  205. package/test-tmp/external-transition-1762982739402/.claude/skills/feature-planning/SKILL.md +464 -0
  206. package/test-tmp/external-transition-1762982739402/.claude/skills/speed-mode/SKILL.md +481 -0
  207. package/test-tmp/external-transition-1762982739402/.claude/skills/stable-mode/SKILL.md +687 -0
  208. package/test-tmp/external-transition-1762982739532/.claude/settings.json +24 -0
  209. package/test-tmp/external-transition-1762982739532/.claude/skills/epic-planning/SKILL.md +297 -0
  210. package/test-tmp/external-transition-1762982739532/.claude/skills/feature-planning/SKILL.md +464 -0
  211. package/test-tmp/external-transition-1762982739532/.claude/skills/speed-mode/SKILL.md +481 -0
  212. package/test-tmp/external-transition-1762982739532/.claude/skills/stable-mode/SKILL.md +687 -0
  213. package/test-tmp/external-transition-1762982740510/.claude/settings.json +24 -0
  214. package/test-tmp/external-transition-1762982740510/.claude/skills/epic-planning/SKILL.md +297 -0
  215. package/test-tmp/external-transition-1762982740510/.claude/skills/feature-planning/SKILL.md +464 -0
  216. package/test-tmp/external-transition-1762982740510/.claude/skills/speed-mode/SKILL.md +481 -0
  217. package/test-tmp/external-transition-1762982740510/.claude/skills/stable-mode/SKILL.md +687 -0
  218. package/test-tmp/external-transition-1762982740655/.claude/settings.json +24 -0
  219. package/test-tmp/external-transition-1762982740655/.claude/skills/epic-planning/SKILL.md +297 -0
  220. package/test-tmp/external-transition-1762982740655/.claude/skills/feature-planning/SKILL.md +464 -0
  221. package/test-tmp/external-transition-1762982740655/.claude/skills/speed-mode/SKILL.md +481 -0
  222. package/test-tmp/external-transition-1762982740655/.claude/skills/stable-mode/SKILL.md +687 -0
  223. package/test-tmp/external-transition-1762982741707/.claude/settings.json +24 -0
  224. package/test-tmp/external-transition-1762982741707/.claude/skills/epic-planning/SKILL.md +297 -0
  225. package/test-tmp/external-transition-1762982741707/.claude/skills/feature-planning/SKILL.md +464 -0
  226. package/test-tmp/external-transition-1762982741707/.claude/skills/speed-mode/SKILL.md +481 -0
  227. package/test-tmp/external-transition-1762982741707/.claude/skills/stable-mode/SKILL.md +687 -0
  228. package/test-tmp/external-transition-1762982741828/.claude/settings.json +24 -0
  229. package/test-tmp/external-transition-1762982741828/.claude/skills/epic-planning/SKILL.md +297 -0
  230. package/test-tmp/external-transition-1762982741828/.claude/skills/feature-planning/SKILL.md +464 -0
  231. package/test-tmp/external-transition-1762982741828/.claude/skills/speed-mode/SKILL.md +481 -0
  232. package/test-tmp/external-transition-1762982741828/.claude/skills/stable-mode/SKILL.md +687 -0
  233. package/test-tmp/external-transition-1762982854935/.claude/settings.json +24 -0
  234. package/test-tmp/external-transition-1762982854935/.claude/skills/epic-planning/SKILL.md +297 -0
  235. package/test-tmp/external-transition-1762982854935/.claude/skills/external-transition/SKILL.md +384 -0
  236. package/test-tmp/external-transition-1762982854935/.claude/skills/feature-planning/SKILL.md +464 -0
  237. package/test-tmp/external-transition-1762982854935/.claude/skills/production-mode/SKILL.md +369 -0
  238. package/test-tmp/external-transition-1762982854935/.claude/skills/speed-mode/SKILL.md +481 -0
  239. package/test-tmp/external-transition-1762982854935/.claude/skills/stable-mode/SKILL.md +687 -0
  240. package/test-tmp/external-transition-1762982855281/.claude/settings.json +24 -0
  241. package/test-tmp/external-transition-1762982855281/.claude/skills/epic-planning/SKILL.md +297 -0
  242. package/test-tmp/external-transition-1762982855281/.claude/skills/external-transition/SKILL.md +384 -0
  243. package/test-tmp/external-transition-1762982855281/.claude/skills/feature-planning/SKILL.md +464 -0
  244. package/test-tmp/external-transition-1762982855281/.claude/skills/production-mode/SKILL.md +369 -0
  245. package/test-tmp/external-transition-1762982855281/.claude/skills/speed-mode/SKILL.md +481 -0
  246. package/test-tmp/external-transition-1762982855281/.claude/skills/stable-mode/SKILL.md +687 -0
  247. package/test-tmp/external-transition-1762982855562/.claude/settings.json +24 -0
  248. package/test-tmp/external-transition-1762982855562/.claude/skills/epic-planning/SKILL.md +297 -0
  249. package/test-tmp/external-transition-1762982855562/.claude/skills/external-transition/SKILL.md +384 -0
  250. package/test-tmp/external-transition-1762982855562/.claude/skills/feature-planning/SKILL.md +464 -0
  251. package/test-tmp/external-transition-1762982855562/.claude/skills/production-mode/SKILL.md +369 -0
  252. package/test-tmp/external-transition-1762982855562/.claude/skills/speed-mode/SKILL.md +481 -0
  253. package/test-tmp/external-transition-1762982855562/.claude/skills/stable-mode/SKILL.md +687 -0
  254. package/test-tmp/external-transition-1762982855855/.claude/settings.json +24 -0
  255. package/test-tmp/external-transition-1762982855855/.claude/skills/epic-planning/SKILL.md +297 -0
  256. package/test-tmp/external-transition-1762982855855/.claude/skills/external-transition/SKILL.md +384 -0
  257. package/test-tmp/external-transition-1762982855855/.claude/skills/feature-planning/SKILL.md +464 -0
  258. package/test-tmp/external-transition-1762982855855/.claude/skills/production-mode/SKILL.md +369 -0
  259. package/test-tmp/external-transition-1762982855855/.claude/skills/speed-mode/SKILL.md +481 -0
  260. package/test-tmp/external-transition-1762982855855/.claude/skills/stable-mode/SKILL.md +687 -0
  261. package/test-tmp/external-transition-1762982856107/.claude/settings.json +24 -0
  262. package/test-tmp/external-transition-1762982856107/.claude/skills/epic-planning/SKILL.md +297 -0
  263. package/test-tmp/external-transition-1762982856107/.claude/skills/external-transition/SKILL.md +384 -0
  264. package/test-tmp/external-transition-1762982856107/.claude/skills/feature-planning/SKILL.md +464 -0
  265. package/test-tmp/external-transition-1762982856107/.claude/skills/production-mode/SKILL.md +369 -0
  266. package/test-tmp/external-transition-1762982856107/.claude/skills/speed-mode/SKILL.md +481 -0
  267. package/test-tmp/external-transition-1762982856107/.claude/skills/stable-mode/SKILL.md +687 -0
  268. package/test-tmp/external-transition-1762982856356/.claude/settings.json +24 -0
  269. package/test-tmp/external-transition-1762982856356/.claude/skills/epic-planning/SKILL.md +297 -0
  270. package/test-tmp/external-transition-1762982856356/.claude/skills/external-transition/SKILL.md +384 -0
  271. package/test-tmp/external-transition-1762982856356/.claude/skills/feature-planning/SKILL.md +464 -0
  272. package/test-tmp/external-transition-1762982856356/.claude/skills/production-mode/SKILL.md +369 -0
  273. package/test-tmp/external-transition-1762982856356/.claude/skills/speed-mode/SKILL.md +481 -0
  274. package/test-tmp/external-transition-1762982856356/.claude/skills/stable-mode/SKILL.md +687 -0
  275. package/test-tmp/external-transition-1762982856716/.claude/settings.json +24 -0
  276. package/test-tmp/external-transition-1762982856716/.claude/skills/epic-planning/SKILL.md +297 -0
  277. package/test-tmp/external-transition-1762982856716/.claude/skills/external-transition/SKILL.md +384 -0
  278. package/test-tmp/external-transition-1762982856716/.claude/skills/feature-planning/SKILL.md +464 -0
  279. package/test-tmp/external-transition-1762982856716/.claude/skills/production-mode/SKILL.md +369 -0
  280. package/test-tmp/external-transition-1762982856716/.claude/skills/speed-mode/SKILL.md +481 -0
  281. package/test-tmp/external-transition-1762982856716/.claude/skills/stable-mode/SKILL.md +687 -0
  282. package/test-tmp/external-transition-1762982856851/.claude/settings.json +24 -0
  283. package/test-tmp/external-transition-1762982856851/.claude/skills/epic-planning/SKILL.md +297 -0
  284. package/test-tmp/external-transition-1762982856851/.claude/skills/external-transition/SKILL.md +384 -0
  285. package/test-tmp/external-transition-1762982856851/.claude/skills/feature-planning/SKILL.md +464 -0
  286. package/test-tmp/external-transition-1762982856851/.claude/skills/production-mode/SKILL.md +369 -0
  287. package/test-tmp/external-transition-1762982856851/.claude/skills/speed-mode/SKILL.md +481 -0
  288. package/test-tmp/external-transition-1762982856851/.claude/skills/stable-mode/SKILL.md +687 -0
  289. package/test-tmp/external-transition-1762982856983/.claude/settings.json +24 -0
  290. package/test-tmp/external-transition-1762982856983/.claude/skills/epic-planning/SKILL.md +297 -0
  291. package/test-tmp/external-transition-1762982856983/.claude/skills/external-transition/SKILL.md +384 -0
  292. package/test-tmp/external-transition-1762982856983/.claude/skills/feature-planning/SKILL.md +464 -0
  293. package/test-tmp/external-transition-1762982856983/.claude/skills/production-mode/SKILL.md +369 -0
  294. package/test-tmp/external-transition-1762982856983/.claude/skills/speed-mode/SKILL.md +481 -0
  295. package/test-tmp/external-transition-1762982856983/.claude/skills/stable-mode/SKILL.md +687 -0
  296. package/test-tmp/external-transition-1762982857114/.claude/settings.json +24 -0
  297. package/test-tmp/external-transition-1762982857114/.claude/skills/epic-planning/SKILL.md +297 -0
  298. package/test-tmp/external-transition-1762982857114/.claude/skills/external-transition/SKILL.md +384 -0
  299. package/test-tmp/external-transition-1762982857114/.claude/skills/feature-planning/SKILL.md +464 -0
  300. package/test-tmp/external-transition-1762982857114/.claude/skills/production-mode/SKILL.md +369 -0
  301. package/test-tmp/external-transition-1762982857114/.claude/skills/speed-mode/SKILL.md +481 -0
  302. package/test-tmp/external-transition-1762982857114/.claude/skills/stable-mode/SKILL.md +687 -0
  303. package/test-tmp/external-transition-1762982857250/.claude/settings.json +24 -0
  304. package/test-tmp/external-transition-1762982857250/.claude/skills/epic-planning/SKILL.md +297 -0
  305. package/test-tmp/external-transition-1762982857250/.claude/skills/external-transition/SKILL.md +384 -0
  306. package/test-tmp/external-transition-1762982857250/.claude/skills/feature-planning/SKILL.md +464 -0
  307. package/test-tmp/external-transition-1762982857250/.claude/skills/production-mode/SKILL.md +369 -0
  308. package/test-tmp/external-transition-1762982857250/.claude/skills/speed-mode/SKILL.md +481 -0
  309. package/test-tmp/external-transition-1762982857250/.claude/skills/stable-mode/SKILL.md +687 -0
  310. package/test-tmp/external-transition-1762982857380/.claude/settings.json +24 -0
  311. package/test-tmp/external-transition-1762982857380/.claude/skills/epic-planning/SKILL.md +297 -0
  312. package/test-tmp/external-transition-1762982857380/.claude/skills/external-transition/SKILL.md +384 -0
  313. package/test-tmp/external-transition-1762982857380/.claude/skills/feature-planning/SKILL.md +464 -0
  314. package/test-tmp/external-transition-1762982857380/.claude/skills/production-mode/SKILL.md +369 -0
  315. package/test-tmp/external-transition-1762982857380/.claude/skills/speed-mode/SKILL.md +481 -0
  316. package/test-tmp/external-transition-1762982857380/.claude/skills/stable-mode/SKILL.md +687 -0
  317. package/test-tmp/external-transition-1762982857515/.claude/settings.json +24 -0
  318. package/test-tmp/external-transition-1762982857515/.claude/skills/epic-planning/SKILL.md +297 -0
  319. package/test-tmp/external-transition-1762982857515/.claude/skills/external-transition/SKILL.md +384 -0
  320. package/test-tmp/external-transition-1762982857515/.claude/skills/feature-planning/SKILL.md +464 -0
  321. package/test-tmp/external-transition-1762982857515/.claude/skills/production-mode/SKILL.md +369 -0
  322. package/test-tmp/external-transition-1762982857515/.claude/skills/speed-mode/SKILL.md +481 -0
  323. package/test-tmp/external-transition-1762982857515/.claude/skills/stable-mode/SKILL.md +687 -0
  324. package/test-tmp/external-transition-1762982857865/.claude/settings.json +24 -0
  325. package/test-tmp/external-transition-1762982857865/.claude/skills/epic-planning/SKILL.md +297 -0
  326. package/test-tmp/external-transition-1762982857865/.claude/skills/external-transition/SKILL.md +384 -0
  327. package/test-tmp/external-transition-1762982857865/.claude/skills/feature-planning/SKILL.md +464 -0
  328. package/test-tmp/external-transition-1762982857865/.claude/skills/production-mode/SKILL.md +369 -0
  329. package/test-tmp/external-transition-1762982857865/.claude/skills/speed-mode/SKILL.md +481 -0
  330. package/test-tmp/external-transition-1762982857865/.claude/skills/stable-mode/SKILL.md +687 -0
  331. package/test-tmp/external-transition-1762982858002/.claude/settings.json +24 -0
  332. package/test-tmp/external-transition-1762982858002/.claude/skills/epic-planning/SKILL.md +297 -0
  333. package/test-tmp/external-transition-1762982858002/.claude/skills/external-transition/SKILL.md +384 -0
  334. package/test-tmp/external-transition-1762982858002/.claude/skills/feature-planning/SKILL.md +464 -0
  335. package/test-tmp/external-transition-1762982858002/.claude/skills/production-mode/SKILL.md +369 -0
  336. package/test-tmp/external-transition-1762982858002/.claude/skills/speed-mode/SKILL.md +481 -0
  337. package/test-tmp/external-transition-1762982858002/.claude/skills/stable-mode/SKILL.md +687 -0
  338. package/test-tmp/external-transition-1762982858258/.claude/settings.json +24 -0
  339. package/test-tmp/external-transition-1762982858258/.claude/skills/epic-planning/SKILL.md +297 -0
  340. package/test-tmp/external-transition-1762982858258/.claude/skills/external-transition/SKILL.md +384 -0
  341. package/test-tmp/external-transition-1762982858258/.claude/skills/feature-planning/SKILL.md +464 -0
  342. package/test-tmp/external-transition-1762982858258/.claude/skills/production-mode/SKILL.md +369 -0
  343. package/test-tmp/external-transition-1762982858258/.claude/skills/speed-mode/SKILL.md +481 -0
  344. package/test-tmp/external-transition-1762982858258/.claude/skills/stable-mode/SKILL.md +687 -0
  345. package/test-tmp/production-mode-1762982642199/features/test-feature.feature +22 -0
  346. package/test-tmp/production-mode-1762982642221/features/new-feature.feature +17 -0
  347. package/test-tmp/production-mode-1762982642230/features/test-feature.feature +4 -0
  348. package/test-tmp/production-mode-1762982642238/features/test-feature.feature +4 -0
  349. package/test-tmp/production-mode-1762982642247/features/test-feature.feature +4 -0
  350. package/test-tmp/production-mode-1762982642255/features/test-feature.feature +4 -0
  351. package/test-tmp/production-mode-1762982642264/features/test-feature.feature +4 -0
  352. package/test-tmp/production-mode-1762982642283/features/test-feature.feature +4 -0
  353. package/test-tmp/production-mode-1762982685154/features/test-feature.feature +22 -0
  354. package/test-tmp/production-mode-1762982685176/features/new-feature.feature +17 -0
  355. package/test-tmp/production-mode-1762982685187/features/test-feature.feature +4 -0
  356. package/test-tmp/production-mode-1762982685196/features/test-feature.feature +4 -0
  357. package/test-tmp/production-mode-1762982685203/features/test-feature.feature +4 -0
  358. package/test-tmp/production-mode-1762982685211/features/test-feature.feature +4 -0
  359. package/test-tmp/production-mode-1762982685219/features/test-feature.feature +4 -0
  360. package/test-tmp/production-mode-1762982685235/features/test-feature.feature +4 -0
  361. package/test-tmp/production-mode-1762982737257/features/test-feature.feature +22 -0
  362. package/test-tmp/production-mode-1762982737284/features/new-feature.feature +17 -0
  363. package/test-tmp/production-mode-1762982737294/features/test-feature.feature +4 -0
  364. package/test-tmp/production-mode-1762982737302/features/test-feature.feature +4 -0
  365. package/test-tmp/production-mode-1762982737309/features/test-feature.feature +4 -0
  366. package/test-tmp/production-mode-1762982737316/features/test-feature.feature +4 -0
  367. package/test-tmp/production-mode-1762982737325/features/test-feature.feature +4 -0
  368. package/test-tmp/production-mode-1762982737342/features/test-feature.feature +4 -0
  369. package/test-tmp/production-mode-1762982854832/features/test-feature.feature +22 -0
  370. package/test-tmp/production-mode-1762982854855/features/new-feature.feature +17 -0
  371. package/test-tmp/production-mode-1762982854866/features/test-feature.feature +4 -0
  372. package/test-tmp/production-mode-1762982854873/features/test-feature.feature +4 -0
  373. package/test-tmp/production-mode-1762982854881/features/test-feature.feature +4 -0
  374. package/test-tmp/production-mode-1762982854888/features/test-feature.feature +4 -0
  375. package/test-tmp/production-mode-1762982854897/features/test-feature.feature +4 -0
  376. package/test-tmp/production-mode-1762982854917/features/test-feature.feature +4 -0
  377. package/test-tmp/production-mode-1762982854924/features/test-feature.feature +4 -0
@@ -440,11 +440,11 @@ This documentation is derived from actual passing tests. It describes the verifi
440
440
  - **Create feature with invalid mode**
441
441
  When jettypod is initialized, I try to create a feature "Test Feature" with mode "invalid" → I get an error "Invalid mode" and no work item is created
442
442
 
443
- - **Create bug with explicit mode**
444
- When jettypod is initialized, I create a bug "Test Bug" with mode "stable" → the work item is created successfully and the work item has mode "stable"
443
+ - **Create bug with mode fails**
444
+ When jettypod is initialized, I try to create a bug "Test Bug" with mode "stable" → I get an error "Bugs cannot have modes" and no work item is created
445
445
 
446
- - **Create bug without mode defaults to discovery**
447
- When jettypod is initialized, I create a bug "Test Bug" without mode → the work item is created successfully and the work item has mode "discovery"
446
+ - **Create bug without mode succeeds with NULL**
447
+ When jettypod is initialized, I create a bug "Test Bug" without mode → the work item is created successfully and the work item has no mode
448
448
 
449
449
  - **Create chore with mode fails**
450
450
  When jettypod is initialized, I try to create a chore "Test Chore" with mode "production" → I get an error "Chores do not have modes" and no work item is created
@@ -453,7 +453,7 @@ This documentation is derived from actual passing tests. It describes the verifi
453
453
  When jettypod is initialized, jettypod is initialized, I create a chore "Test Chore" without mode and I create a feature "Test Feature" with mode "<mode>" → the work item is created successfully and the work item has NULL mode and the work item is created successfully and the work item has mode "<mode>"
454
454
 
455
455
  - **Epic with children in different modes**
456
- When jettypod is initialized, I create an epic "Test Epic" without mode, I create a feature "Speed Feature" with mode "speed" and parent epic, I create a bug "Stable Bug" with mode "stable" and parent epic, I create a chore "Test Chore" without mode and parent epic, I view the backlog → I see the epic without mode indicator and I see the feature with mode "speed" and I see the bug with mode "stable" and I see the chore without mode indicator
456
+ When jettypod is initialized, I create an epic "Test Epic" without mode, I create a feature "Speed Feature" with mode "speed" and parent epic, I create a bug "Test Bug" with parent epic, I create a chore "Test Chore" without mode and parent epic, I view the backlog → I see the epic without mode indicator and I see the feature with mode "speed" and I see the bug without mode indicator and I see the chore without mode indicator
457
457
 
458
458
  - **Create multiple items with same title but different modes**
459
459
  When jettypod is initialized, I create a feature "Duplicate" with mode "speed" and I create a feature "Duplicate" with mode "stable" → both work items are created successfully and they have different modes
@@ -525,8 +525,8 @@ This documentation is derived from actual passing tests. It describes the verifi
525
525
  - **Start work on feature with default discovery mode**
526
526
  When I create a feature "Default Feature" without mode, the work item has mode "discovery", I start work on the feature → CLAUDE.md mode is set to "discovery"
527
527
 
528
- - **Start work on child item inherits its own mode, not parent's**
529
- When I create an epic "Test Epic" without mode, I create a feature "Speed Feature" with mode "speed" and parent epic, I create a bug "Stable Bug" with mode "stable" and parent epic, I start work on the speed feature and I stop work → CLAUDE.md mode is set to "speed" and I start work on the stable bug and CLAUDE.md mode is set to "stable"
528
+ - **Start work on child features use their own mode, not parent's**
529
+ When I create an epic "Test Epic" without mode, I create a feature "Speed Feature" with mode "speed" and parent epic, I create a feature "Stable Feature" with mode "stable" and parent epic, I start work on the speed feature and I stop work → CLAUDE.md mode is set to "speed" and I start work on the stable feature and CLAUDE.md mode is set to "stable"
530
530
 
531
531
  - **Work item mode persists in database after start**
532
532
  When I create a feature "Test Feature" with mode "stable", I start work on the feature and I stop work → the work item still has mode "stable"
@@ -1843,19 +1843,19 @@ As a developer I want new work items to default to discovery mode So I can start
1843
1843
  - I get an error "Invalid mode"
1844
1844
  - no work item is created
1845
1845
 
1846
- #### Create bug with explicit mode
1846
+ #### Create bug with mode fails
1847
1847
 
1848
1848
  **Context:**
1849
1849
  - jettypod is initialized
1850
1850
 
1851
1851
  **Action:**
1852
- - I create a bug "Test Bug" with mode "stable"
1852
+ - I try to create a bug "Test Bug" with mode "stable"
1853
1853
 
1854
1854
  **Expected outcome:**
1855
- - the work item is created successfully
1856
- - the work item has mode "stable"
1855
+ - I get an error "Bugs cannot have modes"
1856
+ - no work item is created
1857
1857
 
1858
- #### Create bug without mode defaults to discovery
1858
+ #### Create bug without mode succeeds with NULL
1859
1859
 
1860
1860
  **Context:**
1861
1861
  - jettypod is initialized
@@ -1865,7 +1865,7 @@ As a developer I want new work items to default to discovery mode So I can start
1865
1865
 
1866
1866
  **Expected outcome:**
1867
1867
  - the work item is created successfully
1868
- - the work item has mode "discovery"
1868
+ - the work item has no mode
1869
1869
 
1870
1870
  #### Create chore with mode fails
1871
1871
 
@@ -1901,7 +1901,7 @@ As a developer I want new work items to default to discovery mode So I can start
1901
1901
  - jettypod is initialized
1902
1902
  - I create an epic "Test Epic" without mode
1903
1903
  - I create a feature "Speed Feature" with mode "speed" and parent epic
1904
- - I create a bug "Stable Bug" with mode "stable" and parent epic
1904
+ - I create a bug "Test Bug" with parent epic
1905
1905
  - I create a chore "Test Chore" without mode and parent epic
1906
1906
 
1907
1907
  **Action:**
@@ -1910,7 +1910,7 @@ As a developer I want new work items to default to discovery mode So I can start
1910
1910
  **Expected outcome:**
1911
1911
  - I see the epic without mode indicator
1912
1912
  - I see the feature with mode "speed"
1913
- - I see the bug with mode "stable"
1913
+ - I see the bug without mode indicator
1914
1914
  - I see the chore without mode indicator
1915
1915
 
1916
1916
  #### Create multiple items with same title but different modes
@@ -2153,12 +2153,12 @@ As a developer I want jettypod work start to set the CLAUDE.md mode from the wor
2153
2153
  **Expected outcome:**
2154
2154
  - CLAUDE.md mode is set to "discovery"
2155
2155
 
2156
- #### Start work on child item inherits its own mode, not parent's
2156
+ #### Start work on child features use their own mode, not parent's
2157
2157
 
2158
2158
  **Context:**
2159
2159
  - I create an epic "Test Epic" without mode
2160
2160
  - I create a feature "Speed Feature" with mode "speed" and parent epic
2161
- - I create a bug "Stable Bug" with mode "stable" and parent epic
2161
+ - I create a feature "Stable Feature" with mode "stable" and parent epic
2162
2162
 
2163
2163
  **Action:**
2164
2164
  - I start work on the speed feature
@@ -2166,7 +2166,7 @@ As a developer I want jettypod work start to set the CLAUDE.md mode from the wor
2166
2166
 
2167
2167
  **Expected outcome:**
2168
2168
  - CLAUDE.md mode is set to "speed"
2169
- - I start work on the stable bug
2169
+ - I start work on the stable feature
2170
2170
  - CLAUDE.md mode is set to "stable"
2171
2171
 
2172
2172
  #### Work item mode persists in database after start
@@ -581,6 +581,17 @@ Then('the work item has mode {string}', function(mode) {
581
581
  });
582
582
  });
583
583
 
584
+ Then('the work item has no mode', function() {
585
+ const db = getTestDb();
586
+ return new Promise((resolve) => {
587
+ db.get('SELECT mode FROM work_items WHERE id = ?', [testContext.createdItemId], (err, row) => {
588
+ // Removed db.close() - let Node.js handle cleanup
589
+ assert.strictEqual(row.mode, null);
590
+ resolve();
591
+ });
592
+ });
593
+ });
594
+
584
595
  Then('no work item is created', function() {
585
596
  const db = getTestDb();
586
597
  return new Promise((resolve) => {
@@ -681,6 +692,18 @@ When('I try to create a bug {string} without mode', function(title) {
681
692
  }
682
693
  });
683
694
 
695
+ When('I try to create a bug {string} with mode {string}', function(title, mode) {
696
+ try {
697
+ const output = execSync(
698
+ `node ${path.join(__dirname, '../../jettypod.js')} work create bug "${title}" "" --mode=${mode}`,
699
+ { cwd: testDir, encoding: 'utf-8', stderr: 'pipe' }
700
+ );
701
+ testContext.lastOutput = output;
702
+ } catch (err) {
703
+ testContext.error = err.stderr || err.message;
704
+ }
705
+ });
706
+
684
707
  // Chore steps
685
708
  When('I try to create a chore {string} with mode {string}', function(title, mode) {
686
709
  try {
@@ -735,9 +758,9 @@ Then('the work item has NULL mode', function() {
735
758
  });
736
759
  });
737
760
 
738
- Given('I create a bug {string} with mode {string} and parent epic', function(title, mode) {
761
+ Given('I create a bug {string} with parent epic', function(title) {
739
762
  const output = execSync(
740
- `node ${path.join(__dirname, '../../jettypod.js')} work create bug "${title}" "" --mode=${mode} --parent=${testContext.epicId}`,
763
+ `node ${path.join(__dirname, '../../jettypod.js')} work create bug "${title}" "" --parent=${testContext.epicId}`,
741
764
  { cwd: testDir, encoding: 'utf-8' }
742
765
  );
743
766
 
@@ -906,6 +929,22 @@ When('I start work on the stable bug', async function() {
906
929
  testContext.result = await startWork(testContext.lastCreatedStableBugId);
907
930
  });
908
931
 
932
+ When('I start work on the stable feature', async function() {
933
+ const { startWork } = require('../../features/work-commands');
934
+ // Find the stable feature ID from the last created items
935
+ const { getDb } = require('../../lib/database');
936
+ const db = getDb();
937
+ return new Promise((resolve) => {
938
+ db.get('SELECT id FROM work_items WHERE title = ? AND mode = ?', ['Stable Feature', 'stable'], (err, row) => {
939
+ if (row) {
940
+ startWork(row.id).then(() => resolve());
941
+ } else {
942
+ resolve();
943
+ }
944
+ });
945
+ });
946
+ });
947
+
909
948
  When('I stop work', async function() {
910
949
  const { stopWork } = require('../../features/work-commands');
911
950
  await stopWork();
@@ -35,18 +35,18 @@ Feature: Mode defaults to discovery on work item creation
35
35
  Then I get an error "Invalid mode"
36
36
  And no work item is created
37
37
 
38
- # Bug scenarios - defaults to discovery
39
- Scenario: Create bug with explicit mode
38
+ # Bug scenarios - bugs don't have modes
39
+ Scenario: Create bug with mode fails
40
40
  Given jettypod is initialized
41
- When I create a bug "Test Bug" with mode "stable"
42
- Then the work item is created successfully
43
- And the work item has mode "stable"
41
+ When I try to create a bug "Test Bug" with mode "stable"
42
+ Then I get an error "Bugs cannot have modes"
43
+ And no work item is created
44
44
 
45
- Scenario: Create bug without mode defaults to discovery
45
+ Scenario: Create bug without mode succeeds with NULL
46
46
  Given jettypod is initialized
47
47
  When I create a bug "Test Bug" without mode
48
48
  Then the work item is created successfully
49
- And the work item has mode "discovery"
49
+ And the work item has no mode
50
50
 
51
51
  # Chore scenarios - chores don't have modes
52
52
  Scenario: Create chore with mode fails
@@ -80,12 +80,12 @@ Feature: Mode defaults to discovery on work item creation
80
80
  Given jettypod is initialized
81
81
  And I create an epic "Test Epic" without mode
82
82
  And I create a feature "Speed Feature" with mode "speed" and parent epic
83
- And I create a bug "Stable Bug" with mode "stable" and parent epic
83
+ And I create a bug "Test Bug" with parent epic
84
84
  And I create a chore "Test Chore" without mode and parent epic
85
85
  When I view the backlog
86
86
  Then I see the epic without mode indicator
87
87
  And I see the feature with mode "speed"
88
- And I see the bug with mode "stable"
88
+ And I see the bug without mode indicator
89
89
  And I see the chore without mode indicator
90
90
 
91
91
  # Edge cases
@@ -61,14 +61,14 @@ Feature: Work start sets CLAUDE.md mode from work item
61
61
  Then CLAUDE.md mode is set to "discovery"
62
62
 
63
63
  # Hierarchical structure
64
- Scenario: Start work on child item inherits its own mode, not parent's
64
+ Scenario: Start work on child features use their own mode, not parent's
65
65
  Given I create an epic "Test Epic" without mode
66
66
  And I create a feature "Speed Feature" with mode "speed" and parent epic
67
- And I create a bug "Stable Bug" with mode "stable" and parent epic
67
+ And I create a feature "Stable Feature" with mode "stable" and parent epic
68
68
  When I start work on the speed feature
69
69
  Then CLAUDE.md mode is set to "speed"
70
70
  When I stop work
71
- And I start work on the stable bug
71
+ And I start work on the stable feature
72
72
  Then CLAUDE.md mode is set to "stable"
73
73
 
74
74
  # Mode persistence
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jettypod",
3
- "version": "4.1.0",
3
+ "version": "4.1.1",
4
4
  "description": "Simplified development mode manager",
5
5
  "main": "jettypod.js",
6
6
  "bin": {
@@ -0,0 +1,384 @@
1
+ ---
2
+ name: external-transition
3
+ description: Guide users through transitioning project from internal to external state when they mention launch, production deployment, or accepting real users. Explains infrastructure work creation and gets confirmation before executing.
4
+ ---
5
+
6
+ # External Transition Skill
7
+
8
+ Guides users through transitioning their JettyPod project from internal (staging/preview) to external (production-ready) state.
9
+
10
+ ## When to Activate
11
+
12
+ This skill should activate when the user expresses intent to:
13
+ - Launch to production
14
+ - Accept external/real users
15
+ - Deploy publicly
16
+ - Go live
17
+ - Prepare for production
18
+ - Make the project production-ready
19
+ - Similar language indicating readiness for customer/public access
20
+
21
+ ## Instructions
22
+
23
+ When this skill is activated, follow this structured approach:
24
+
25
+ ### Step 1: Explain the Transition
26
+
27
+ **CRITICAL:** Do not execute anything yet. First explain what this transition means.
28
+
29
+ Say to the user:
30
+
31
+ ```
32
+ You're ready to transition to external state. Here's what that means:
33
+
34
+ 🏗️ **Infrastructure Work Items Will Be Created:**
35
+
36
+ I'll create an "Infrastructure Readiness" epic with 15 work items across 4 categories:
37
+
38
+ • **Security Infrastructure (5 items)**
39
+ - Input validation on public endpoints
40
+ - SQL injection prevention
41
+ - XSS protection
42
+ - Rate limiting on public APIs
43
+ - Authentication/authorization
44
+
45
+ • **Monitoring Setup (3 items)**
46
+ - Error tracking integration
47
+ - Performance monitoring
48
+ - Audit logging
49
+
50
+ • **Infrastructure Setup (4 items)**
51
+ - Database backup automation
52
+ - Rollback procedures tested
53
+ - Load testing completed
54
+ - Graceful degradation under load
55
+
56
+ • **Compliance (3 items)**
57
+ - Privacy policy
58
+ - Data retention policy
59
+ - Security headers implemented
60
+
61
+ 📦 **Production Chores Will Be Generated:**
62
+
63
+ For each feature currently in stable mode, I'll:
64
+ • Generate production scenarios from your chosen standards
65
+ • Append scenarios to the feature's BDD file
66
+ • Create production chores (security, scale, compliance)
67
+ • Move features to production mode and reopen them
68
+
69
+ This uses your feature's BDD scenarios as context for what needs hardening.
70
+
71
+ ⚠️ **Mode Requirement Changes:**
72
+
73
+ After this transition, ALL customer-facing features MUST be built through Production mode (not Stable).
74
+
75
+ This change is essentially permanent - you're declaring that real users will access your project.
76
+
77
+ Ready to proceed? (yes/no)
78
+ ```
79
+
80
+ ### Step 2: Wait for Initial Confirmation
81
+
82
+ **CRITICAL:** Do NOT proceed without explicit confirmation from the user.
83
+
84
+ Wait for the user to respond with "yes" or similar affirmative response.
85
+
86
+ If they say "no" or express hesitation, ask what concerns they have or what they need to clarify.
87
+
88
+ ### Step 3: Production Standards Selection
89
+
90
+ After user confirms, explain production standards and show preset options:
91
+
92
+ ```
93
+ Before we transition, let's establish your production standards. These define what "production-ready" means for your project and will guide all future production work.
94
+
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+ 📋 Choose Your Production Standards Preset
97
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
98
+
99
+ 🚀 **Startup MVP**
100
+ Early-stage products, internal tools going external, prototypes with first users
101
+
102
+ Examples: Beta SaaS with first 20 customers, internal tool opened to partners, developer tool in early access, side project gaining traction
103
+
104
+ What you get:
105
+ ✅ HTTPS/TLS, basic auth, structured logging
106
+ ✅ Health checks, daily backups (24h RPO)
107
+ ✅ Single region, 2 instances, 99.0% SLO
108
+ ❌ No 24/7 on-call, no multi-region
109
+
110
+ Cost: $200–$500/mo | Time: 1–2 weeks
111
+
112
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113
+
114
+ 🏢 **Production SaaS**
115
+ Established SaaS with paying customers, revenue dependency, uptime expectations
116
+
117
+ Examples: B2B SaaS with annual contracts, consumer app with 5k DAU, API service with enterprise customers, e-commerce platform
118
+
119
+ What you get:
120
+ ✅ WAF + rate limiting, OAuth/OIDC
121
+ ✅ APM with SLO dashboards, PII sanitization
122
+ ✅ Zero-downtime deployments, 15min backups
123
+ ✅ Multi-AZ, on-call rotation, 99.9% SLO
124
+ ⚠️ Single region (multi-region optional)
125
+
126
+ Cost: $1.5k–$4k/mo infra + $2k–$3k/mo ops | Time: 4–6 weeks
127
+
128
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
129
+
130
+ 🏛️ **Enterprise**
131
+ Mission-critical systems, large customer base with strict SLAs, Fortune 500 customers
132
+
133
+ Examples: Enterprise SaaS for F500, financial services platform, infrastructure/DevOps tooling, global marketplace
134
+
135
+ What you get:
136
+ ✅ Everything in Production SaaS, plus:
137
+ ✅ Multi-region active-passive or active-active
138
+ ✅ Advanced DDoS, mTLS, per-tenant encryption
139
+ ✅ SOC2 Type II ready, chaos engineering
140
+ ✅ PITR backups (1min RPO), 99.95% SLO
141
+
142
+ Cost: $5k–$15k/mo infra + $4k–$8k/mo ops | Time: 8–12 weeks
143
+
144
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
145
+
146
+ 🏥 **Regulated (Healthcare, Finance, Gov)**
147
+ Products handling PHI, PCI, FedRAMP - strict compliance mandates, legal liability
148
+
149
+ Examples: Healthcare app (HIPAA), fintech/payments (PCI), government contractor (FedRAMP), legal tech, HR platform
150
+
151
+ What you get:
152
+ ✅ Everything in Enterprise, plus:
153
+ ✅ HIPAA/PCI/FedRAMP compliance controls
154
+ ✅ Encryption at rest/in transit, MFA, PAM
155
+ ✅ Quarterly pentesting, annual audits
156
+ ✅ Real-time replication, 99.99% SLO
157
+
158
+ Cost: $10k–$30k/mo infra + $6k–$12k/mo ops + $20k–$50k/yr audits | Time: 12–24 weeks
159
+
160
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
161
+
162
+ Which preset best matches your needs? (startup-mvp / production-saas / enterprise / regulated)
163
+ ```
164
+
165
+ ### Step 4: Refinement Questions
166
+
167
+ After user selects preset, ask 3-5 refinement questions to tailor standards:
168
+
169
+ **For All Presets:**
170
+
171
+ 1. **What does your app do?** (free text)
172
+ - Use to validate preset choice and infer compliance needs
173
+
174
+ 2. **How many users do you expect?**
175
+ - Options: 1-10 / 10-100 / 100-1k / 1k-10k / 10k+
176
+ - Use to adjust performance budgets
177
+
178
+ 3. **What happens if it's down for an hour?**
179
+ - Options: No big deal / Users annoyed / Revenue loss / Contractual violation / Safety risk
180
+ - Use to validate SLO and on-call needs
181
+
182
+ 4. **What happens if you lose the last day of data?**
183
+ - Options: Annoying / Bad but recoverable / Major problem / Catastrophic
184
+ - Use to adjust RPO (24h → 15min → 1min)
185
+
186
+ 5. **Does it handle sensitive data? If yes, what kind?**
187
+ - Examples: Passwords only / Email addresses / Credit cards / Health records
188
+ - Use to activate PII sanitization, encryption, compliance
189
+
190
+ **Additional for Production SaaS / Enterprise / Regulated:**
191
+
192
+ 6. **Where are your users?** (Single country / North America / Europe / Global)
193
+ - Use for data residency requirements
194
+
195
+ 7. **Do you have compliance requirements?** (GDPR / CCPA / SOC2 / HIPAA / PCI / None yet)
196
+ - Use to activate specific compliance standards
197
+
198
+ 8. **How often do you want to deploy?** (Daily+ / Weekly / Monthly)
199
+ - Use to recommend canary/feature flags
200
+
201
+ ### Step 5: Generate and Show Recommendations
202
+
203
+ After collecting answers, use the `lib/production-standards-engine.js` to generate tailored standards, then show recommendations:
204
+
205
+ ```
206
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
207
+ 📋 Recommended Production Standards
208
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
209
+
210
+ Based on:
211
+ • Preset: [preset name]
212
+ • App: [user's description]
213
+ • Users: [user count]
214
+ • Downtime impact: [impact level]
215
+ • Data loss impact: [impact level]
216
+ • Sensitive data: [yes/no + types]
217
+ • Compliance: [requirements]
218
+
219
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
220
+
221
+ ✅ SECURITY ([X] standards)
222
+
223
+ [✓] TLS/HTTPS enforcement
224
+ Why: [reasoning]
225
+ Test: [acceptance criteria]
226
+
227
+ [✓] [Other security standards...]
228
+
229
+ ✅ PERFORMANCE & SCALE ([X] standards)
230
+
231
+ [✓] Performance budgets
232
+ Why: [reasoning]
233
+ Test: [acceptance criteria]
234
+
235
+ [✓] [Other scale standards...]
236
+
237
+ ✅ COMPLIANCE ([X] standards)
238
+
239
+ [✓] [Compliance standards if applicable]
240
+
241
+ ✅ INFRASTRUCTURE ([X] standards)
242
+
243
+ [✓] [Infrastructure standards]
244
+
245
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
246
+
247
+ 💰 Estimated Cost: $[X]–$[Y]/mo
248
+
249
+ Infrastructure: $[range]
250
+ Operations: $[range]
251
+ Drivers: [list of cost drivers]
252
+
253
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
254
+
255
+ ⚠️ Warnings (if any)
256
+
257
+ • [Warning messages for edge cases]
258
+
259
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
260
+
261
+ Accept these standards? (yes / review / customize)
262
+ ```
263
+
264
+ ### Step 6: Handle Customization
265
+
266
+ If user chooses "review" or "customize", offer interactive customization:
267
+
268
+ ```
269
+ Which standards would you like to adjust?
270
+
271
+ Commands:
272
+ • disable <id> - Disable a non-required standard
273
+ • adjust <id> - Modify threshold/config
274
+ • show <id> - Show details for a standard
275
+ • done - Accept current configuration
276
+ ```
277
+
278
+ Allow user to toggle/adjust standards, then regenerate the summary.
279
+
280
+ ### Step 7: Save Production Standards
281
+
282
+ After user accepts, save standards to `.jettypod/production-standards.json` using the engine's output format.
283
+
284
+ Confirm to user:
285
+
286
+ ```
287
+ ✅ Production standards saved to .jettypod/production-standards.json
288
+
289
+ These standards will guide all production mode work going forward.
290
+ ```
291
+
292
+ ### Step 8: Final Confirmation for Transition
293
+
294
+ Now confirm the actual state transition:
295
+
296
+ ```
297
+ Ready to execute the external transition? (yes/no)
298
+ ```
299
+
300
+ Wait for final "yes" confirmation.
301
+
302
+ ### Step 9: Execute Transition
303
+
304
+ Only after receiving explicit "yes" confirmation, execute the transition using the Bash tool:
305
+
306
+ ```bash
307
+ node jettypod.js project external
308
+ ```
309
+
310
+ ### Step 10: Report Results
311
+
312
+ After the command completes successfully, relay the results to the user:
313
+
314
+ ```
315
+ ✅ **Transition Complete!**
316
+
317
+ Your project is now in external state.
318
+
319
+ 📦 Created Infrastructure Readiness epic with:
320
+ • 4 features (Security, Monitoring, Infrastructure, Compliance)
321
+ • 15 chores across those features
322
+
323
+ 🔍 Production mode work items are now visible in your backlog.
324
+
325
+ **Next Steps:**
326
+
327
+ 1. Run `jettypod backlog` to see all infrastructure work items
328
+ 2. Start working on infrastructure: `jettypod work start [epic-id]`
329
+ 3. Remember: All customer-facing features must use Production mode from now on
330
+
331
+ **Want to start on infrastructure work now?**
332
+ ```
333
+
334
+ ### Step 11: Guide Next Actions
335
+
336
+ If the user wants to start infrastructure work:
337
+ - Suggest they run `jettypod backlog` to see the epic
338
+ - Offer to help them start work on specific infrastructure items
339
+
340
+ If they want to continue building features:
341
+ - Remind them that customer-facing features require Production mode
342
+ - Explain that Production mode includes security, scale, and compliance chores
343
+
344
+ ## Key Principles
345
+
346
+ 1. **Always explain before executing** - User must understand the implications
347
+ 2. **Always get confirmation** - This is a significant project state change
348
+ 3. **Emphasize no duplication** - Production chores already exist from stable mode
349
+ 4. **Clarify mode requirements** - Customer-facing features need Production mode
350
+ 5. **Guide next steps** - Help user understand what to do after transition
351
+
352
+ ## Example Flow
353
+
354
+ **User:** "I think we're ready to launch this to real users"
355
+
356
+ **Claude:** [Explains transition as shown in Step 1]
357
+
358
+ **User:** "Yes, let's do it"
359
+
360
+ **Claude:** [Executes command via Bash tool]
361
+
362
+ **Claude:** [Reports results as shown in Step 4]
363
+
364
+ **User:** "What should I work on first?"
365
+
366
+ **Claude:** "I'd suggest starting with the Security Infrastructure items since those are critical for protecting user data. Want me to show you what's in that category?"
367
+
368
+ ## Validation
369
+
370
+ Before completing external transition, ensure:
371
+ - [ ] User expressed intent to go external/production
372
+ - [ ] Transition implications explained clearly
373
+ - [ ] User provided initial confirmation
374
+ - [ ] Production standards preset shown (4 options)
375
+ - [ ] User selected preset
376
+ - [ ] Refinement questions asked (3-8 questions based on preset)
377
+ - [ ] Standards generated using production-standards-engine.js
378
+ - [ ] Recommendations shown with reasoning and acceptance criteria
379
+ - [ ] User accepted or customized standards
380
+ - [ ] Production standards saved to .jettypod/production-standards.json
381
+ - [ ] Final confirmation obtained
382
+ - [ ] Command executed successfully via Bash tool
383
+ - [ ] Results reported to user
384
+ - [ ] Next steps suggested