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
@@ -0,0 +1,369 @@
1
+ ---
2
+ name: production-mode
3
+ description: Guide implementation of production mode chores with production standards validation. Use when user starts work on a production mode chore. Detects context (Scenario A/B/C), validates/generates scenarios, and implements production hardening comprehensively.
4
+ ---
5
+
6
+ # Production Mode Skill
7
+
8
+ Guides Claude Code through production mode implementation with focus on security, scale, and compliance. Autonomous execution - Claude Code writes the code.
9
+
10
+ ## Instructions
11
+
12
+ When this skill is activated, you are helping implement a production mode chore to add production hardening. Follow this structured approach:
13
+
14
+ ### Overview
15
+
16
+ **Production Mode Goal:** Harden features for production deployment with security, performance, and compliance standards.
17
+
18
+ **CRITICAL CONTEXT DETECTION:**
19
+ - Production mode has **3 different starting scenarios** (A/B/C)
20
+ - **Must detect context first** before proceeding
21
+ - Different workflows for each scenario
22
+
23
+ **Key Principles:**
24
+ - **Context-aware execution** - adapt to Scenario A/B/C
25
+ - **Standards-driven** - use production standards from external-transition
26
+ - **Autonomous execution** - Claude Code writes code, user confirms approach
27
+ - **Comprehensive hardening** - security, performance, compliance, infrastructure
28
+
29
+ **User Profile:** May not know how to code - Claude Code does the implementation autonomously.
30
+
31
+ ---
32
+
33
+ ## Implementation Steps
34
+
35
+ ### Step 0: Detect Production Context (CRITICAL FIRST STEP)
36
+
37
+ **MUST RUN FIRST:** Detect which scenario applies to this feature.
38
+
39
+ **Code to detect context:**
40
+
41
+ ```javascript
42
+ const { detectContext } = require('../../lib/production-context-detector');
43
+ const { getCurrentWork } = require('../../lib/current-work');
44
+ const { getDb } = require('../../lib/database');
45
+
46
+ try {
47
+ const currentWork = getCurrentWork();
48
+
49
+ if (!currentWork) {
50
+ console.error('❌ No current work found. Run: jettypod work start <chore-id>');
51
+ return;
52
+ }
53
+
54
+ if (!currentWork.parent_id) {
55
+ console.error('❌ Current work has no parent feature.');
56
+ return;
57
+ }
58
+
59
+ const featureId = currentWork.parent_id;
60
+ const scenario = await detectContext(featureId);
61
+
62
+ console.log(`📋 Detected: ${scenario}`);
63
+
64
+ // Proceed with appropriate workflow
65
+ if (scenario === 'SCENARIO_A') {
66
+ // Fresh from stable mode - quick validation
67
+ } else if (scenario === 'SCENARIO_B') {
68
+ // Gap in time - re-validation
69
+ } else {
70
+ // Scenario C - generate from standards
71
+ }
72
+ } catch (err) {
73
+ console.error('❌ Context detection failed:', err.message);
74
+ return;
75
+ }
76
+ ```
77
+
78
+ **Three Scenarios:**
79
+
80
+ **Scenario A: Fresh from Stable (Hot Context)**
81
+ - Production scenarios exist
82
+ - Production chores exist
83
+ - Completed stable ≤ 1 day ago
84
+ - **Workflow:** Quick validation → fill gaps → implement
85
+
86
+ **Scenario B: Gap in Time (Cold Context)**
87
+ - Production scenarios exist
88
+ - Production chores exist
89
+ - Completed stable > 1 day ago OR project state changed
90
+ - **Workflow:** Re-validate → update scenarios → implement
91
+
92
+ **Scenario C: Post External-Transition (New Infrastructure)**
93
+ - NO production scenarios exist
94
+ - NO production chores exist
95
+ - **Workflow:** Generate scenarios → create chores → implement
96
+
97
+ ---
98
+
99
+ ### Step 1: Read Production Standards
100
+
101
+ **For all scenarios:** Read production standards file.
102
+
103
+ ```javascript
104
+ const { readStandards, standardsFileExists } = require('../../lib/production-standards-reader');
105
+
106
+ try {
107
+ if (!standardsFileExists()) {
108
+ console.error('❌ Production standards file not found.');
109
+ console.log('Run external-transition first to generate production standards.');
110
+ return;
111
+ }
112
+
113
+ const standards = await readStandards();
114
+ console.log(`📋 Loaded ${standards.standards.length} production standards`);
115
+ console.log(`Preset: ${standards.preset}`);
116
+
117
+ // Show domains
118
+ const domains = await getDomains();
119
+ console.log(`Domains: ${domains.join(', ')}`);
120
+ } catch (err) {
121
+ console.error('❌ Failed to read production standards:', err.message);
122
+ return;
123
+ }
124
+ ```
125
+
126
+ ---
127
+
128
+ ### Step 2A: Validate Scenarios (Scenario A - Hot Context)
129
+
130
+ **For Scenario A only:** Quick validation of existing scenarios.
131
+
132
+ ```javascript
133
+ const { validateScenarios } = require('../../lib/production-scenario-validator');
134
+ const { getDb } = require('../../lib/database');
135
+
136
+ try {
137
+ // Get feature scenario file
138
+ const db = getDb();
139
+ const feature = await new Promise((resolve, reject) => {
140
+ db.get('SELECT * FROM work_items WHERE id = ?', [featureId], (err, row) => {
141
+ if (err) reject(err);
142
+ resolve(row);
143
+ });
144
+ });
145
+
146
+ if (!feature.scenario_file) {
147
+ console.error('❌ Feature has no scenario file.');
148
+ return;
149
+ }
150
+
151
+ // Validate scenarios against standards
152
+ const validation = await validateScenarios(feature.scenario_file, standards);
153
+
154
+ console.log(`✅ Validation complete:`);
155
+ console.log(` - Covered: ${validation.covered}/${validation.total} standards`);
156
+ console.log(` - Gaps: ${validation.gaps.length}`);
157
+
158
+ if (validation.hasGaps) {
159
+ console.log('\n⚠️ Missing scenarios for:');
160
+ validation.gaps.forEach(gap => {
161
+ console.log(` - ${gap.domain}: ${gap.standardId}`);
162
+ console.log(` ${gap.reasoning}`);
163
+ });
164
+
165
+ // Generate and append missing scenarios
166
+ const { generateScenariosFromStandards } = require('../../lib/production-scenario-generator');
167
+ const { appendScenarios } = require('../../lib/production-scenario-appender');
168
+
169
+ const missingStandards = { standards: validation.gaps };
170
+ const newScenarios = await generateScenariosFromStandards(missingStandards);
171
+
172
+ await appendScenarios(feature.scenario_file, newScenarios);
173
+ console.log(`✅ Added ${newScenarios.length} missing scenarios`);
174
+ } else {
175
+ console.log('✅ All standards are covered by existing scenarios');
176
+ }
177
+ } catch (err) {
178
+ console.error('❌ Validation failed:', err.message);
179
+ return;
180
+ }
181
+ ```
182
+
183
+ ---
184
+
185
+ ### Step 2B: Re-Validate Scenarios (Scenario B - Cold Context)
186
+
187
+ **For Scenario B only:** Re-validate with current standards.
188
+
189
+ ```javascript
190
+ const { validateScenarios } = require('../../lib/production-scenario-validator');
191
+ const config = require('../../lib/config');
192
+
193
+ try {
194
+ console.log('🔄 Re-validating scenarios against current standards...');
195
+
196
+ // Check if project state changed
197
+ const projectConfig = config.read();
198
+ console.log(`Project state: ${projectConfig.project_state}`);
199
+
200
+ // Get feature scenario file
201
+ const db = getDb();
202
+ const feature = await new Promise((resolve, reject) => {
203
+ db.get('SELECT * FROM work_items WHERE id = ?', [featureId], (err, row) => {
204
+ if (err) reject(err);
205
+ resolve(row);
206
+ });
207
+ });
208
+
209
+ // Validate scenarios
210
+ const validation = await validateScenarios(feature.scenario_file, standards);
211
+
212
+ console.log(`✅ Re-validation complete:`);
213
+ console.log(` - Covered: ${validation.covered}/${validation.total} standards`);
214
+ console.log(` - New gaps: ${validation.gaps.length}`);
215
+
216
+ if (validation.hasGaps) {
217
+ console.log('\n⚠️ Standards added/changed since last run:');
218
+ validation.gaps.forEach(gap => {
219
+ console.log(` - ${gap.domain}: ${gap.standardId}`);
220
+ });
221
+
222
+ // Generate and append missing scenarios
223
+ const { generateScenariosFromStandards } = require('../../lib/production-scenario-generator');
224
+ const { appendScenarios } = require('../../lib/production-scenario-appender');
225
+
226
+ const missingStandards = { standards: validation.gaps };
227
+ const newScenarios = await generateScenariosFromStandards(missingStandards);
228
+
229
+ await appendScenarios(feature.scenario_file, newScenarios);
230
+ console.log(`✅ Updated with ${newScenarios.length} new scenarios`);
231
+ }
232
+ } catch (err) {
233
+ console.error('❌ Re-validation failed:', err.message);
234
+ return;
235
+ }
236
+ ```
237
+
238
+ ---
239
+
240
+ ### Step 2C: Generate Scenarios (Scenario C - Post-Transition)
241
+
242
+ **For Scenario C only:** Generate production scenarios from standards.
243
+
244
+ ```javascript
245
+ const { generateScenariosFromStandards } = require('../../lib/production-scenario-generator');
246
+ const { appendScenarios } = require('../../lib/production-scenario-appender');
247
+ const { getDb } = require('../../lib/database');
248
+
249
+ try {
250
+ console.log('✨ Generating production scenarios from standards...');
251
+
252
+ // Get feature
253
+ const db = getDb();
254
+ const feature = await new Promise((resolve, reject) => {
255
+ db.get('SELECT * FROM work_items WHERE id = ?', [featureId], (err, row) => {
256
+ if (err) reject(err);
257
+ resolve(row);
258
+ });
259
+ });
260
+
261
+ if (!feature.scenario_file) {
262
+ console.error('❌ Feature has no scenario file.');
263
+ return;
264
+ }
265
+
266
+ // Generate scenarios
267
+ const scenarios = await generateScenariosFromStandards(standards);
268
+
269
+ console.log(`✅ Generated ${scenarios.length} production scenarios`);
270
+ console.log('Domains covered:', [...new Set(standards.standards.map(s => s.domain))].join(', '));
271
+
272
+ // Append to feature file
273
+ await appendScenarios(feature.scenario_file, scenarios);
274
+ console.log(`✅ Appended scenarios to ${feature.scenario_file}`);
275
+
276
+ // Create production chores if none exist
277
+ const { generateChoresFromStandards } = require('../../lib/production-chore-generator');
278
+ const chores = generateChoresFromStandards(standards, feature.title);
279
+
280
+ console.log(`\n📋 Proposed ${chores.length} production chores:`);
281
+ chores.forEach((chore, i) => {
282
+ console.log(`\n${i + 1}. ${chore.title}`);
283
+ console.log(` ${chore.description.split('\n')[0]}`);
284
+ });
285
+
286
+ console.log('\n✅ Production scenarios ready. Create chores to implement them.');
287
+ } catch (err) {
288
+ console.error('❌ Scenario generation failed:', err.message);
289
+ return;
290
+ }
291
+ ```
292
+
293
+ ---
294
+
295
+ ### Step 3: Implement Production Chore
296
+
297
+ **For all scenarios:** Implement the current production chore.
298
+
299
+ ```javascript
300
+ const { getCurrentWork } = require('../../lib/current-work');
301
+ const fs = require('fs');
302
+
303
+ try {
304
+ const currentWork = getCurrentWork();
305
+
306
+ console.log(`\n🚀 Implementing: ${currentWork.title}`);
307
+ console.log(`Description: ${currentWork.description}`);
308
+
309
+ // Parse chore to understand which standard to implement
310
+ // Implementation follows the acceptance criteria from the standard
311
+
312
+ // Example: If chore is about TLS enforcement
313
+ // 1. Read the standard's acceptance criteria
314
+ // 2. Implement code that satisfies the criteria
315
+ // 3. Add tests based on scenario steps
316
+
317
+ console.log('\n✅ Implementation complete');
318
+ console.log('Run: npx cucumber-js to verify scenarios pass');
319
+ } catch (err) {
320
+ console.error('❌ Implementation failed:', err.message);
321
+ return;
322
+ }
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Key Differences from Stable Mode
328
+
329
+ **Stable Mode:**
330
+ - Adds error handling to speed code
331
+ - Validates inputs, handles edge cases
332
+ - Makes existing features robust
333
+
334
+ **Production Mode:**
335
+ - Hardens features for production deployment
336
+ - Implements security, scale, compliance standards
337
+ - Adds monitoring, backup, failover capabilities
338
+ - Standards-driven (not just adding error handling)
339
+
340
+ **Example:**
341
+
342
+ **Stable Mode Chore:** "Add error handling to login feature"
343
+ → Validates email format, handles network errors, shows error messages
344
+
345
+ **Production Mode Chore:** "Add security hardening to login feature"
346
+ → Rate limiting, brute force protection, MFA support, audit logging
347
+
348
+ ---
349
+
350
+ ## Validation
351
+
352
+ Before completing production mode, ensure:
353
+ - [ ] Context detected correctly (A/B/C)
354
+ - [ ] Production standards read successfully
355
+ - [ ] All production scenarios pass
356
+ - [ ] Security measures implemented per standards
357
+ - [ ] Performance targets met per standards
358
+ - [ ] Compliance requirements satisfied
359
+ - [ ] Monitoring and observability added
360
+ - [ ] Documentation updated
361
+
362
+ ---
363
+
364
+ ## Next Steps After Production Mode
365
+
366
+ Once all production chores complete:
367
+ 1. Feature is production-ready
368
+ 2. Can be deployed to external environment
369
+ 3. Meets all standards for scale, security, compliance
@@ -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,297 @@
1
+ ---
2
+ name: epic-planning
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 Planning 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 Features and Decisions
22
+
23
+ **CRITICAL:** Before suggesting features or approaches, check what already exists:
24
+
25
+ **Check for existing features:**
26
+ ```bash
27
+ node jettypod.js backlog | grep -A 20 "Epic Name"
28
+ ```
29
+
30
+ If features already exist, acknowledge them and skip to Step 4 (Architectural Decision).
31
+
32
+ **Check for existing decisions:**
33
+ ```bash
34
+ node -e "const { showDecisionsForEpic } = require('./features/decisions/index.js'); showDecisionsForEpic(epicId)"
35
+ ```
36
+
37
+ If decisions exist, present them to the user:
38
+
39
+ ```
40
+ 🎯 **Existing Architectural Decisions for This Epic:**
41
+
42
+ [For each decision:]
43
+ - **[Aspect]:** [Decision]
44
+ *Rationale:* [Why this was chosen]
45
+ *Decided:* [Date]
46
+
47
+ These decisions were made previously. Before we continue:
48
+ 1. Do these decisions still apply?
49
+ 2. Should we revisit any of them?
50
+ 3. Are there additional aspects we need to decide?
51
+ ```
52
+
53
+ Only proceed with suggesting new architectural options if:
54
+ - No decisions exist yet, OR
55
+ - User confirms decisions need to be revisited, OR
56
+ - User identifies new aspects to decide
57
+
58
+ ### Step 3: Brainstorm Features (Skip if Features Already Exist)
59
+
60
+ Based on the epic's purpose, suggest features that belong in this epic:
61
+
62
+ ```
63
+ I'll help you plan the features for this epic.
64
+
65
+ Based on [epic name], here are the features I recommend:
66
+
67
+ **Feature 1: [Name]** - [Brief description of what users can do]
68
+ **Feature 2: [Name]** - [Brief description]
69
+ **Feature 3: [Name]** - [Brief description]
70
+ ...
71
+
72
+ **Questions:**
73
+ - [Any clarifying questions about scope]
74
+ - [Missing features to consider]
75
+
76
+ What features should we include? What am I missing?
77
+ ```
78
+
79
+ ### Step 4: Architectural Decision (Optional)
80
+
81
+ After features are defined, ask if this epic needs a shared technical approach:
82
+
83
+ ```
84
+ **Architectural question:** Does this epic need a shared technical decision?
85
+
86
+ For example:
87
+ - Which library/framework for this capability?
88
+ - What data structure or protocol?
89
+ - What architectural pattern?
90
+
91
+ Examples where architectural decisions matter:
92
+ - Real-time features: WebSockets vs SSE vs polling?
93
+ - Auth system: Which auth library and token strategy?
94
+ - Data sync: Optimistic vs pessimistic locking?
95
+
96
+ Should we explore different architectural approaches?
97
+ ```
98
+
99
+ ### Step 5A: If Architectural Decision Needed
100
+
101
+ If the epic needs architectural decision, suggest exactly 3 approaches:
102
+
103
+ ```
104
+ Here are 3 different architectural approaches for [epic name]:
105
+
106
+ **Option 1: [Simple/Conservative approach name]**
107
+ - **Pros**: ✅ [2-3 advantages - proven, reliable, fast to implement]
108
+ - **Cons**: ❌ [2-3 trade-offs - limitations, constraints]
109
+ - **Technical Impact**: [How this affects the features in this epic]
110
+
111
+ **Option 2: [Balanced approach name]**
112
+ - **Pros**: ✅ [2-3 advantages - good balance]
113
+ - **Cons**: ❌ [2-3 trade-offs]
114
+ - **Technical Impact**: [How this affects the features in this epic]
115
+
116
+ **Option 3: [Advanced/Modern approach name]**
117
+ - **Pros**: ✅ [2-3 advantages - powerful, flexible]
118
+ - **Cons**: ❌ [2-3 trade-offs - complexity, learning curve]
119
+ - **Technical Impact**: [How this affects the features in this epic]
120
+
121
+ **Additional approaches considered but not recommended:**
122
+ - *[Alternative 1]*: [Brief] - Not selected because [reason]
123
+ - *[Alternative 2]*: [Brief] - Not selected because [reason]
124
+
125
+ Would you like me to create working prototypes of these architectural approaches?
126
+ ```
127
+
128
+ ### Step 5B: If Prototyping Needed
129
+
130
+ If user wants to prototype approaches:
131
+
132
+ 1. Build 2-3 prototype approaches in `/prototypes/epic-[id]-[approach-name]/`
133
+ 2. Each prototype should demonstrate the architectural difference
134
+ 3. **Add prototype header**:
135
+ ```
136
+ // Prototype: Epic [epic-id] - [approach name]
137
+ // Created: [date]
138
+ // Purpose: Demonstrate [architectural aspect]
139
+ // Decision: [to be filled after testing]
140
+ ```
141
+ 4. After user tests, help them choose the winner
142
+ 5. Document the decision and rationale
143
+
144
+ ### Step 5C: If Approach Already Known
145
+
146
+ If user already knows the approach or skips prototyping:
147
+
148
+ ```
149
+ Which architectural approach works best for this epic?
150
+ ```
151
+
152
+ Then record their decision.
153
+
154
+ ### Step 6: Create Features and Complete Discovery
155
+
156
+ Once features are defined and architectural decision is made (if needed):
157
+
158
+ **CRITICAL: You must EXECUTE commands using the Bash tool. Do NOT just display them as text.**
159
+
160
+ #### Step 6A: Create Features
161
+
162
+ Use the Bash tool to create each feature:
163
+
164
+ ```javascript
165
+ // For each feature, use Bash tool to execute:
166
+ node jettypod.js work create feature "[Feature 1]" "[Description]" --parent=[epic-id]
167
+ node jettypod.js work create feature "[Feature 2]" "[Description]" --parent=[epic-id]
168
+ // etc.
169
+ ```
170
+
171
+ Display to user as you create each one:
172
+ ```
173
+ Creating features...
174
+ ✅ Created Feature #123: [Feature 1]
175
+ ✅ Created Feature #456: [Feature 2]
176
+ ```
177
+
178
+ #### Step 6B: Record Architectural Decision (if applicable)
179
+
180
+ If an architectural decision was made, propose the rationale to the user:
181
+
182
+ ```
183
+ I'm going to record this architectural decision:
184
+
185
+ Aspect: Architecture
186
+ Decision: [architectural approach chosen]
187
+ Rationale: [why this approach was selected]
188
+
189
+ Does this rationale capture why you chose this approach? (You can edit it if needed)
190
+ ```
191
+
192
+ **WAIT for user to confirm or provide edited rationale.**
193
+
194
+ **CRITICAL: After user confirms, use Bash tool to EXECUTE the epic-implement command:**
195
+
196
+ ```javascript
197
+ // Use Bash tool to execute:
198
+ node jettypod.js work epic-implement [epic-id] \
199
+ --aspect="Architecture" \
200
+ --decision="[architectural approach chosen]" \
201
+ --rationale="[user's confirmed/edited rationale]"
202
+ ```
203
+
204
+ **DO NOT display this as example text. EXECUTE IT using the Bash tool.**
205
+
206
+ After execution succeeds, verify the decision was recorded and display:
207
+
208
+ ```
209
+ ✅ Architectural decision recorded
210
+
211
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
212
+ 🎯 Epic Planning Complete!
213
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
214
+
215
+ Features created: [count]
216
+ Architectural decision: Recorded
217
+
218
+ **Next step:** Plan your first feature
219
+ Run: jettypod work discover [feature-id]
220
+ Or talk to Claude Code: "Let's do feature discovery for #[feature-id]"
221
+ ```
222
+
223
+ ## Key Principles
224
+
225
+ 1. **Feature brainstorming is always required** - Don't skip this even if architectural decision is clear
226
+ 2. **Architectural decision is optional** - Not all epics need one (e.g., "Q1 Goals" is just grouping)
227
+ 3. **Always suggest exactly 3 options** when architectural decision needed - Simple/Conservative, Balanced, Advanced
228
+ 4. **Be specific about features** - Each feature should be user-facing capability
229
+ 5. **Use the Approach Suggestion template** - Pros, Cons, Technical Impact format
230
+ 6. **Suggest next step** - Always end with clear guidance on what to do next
231
+ 7. **Use jettypod commands** - Create features using jettypod CLI, record decisions with epic-implement
232
+
233
+ ## Example: Epic with Architectural Decision
234
+
235
+ Epic: "Real-time Collaboration"
236
+
237
+ **Features brainstormed:**
238
+ - Live cursor tracking
239
+ - Concurrent editing with conflict resolution
240
+ - Presence indicators
241
+ - Real-time chat
242
+
243
+ **Architectural approaches suggested:**
244
+
245
+ **Option 1: Long Polling (REST)**
246
+ - **Pros**: ✅ Simple, works with all proxies, uses existing HTTP infrastructure
247
+ - **Cons**: ❌ Higher latency (1-2s), more server load, inefficient for high-frequency updates
248
+ - **Technical Impact**: Each feature polls independently, easy to implement per feature
249
+
250
+ **Option 2: Server-Sent Events (SSE)**
251
+ - **Pros**: ✅ Lightweight, auto-reconnection, efficient one-way streaming
252
+ - **Cons**: ❌ One-direction only (server→client), limited browser connections (6 per domain)
253
+ - **Technical Impact**: Good for cursor/presence, requires separate POST for edits
254
+
255
+ **Option 3: WebSockets (Socket.io)**
256
+ - **Pros**: ✅ Bidirectional, low latency (<100ms), perfect for real-time, fallback support
257
+ - **Cons**: ❌ More complex infrastructure, requires sticky sessions, WebSocket proxies needed
258
+ - **Technical Impact**: All features use unified connection, best UX but infrastructure complexity
259
+
260
+ **Additional approaches considered:**
261
+ - *WebRTC Data Channels*: Peer-to-peer, low latency - Not selected due to NAT/firewall traversal complexity
262
+ - *GraphQL Subscriptions*: Good for selective updates - Not selected as overkill for this use case
263
+
264
+ **User choice:** Option 3 (WebSockets with Socket.io)
265
+
266
+ **Rationale confirmation:**
267
+ Claude proposes: "Bidirectional real-time updates needed for collaboration, Socket.io provides fallbacks and auto-reconnection"
268
+ User confirms: "Yes, that's right"
269
+
270
+ **Command run:**
271
+ ```bash
272
+ jettypod work epic-implement 5 \
273
+ --aspect="Architecture" \
274
+ --decision="WebSockets with Socket.io" \
275
+ --rationale="Bidirectional real-time updates needed for collaboration, Socket.io provides fallbacks and auto-reconnection"
276
+ ```
277
+
278
+ ## Example: Epic without Architectural Decision
279
+
280
+ Epic: "User Management"
281
+
282
+ **Features brainstormed:**
283
+ - User registration
284
+ - Profile editing
285
+ - Password reset
286
+ - Account deletion
287
+
288
+ **Architectural decision:** None needed - these are independent features using existing auth system
289
+
290
+ ## Validation
291
+
292
+ Before completing epic discovery, ensure:
293
+ - [ ] At least 2-3 features identified
294
+ - [ ] Features are user-facing capabilities (not technical tasks)
295
+ - [ ] Architectural decision documented if needed
296
+ - [ ] Features created in database
297
+ - [ ] User knows next step .jettypod work discover [feature-id])