@atlashub/smartstack-cli 1.13.1 → 1.14.0

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 (210) hide show
  1. package/.documentation/agents.html +1 -1
  2. package/.documentation/apex.html +1 -1
  3. package/.documentation/business-analyse.html +1 -1
  4. package/.documentation/cli-commands.html +3 -3
  5. package/.documentation/commands.html +1 -1
  6. package/.documentation/efcore.html +1 -1
  7. package/.documentation/gitflow.html +1 -1
  8. package/.documentation/hooks.html +1 -1
  9. package/.documentation/index.html +1 -1
  10. package/.documentation/init.html +3 -3
  11. package/.documentation/installation.html +1001 -352
  12. package/.documentation/ralph-loop.html +1 -1
  13. package/.documentation/test-web.html +1 -1
  14. package/README.md +88 -20
  15. package/dist/index.js +276 -85
  16. package/dist/index.js.map +1 -1
  17. package/package.json +1 -1
  18. package/templates/agents/code-reviewer.md +163 -0
  19. package/templates/agents/efcore/db-deploy.md +25 -7
  20. package/templates/agents/efcore/db-reset.md +31 -10
  21. package/templates/agents/efcore/db-status.md +22 -5
  22. package/templates/agents/efcore/migration.md +69 -19
  23. package/templates/agents/gitflow/cleanup.md +8 -1
  24. package/templates/agents/gitflow/commit.md +7 -5
  25. package/templates/agents/gitflow/finish.md +6 -4
  26. package/templates/agents/gitflow/pr.md +8 -1
  27. package/templates/agents/gitflow/start.md +1 -1
  28. package/templates/commands/check-version.md +267 -0
  29. package/templates/commands/efcore/_shared.md +30 -1
  30. package/templates/commands/efcore/db-reset.md +18 -6
  31. package/templates/commands/gitflow/OPTIMIZATIONS.md +206 -0
  32. package/templates/commands/refactor.md +164 -0
  33. package/templates/project/DependencyInjection.Application.cs.template +25 -0
  34. package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
  35. package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
  36. package/templates/project/ExampleEntity.cs.template +116 -0
  37. package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
  38. package/templates/project/ExampleService.cs.template +146 -0
  39. package/templates/project/ExtensionsDbContext.cs.template +41 -0
  40. package/templates/project/IExtensionsDbContext.cs.template +22 -0
  41. package/templates/project/Program.cs.template +47 -0
  42. package/templates/project/README.md +79 -0
  43. package/templates/ralph/README.md +10 -8
  44. package/templates/ralph/ralph.config.yaml +2 -2
  45. package/templates/skills/_shared.md +44 -44
  46. package/templates/skills/ai-prompt/SKILL.md +55 -55
  47. package/templates/skills/apex/SKILL.md +235 -0
  48. package/templates/skills/apex/steps/step-00-init.md +203 -0
  49. package/templates/skills/apex/steps/step-01-analyze.md +210 -0
  50. package/templates/skills/apex/steps/step-02-plan.md +217 -0
  51. package/templates/skills/apex/steps/step-03-execute.md +178 -0
  52. package/templates/skills/apex/steps/step-04-validate.md +217 -0
  53. package/templates/skills/apex/steps/step-05-examine.md +207 -0
  54. package/templates/skills/apex/steps/step-06-resolve.md +181 -0
  55. package/templates/skills/apex/steps/step-07-tests.md +206 -0
  56. package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
  57. package/templates/skills/apex/templates/00-context.md +46 -0
  58. package/templates/skills/apex/templates/01-analyze.md +63 -0
  59. package/templates/skills/apex/templates/02-plan.md +63 -0
  60. package/templates/skills/apex/templates/03-execute.md +34 -0
  61. package/templates/skills/apex/templates/04-validate.md +61 -0
  62. package/templates/skills/apex/templates/05-examine.md +58 -0
  63. package/templates/skills/apex/templates/06-resolve.md +39 -0
  64. package/templates/skills/apex/templates/07-tests.md +56 -0
  65. package/templates/skills/apex/templates/08-run-tests.md +41 -0
  66. package/templates/skills/apex/templates/README.md +69 -0
  67. package/templates/skills/application/SKILL.md +50 -50
  68. package/templates/skills/application/templates-backend.md +25 -25
  69. package/templates/skills/application/templates-frontend.md +43 -43
  70. package/templates/skills/application/templates-i18n.md +29 -29
  71. package/templates/skills/application/templates-seed.md +77 -77
  72. package/templates/skills/business-analyse/SKILL.md +223 -0
  73. package/templates/skills/business-analyse/_shared.md +258 -0
  74. package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
  75. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
  76. package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
  77. package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
  78. package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
  79. package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
  80. package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
  81. package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
  82. package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
  83. package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
  84. package/templates/skills/business-analyse/questionnaire.md +177 -177
  85. package/templates/skills/business-analyse/react/components.md +340 -0
  86. package/templates/skills/business-analyse/react/i18n-template.md +245 -0
  87. package/templates/skills/business-analyse/react/schema.md +151 -0
  88. package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
  89. package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
  90. package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
  91. package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
  92. package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
  93. package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
  94. package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
  95. package/templates/skills/business-analyse/templates/00-context.md +105 -0
  96. package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
  97. package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
  98. package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
  99. package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
  100. package/templates/skills/business-analyse/templates-frd.md +217 -217
  101. package/templates/skills/business-analyse/templates-react.md +26 -26
  102. package/templates/skills/controller/SKILL.md +141 -92
  103. package/templates/skills/controller/postman-templates.md +15 -15
  104. package/templates/skills/controller/steps/step-00-init.md +191 -0
  105. package/templates/skills/controller/steps/step-01-analyze.md +146 -0
  106. package/templates/skills/controller/steps/step-02-plan.md +176 -0
  107. package/templates/skills/controller/steps/step-03-generate.md +219 -0
  108. package/templates/skills/controller/steps/step-04-perms.md +219 -0
  109. package/templates/skills/controller/steps/step-05-validate.md +107 -0
  110. package/templates/skills/controller/templates.md +77 -77
  111. package/templates/skills/documentation/SKILL.md +79 -79
  112. package/templates/skills/feature-full/SKILL.md +38 -38
  113. package/templates/skills/gitflow/SKILL.md +277 -0
  114. package/templates/{commands → skills}/gitflow/_shared.md +20 -20
  115. package/templates/skills/gitflow/phases/abort.md +173 -0
  116. package/templates/skills/gitflow/phases/cleanup.md +226 -0
  117. package/templates/skills/gitflow/phases/status.md +178 -0
  118. package/templates/skills/gitflow/steps/step-commit.md +255 -0
  119. package/templates/skills/gitflow/steps/step-finish.md +255 -0
  120. package/templates/skills/gitflow/steps/step-init.md +209 -0
  121. package/templates/skills/gitflow/steps/step-merge.md +225 -0
  122. package/templates/skills/gitflow/steps/step-plan.md +208 -0
  123. package/templates/skills/gitflow/steps/step-pr.md +235 -0
  124. package/templates/skills/gitflow/steps/step-start.md +234 -0
  125. package/templates/skills/gitflow/steps/step-sync.md +200 -0
  126. package/templates/skills/gitflow/templates/config.json +53 -0
  127. package/templates/skills/notification/SKILL.md +51 -51
  128. package/templates/skills/ralph-loop/SKILL.md +228 -0
  129. package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
  130. package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
  131. package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
  132. package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
  133. package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
  134. package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
  135. package/templates/skills/review-code/SKILL.md +219 -0
  136. package/templates/skills/review-code/references/clean-code-principles.md +140 -0
  137. package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
  138. package/templates/skills/review-code/references/feedback-patterns.md +149 -0
  139. package/templates/skills/review-code/references/security-checklist.md +127 -0
  140. package/templates/skills/ui-components/SKILL.md +54 -54
  141. package/templates/skills/workflow/SKILL.md +46 -46
  142. package/templates/commands/ai-prompt.md +0 -315
  143. package/templates/commands/apex/1-analyze.md +0 -100
  144. package/templates/commands/apex/2-plan.md +0 -145
  145. package/templates/commands/apex/3-execute.md +0 -171
  146. package/templates/commands/apex/4-examine.md +0 -116
  147. package/templates/commands/apex/5-tasks.md +0 -209
  148. package/templates/commands/apex.md +0 -76
  149. package/templates/commands/application/create.md +0 -362
  150. package/templates/commands/application/templates-backend.md +0 -463
  151. package/templates/commands/application/templates-frontend.md +0 -517
  152. package/templates/commands/application/templates-i18n.md +0 -478
  153. package/templates/commands/application/templates-seed.md +0 -362
  154. package/templates/commands/application.md +0 -303
  155. package/templates/commands/business-analyse/0-orchestrate.md +0 -156
  156. package/templates/commands/business-analyse/1-init.md +0 -99
  157. package/templates/commands/business-analyse/2-discover.md +0 -143
  158. package/templates/commands/business-analyse/3-analyse.md +0 -106
  159. package/templates/commands/business-analyse/4-specify.md +0 -133
  160. package/templates/commands/business-analyse/5-validate.md +0 -132
  161. package/templates/commands/business-analyse/6-handoff.md +0 -157
  162. package/templates/commands/business-analyse/7-doc-html.md +0 -103
  163. package/templates/commands/business-analyse/_shared.md +0 -176
  164. package/templates/commands/business-analyse/bug.md +0 -118
  165. package/templates/commands/business-analyse/change-request.md +0 -144
  166. package/templates/commands/business-analyse/hotfix.md +0 -116
  167. package/templates/commands/business-analyse.md +0 -121
  168. package/templates/commands/controller/create.md +0 -216
  169. package/templates/commands/controller/postman-templates.md +0 -528
  170. package/templates/commands/controller/templates.md +0 -600
  171. package/templates/commands/controller.md +0 -337
  172. package/templates/commands/create/agent.md +0 -138
  173. package/templates/commands/create/command.md +0 -166
  174. package/templates/commands/create/hook.md +0 -234
  175. package/templates/commands/create/plugin.md +0 -329
  176. package/templates/commands/create/project.md +0 -508
  177. package/templates/commands/create/skill.md +0 -199
  178. package/templates/commands/create.md +0 -220
  179. package/templates/commands/documentation/module.md +0 -202
  180. package/templates/commands/documentation/templates.md +0 -432
  181. package/templates/commands/documentation.md +0 -190
  182. package/templates/commands/epct.md +0 -69
  183. package/templates/commands/explain.md +0 -186
  184. package/templates/commands/feature-full.md +0 -267
  185. package/templates/commands/gitflow/1-init.md +0 -188
  186. package/templates/commands/gitflow/10-start.md +0 -190
  187. package/templates/commands/gitflow/11-finish.md +0 -382
  188. package/templates/commands/gitflow/12-cleanup.md +0 -103
  189. package/templates/commands/gitflow/13-sync.md +0 -216
  190. package/templates/commands/gitflow/14-rebase.md +0 -251
  191. package/templates/commands/gitflow/2-status.md +0 -122
  192. package/templates/commands/gitflow/3-commit.md +0 -209
  193. package/templates/commands/gitflow/4-plan.md +0 -174
  194. package/templates/commands/gitflow/5-exec.md +0 -202
  195. package/templates/commands/gitflow/6-abort.md +0 -121
  196. package/templates/commands/gitflow/7-pull-request.md +0 -176
  197. package/templates/commands/gitflow/8-review.md +0 -113
  198. package/templates/commands/gitflow/9-merge.md +0 -157
  199. package/templates/commands/gitflow.md +0 -128
  200. package/templates/commands/implement.md +0 -663
  201. package/templates/commands/init.md +0 -567
  202. package/templates/commands/mcp-integration.md +0 -330
  203. package/templates/commands/notification.md +0 -129
  204. package/templates/commands/oneshot.md +0 -57
  205. package/templates/commands/quickstart.md +0 -154
  206. package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
  207. package/templates/commands/ralph-loop/help.md +0 -126
  208. package/templates/commands/ralph-loop/ralph-loop.md +0 -120
  209. package/templates/commands/review.md +0 -106
  210. package/templates/commands/workflow.md +0 -193
