@atlashub/smartstack-cli 1.13.2 → 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.
- package/.documentation/agents.html +1 -1
- package/.documentation/apex.html +1 -1
- package/.documentation/business-analyse.html +1 -1
- package/.documentation/cli-commands.html +3 -3
- package/.documentation/commands.html +1 -1
- package/.documentation/efcore.html +1 -1
- package/.documentation/gitflow.html +1 -1
- package/.documentation/hooks.html +1 -1
- package/.documentation/index.html +1 -1
- package/.documentation/init.html +3 -3
- package/.documentation/installation.html +1001 -352
- package/.documentation/ralph-loop.html +1 -1
- package/.documentation/test-web.html +1 -1
- package/README.md +88 -20
- package/dist/index.js +276 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/code-reviewer.md +163 -0
- package/templates/agents/efcore/db-deploy.md +25 -7
- package/templates/agents/efcore/db-reset.md +31 -10
- package/templates/agents/efcore/db-status.md +22 -5
- package/templates/agents/efcore/migration.md +69 -19
- package/templates/agents/gitflow/cleanup.md +8 -1
- package/templates/agents/gitflow/commit.md +7 -5
- package/templates/agents/gitflow/finish.md +6 -4
- package/templates/agents/gitflow/pr.md +8 -1
- package/templates/agents/gitflow/start.md +1 -1
- package/templates/commands/check-version.md +267 -0
- package/templates/commands/efcore/_shared.md +30 -1
- package/templates/commands/efcore/db-reset.md +18 -6
- package/templates/commands/gitflow/OPTIMIZATIONS.md +206 -0
- package/templates/commands/refactor.md +164 -0
- package/templates/project/DependencyInjection.Application.cs.template +25 -0
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
- package/templates/project/ExampleEntity.cs.template +116 -0
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
- package/templates/project/ExampleService.cs.template +146 -0
- package/templates/project/ExtensionsDbContext.cs.template +41 -0
- package/templates/project/IExtensionsDbContext.cs.template +22 -0
- package/templates/project/Program.cs.template +47 -0
- package/templates/project/README.md +79 -0
- package/templates/ralph/README.md +10 -8
- package/templates/ralph/ralph.config.yaml +2 -2
- package/templates/skills/_shared.md +44 -44
- package/templates/skills/ai-prompt/SKILL.md +55 -55
- package/templates/skills/apex/SKILL.md +235 -0
- package/templates/skills/apex/steps/step-00-init.md +203 -0
- package/templates/skills/apex/steps/step-01-analyze.md +210 -0
- package/templates/skills/apex/steps/step-02-plan.md +217 -0
- package/templates/skills/apex/steps/step-03-execute.md +178 -0
- package/templates/skills/apex/steps/step-04-validate.md +217 -0
- package/templates/skills/apex/steps/step-05-examine.md +207 -0
- package/templates/skills/apex/steps/step-06-resolve.md +181 -0
- package/templates/skills/apex/steps/step-07-tests.md +206 -0
- package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
- package/templates/skills/apex/templates/00-context.md +46 -0
- package/templates/skills/apex/templates/01-analyze.md +63 -0
- package/templates/skills/apex/templates/02-plan.md +63 -0
- package/templates/skills/apex/templates/03-execute.md +34 -0
- package/templates/skills/apex/templates/04-validate.md +61 -0
- package/templates/skills/apex/templates/05-examine.md +58 -0
- package/templates/skills/apex/templates/06-resolve.md +39 -0
- package/templates/skills/apex/templates/07-tests.md +56 -0
- package/templates/skills/apex/templates/08-run-tests.md +41 -0
- package/templates/skills/apex/templates/README.md +69 -0
- package/templates/skills/application/SKILL.md +50 -50
- package/templates/skills/application/templates-backend.md +25 -25
- package/templates/skills/application/templates-frontend.md +43 -43
- package/templates/skills/application/templates-i18n.md +29 -29
- package/templates/skills/application/templates-seed.md +77 -77
- package/templates/skills/business-analyse/SKILL.md +223 -0
- package/templates/skills/business-analyse/_shared.md +258 -0
- package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
- package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
- package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
- package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
- package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
- package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
- package/templates/skills/business-analyse/questionnaire.md +177 -177
- package/templates/skills/business-analyse/react/components.md +340 -0
- package/templates/skills/business-analyse/react/i18n-template.md +245 -0
- package/templates/skills/business-analyse/react/schema.md +151 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
- package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
- package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
- package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
- package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
- package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
- package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
- package/templates/skills/business-analyse/templates/00-context.md +105 -0
- package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
- package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
- package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
- package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
- package/templates/skills/business-analyse/templates-frd.md +217 -217
- package/templates/skills/business-analyse/templates-react.md +26 -26
- package/templates/skills/controller/SKILL.md +141 -92
- package/templates/skills/controller/postman-templates.md +15 -15
- package/templates/skills/controller/steps/step-00-init.md +191 -0
- package/templates/skills/controller/steps/step-01-analyze.md +146 -0
- package/templates/skills/controller/steps/step-02-plan.md +176 -0
- package/templates/skills/controller/steps/step-03-generate.md +219 -0
- package/templates/skills/controller/steps/step-04-perms.md +219 -0
- package/templates/skills/controller/steps/step-05-validate.md +107 -0
- package/templates/skills/controller/templates.md +77 -77
- package/templates/skills/documentation/SKILL.md +79 -79
- package/templates/skills/feature-full/SKILL.md +38 -38
- package/templates/skills/gitflow/SKILL.md +277 -0
- package/templates/{commands → skills}/gitflow/_shared.md +20 -20
- package/templates/skills/gitflow/phases/abort.md +173 -0
- package/templates/skills/gitflow/phases/cleanup.md +226 -0
- package/templates/skills/gitflow/phases/status.md +178 -0
- package/templates/skills/gitflow/steps/step-commit.md +255 -0
- package/templates/skills/gitflow/steps/step-finish.md +255 -0
- package/templates/skills/gitflow/steps/step-init.md +209 -0
- package/templates/skills/gitflow/steps/step-merge.md +225 -0
- package/templates/skills/gitflow/steps/step-plan.md +208 -0
- package/templates/skills/gitflow/steps/step-pr.md +235 -0
- package/templates/skills/gitflow/steps/step-start.md +234 -0
- package/templates/skills/gitflow/steps/step-sync.md +200 -0
- package/templates/skills/gitflow/templates/config.json +53 -0
- package/templates/skills/notification/SKILL.md +51 -51
- package/templates/skills/ralph-loop/SKILL.md +228 -0
- package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
- package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
- package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
- package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
- package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
- package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
- package/templates/skills/review-code/SKILL.md +219 -0
- package/templates/skills/review-code/references/clean-code-principles.md +140 -0
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
- package/templates/skills/review-code/references/feedback-patterns.md +149 -0
- package/templates/skills/review-code/references/security-checklist.md +127 -0
- package/templates/skills/ui-components/SKILL.md +54 -54
- package/templates/skills/workflow/SKILL.md +46 -46
- package/templates/commands/ai-prompt.md +0 -315
- package/templates/commands/apex/1-analyze.md +0 -100
- package/templates/commands/apex/2-plan.md +0 -145
- package/templates/commands/apex/3-execute.md +0 -171
- package/templates/commands/apex/4-examine.md +0 -116
- package/templates/commands/apex/5-tasks.md +0 -209
- package/templates/commands/apex.md +0 -76
- package/templates/commands/application/create.md +0 -362
- package/templates/commands/application/templates-backend.md +0 -463
- package/templates/commands/application/templates-frontend.md +0 -517
- package/templates/commands/application/templates-i18n.md +0 -478
- package/templates/commands/application/templates-seed.md +0 -362
- package/templates/commands/application.md +0 -303
- package/templates/commands/business-analyse/0-orchestrate.md +0 -156
- package/templates/commands/business-analyse/1-init.md +0 -99
- package/templates/commands/business-analyse/2-discover.md +0 -143
- package/templates/commands/business-analyse/3-analyse.md +0 -106
- package/templates/commands/business-analyse/4-specify.md +0 -133
- package/templates/commands/business-analyse/5-validate.md +0 -132
- package/templates/commands/business-analyse/6-handoff.md +0 -157
- package/templates/commands/business-analyse/7-doc-html.md +0 -103
- package/templates/commands/business-analyse/_shared.md +0 -176
- package/templates/commands/business-analyse/bug.md +0 -118
- package/templates/commands/business-analyse/change-request.md +0 -144
- package/templates/commands/business-analyse/hotfix.md +0 -116
- package/templates/commands/business-analyse.md +0 -121
- package/templates/commands/controller/create.md +0 -216
- package/templates/commands/controller/postman-templates.md +0 -528
- package/templates/commands/controller/templates.md +0 -600
- package/templates/commands/controller.md +0 -337
- package/templates/commands/create/agent.md +0 -138
- package/templates/commands/create/command.md +0 -166
- package/templates/commands/create/hook.md +0 -234
- package/templates/commands/create/plugin.md +0 -329
- package/templates/commands/create/project.md +0 -508
- package/templates/commands/create/skill.md +0 -199
- package/templates/commands/create.md +0 -220
- package/templates/commands/documentation/module.md +0 -202
- package/templates/commands/documentation/templates.md +0 -432
- package/templates/commands/documentation.md +0 -190
- package/templates/commands/epct.md +0 -69
- package/templates/commands/explain.md +0 -186
- package/templates/commands/feature-full.md +0 -267
- package/templates/commands/gitflow/1-init.md +0 -188
- package/templates/commands/gitflow/10-start.md +0 -190
- package/templates/commands/gitflow/11-finish.md +0 -382
- package/templates/commands/gitflow/12-cleanup.md +0 -103
- package/templates/commands/gitflow/13-sync.md +0 -216
- package/templates/commands/gitflow/14-rebase.md +0 -251
- package/templates/commands/gitflow/2-status.md +0 -122
- package/templates/commands/gitflow/3-commit.md +0 -209
- package/templates/commands/gitflow/4-plan.md +0 -174
- package/templates/commands/gitflow/5-exec.md +0 -202
- package/templates/commands/gitflow/6-abort.md +0 -121
- package/templates/commands/gitflow/7-pull-request.md +0 -176
- package/templates/commands/gitflow/8-review.md +0 -113
- package/templates/commands/gitflow/9-merge.md +0 -157
- package/templates/commands/gitflow.md +0 -128
- package/templates/commands/implement.md +0 -663
- package/templates/commands/init.md +0 -567
- package/templates/commands/mcp-integration.md +0 -330
- package/templates/commands/notification.md +0 -129
- package/templates/commands/oneshot.md +0 -57
- package/templates/commands/quickstart.md +0 -154
- package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
- package/templates/commands/ralph-loop/help.md +0 -126
- package/templates/commands/ralph-loop/ralph-loop.md +0 -120
- package/templates/commands/review.md +0 -106
- 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.
|