spec-kitty-cli 0.12.1__py3-none-any.whl

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 (242) hide show
  1. spec_kitty_cli-0.12.1.dist-info/METADATA +1767 -0
  2. spec_kitty_cli-0.12.1.dist-info/RECORD +242 -0
  3. spec_kitty_cli-0.12.1.dist-info/WHEEL +4 -0
  4. spec_kitty_cli-0.12.1.dist-info/entry_points.txt +2 -0
  5. spec_kitty_cli-0.12.1.dist-info/licenses/LICENSE +21 -0
  6. specify_cli/__init__.py +171 -0
  7. specify_cli/acceptance.py +627 -0
  8. specify_cli/agent_utils/README.md +157 -0
  9. specify_cli/agent_utils/__init__.py +9 -0
  10. specify_cli/agent_utils/status.py +356 -0
  11. specify_cli/cli/__init__.py +6 -0
  12. specify_cli/cli/commands/__init__.py +46 -0
  13. specify_cli/cli/commands/accept.py +189 -0
  14. specify_cli/cli/commands/agent/__init__.py +22 -0
  15. specify_cli/cli/commands/agent/config.py +382 -0
  16. specify_cli/cli/commands/agent/context.py +191 -0
  17. specify_cli/cli/commands/agent/feature.py +1057 -0
  18. specify_cli/cli/commands/agent/release.py +11 -0
  19. specify_cli/cli/commands/agent/tasks.py +1253 -0
  20. specify_cli/cli/commands/agent/workflow.py +801 -0
  21. specify_cli/cli/commands/context.py +246 -0
  22. specify_cli/cli/commands/dashboard.py +85 -0
  23. specify_cli/cli/commands/implement.py +973 -0
  24. specify_cli/cli/commands/init.py +827 -0
  25. specify_cli/cli/commands/init_help.py +62 -0
  26. specify_cli/cli/commands/merge.py +755 -0
  27. specify_cli/cli/commands/mission.py +240 -0
  28. specify_cli/cli/commands/ops.py +265 -0
  29. specify_cli/cli/commands/orchestrate.py +640 -0
  30. specify_cli/cli/commands/repair.py +175 -0
  31. specify_cli/cli/commands/research.py +165 -0
  32. specify_cli/cli/commands/sync.py +364 -0
  33. specify_cli/cli/commands/upgrade.py +249 -0
  34. specify_cli/cli/commands/validate_encoding.py +186 -0
  35. specify_cli/cli/commands/validate_tasks.py +186 -0
  36. specify_cli/cli/commands/verify.py +310 -0
  37. specify_cli/cli/helpers.py +123 -0
  38. specify_cli/cli/step_tracker.py +91 -0
  39. specify_cli/cli/ui.py +192 -0
  40. specify_cli/core/__init__.py +53 -0
  41. specify_cli/core/agent_context.py +311 -0
  42. specify_cli/core/config.py +96 -0
  43. specify_cli/core/context_validation.py +362 -0
  44. specify_cli/core/dependency_graph.py +351 -0
  45. specify_cli/core/git_ops.py +129 -0
  46. specify_cli/core/multi_parent_merge.py +323 -0
  47. specify_cli/core/paths.py +260 -0
  48. specify_cli/core/project_resolver.py +110 -0
  49. specify_cli/core/stale_detection.py +263 -0
  50. specify_cli/core/tool_checker.py +79 -0
  51. specify_cli/core/utils.py +43 -0
  52. specify_cli/core/vcs/__init__.py +114 -0
  53. specify_cli/core/vcs/detection.py +341 -0
  54. specify_cli/core/vcs/exceptions.py +85 -0
  55. specify_cli/core/vcs/git.py +1304 -0
  56. specify_cli/core/vcs/jujutsu.py +1208 -0
  57. specify_cli/core/vcs/protocol.py +285 -0
  58. specify_cli/core/vcs/types.py +249 -0
  59. specify_cli/core/version_checker.py +261 -0
  60. specify_cli/core/worktree.py +506 -0
  61. specify_cli/dashboard/__init__.py +28 -0
  62. specify_cli/dashboard/diagnostics.py +204 -0
  63. specify_cli/dashboard/handlers/__init__.py +17 -0
  64. specify_cli/dashboard/handlers/api.py +143 -0
  65. specify_cli/dashboard/handlers/base.py +65 -0
  66. specify_cli/dashboard/handlers/features.py +390 -0
  67. specify_cli/dashboard/handlers/router.py +81 -0
  68. specify_cli/dashboard/handlers/static.py +50 -0
  69. specify_cli/dashboard/lifecycle.py +541 -0
  70. specify_cli/dashboard/scanner.py +437 -0
  71. specify_cli/dashboard/server.py +123 -0
  72. specify_cli/dashboard/static/dashboard/dashboard.css +722 -0
  73. specify_cli/dashboard/static/dashboard/dashboard.js +1424 -0
  74. specify_cli/dashboard/static/spec-kitty.png +0 -0
  75. specify_cli/dashboard/templates/__init__.py +36 -0
  76. specify_cli/dashboard/templates/index.html +258 -0
  77. specify_cli/doc_generators.py +621 -0
  78. specify_cli/doc_state.py +408 -0
  79. specify_cli/frontmatter.py +384 -0
  80. specify_cli/gap_analysis.py +915 -0
  81. specify_cli/gitignore_manager.py +300 -0
  82. specify_cli/guards.py +145 -0
  83. specify_cli/legacy_detector.py +83 -0
  84. specify_cli/manifest.py +286 -0
  85. specify_cli/merge/__init__.py +63 -0
  86. specify_cli/merge/executor.py +653 -0
  87. specify_cli/merge/forecast.py +215 -0
  88. specify_cli/merge/ordering.py +126 -0
  89. specify_cli/merge/preflight.py +230 -0
  90. specify_cli/merge/state.py +185 -0
  91. specify_cli/merge/status_resolver.py +354 -0
  92. specify_cli/mission.py +654 -0
  93. specify_cli/missions/documentation/command-templates/implement.md +309 -0
  94. specify_cli/missions/documentation/command-templates/plan.md +275 -0
  95. specify_cli/missions/documentation/command-templates/review.md +344 -0
  96. specify_cli/missions/documentation/command-templates/specify.md +206 -0
  97. specify_cli/missions/documentation/command-templates/tasks.md +189 -0
  98. specify_cli/missions/documentation/mission.yaml +113 -0
  99. specify_cli/missions/documentation/templates/divio/explanation-template.md +192 -0
  100. specify_cli/missions/documentation/templates/divio/howto-template.md +168 -0
  101. specify_cli/missions/documentation/templates/divio/reference-template.md +179 -0
  102. specify_cli/missions/documentation/templates/divio/tutorial-template.md +146 -0
  103. specify_cli/missions/documentation/templates/generators/jsdoc.json.template +18 -0
  104. specify_cli/missions/documentation/templates/generators/sphinx-conf.py.template +36 -0
  105. specify_cli/missions/documentation/templates/plan-template.md +269 -0
  106. specify_cli/missions/documentation/templates/release-template.md +222 -0
  107. specify_cli/missions/documentation/templates/spec-template.md +172 -0
  108. specify_cli/missions/documentation/templates/task-prompt-template.md +140 -0
  109. specify_cli/missions/documentation/templates/tasks-template.md +159 -0
  110. specify_cli/missions/research/command-templates/merge.md +388 -0
  111. specify_cli/missions/research/command-templates/plan.md +125 -0
  112. specify_cli/missions/research/command-templates/review.md +144 -0
  113. specify_cli/missions/research/command-templates/tasks.md +225 -0
  114. specify_cli/missions/research/mission.yaml +115 -0
  115. specify_cli/missions/research/templates/data-model-template.md +33 -0
  116. specify_cli/missions/research/templates/plan-template.md +161 -0
  117. specify_cli/missions/research/templates/research/evidence-log.csv +18 -0
  118. specify_cli/missions/research/templates/research/source-register.csv +18 -0
  119. specify_cli/missions/research/templates/research-template.md +35 -0
  120. specify_cli/missions/research/templates/spec-template.md +64 -0
  121. specify_cli/missions/research/templates/task-prompt-template.md +148 -0
  122. specify_cli/missions/research/templates/tasks-template.md +114 -0
  123. specify_cli/missions/software-dev/command-templates/accept.md +75 -0
  124. specify_cli/missions/software-dev/command-templates/analyze.md +183 -0
  125. specify_cli/missions/software-dev/command-templates/checklist.md +286 -0
  126. specify_cli/missions/software-dev/command-templates/clarify.md +157 -0
  127. specify_cli/missions/software-dev/command-templates/constitution.md +432 -0
  128. specify_cli/missions/software-dev/command-templates/dashboard.md +101 -0
  129. specify_cli/missions/software-dev/command-templates/implement.md +41 -0
  130. specify_cli/missions/software-dev/command-templates/merge.md +383 -0
  131. specify_cli/missions/software-dev/command-templates/plan.md +171 -0
  132. specify_cli/missions/software-dev/command-templates/review.md +32 -0
  133. specify_cli/missions/software-dev/command-templates/specify.md +321 -0
  134. specify_cli/missions/software-dev/command-templates/tasks.md +566 -0
  135. specify_cli/missions/software-dev/mission.yaml +100 -0
  136. specify_cli/missions/software-dev/templates/plan-template.md +132 -0
  137. specify_cli/missions/software-dev/templates/spec-template.md +116 -0
  138. specify_cli/missions/software-dev/templates/task-prompt-template.md +140 -0
  139. specify_cli/missions/software-dev/templates/tasks-template.md +159 -0
  140. specify_cli/orchestrator/__init__.py +75 -0
  141. specify_cli/orchestrator/agent_config.py +224 -0
  142. specify_cli/orchestrator/agents/__init__.py +170 -0
  143. specify_cli/orchestrator/agents/augment.py +112 -0
  144. specify_cli/orchestrator/agents/base.py +243 -0
  145. specify_cli/orchestrator/agents/claude.py +112 -0
  146. specify_cli/orchestrator/agents/codex.py +106 -0
  147. specify_cli/orchestrator/agents/copilot.py +137 -0
  148. specify_cli/orchestrator/agents/cursor.py +139 -0
  149. specify_cli/orchestrator/agents/gemini.py +115 -0
  150. specify_cli/orchestrator/agents/kilocode.py +94 -0
  151. specify_cli/orchestrator/agents/opencode.py +132 -0
  152. specify_cli/orchestrator/agents/qwen.py +96 -0
  153. specify_cli/orchestrator/config.py +455 -0
  154. specify_cli/orchestrator/executor.py +642 -0
  155. specify_cli/orchestrator/integration.py +1230 -0
  156. specify_cli/orchestrator/monitor.py +898 -0
  157. specify_cli/orchestrator/scheduler.py +832 -0
  158. specify_cli/orchestrator/state.py +508 -0
  159. specify_cli/orchestrator/testing/__init__.py +122 -0
  160. specify_cli/orchestrator/testing/availability.py +346 -0
  161. specify_cli/orchestrator/testing/fixtures.py +684 -0
  162. specify_cli/orchestrator/testing/paths.py +218 -0
  163. specify_cli/plan_validation.py +107 -0
  164. specify_cli/scripts/debug-dashboard-scan.py +61 -0
  165. specify_cli/scripts/tasks/acceptance_support.py +695 -0
  166. specify_cli/scripts/tasks/task_helpers.py +506 -0
  167. specify_cli/scripts/tasks/tasks_cli.py +848 -0
  168. specify_cli/scripts/validate_encoding.py +180 -0
  169. specify_cli/task_metadata_validation.py +274 -0
  170. specify_cli/tasks_support.py +447 -0
  171. specify_cli/template/__init__.py +47 -0
  172. specify_cli/template/asset_generator.py +206 -0
  173. specify_cli/template/github_client.py +334 -0
  174. specify_cli/template/manager.py +193 -0
  175. specify_cli/template/renderer.py +99 -0
  176. specify_cli/templates/AGENTS.md +190 -0
  177. specify_cli/templates/POWERSHELL_SYNTAX.md +229 -0
  178. specify_cli/templates/agent-file-template.md +35 -0
  179. specify_cli/templates/checklist-template.md +42 -0
  180. specify_cli/templates/claudeignore-template +58 -0
  181. specify_cli/templates/command-templates/accept.md +141 -0
  182. specify_cli/templates/command-templates/analyze.md +253 -0
  183. specify_cli/templates/command-templates/checklist.md +352 -0
  184. specify_cli/templates/command-templates/clarify.md +224 -0
  185. specify_cli/templates/command-templates/constitution.md +432 -0
  186. specify_cli/templates/command-templates/dashboard.md +175 -0
  187. specify_cli/templates/command-templates/implement.md +190 -0
  188. specify_cli/templates/command-templates/merge.md +374 -0
  189. specify_cli/templates/command-templates/plan.md +171 -0
  190. specify_cli/templates/command-templates/research.md +88 -0
  191. specify_cli/templates/command-templates/review.md +510 -0
  192. specify_cli/templates/command-templates/specify.md +321 -0
  193. specify_cli/templates/command-templates/status.md +92 -0
  194. specify_cli/templates/command-templates/tasks.md +199 -0
  195. specify_cli/templates/git-hooks/pre-commit +22 -0
  196. specify_cli/templates/git-hooks/pre-commit-agent-check +37 -0
  197. specify_cli/templates/git-hooks/pre-commit-encoding-check +142 -0
  198. specify_cli/templates/plan-template.md +108 -0
  199. specify_cli/templates/spec-template.md +118 -0
  200. specify_cli/templates/task-prompt-template.md +165 -0
  201. specify_cli/templates/tasks-template.md +161 -0
  202. specify_cli/templates/vscode-settings.json +13 -0
  203. specify_cli/text_sanitization.py +225 -0
  204. specify_cli/upgrade/__init__.py +18 -0
  205. specify_cli/upgrade/detector.py +239 -0
  206. specify_cli/upgrade/metadata.py +182 -0
  207. specify_cli/upgrade/migrations/__init__.py +65 -0
  208. specify_cli/upgrade/migrations/base.py +80 -0
  209. specify_cli/upgrade/migrations/m_0_10_0_python_only.py +359 -0
  210. specify_cli/upgrade/migrations/m_0_10_12_constitution_cleanup.py +99 -0
  211. specify_cli/upgrade/migrations/m_0_10_14_update_implement_slash_command.py +176 -0
  212. specify_cli/upgrade/migrations/m_0_10_1_populate_slash_commands.py +174 -0
  213. specify_cli/upgrade/migrations/m_0_10_2_update_slash_commands.py +172 -0
  214. specify_cli/upgrade/migrations/m_0_10_6_workflow_simplification.py +174 -0
  215. specify_cli/upgrade/migrations/m_0_10_8_fix_memory_structure.py +252 -0
  216. specify_cli/upgrade/migrations/m_0_10_9_repair_templates.py +168 -0
  217. specify_cli/upgrade/migrations/m_0_11_0_workspace_per_wp.py +182 -0
  218. specify_cli/upgrade/migrations/m_0_11_1_improved_workflow_templates.py +173 -0
  219. specify_cli/upgrade/migrations/m_0_11_1_update_implement_slash_command.py +160 -0
  220. specify_cli/upgrade/migrations/m_0_11_2_improved_workflow_templates.py +173 -0
  221. specify_cli/upgrade/migrations/m_0_11_3_workflow_agent_flag.py +114 -0
  222. specify_cli/upgrade/migrations/m_0_12_0_documentation_mission.py +155 -0
  223. specify_cli/upgrade/migrations/m_0_12_1_remove_kitty_specs_from_gitignore.py +183 -0
  224. specify_cli/upgrade/migrations/m_0_2_0_specify_to_kittify.py +80 -0
  225. specify_cli/upgrade/migrations/m_0_4_8_gitignore_agents.py +118 -0
  226. specify_cli/upgrade/migrations/m_0_5_0_encoding_hooks.py +141 -0
  227. specify_cli/upgrade/migrations/m_0_6_5_commands_rename.py +169 -0
  228. specify_cli/upgrade/migrations/m_0_6_7_ensure_missions.py +228 -0
  229. specify_cli/upgrade/migrations/m_0_7_2_worktree_commands_dedup.py +89 -0
  230. specify_cli/upgrade/migrations/m_0_7_3_update_scripts.py +114 -0
  231. specify_cli/upgrade/migrations/m_0_8_0_remove_active_mission.py +82 -0
  232. specify_cli/upgrade/migrations/m_0_8_0_worktree_agents_symlink.py +148 -0
  233. specify_cli/upgrade/migrations/m_0_9_0_frontmatter_only_lanes.py +346 -0
  234. specify_cli/upgrade/migrations/m_0_9_1_complete_lane_migration.py +656 -0
  235. specify_cli/upgrade/migrations/m_0_9_2_research_mission_templates.py +221 -0
  236. specify_cli/upgrade/registry.py +121 -0
  237. specify_cli/upgrade/runner.py +284 -0
  238. specify_cli/validators/__init__.py +14 -0
  239. specify_cli/validators/paths.py +154 -0
  240. specify_cli/validators/research.py +428 -0
  241. specify_cli/verify_enhanced.py +270 -0
  242. specify_cli/workspace_context.py +224 -0