@@ -0,0 +1,255 @@
1
+ ---
2
+ name: step-commit
3
+ description: Commit with EF Core migration validation
4
+ next_step: null
5
+ ---
6
+
7
+ # Step: COMMIT - Migration-Aware Commits
8
+
9
+ ## YOUR TASK:
10
+
11
+ Validate changes, check EF Core migrations, and create commit with proper message.
12
+
13
+ **ULTRA THINK about migration safety.**
14
+
15
+ ---
16
+
17
+ ## INPUT PARSING:
18
+
19
+ ```
20
+ {commit_message} = optional message from args
21
+ {validate_only} = --validate flag (check without committing)
22
+ {dry_run} = --dry-run flag (simulate)
23
+ ```
24
+
25
+ ---
26
+
27
+ ## EXECUTION SEQUENCE:
28
+
29
+ ### 0. Pre-commit Guards
30
+
31
+ **0.1 Branch Protection:**
32
+ ```bash
33
+ CURRENT=$(git rev-parse --abbrev-ref HEAD)
34
+
35
+ # BLOCK: main
36
+ [[ "$CURRENT" == "main" ]] && {
37
+ echo "⛔ COMMIT BLOCKED - main is protected"
38
+ echo "→ Use: /gitflow start hotfix <name>"
39
+ STOP
40
+ }
41
+
42
+ # WARNING: develop
43
+ [[ "$CURRENT" == "develop" ]] && {
44
+ echo "⚠️ Direct commits to develop are discouraged"
45
+ # Offer RESCUE TO FEATURE
46
+ }
47
+ ```
48
+
49
+ **0.2 Rescue to Feature (if on develop):**
50
+ ```bash
51
+ git fetch origin --quiet
52
+ STAGED=$(git diff --cached --name-only | wc -l)
53
+ MODIFIED=$(git diff --name-only | wc -l)
54
+ UNTRACKED=$(git ls-files --others --exclude-standard | wc -l)
55
+ LOCAL_COMMITS=$(git rev-list --count origin/develop..HEAD 2>/dev/null || echo "0")
56
+
57
+ # If there are changes or commits, offer rescue
58
+ [ "$STAGED" -gt 0 ] || [ "$MODIFIED" -gt 0 ] || [ "$LOCAL_COMMITS" -gt 0 ] && {
59
+ # Ask to rescue to feature branch
60
+ RESCUE_BRANCH="feature/rescue-$(date +%Y%m%d-%H%M%S)"
61
+ # Execute rescue flow...
62
+ }
63
+ ```
64
+
65
+ **0.3 Check Sync Status:**
66
+ ```bash
67
+ BEHIND=$(git rev-list --count HEAD..origin/$CURRENT 2>/dev/null || echo "0")
68
+ [ "$BEHIND" -gt 0 ] && echo "⚠️ Branch is $BEHIND commits behind → /gitflow sync"
69
+ ```
70
+
71
+ ### 1. Analyze Changes
72
+
73
+ ```bash
74
+ STAGED=$(git diff --cached --name-only)
75
+ MODIFIED=$(git diff --name-only)
76
+ UNTRACKED=$(git ls-files --others --exclude-standard)
77
+
78
+ # Nothing to commit?
79
+ [ -z "$STAGED" ] && [ -z "$MODIFIED" ] && [ -z "$UNTRACKED" ] && {
80
+ echo "✓ Nothing to commit"
81
+ exit 0
82
+ }
83
+ ```
84
+
85
+ ### 2. Detect EF Core Migrations
86
+
87
+ ```bash
88
+ # Find migration files in changes
89
+ MIGRATIONS=$(echo "$STAGED $MODIFIED $UNTRACKED" | tr ' ' '\n' | grep -E "Migrations/.*\.cs$")
90
+ HAS_MIGRATIONS=$([ -n "$MIGRATIONS" ] && echo "true" || echo "false")
91
+
92
+ if [ "$HAS_MIGRATIONS" = "true" ]; then
93
+ # Check for the 3 required files
94
+ MIGRATION_NAME=$(echo "$MIGRATIONS" | grep -v "Designer\|Snapshot" | head -1 | sed 's/.*\///' | sed 's/\.cs$//')
95
+
96
+ HAS_MAIN=$(echo "$MIGRATIONS" | grep -c "${MIGRATION_NAME}.cs")
97
+ HAS_DESIGNER=$(echo "$MIGRATIONS" | grep -c "${MIGRATION_NAME}.Designer.cs")
98
+ HAS_SNAPSHOT=$(echo "$MIGRATIONS" | grep -c "ModelSnapshot.cs")
99
+
100
+ [ "$HAS_MAIN" -eq 0 ] || [ "$HAS_DESIGNER" -eq 0 ] || [ "$HAS_SNAPSHOT" -eq 0 ] && {
101
+ echo "❌ INCOMPLETE MIGRATION"
102
+ echo "Required: Migration.cs + Designer.cs + ModelSnapshot.cs"
103
+ echo "Found: Main=$HAS_MAIN, Designer=$HAS_DESIGNER, Snapshot=$HAS_SNAPSHOT"
104
+ STOP
105
+ }
106
+ fi
107
+ ```
108
+
109
+ ### 3. Check Destructive Operations (BLOCKING)
110
+
111
+ ```bash
112
+ if [ "$HAS_MIGRATIONS" = "true" ]; then
113
+ DESTRUCTIVE=$(grep -l "DropTable\|DropColumn\|DeleteData" $MIGRATIONS 2>/dev/null)
114
+
115
+ [ -n "$DESTRUCTIVE" ] && {
116
+ echo "⚠️ DESTRUCTIVE OPERATIONS DETECTED"
117
+ grep -n "DropTable\|DropColumn\|DeleteData" $DESTRUCTIVE
118
+
119
+ # Require explicit confirmation
120
+ AskUserQuestion:
121
+ header: "Confirm"
122
+ question: "Destructive migration detected. Continue?"
123
+ options:
124
+ - label: "Yes, I understand the risks"
125
+ - label: "No, let me review"
126
+
127
+ # Log to audit trail
128
+ echo "$(date) - DESTRUCTIVE: $DESTRUCTIVE - User: $USER" >> .claude/gitflow/logs/audit.log
129
+ }
130
+ fi
131
+ ```
132
+
133
+ ### 4. Stage All Changes
134
+
135
+ ```bash
136
+ # Stage all changes
137
+ git add -A
138
+
139
+ # Show what will be committed
140
+ echo "Files to commit:"
141
+ git diff --cached --stat
142
+ ```
143
+
144
+ ### 5. Generate Commit Message
145
+
146
+ **If no message provided:**
147
+
148
+ ```bash
149
+ # Determine commit type from branch
150
+ BRANCH_TYPE=$(echo $CURRENT | cut -d'/' -f1)
151
+ case "$BRANCH_TYPE" in
152
+ feature) PREFIX="feat" ;;
153
+ hotfix) PREFIX="fix" ;;
154
+ release) PREFIX="chore" ;;
155
+ *) PREFIX="chore" ;;
156
+ esac
157
+
158
+ # Determine scope from branch name
159
+ SCOPE=$(echo $CURRENT | cut -d'/' -f2 | cut -d'-' -f1)
160
+
161
+ # If migrations present
162
+ [ "$HAS_MIGRATIONS" = "true" ] && PREFIX="db(migrations)"
163
+
164
+ # Generate message from diff analysis
165
+ SUMMARY=$(git diff --cached --stat | tail -1 | sed 's/^ *//')
166
+ ```
167
+
168
+ **Message format:**
169
+ ```
170
+ {type}({scope}): {summary - 50 chars max}
171
+
172
+ **CHANGE**
173
+ PROBLEM: {what was wrong}
174
+ SOLUTION: {what was done}
175
+ IMPACT: {benefit}
176
+
177
+ Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
178
+ ```
179
+
180
+ ### 6. Create Commit
181
+
182
+ ```bash
183
+ git commit -m "$(cat <<'EOF'
184
+ {generated_message}
185
+ EOF
186
+ )"
187
+
188
+ COMMIT_HASH=$(git rev-parse --short HEAD)
189
+ ```
190
+
191
+ ### 7. Auto-Push (based on config)
192
+
193
+ ```bash
194
+ PUSH_MODE=$(grep -oP '"afterCommit":\s*"\K[^"]+' .claude/gitflow/config.json 2>/dev/null || echo "ask")
195
+
196
+ case "$PUSH_MODE" in
197
+ always)
198
+ git push origin $CURRENT
199
+ PUSHED="yes"
200
+ ;;
201
+ worktree)
202
+ # Push if in worktree
203
+ [ -n "$(git worktree list | grep $(pwd))" ] && git push origin $CURRENT && PUSHED="yes"
204
+ ;;
205
+ ask)
206
+ # Ask user
207
+ ;;
208
+ never)
209
+ PUSHED="no"
210
+ ;;
211
+ esac
212
+ ```
213
+
214
+ ### 8. Summary
215
+
216
+ ```
217
+ ╔══════════════════════════════════════════════════════════════════╗
218
+ ║ COMMIT CREATED ║
219
+ ╠══════════════════════════════════════════════════════════════════╣
220
+ ║ Branch: {CURRENT} ║
221
+ ║ Commit: {COMMIT_HASH} ║
222
+ ║ Message: {first line of message} ║
223
+ ╠══════════════════════════════════════════════════════════════════╣
224
+ ║ Files: {N} changed ║
225
+ ║ EF Core: {✅ Valid | ⚠️ Destructive confirmed | N/A} ║
226
+ ║ Pushed: {yes | no | pending} ║
227
+ ╠══════════════════════════════════════════════════════════════════╣
228
+ ║ NEXT: /gitflow pr ║
229
+ ╚══════════════════════════════════════════════════════════════════╝
230
+ ```
231
+
232
+ ---
233
+
234
+ ## ERROR HANDLING:
235
+
236
+ | Error | Solution |
237
+ |-------|----------|
238
+ | Incomplete migration | Add missing files |
239
+ | Build fails | `dotnet ef migrations remove` + fix |
240
+ | Pre-commit hook fails | Fix issues, stage again, NEW commit |
241
+ | Destructive operation | Confirm or modify migration |
242
+
243
+ ---
244
+
245
+ ## SUCCESS CRITERIA:
246
+
247
+ - All files staged
248
+ - Migrations validated (if present)
249
+ - Destructive operations confirmed
250
+ - Commit created with proper message
251
+ - Pushed (if configured)
252
+
253
+ ## NEXT STEP:
254
+
255
+ User continues coding or runs `/gitflow pr`.
@@ -0,0 +1,255 @@
1
+ ---
2
+ name: step-finish
3
+ description: Finalize branch - tag, merge back, cleanup
4
+ next_step: null
5
+ ---
6
+
7
+ # Step: FINISH - Finalize Branch
8
+
9
+ ## YOUR TASK:
10
+
11
+ Create tags for releases/hotfixes, merge back to develop, clean up worktree and branch.
12
+
13
+ **ULTRA THINK about version tagging.**
14
+
15
+ ---
16
+
17
+ ## EXECUTION SEQUENCE:
18
+
19
+ ### 1. Determine Branch Context
20
+
21
+ ```bash
22
+ # Get current or specified branch
23
+ BRANCH=${1:-$(git rev-parse --abbrev-ref HEAD)}
24
+ BRANCH_TYPE=$(echo $BRANCH | cut -d'/' -f1)
25
+ BRANCH_NAME=$(echo $BRANCH | cut -d'/' -f2)
26
+
27
+ # Validate branch type
28
+ case "$BRANCH_TYPE" in
29
+ feature|release|hotfix) ;;
30
+ main|develop)
31
+ echo "❌ Cannot finish main or develop branch"
32
+ STOP
33
+ ;;
34
+ *)
35
+ echo "❌ Unknown branch type: $BRANCH_TYPE"
36
+ STOP
37
+ ;;
38
+ esac
39
+ ```
40
+
41
+ ### 2. Verify Merge Status
42
+
43
+ ```bash
44
+ git fetch origin
45
+
46
+ # Check if branch was merged
47
+ case "$BRANCH_TYPE" in
48
+ feature)
49
+ MERGED=$(git branch -r --merged origin/develop | grep "$BRANCH" | wc -l)
50
+ TARGET="develop"
51
+ ;;
52
+ release|hotfix)
53
+ MERGED=$(git branch -r --merged origin/main | grep "$BRANCH" | wc -l)
54
+ TARGET="main"
55
+ ;;
56
+ esac
57
+
58
+ [ "$MERGED" -eq 0 ] && {
59
+ echo "⚠️ Branch $BRANCH not yet merged to $TARGET"
60
+ echo "→ Run /gitflow merge first"
61
+
62
+ if [ "$auto_mode" != true ]; then
63
+ AskUserQuestion:
64
+ header: "Continue"
65
+ question: "Branch not merged. Continue anyway?"
66
+ options:
67
+ - label: "No, merge first"
68
+ - label: "Yes, finish anyway"
69
+ fi
70
+ }
71
+ ```
72
+
73
+ ### 3. Create Tag (Release/Hotfix only)
74
+
75
+ ```bash
76
+ if [ "$BRANCH_TYPE" = "release" ] || [ "$BRANCH_TYPE" = "hotfix" ]; then
77
+ # Get version
78
+ VERSION=$(grep -oP '"current":\s*"\K[^"]+' .claude/gitflow/config.json 2>/dev/null)
79
+
80
+ # For hotfix, increment patch
81
+ if [ "$BRANCH_TYPE" = "hotfix" ]; then
82
+ MAJOR=$(echo $VERSION | cut -d'.' -f1)
83
+ MINOR=$(echo $VERSION | cut -d'.' -f2)
84
+ PATCH=$(echo $VERSION | cut -d'.' -f3)
85
+ VERSION="$MAJOR.$MINOR.$((PATCH + 1))"
86
+ fi
87
+
88
+ TAG_NAME="v$VERSION"
89
+
90
+ # Check if tag exists
91
+ TAG_EXISTS=$(git tag -l "$TAG_NAME")
92
+ [ -n "$TAG_EXISTS" ] && {
93
+ echo "⚠️ Tag $TAG_NAME already exists"
94
+ # Options: overwrite, different version, skip
95
+ }
96
+
97
+ # Create tag on main
98
+ git checkout main
99
+ git pull origin main
100
+ git tag -a "$TAG_NAME" -m "$BRANCH_TYPE: $BRANCH_NAME"
101
+ git push origin "$TAG_NAME"
102
+
103
+ echo "✅ Created tag: $TAG_NAME"
104
+ fi
105
+ ```
106
+
107
+ ### 4. Merge Back to Develop (Release/Hotfix only)
108
+
109
+ ```bash
110
+ if [ "$BRANCH_TYPE" = "release" ] || [ "$BRANCH_TYPE" = "hotfix" ]; then
111
+ echo "Merging $TAG_NAME back to develop..."
112
+
113
+ git checkout develop
114
+ git pull origin develop
115
+
116
+ # Merge with merge commit (preserve history)
117
+ git merge main -m "Merge $TAG_NAME back to develop"
118
+
119
+ # Handle conflicts
120
+ CONFLICTS=$(git diff --name-only --diff-filter=U | wc -l)
121
+ [ "$CONFLICTS" -gt 0 ] && {
122
+ echo "⚠️ Merge conflicts detected"
123
+ git diff --name-only --diff-filter=U
124
+
125
+ # Options: resolve, abort
126
+ }
127
+
128
+ git push origin develop
129
+ echo "✅ Merged back to develop"
130
+ fi
131
+ ```
132
+
133
+ ### 5. Update Version (Release only)
134
+
135
+ ```bash
136
+ if [ "$BRANCH_TYPE" = "release" ]; then
137
+ # Increment minor version for next development
138
+ MAJOR=$(echo $VERSION | cut -d'.' -f1)
139
+ MINOR=$(echo $VERSION | cut -d'.' -f2)
140
+ NEXT_VERSION="$MAJOR.$((MINOR + 1)).0"
141
+
142
+ # Update config
143
+ sed -i "s/\"current\": \"$VERSION\"/\"current\": \"$NEXT_VERSION\"/" .claude/gitflow/config.json
144
+
145
+ # Update source files
146
+ # csproj, package.json, etc.
147
+
148
+ git add -A
149
+ git commit -m "chore: bump version to $NEXT_VERSION for development"
150
+ git push origin develop
151
+
152
+ echo "✅ Version bumped to $NEXT_VERSION"
153
+ fi
154
+ ```
155
+
156
+ ### 6. Clean Up Worktree
157
+
158
+ ```bash
159
+ # Find worktree for this branch
160
+ WORKTREE_PATH=$(git worktree list | grep "$BRANCH" | awk '{print $1}')
161
+
162
+ if [ -n "$WORKTREE_PATH" ] && [ -d "$WORKTREE_PATH" ]; then
163
+ echo "Removing worktree: $WORKTREE_PATH"
164
+
165
+ # Make sure we're not in the worktree
166
+ cd $(git rev-parse --show-toplevel)
167
+
168
+ git worktree remove "$WORKTREE_PATH" --force 2>/dev/null || {
169
+ rm -rf "$WORKTREE_PATH"
170
+ }
171
+
172
+ git worktree prune
173
+ echo "✅ Worktree removed"
174
+ fi
175
+ ```
176
+
177
+ ### 7. Delete Remote Branch
178
+
179
+ ```bash
180
+ # Check if remote branch still exists
181
+ REMOTE_EXISTS=$(git branch -r --list "origin/$BRANCH")
182
+
183
+ if [ -n "$REMOTE_EXISTS" ]; then
184
+ echo "Deleting remote branch: $BRANCH"
185
+ git push origin --delete "$BRANCH" 2>/dev/null || {
186
+ echo "⚠️ Could not delete remote branch (may already be deleted by PR)"
187
+ }
188
+ fi
189
+
190
+ # Delete local branch
191
+ git branch -D "$BRANCH" 2>/dev/null || echo "Local branch already deleted"
192
+ ```
193
+
194
+ ### 8. Archive Plan (if exists)
195
+
196
+ ```bash
197
+ PLAN_FILE=$(ls .claude/gitflow/plans/*${BRANCH_NAME}*.md 2>/dev/null | head -1)
198
+
199
+ if [ -f "$PLAN_FILE" ]; then
200
+ ARCHIVE_NAME="${PLAN_FILE%.md}_DONE_$(date +%Y%m%d-%H%M%S).md"
201
+ mv "$PLAN_FILE" "$ARCHIVE_NAME"
202
+ echo "✅ Plan archived: $ARCHIVE_NAME"
203
+ fi
204
+ ```
205
+
206
+ ### 9. Summary
207
+
208
+ ```
209
+ ╔══════════════════════════════════════════════════════════════════╗
210
+ ║ BRANCH FINALIZED ║
211
+ ╠══════════════════════════════════════════════════════════════════╣
212
+ ║ Branch: {BRANCH} ║
213
+ ║ Type: {BRANCH_TYPE} ║
214
+ ╠══════════════════════════════════════════════════════════════════╣
215
+ ║ Actions: ║
216
+ {if release or hotfix}
217
+ ║ ✅ Tag created: {TAG_NAME} ║
218
+ ║ ✅ Merged back to develop ║
219
+ {endif}
220
+ {if release}
221
+ ║ ✅ Version bumped to {NEXT_VERSION} ║
222
+ {endif}
223
+ ║ ✅ Worktree removed ║
224
+ ║ ✅ Branch deleted (local + remote) ║
225
+ ╠══════════════════════════════════════════════════════════════════╣
226
+ ║ Current branch: {main|develop} ║
227
+ ╠══════════════════════════════════════════════════════════════════╣
228
+ ║ Ready for next: /gitflow start feature <name> ║
229
+ ╚══════════════════════════════════════════════════════════════════╝
230
+ ```
231
+
232
+ ---
233
+
234
+ ## ERROR HANDLING:
235
+
236
+ | Error | Solution |
237
+ |-------|----------|
238
+ | Branch not merged | Merge first or force finish |
239
+ | Tag exists | Overwrite or use different version |
240
+ | Merge back conflicts | Resolve manually |
241
+ | Worktree in use | Exit worktree first |
242
+
243
+ ---
244
+
245
+ ## SUCCESS CRITERIA:
246
+
247
+ - Tag created (for release/hotfix)
248
+ - Merged back to develop (for release/hotfix)
249
+ - Worktree removed
250
+ - Branch deleted
251
+ - Plan archived
252
+
253
+ ## COMPLETION:
254
+
255
+ GitFlow cycle complete. Ready for next feature/release/hotfix.