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.
- package/SYSTEM-BEHAVIOR.md +18 -18
- package/features/work-commands/steps.js +41 -2
- package/features/work-tracking/mode-required.feature +9 -9
- package/features/work-tracking/work-start-mode.feature +3 -3
- package/package.json +1 -1
- package/skills-templates/external-transition/SKILL.md +384 -0
- package/skills-templates/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982642301/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982642301/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982642301/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982642301/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982642301/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982642564/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982642564/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982642564/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982642564/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982642564/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982642808/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982642808/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982642808/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982642808/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982642808/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982643116/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982643116/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982643116/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982643116/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982643116/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982643364/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982643364/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982643364/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982643364/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982643364/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982643618/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982643618/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982643618/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982643618/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982643618/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982643860/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982643860/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982643860/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982643860/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982643860/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982643991/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982643991/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982643991/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982643991/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982643991/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644134/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644134/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644134/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644134/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644134/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644269/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644269/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644269/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644269/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644269/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644399/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644399/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644399/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644399/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644399/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644526/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644526/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644526/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644526/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644526/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644652/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644652/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644652/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644652/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644652/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982644891/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982644891/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982644891/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982644891/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982644891/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982645161/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982645161/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982645161/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982645161/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982645161/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982685251/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982685251/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982685251/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982685251/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982685251/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982685496/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982685496/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982685496/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982685496/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982685496/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982685793/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982685793/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982685793/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982685793/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982685793/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982686068/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982686068/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982686068/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982686068/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982686068/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982686347/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982686347/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982686347/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982686347/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982686347/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982686671/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982686671/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982686671/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982686671/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982686671/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982686913/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982686913/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982686913/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982686913/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982686913/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687076/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687076/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687076/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687076/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687076/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687204/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687204/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687204/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687204/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687204/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687327/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687327/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687327/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687327/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687327/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687448/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687448/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687448/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687448/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687448/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687677/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687677/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687677/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687677/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687677/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982687813/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982687813/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982687813/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982687813/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982687813/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982688062/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982688062/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982688062/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982688062/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982688062/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982688189/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982688189/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982688189/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982688189/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982688189/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982737358/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982737358/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982737358/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982737358/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982737358/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982737594/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982737594/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982737594/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982737594/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982737594/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982737931/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982737931/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982737931/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982737931/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982737931/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982738184/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982738184/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982738184/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982738184/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982738184/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982738500/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982738500/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982738500/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982738500/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982738500/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982738729/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982738729/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982738729/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982738729/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982738729/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982738960/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982738960/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982738960/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982738960/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982738960/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982739084/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982739084/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982739084/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982739084/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982739084/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982739206/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982739206/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982739206/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982739206/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982739206/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982739402/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982739402/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982739402/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982739402/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982739402/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982739532/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982739532/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982739532/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982739532/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982739532/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982740510/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982740510/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982740510/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982740510/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982740510/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982740655/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982740655/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982740655/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982740655/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982740655/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982741707/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982741707/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982741707/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982741707/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982741707/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982741828/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982741828/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982741828/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982741828/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982741828/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982854935/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982854935/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982855281/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982855281/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982855562/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982855562/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982855855/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982855855/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982856107/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982856107/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982856356/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982856356/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982856716/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982856716/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982856851/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982856851/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982856983/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982856983/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982857114/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982857114/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982857250/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982857250/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982857380/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982857380/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982857515/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982857515/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982857865/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982857865/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982858002/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982858002/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/external-transition-1762982858258/.claude/settings.json +24 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/epic-planning/SKILL.md +297 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/external-transition/SKILL.md +384 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/feature-planning/SKILL.md +464 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/production-mode/SKILL.md +369 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/speed-mode/SKILL.md +481 -0
- package/test-tmp/external-transition-1762982858258/.claude/skills/stable-mode/SKILL.md +687 -0
- package/test-tmp/production-mode-1762982642199/features/test-feature.feature +22 -0
- package/test-tmp/production-mode-1762982642221/features/new-feature.feature +17 -0
- package/test-tmp/production-mode-1762982642230/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982642238/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982642247/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982642255/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982642264/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982642283/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685154/features/test-feature.feature +22 -0
- package/test-tmp/production-mode-1762982685176/features/new-feature.feature +17 -0
- package/test-tmp/production-mode-1762982685187/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685196/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685203/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685211/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685219/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982685235/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737257/features/test-feature.feature +22 -0
- package/test-tmp/production-mode-1762982737284/features/new-feature.feature +17 -0
- package/test-tmp/production-mode-1762982737294/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737302/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737309/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737316/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737325/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982737342/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854832/features/test-feature.feature +22 -0
- package/test-tmp/production-mode-1762982854855/features/new-feature.feature +17 -0
- package/test-tmp/production-mode-1762982854866/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854873/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854881/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854888/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854897/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854917/features/test-feature.feature +4 -0
- package/test-tmp/production-mode-1762982854924/features/test-feature.feature +4 -0
package/SYSTEM-BEHAVIOR.md
CHANGED
|
@@ -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
|
|
444
|
-
When jettypod is initialized, I create a bug "Test Bug" with 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
|
|
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
|
|
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 "
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
1856
|
-
-
|
|
1855
|
+
- I get an error "Bugs cannot have modes"
|
|
1856
|
+
- no work item is created
|
|
1857
1857
|
|
|
1858
|
-
#### Create bug without mode
|
|
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
|
|
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 "
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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}" "" --
|
|
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 -
|
|
39
|
-
Scenario: Create bug with
|
|
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
|
|
43
|
-
And
|
|
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
|
|
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
|
|
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 "
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
@@ -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
|