@@ -0,0 +1,374 @@
1
+ ---
2
+ description: Merge a completed feature into the main branch and clean up worktree
3
+ scripts:
4
+ sh: "spec-kitty agent feature merge"
5
+ ps: "spec-kitty agent"
6
+ ---
7
+ **Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
8
+
9
+ *Path: [templates/commands/merge.md](templates/commands/merge.md)*
10
+
11
+
12
+ # Merge Feature Branch
13
+
14
+ This command merges a completed feature branch into the main/target branch and handles cleanup of worktrees and branches.
15
+
16
+ ## ⛔ Location Pre-flight Check (CRITICAL)
17
+
18
+ **BEFORE PROCEEDING:** You MUST be in the feature worktree, NOT the main repository.
19
+
20
+ Verify your current location:
21
+ ```bash
22
+ pwd
23
+ git branch --show-current
24
+ ```
25
+
26
+ **Expected output:**
27
+ - `pwd`: Should end with `.worktrees/001-feature-name` (or similar feature worktree)
28
+ - Branch: Should show your feature branch name like `001-feature-name` (NOT `main` or `release/*`)
29
+
30
+ **If you see:**
31
+ - Branch showing `main` or `release/`
32
+ - OR pwd shows the main repository root
33
+
34
+ ⛔ **STOP - DANGER! You are in the wrong location!**
35
+
36
+ This command merges your feature INTO main. Running from the wrong location can cause:
37
+ - Loss of work
38
+ - Merge conflicts
39
+ - Repository corruption
40
+
41
+ **Correct the issue:**
42
+ 1. Navigate to your feature worktree: `cd .worktrees/001-feature-name`
43
+ 2. Verify you're on the correct feature branch: `git branch --show-current`
44
+ 3. Then run this merge command again
45
+
46
+ **Exception (main branch):**
47
+ If you are on `main` and need to merge a workspace-per-WP feature, run:
48
+ ```bash
49
+ spec-kitty merge --feature <feature-slug>
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Prerequisites
55
+
56
+ Before running this command:
57
+
58
+ 1. ✅ Feature must pass `/spec-kitty.accept` checks
59
+ 2. ✅ All work packages must be in `tasks/`
60
+ 3. ✅ Working directory must be clean (no uncommitted changes)
61
+ 4. ✅ Run the command from the feature worktree (Spec Kitty will move the merge to the primary repo automatically)
62
+
63
+ ## Location Pre-flight Check (CRITICAL for AI Agents)
64
+
65
+ Before merging, verify you are in the correct working directory by running this validation:
66
+
67
+ ```bash
68
+ python3 -c "
69
+ from specify_cli.guards import validate_worktree_location
70
+ result = validate_worktree_location()
71
+ if not result.is_valid:
72
+ print(result.format_error())
73
+ print('\nThis command MUST run from a feature worktree, not the main repository.')
74
+ print('\nFor workspace-per-WP features, run from ANY WP worktree:')
75
+ print(' cd /path/to/project/.worktrees/<feature>-WP01')
76
+ print(' # or any other WP worktree for this feature')
77
+ raise SystemExit(1)
78
+ else:
79
+ print('✓ Location verified:', result.branch_name)
80
+ "
81
+ ```
82
+
83
+ **What this validates**:
84
+ - Current branch follows the feature pattern like `001-feature-name` or `001-feature-name-WP01`
85
+ - You're not attempting to run from `main` or any release branch
86
+ - The validator prints clear navigation instructions if you're outside the feature worktree
87
+
88
+ **For workspace-per-WP features (0.11.0+)**:
89
+ - Run merge from ANY WP worktree (e.g., `.worktrees/014-feature-WP09/`)
90
+ - The merge command automatically detects all WP branches and merges them sequentially
91
+ - You do NOT need to run merge from each WP worktree individually
92
+
93
+ ## What This Command Does
94
+
95
+ 1. **Detects** your current feature branch and worktree status
96
+ 2. **Runs** pre-flight validation across all worktrees and the target branch
97
+ 3. **Determines** merge order based on WP dependencies (workspace-per-WP)
98
+ 4. **Forecasts** conflicts during `--dry-run` and flags auto-resolvable status files
99
+ 5. **Verifies** working directory is clean (legacy single-worktree)
100
+ 6. **Switches** to the target branch (default: `main`) in the primary repository
101
+ 7. **Updates** the target branch (`git pull --ff-only`)
102
+ 8. **Merges** the feature using your chosen strategy
103
+ 9. **Auto-resolves** status file conflicts after each WP merge
104
+ 10. **Optionally pushes** to origin
105
+ 11. **Removes** the feature worktree (if in one)
106
+ 12. **Deletes** the feature branch
107
+
108
+ ## Usage
109
+
110
+ ### Basic merge (default: merge commit, cleanup everything)
111
+
112
+ ```bash
113
+ spec-kitty merge
114
+ ```
115
+
116
+ This will:
117
+ - Create a merge commit
118
+ - Remove the worktree
119
+ - Delete the feature branch
120
+ - Keep changes local (no push)
121
+
122
+ ### Merge with options
123
+
124
+ ```bash
125
+ # Squash all commits into one
126
+ spec-kitty merge --strategy squash
127
+
128
+ # Push to origin after merging
129
+ spec-kitty merge --push
130
+
131
+ # Keep the feature branch
132
+ spec-kitty merge --keep-branch
133
+
134
+ # Keep the worktree
135
+ spec-kitty merge --keep-worktree
136
+
137
+ # Merge into a different branch
138
+ spec-kitty merge --target develop
139
+
140
+ # See what would happen without doing it
141
+ spec-kitty merge --dry-run
142
+
143
+ # Run merge from main for a workspace-per-WP feature
144
+ spec-kitty merge --feature 017-feature-slug
145
+ ```
146
+
147
+ ### Common workflows
148
+
149
+ ```bash
150
+ # Feature complete, squash and push
151
+ spec-kitty merge --strategy squash --push
152
+
153
+ # Keep branch for reference
154
+ spec-kitty merge --keep-branch
155
+
156
+ # Merge into develop instead of main
157
+ spec-kitty merge --target develop --push
158
+ ```
159
+
160
+ ## Merge Strategies
161
+
162
+ ### `merge` (default)
163
+ Creates a merge commit preserving all feature branch commits.
164
+ ```bash
165
+ spec-kitty merge --strategy merge
166
+ ```
167
+ ✅ Preserves full commit history
168
+ ✅ Clear feature boundaries in git log
169
+ ❌ More commits in main branch
170
+
171
+ ### `squash`
172
+ Squashes all feature commits into a single commit.
173
+ ```bash
174
+ spec-kitty merge --strategy squash
175
+ ```
176
+ ✅ Clean, linear history on main
177
+ ✅ Single commit per feature
178
+ ❌ Loses individual commit details
179
+
180
+ ### `rebase`
181
+ Requires manual rebase first (command will guide you).
182
+ ```bash
183
+ spec-kitty merge --strategy rebase
184
+ ```
185
+ ✅ Linear history without merge commits
186
+ ❌ Requires manual intervention
187
+ ❌ Rewrites commit history
188
+
189
+ ## Options
190
+
191
+ | Option | Description | Default |
192
+ |--------|-------------|---------|
193
+ | `--strategy` | Merge strategy: `merge`, `squash`, or `rebase` | `merge` |
194
+ | `--delete-branch` / `--keep-branch` | Delete feature branch after merge | delete |
195
+ | `--remove-worktree` / `--keep-worktree` | Remove feature worktree after merge | remove |
196
+ | `--push` | Push to origin after merge | no push |
197
+ | `--target` | Target branch to merge into | `main` |
198
+ | `--dry-run` | Show what would be done without executing | off |
199
+ | `--feature` | Feature slug when merging from main branch | none |
200
+ | `--resume` | Resume an interrupted merge | off |
201
+
202
+ ## Worktree Strategy
203
+
204
+ Spec Kitty uses an **opinionated worktree approach**:
205
+
206
+ ### Workspace-per-WP Model (0.11.0+)
207
+
208
+ In the current model, each work package gets its own worktree:
209
+
210
+ ```
211
+ my-project/ # Main repo (main branch)
212
+ ├── .worktrees/
213
+ │ ├── 001-auth-system-WP01/ # WP01 worktree
214
+ │ ├── 001-auth-system-WP02/ # WP02 worktree
215
+ │ ├── 001-auth-system-WP03/ # WP03 worktree
216
+ │ └── 002-dashboard-WP01/ # Different feature
217
+ ├── .kittify/
218
+ ├── kitty-specs/
219
+ └── ... (main branch files)
220
+ ```
221
+
222
+ **Merge behavior for workspace-per-WP**:
223
+ - Run `spec-kitty merge` from **any** WP worktree for the feature
224
+ - The command automatically detects all WP branches (WP01, WP02, WP03, etc.)
225
+ - Merges each WP branch into main in sequence
226
+ - Cleans up all WP worktrees and branches
227
+
228
+ ### Legacy Pattern (0.10.x)
229
+ ```
230
+ my-project/ # Main repo (main branch)
231
+ ├── .worktrees/
232
+ │ ├── 001-auth-system/ # Feature 1 worktree (single)
233
+ │ ├── 002-dashboard/ # Feature 2 worktree (single)
234
+ │ └── 003-notifications/ # Feature 3 worktree (single)
235
+ ├── .kittify/
236
+ ├── kitty-specs/
237
+ └── ... (main branch files)
238
+ ```
239
+
240
+ ### The Rules
241
+ 1. **Main branch** stays in the primary repo root
242
+ 2. **Feature branches** live in `.worktrees/<feature-slug>/`
243
+ 3. **Work on features** happens in their worktrees (isolation)
244
+ 4. **Merge from worktrees** using this command – the CLI will hop to the primary repo for the Git merge
245
+ 5. **Cleanup is automatic** - worktrees removed after merge
246
+
247
+ ### Why Worktrees?
248
+ - ✅ Work on multiple features simultaneously
249
+ - ✅ Each feature has its own sandbox
250
+ - ✅ No branch switching in main repo
251
+ - ✅ Easy to compare features
252
+ - ✅ Clean separation of concerns
253
+
254
+ ### The Flow
255
+ ```
256
+ 1. /spec-kitty.specify → Creates branch + worktree
257
+ 2. cd .worktrees/<feature>/ → Enter worktree
258
+ 3. /spec-kitty.plan → Work in isolation
259
+ 4. /spec-kitty.tasks
260
+ 5. /spec-kitty.implement
261
+ 6. /spec-kitty.review
262
+ 7. /spec-kitty.accept
263
+ 8. /spec-kitty.merge → Merge + cleanup worktree
264
+ 9. Back in main repo! → Ready for next feature
265
+ ```
266
+
267
+ ## Error Handling
268
+
269
+ ### "Already on main branch"
270
+ You're not on a feature branch. Switch to your feature branch first:
271
+ ```bash
272
+ cd .worktrees/<feature-slug>
273
+ # or
274
+ git checkout <feature-branch>
275
+ ```
276
+
277
+ ### "Working directory has uncommitted changes"
278
+ Commit or stash your changes:
279
+ ```bash
280
+ git add .
281
+ git commit -m "Final changes"
282
+ # or
283
+ git stash
284
+ ```
285
+
286
+ ### "Could not fast-forward main"
287
+ Your main branch is behind origin:
288
+ ```bash
289
+ git checkout main
290
+ git pull
291
+ git checkout <feature-branch>
292
+ spec-kitty merge
293
+ ```
294
+
295
+ ### "Merge failed - conflicts"
296
+ Resolve conflicts manually:
297
+ ```bash
298
+ # Fix conflicts in files
299
+ git add <resolved-files>
300
+ git commit
301
+ # Then complete cleanup manually:
302
+ git worktree remove .worktrees/<feature>
303
+ git branch -d <feature-branch>
304
+ ```
305
+
306
+ ## Safety Features
307
+
308
+ 1. **Clean working directory check** - Won't merge with uncommitted changes
309
+ 2. **Primary repo hand-off** - Automatically runs Git operations from the main checkout when invoked in a worktree
310
+ 3. **Fast-forward only pull** - Won't proceed if main has diverged
311
+ 4. **Graceful failure** - If merge fails, you can fix manually
312
+ 5. **Optional operations** - Push, branch delete, and worktree removal are configurable
313
+ 6. **Dry run mode** - Preview exactly what will happen
314
+
315
+ ## Examples
316
+
317
+ ### Complete feature and push
318
+ ```bash
319
+ cd .worktrees/001-auth-system
320
+ /spec-kitty.accept
321
+ /spec-kitty.merge --push
322
+ ```
323
+
324
+ ### Squash merge for cleaner history
325
+ ```bash
326
+ spec-kitty merge --strategy squash --push
327
+ ```
328
+
329
+ ### Merge but keep branch for reference
330
+ ```bash
331
+ spec-kitty merge --keep-branch --push
332
+ ```
333
+
334
+ ### Check what will happen first
335
+ ```bash
336
+ spec-kitty merge --dry-run
337
+ ```
338
+
339
+ ## After Merging
340
+
341
+ After a successful merge, you're back on the main branch with:
342
+ - ✅ Feature code integrated
343
+ - ✅ Worktree removed (if it existed)
344
+ - ✅ Feature branch deleted (unless `--keep-branch`)
345
+ - ✅ Ready to start your next feature!
346
+
347
+ ## Integration with Accept
348
+
349
+ The typical flow is:
350
+
351
+ ```bash
352
+ # 1. Run acceptance checks
353
+ /spec-kitty.accept --mode local
354
+
355
+ # 2. If checks pass, merge
356
+ /spec-kitty.merge --push
357
+ ```
358
+
359
+ Or combine conceptually:
360
+ ```bash
361
+ # Accept verifies readiness
362
+ /spec-kitty.accept --mode local
363
+
364
+ # Merge performs integration
365
+ /spec-kitty.merge --strategy squash --push
366
+ ```
367
+
368
+ The `/spec-kitty.accept` command **verifies** your feature is complete.
369
+ The `/spec-kitty.merge` command **integrates** your feature into main.
370
+
371
+ Together they complete the workflow:
372
+ ```
373
+ specify → plan → tasks → implement → review → accept → merge ✅
374
+ ```
@@ -0,0 +1,171 @@
1
+ ---
2
+ description: Execute the implementation planning workflow using the plan template to generate design artifacts.
3
+ ---
4
+
5
+ # /spec-kitty.plan - Create Implementation Plan
6
+
7
+ **Version**: 0.11.0+
8
+
9
+ ## 📍 WORKING DIRECTORY: Stay in MAIN repository
10
+
11
+ **IMPORTANT**: Plan works in the main repository. NO worktrees created.
12
+
13
+ ```bash
14
+ # Run from project root (same directory as /spec-kitty.specify):
15
+ # You should already be here if you just ran /spec-kitty.specify
16
+
17
+ # Creates:
18
+ # - kitty-specs/###-feature/plan.md → In main repository
19
+ # - Commits to main branch
20
+ # - NO worktrees created
21
+ ```
22
+
23
+ **Do NOT cd anywhere**. Stay in the main repository root.
24
+
25
+ ## User Input
26
+
27
+ ```text
28
+ $ARGUMENTS
29
+ ```
30
+
31
+ You **MUST** consider the user input before proceeding (if not empty).
32
+
33
+ ## Location Check (0.11.0+)
34
+
35
+ This command runs in the **main repository**, not in a worktree.
36
+
37
+ - Verify you're on `main` (or `master`) before scaffolding plan.md
38
+ - Planning artifacts live in `kitty-specs/###-feature/`
39
+ - The plan template is committed to the main branch after generation
40
+
41
+ **Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
42
+
43
+ ## Planning Interrogation (mandatory)
44
+
45
+ Before executing any scripts or generating artifacts you must interrogate the specification and stakeholders.
46
+
47
+ - **Scope proportionality (CRITICAL)**: FIRST, assess the feature's complexity from the spec:
48
+ - **Trivial/Test Features** (hello world, simple static pages, basic demos): Ask 1-2 questions maximum about tech stack preference, then proceed with sensible defaults
49
+ - **Simple Features** (small components, minor API additions): Ask 2-3 questions about tech choices and constraints
50
+ - **Complex Features** (new subsystems, multi-component features): Ask 3-5 questions covering architecture, NFRs, integrations
51
+ - **Platform/Critical Features** (core infrastructure, security, payments): Full interrogation with 5+ questions
52
+
53
+ - **User signals to reduce questioning**: If the user says "use defaults", "just make it simple", "skip to implementation", "vanilla HTML/CSS/JS" - recognize these as signals to minimize planning questions and use standard approaches.
54
+
55
+ - **First response rule**:
56
+ - For TRIVIAL features: Ask ONE tech stack question, then if answer is simple (e.g., "vanilla HTML"), proceed directly to plan generation
57
+ - For other features: Ask a single architecture question and end with `WAITING_FOR_PLANNING_INPUT`
58
+
59
+ - If the user has not provided plan context, keep interrogating with one question at a time.
60
+
61
+ - **Conversational cadence**: After each reply, assess if you have SUFFICIENT context for this feature's scope. For trivial features, knowing the basic stack is enough. Only continue if critical unknowns remain.
62
+
63
+ Planning requirements (scale to complexity):
64
+
65
+ 1. Maintain a **Planning Questions** table internally covering questions appropriate to the feature's complexity (1-2 for trivial, up to 5+ for platform-level). Track columns `#`, `Question`, `Why it matters`, and `Current insight`. Do **not** render this table to the user.
66
+ 2. For trivial features, standard practices are acceptable (vanilla HTML, simple file structure, no build tools). Only probe if the user's request suggests otherwise.
67
+ 3. When you have sufficient context for the scope, summarize into an **Engineering Alignment** note and confirm.
68
+ 4. If user explicitly asks to skip questions or use defaults, acknowledge and proceed with best practices for that feature type.
69
+
70
+ ## Outline
71
+
72
+ 1. **Check planning discovery status**:
73
+ - If any planning questions remain unanswered or the user has not confirmed the **Engineering Alignment** summary, stay in the one-question cadence, capture the user's response, update your internal table, and end with `WAITING_FOR_PLANNING_INPUT`. Do **not** surface the table. Do **not** run the setup command yet.
74
+ - Once every planning question has a concrete answer and the alignment summary is confirmed by the user, continue.
75
+
76
+ 2. **Setup**: Run `spec-kitty agent feature setup-plan --json` from the repository root and parse JSON for:
77
+ - `result`: "success" or error message
78
+ - `plan_file`: Absolute path to the created plan.md
79
+ - `feature_dir`: Absolute path to the feature directory
80
+
81
+ 3. **Load context**: Read FEATURE_SPEC and `.kittify/memory/constitution.md` if it exists. If the constitution file is missing, skip Constitution Check and note that it is absent. Load IMPL_PLAN template (already copied).
82
+
83
+ 4. **Execute plan workflow**: Follow the structure in IMPL_PLAN template, using the validated planning answers as ground truth:
84
+ - Update Technical Context with explicit statements from the user or discovery research; mark `[NEEDS CLARIFICATION: …]` only when the user deliberately postpones a decision
85
+ - If a constitution exists, fill Constitution Check section from it and challenge any conflicts directly with the user. If no constitution exists, mark the section as skipped.
86
+ - Evaluate gates (ERROR if violations unjustified or questions remain unanswered)
87
+ - Phase 0: Generate research.md (commission research to resolve every outstanding clarification)
88
+ - Phase 1: Generate data-model.md, contracts/, quickstart.md based on confirmed intent
89
+ - Phase 1: Update agent context by running the agent script
90
+ - Re-evaluate Constitution Check post-design, asking the user to resolve new gaps before proceeding
91
+
92
+ 5. **STOP and report**: This command ends after Phase 1 planning. Report branch, IMPL_PLAN path, and generated artifacts.
93
+
94
+ **⚠️ CRITICAL: DO NOT proceed to task generation!** The user must explicitly run `/spec-kitty.tasks` to generate work packages. Your job is COMPLETE after reporting the planning artifacts.
95
+
96
+ ## Phases
97
+
98
+ ### Phase 0: Outline & Research
99
+
100
+ 1. **Extract unknowns from Technical Context** above:
101
+ - For each NEEDS CLARIFICATION → research task
102
+ - For each dependency → best practices task
103
+ - For each integration → patterns task
104
+
105
+ 2. **Generate and dispatch research agents**:
106
+ ```
107
+ For each unknown in Technical Context:
108
+ Task: "Research {unknown} for {feature context}"
109
+ For each technology choice:
110
+ Task: "Find best practices for {tech} in {domain}"
111
+ ```
112
+
113
+ 3. **Consolidate findings** in `research.md` using format:
114
+ - Decision: [what was chosen]
115
+ - Rationale: [why chosen]
116
+ - Alternatives considered: [what else evaluated]
117
+
118
+ **Output**: research.md with all NEEDS CLARIFICATION resolved
119
+
120
+ ### Phase 1: Design & Contracts
121
+
122
+ **Prerequisites:** `research.md` complete
123
+
124
+ 1. **Extract entities from feature spec** → `data-model.md`:
125
+ - Entity name, fields, relationships
126
+ - Validation rules from requirements
127
+ - State transitions if applicable
128
+
129
+ 2. **Generate API contracts** from functional requirements:
130
+ - For each user action → endpoint
131
+ - Use standard REST/GraphQL patterns
132
+ - Output OpenAPI/GraphQL schema to `/contracts/`
133
+
134
+ 3. **Agent context update**:
135
+ - Run `{AGENT_SCRIPT}`
136
+ - These scripts detect which AI agent is in use
137
+ - Update the appropriate agent-specific context file
138
+ - Add only new technology from current plan
139
+ - Preserve manual additions between markers
140
+
141
+ **Output**: data-model.md, /contracts/*, quickstart.md, agent-specific file
142
+
143
+ ## Key rules
144
+
145
+ - Use absolute paths
146
+ - ERROR on gate failures or unresolved clarifications
147
+
148
+ ---
149
+
150
+ ## ⛔ MANDATORY STOP POINT
151
+
152
+ **This command is COMPLETE after generating planning artifacts.**
153
+
154
+ After reporting:
155
+ - `plan.md` path
156
+ - `research.md` path (if generated)
157
+ - `data-model.md` path (if generated)
158
+ - `contracts/` contents (if generated)
159
+ - Agent context file updated
160
+
161
+ **YOU MUST STOP HERE.**
162
+
163
+ Do NOT:
164
+ - ❌ Generate `tasks.md`
165
+ - ❌ Create work package (WP) files
166
+ - ❌ Create `tasks/` subdirectories
167
+ - ❌ Proceed to implementation
168
+
169
+ The user will run `/spec-kitty.tasks` when they are ready to generate work packages.
170
+
171
+ **Next suggested command**: `/spec-kitty.tasks` (user must invoke this explicitly)
@@ -0,0 +1,88 @@
1
+ ---
2
+ description: Run the Phase 0 research workflow to scaffold research artifacts before task planning.
3
+ scripts:
4
+ sh: spec-kitty research
5
+ ps: spec-kitty research
6
+ ---
7
+ **Path reference rule:** When you mention directories or files, provide either the absolute path or a path relative to the project root (for example, `kitty-specs/<feature>/tasks/`). Never refer to a folder by name alone.
8
+
9
+
10
+ *Path: [templates/commands/research.md](templates/commands/research.md)*
11
+
12
+
13
+ ## Location Pre-flight Check
14
+
15
+ **BEFORE PROCEEDING:** Verify you are working in the feature worktree.
16
+
17
+ ```bash
18
+ pwd
19
+ git branch --show-current
20
+ ```
21
+
22
+ **Expected output:**
23
+ - `pwd`: Should end with `.worktrees/001-feature-name` (or similar feature worktree)
24
+ - Branch: Should show your feature branch name like `001-feature-name` (NOT `main`)
25
+
26
+ **If you see the main branch or main repository path:**
27
+
28
+ ⛔ **STOP - You are in the wrong location!**
29
+
30
+ This command creates research artifacts in your feature directory. You must be in the feature worktree.
31
+
32
+ **Correct the issue:**
33
+ 1. Navigate to your feature worktree: `cd .worktrees/001-feature-name`
34
+ 2. Verify you're on the correct feature branch: `git branch --show-current`
35
+ 3. Then run this research command again
36
+
37
+ ---
38
+
39
+ ## What This Command Creates
40
+
41
+ When you run `{SCRIPT}`, the following files are generated in your feature directory:
42
+
43
+ **Generated files**:
44
+ - **research.md** – Decisions, rationale, and supporting evidence
45
+ - **data-model.md** – Entities, attributes, and relationships
46
+ - **research/evidence-log.csv** – Sources and findings audit trail
47
+ - **research/source-register.csv** – Reference tracking for all sources
48
+
49
+ **Location**: All files go in `kitty-specs/001-feature-name/`
50
+
51
+ ---
52
+
53
+ ## Workflow Context
54
+
55
+ **Before this**: `/spec-kitty.plan` calls this as "Phase 0" research phase
56
+
57
+ **This command**:
58
+ - Scaffolds research artifacts
59
+ - Creates templates for capturing decisions and evidence
60
+ - Establishes audit trail for traceability
61
+
62
+ **After this**:
63
+ - Fill in research.md, data-model.md, and CSV logs with actual findings
64
+ - Continue with `/spec-kitty.plan` which uses your research to drive technical design
65
+
66
+ ---
67
+
68
+ ## Goal
69
+
70
+ Create `research.md`, `data-model.md`, and supporting CSV stubs based on the active mission so implementation planning can reference concrete decisions and evidence.
71
+
72
+ ## What to do
73
+
74
+ 1. You should already be in the correct feature worktree (verified above with pre-flight check).
75
+ 2. Run `{SCRIPT}` to generate the mission-specific research artifacts. (Add `--force` only when it is acceptable to overwrite existing drafts.)
76
+ 3. Open the generated files and fill in the required content:
77
+ - `research.md` – capture decisions, rationale, and supporting evidence.
78
+ - `data-model.md` – document entities, attributes, and relationships discovered during research.
79
+ - `research/evidence-log.csv` & `research/source-register.csv` – log all sources and findings so downstream reviewers can audit the trail.
80
+ 4. If your research generates additional templates (spreadsheets, notebooks, etc.), store them under `research/` and reference them inside `research.md`.
81
+ 5. Summarize open questions or risks at the bottom of `research.md`. These should feed directly into `/spec-kitty.tasks` and future implementation prompts.
82
+
83
+ ## Success Criteria
84
+
85
+ - `kitty-specs/<feature>/research.md` explains every major decision with references to evidence.
86
+ - `kitty-specs/<feature>/data-model.md` lists the entities and relationships needed for implementation.
87
+ - CSV logs exist (even if partially filled) so evidence gathering is traceable.
88
+ - Outstanding questions from the research phase are tracked and ready for follow-up during planning or execution.