@atlashub/smartstack-cli 3.37.0 → 3.39.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/dist/index.js +16 -24
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +235 -265
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/scripts/extract-api-endpoints.ts +5 -5
- package/scripts/generate-doc-with-mock-ui.ts +10 -17
- package/templates/agents/ba-reader.md +9 -9
- package/templates/agents/ba-writer.md +12 -15
- package/templates/agents/code-reviewer.md +1 -1
- package/templates/agents/docs-context-reader.md +1 -1
- package/templates/agents/efcore/scan.md +3 -1
- package/templates/agents/gitflow/commit.md +74 -0
- package/templates/agents/gitflow/finish.md +5 -2
- package/templates/agents/gitflow/init-clone.md +3 -3
- package/templates/agents/gitflow/init-validate.md +3 -2
- package/templates/agents/gitflow/merge.md +5 -4
- package/templates/agents/gitflow/pr.md +5 -4
- package/templates/agents/gitflow/start.md +37 -5
- package/templates/hooks/hooks.json +11 -0
- package/templates/hooks/wsl-dotnet-cleanup.sh +24 -0
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +20 -20
- package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +16 -24
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +2 -2
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +3 -3
- package/templates/skills/_shared.md +15 -17
- package/templates/skills/ai-prompt/SKILL.md +1 -1
- package/templates/skills/ai-prompt/steps/step-00-init.md +47 -0
- package/templates/skills/apex/SKILL.md +3 -4
- package/templates/skills/apex/_shared.md +10 -20
- package/templates/skills/apex/references/analysis-methods.md +141 -0
- package/templates/skills/apex/references/challenge-questions.md +1 -21
- package/templates/skills/apex/references/core-seed-data.md +35 -58
- package/templates/skills/apex/references/examine-build-validation.md +82 -0
- package/templates/skills/apex/references/execution-frontend-gates.md +177 -0
- package/templates/skills/apex/references/execution-frontend-patterns.md +105 -0
- package/templates/skills/apex/references/execution-layer1-rules.md +96 -0
- package/templates/skills/apex/references/initialization-challenge-flow.md +110 -0
- package/templates/skills/apex/references/planning-layer-mapping.md +151 -0
- package/templates/skills/apex/references/post-checks.md +145 -40
- package/templates/skills/apex/references/smartstack-api.md +35 -51
- package/templates/skills/apex/references/smartstack-frontend.md +18 -18
- package/templates/skills/apex/references/smartstack-layers.md +38 -62
- package/templates/skills/apex/steps/step-00-init.md +14 -26
- package/templates/skills/apex/steps/step-01-analyze.md +10 -143
- package/templates/skills/apex/steps/step-02-plan.md +10 -92
- package/templates/skills/apex/steps/step-03-execute.md +45 -252
- package/templates/skills/apex/steps/step-04-examine.md +14 -78
- package/templates/skills/apex/steps/step-05-deep-review.md +2 -2
- package/templates/skills/apex/steps/step-08-run-tests.md +1 -0
- package/templates/skills/application/SKILL.md +241 -242
- package/templates/skills/application/references/backend-controller-hierarchy.md +16 -16
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -0
- package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -0
- package/templates/skills/application/references/backend-verification.md +1 -1
- package/templates/skills/application/references/frontend-i18n-and-output.md +67 -0
- package/templates/skills/application/references/frontend-route-naming.md +117 -0
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -0
- package/templates/skills/application/references/frontend-verification.md +12 -12
- package/templates/skills/application/references/init-parameter-detection.md +121 -0
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -0
- package/templates/skills/application/references/nav-fallback-procedure.md +199 -200
- package/templates/skills/application/references/provider-template.md +2 -6
- package/templates/skills/application/references/roles-client-project-handling.md +55 -0
- package/templates/skills/application/references/roles-fallback-procedure.md +149 -0
- package/templates/skills/application/references/test-coverage-requirements.md +213 -0
- package/templates/skills/application/references/test-frontend.md +3 -3
- package/templates/skills/application/steps/step-00-init.md +130 -260
- package/templates/skills/application/steps/step-01-navigation.md +170 -170
- package/templates/skills/application/steps/step-02-permissions.md +196 -196
- package/templates/skills/application/steps/step-03-roles.md +182 -339
- package/templates/skills/application/steps/step-03b-provider.md +133 -134
- package/templates/skills/application/steps/step-04-backend.md +174 -265
- package/templates/skills/application/steps/step-05-frontend.md +18 -144
- package/templates/skills/application/steps/step-06-migration.md +12 -60
- package/templates/skills/application/steps/step-07-tests.md +9 -76
- package/templates/skills/application/templates-backend.md +29 -27
- package/templates/skills/application/templates-frontend.md +49 -49
- package/templates/skills/application/templates-seed.md +57 -131
- package/templates/skills/business-analyse/SKILL.md +27 -30
- package/templates/skills/business-analyse/_architecture.md +6 -6
- package/templates/skills/business-analyse/_shared.md +60 -88
- package/templates/skills/business-analyse/questionnaire/04-data.md +3 -3
- package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
- package/templates/skills/business-analyse/questionnaire/13-cross-module.md +1 -1
- package/templates/skills/business-analyse/react/application-viewer.md +12 -12
- package/templates/skills/business-analyse/react/components.md +8 -12
- package/templates/skills/business-analyse/react/schema.md +836 -836
- package/templates/skills/business-analyse/references/agent-module-prompt.md +2 -3
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -0
- package/templates/skills/business-analyse/references/cache-warming-strategy.md +2 -2
- package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -0
- package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -0
- package/templates/skills/business-analyse/references/cadrage-shared-modules.md +69 -0
- package/templates/skills/business-analyse/references/cadrage-structure-cards.md +1 -1
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -0
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
- package/templates/skills/business-analyse/references/deploy-modes.md +5 -5
- package/templates/skills/business-analyse/references/detection-strategies.md +7 -7
- package/templates/skills/business-analyse/references/handoff-file-templates.md +14 -22
- package/templates/skills/business-analyse/references/handoff-mappings.md +4 -4
- package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -0
- package/templates/skills/business-analyse/references/init-schema-deployment.md +3 -3
- package/templates/skills/business-analyse/references/naming-conventions.md +22 -24
- package/templates/skills/business-analyse/references/prd-generation.md +2 -2
- package/templates/skills/business-analyse/references/review-data-mapping.md +2 -2
- package/templates/skills/business-analyse/references/robustness-checks.md +1 -1
- package/templates/skills/business-analyse/references/spec-auto-inference.md +3 -3
- package/templates/skills/business-analyse/references/team-orchestration.md +49 -6
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
- package/templates/skills/business-analyse/references/ui-resource-cards.md +18 -18
- package/templates/skills/business-analyse/references/validate-incremental-html.md +2 -2
- package/templates/skills/business-analyse/references/validation-checklist.md +2 -2
- package/templates/skills/business-analyse/schemas/application-schema.json +4 -5
- package/templates/skills/business-analyse/schemas/project-schema.json +1 -6
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +2 -3
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +4 -4
- package/templates/skills/business-analyse/steps/step-00-init.md +8 -17
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +35 -198
- package/templates/skills/business-analyse/steps/step-01b-applications.md +16 -20
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +1 -1
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +4 -4
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +1 -1
- package/templates/skills/business-analyse/steps/step-03b-ui.md +4 -4
- package/templates/skills/business-analyse/steps/step-03c-compile.md +66 -140
- package/templates/skills/business-analyse/steps/step-03d-validate.md +2 -2
- package/templates/skills/business-analyse/steps/step-04a-collect.md +2 -2
- package/templates/skills/business-analyse/steps/step-04b-analyze.md +42 -160
- package/templates/skills/business-analyse/steps/step-04c-decide.md +1 -1
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +74 -104
- package/templates/skills/business-analyse/steps/step-05b-deploy.md +13 -11
- package/templates/skills/business-analyse/steps/step-06-review.md +3 -3
- package/templates/skills/business-analyse/templates/tpl-frd.md +13 -13
- package/templates/skills/business-analyse/templates/tpl-handoff.md +12 -12
- package/templates/skills/business-analyse/templates/tpl-progress.md +1 -1
- package/templates/skills/business-analyse/templates-frd.md +25 -25
- package/templates/skills/business-analyse/templates-react.md +15 -21
- package/templates/skills/controller/SKILL.md +1 -1
- package/templates/skills/controller/postman-templates.md +1 -1
- package/templates/skills/controller/references/controller-code-templates.md +2 -2
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -0
- package/templates/skills/controller/references/permission-sync-templates.md +13 -16
- package/templates/skills/controller/steps/step-00-init.md +11 -11
- package/templates/skills/controller/steps/step-03-generate.md +64 -103
- package/templates/skills/controller/templates.md +67 -71
- package/templates/skills/debug/SKILL.md +13 -218
- package/templates/skills/debug/steps/step-00-init.md +57 -0
- package/templates/skills/debug/steps/step-01-analyze.md +219 -0
- package/templates/skills/debug/steps/step-02-resolve.md +85 -0
- package/templates/skills/documentation/SKILL.md +49 -345
- package/templates/skills/documentation/data-schema.md +11 -8
- package/templates/skills/documentation/steps/step-00-init.md +70 -0
- package/templates/skills/documentation/steps/step-01-scan.md +113 -0
- package/templates/skills/documentation/steps/step-02-generate.md +231 -0
- package/templates/skills/documentation/steps/step-03-validate.md +238 -0
- package/templates/skills/documentation/templates.md +480 -322
- package/templates/skills/efcore/SKILL.md +1 -1
- package/templates/skills/efcore/references/both-contexts.md +32 -0
- package/templates/skills/efcore/references/database-operations.md +67 -0
- package/templates/skills/efcore/references/destructive-operations.md +38 -0
- package/templates/skills/efcore/references/reset-operations.md +81 -0
- package/templates/skills/efcore/references/seed-methods.md +86 -0
- package/templates/skills/efcore/references/shared-init-functions.md +250 -0
- package/templates/skills/efcore/references/sql-objects-injection.md +61 -0
- package/templates/skills/efcore/references/troubleshooting.md +81 -0
- package/templates/skills/efcore/steps/db/step-deploy.md +1 -32
- package/templates/skills/efcore/steps/db/step-reset.md +7 -103
- package/templates/skills/efcore/steps/db/step-seed.md +10 -132
- package/templates/skills/efcore/steps/db/step-status.md +5 -44
- package/templates/skills/efcore/steps/migration/step-02-create.md +1 -14
- package/templates/skills/efcore/steps/migration/step-03-validate.md +8 -62
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +1 -57
- package/templates/skills/efcore/steps/shared/step-00-init.md +11 -254
- package/templates/skills/efcore/steps/squash/step-03-create.md +1 -58
- package/templates/skills/feature-full/SKILL.md +1 -1
- package/templates/skills/feature-full/steps/step-00-init.md +57 -0
- package/templates/skills/feature-full/steps/step-01-implementation.md +1 -1
- package/templates/skills/gitflow/SKILL.md +28 -5
- package/templates/skills/gitflow/_shared.md +109 -12
- package/templates/skills/gitflow/phases/abort.md +4 -0
- package/templates/skills/gitflow/phases/cleanup.md +4 -0
- package/templates/skills/gitflow/references/commit-message-generation.md +58 -0
- package/templates/skills/gitflow/references/commit-migration-validation.md +49 -0
- package/templates/skills/gitflow/references/finish-cleanup.md +55 -0
- package/templates/skills/gitflow/references/finish-version-bumping.md +45 -0
- package/templates/skills/gitflow/references/init-environment-detection.md +41 -0
- package/templates/skills/gitflow/references/init-questions.md +185 -0
- package/templates/skills/gitflow/references/init-structure-creation.md +75 -0
- package/templates/skills/gitflow/references/init-version-detection.md +21 -0
- package/templates/skills/gitflow/references/init-workspace-detection.md +43 -0
- package/templates/skills/gitflow/references/merge-ci-status.md +36 -0
- package/templates/skills/gitflow/references/merge-execution.md +62 -0
- package/templates/skills/gitflow/references/merge-pr-context.md +76 -0
- package/templates/skills/gitflow/references/pr-build-checks.md +60 -0
- package/templates/skills/gitflow/references/pr-generation.md +58 -0
- package/templates/skills/gitflow/references/start-branch-normalization.md +28 -0
- package/templates/skills/gitflow/references/start-worktree-creation.md +50 -0
- package/templates/skills/gitflow/references/sync-push-verify.md +44 -0
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -0
- package/templates/skills/gitflow/steps/step-commit.md +12 -91
- package/templates/skills/gitflow/steps/step-finish.md +15 -159
- package/templates/skills/gitflow/steps/step-init.md +24 -326
- package/templates/skills/gitflow/steps/step-merge.md +17 -176
- package/templates/skills/gitflow/steps/step-pr.md +10 -116
- package/templates/skills/gitflow/steps/step-start.md +16 -109
- package/templates/skills/gitflow/steps/step-sync.md +6 -69
- package/templates/skills/ralph-loop/SKILL.md +6 -0
- package/templates/skills/ralph-loop/references/category-completeness.md +185 -0
- package/templates/skills/ralph-loop/references/compact-loop.md +1 -1
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -0
- package/templates/skills/ralph-loop/references/module-transition.md +151 -0
- package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -0
- package/templates/skills/ralph-loop/references/parallel-execution.md +246 -0
- package/templates/skills/ralph-loop/references/task-transform-legacy.md +6 -9
- package/templates/skills/ralph-loop/references/team-orchestration.md +45 -3
- package/templates/skills/ralph-loop/steps/step-00-init.md +36 -109
- package/templates/skills/ralph-loop/steps/step-01-task.md +15 -163
- package/templates/skills/ralph-loop/steps/step-02-execute.md +8 -154
- package/templates/skills/ralph-loop/steps/step-04-check.md +20 -73
- package/templates/skills/review-code/references/owasp-api-top10.md +5 -5
- package/templates/skills/review-code/references/smartstack-conventions.md +568 -568
- package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -0
- package/templates/skills/validate-feature/references/db-validation-checks.md +180 -0
- package/templates/skills/validate-feature/steps/step-01-compile.md +1 -3
- package/templates/skills/validate-feature/steps/step-04-api-smoke.md +34 -145
- package/templates/skills/validate-feature/steps/step-05-db-validation.md +74 -260
- package/templates/skills/workflow/SKILL.md +1 -1
- package/templates/skills/workflow/steps/step-00-init.md +57 -0
|
@@ -35,253 +35,26 @@ Set up GitFlow configuration with bare repository, worktrees, and branches.
|
|
|
35
35
|
|
|
36
36
|
### 1. Detect Environment (for defaults only)
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "mingw"* ]] || [[ "$OSTYPE" == "cygwin" ]]; then
|
|
43
|
-
GF_PLATFORM="windows"; GF_SHELL="gitbash"
|
|
44
|
-
elif [[ -n "$WINDIR" ]] || [[ -n "$SystemRoot" ]]; then
|
|
45
|
-
GF_PLATFORM="windows"; GF_SHELL="powershell"
|
|
46
|
-
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
47
|
-
GF_PLATFORM="macos"; GF_SHELL="zsh"
|
|
48
|
-
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
49
|
-
GF_PLATFORM="linux"; GF_SHELL="bash"
|
|
50
|
-
else
|
|
51
|
-
GF_PLATFORM="unknown"; GF_SHELL="bash"
|
|
52
|
-
fi
|
|
53
|
-
echo "Platform: $GF_PLATFORM ($GF_SHELL)"
|
|
54
|
-
|
|
55
|
-
# Check if we're in a git repository
|
|
56
|
-
IS_GIT_REPO=$(git rev-parse --git-dir 2>/dev/null && echo "true" || echo "false")
|
|
57
|
-
|
|
58
|
-
# Auto-detect values for defaults (will be confirmed by user)
|
|
59
|
-
DETECTED_URL=$(git remote get-url origin 2>/dev/null || echo "")
|
|
60
|
-
DETECTED_FOLDER=$(dirname "$(pwd)")
|
|
61
|
-
DETECTED_NAME=$(basename -s .git "$DETECTED_URL" 2>/dev/null || basename "$(pwd)")
|
|
62
|
-
|
|
63
|
-
# Detect git provider
|
|
64
|
-
if [[ "$DETECTED_URL" == *"github.com"* ]]; then
|
|
65
|
-
GIT_PROVIDER="github"
|
|
66
|
-
elif [[ "$DETECTED_URL" == *"dev.azure.com"* ]]; then
|
|
67
|
-
GIT_PROVIDER="azuredevops"
|
|
68
|
-
else
|
|
69
|
-
GIT_PROVIDER="unknown"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
# Check if already initialized
|
|
73
|
-
ALREADY_INITIALIZED=$([ -f ".claude/gitflow/config.json" ] && echo "true" || echo "false")
|
|
74
|
-
```
|
|
38
|
+
See [references/init-environment-detection.md](../references/init-environment-detection.md) for:
|
|
39
|
+
- Platform detection (WSL/Windows/macOS/Linux)
|
|
40
|
+
- Git provider detection
|
|
41
|
+
- Auto-detect defaults (URL, folder, project name)
|
|
75
42
|
|
|
76
43
|
### 2. Detect Workspace (multi-project context)
|
|
77
44
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
SIBLING_PROJECTS=()
|
|
83
|
-
|
|
84
|
-
for dir in "$WORKSPACE_DIR"/*/; do
|
|
85
|
-
[ -d "$dir/.bare" ] || [ -d "$dir/01-Main" ] || [ -d "$dir/02-Develop" ] && {
|
|
86
|
-
PROJECT_NAME_SIBLING=$(basename "$dir")
|
|
87
|
-
SIBLING_PROJECTS+=("$PROJECT_NAME_SIBLING")
|
|
88
|
-
}
|
|
89
|
-
done
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**Display workspace context:**
|
|
45
|
+
See [references/init-workspace-detection.md](../references/init-workspace-detection.md) for:
|
|
46
|
+
- Sibling project scanning
|
|
47
|
+
- Workspace context display
|
|
48
|
+
- Per-repository GitFlow principle
|
|
93
49
|
|
|
94
|
-
|
|
95
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
96
|
-
│ WORKSPACE: {WORKSPACE_DIR} │
|
|
97
|
-
├─────────────────────────────────────────────────────────────┤
|
|
98
|
-
│ Each project has its OWN independent GitFlow configuration. │
|
|
99
|
-
│ This init configures only: {DETECTED_NAME} │
|
|
100
|
-
├─────────────────────────────────────────────────────────────┤
|
|
101
|
-
{if SIBLING_PROJECTS not empty}
|
|
102
|
-
│ Existing GitFlow projects: │
|
|
103
|
-
│ {for each SIBLING} ✅ {SIBLING_NAME}/ │
|
|
104
|
-
│ ├── .bare/ 01-Main/ 02-Develop/ │
|
|
105
|
-
│ └── features/ releases/ hotfixes/ │
|
|
106
|
-
│ {end for} │
|
|
107
|
-
│ │
|
|
108
|
-
│ New project to initialize: │
|
|
109
|
-
│ ⬜ {DETECTED_NAME}/ │
|
|
110
|
-
│ └── (same structure will be created) │
|
|
111
|
-
{else}
|
|
112
|
-
│ No existing GitFlow projects detected. │
|
|
113
|
-
│ This will be the first project in this workspace. │
|
|
114
|
-
{endif}
|
|
115
|
-
└─────────────────────────────────────────────────────────────┘
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Key principle:** GitFlow is **per-repository**. Each project has its own `config.json`, its own worktree structure, and its own version history. Projects do not share configuration.
|
|
119
|
-
|
|
120
|
-
### 3. Handle Existing Configuration
|
|
121
|
-
|
|
122
|
-
**If `ALREADY_INITIALIZED` = true:**
|
|
123
|
-
|
|
124
|
-
Display current configuration and ask what to do:
|
|
125
|
-
|
|
126
|
-
```yaml
|
|
127
|
-
AskUserQuestion:
|
|
128
|
-
- header: "Existing"
|
|
129
|
-
question: "GitFlow is already initialized. Current config will be shown. What do you want to do?"
|
|
130
|
-
options:
|
|
131
|
-
- label: "Reconfigure (Recommended)"
|
|
132
|
-
description: "Review and update all settings"
|
|
133
|
-
- label: "Repair"
|
|
134
|
-
description: "Fix missing directories only"
|
|
135
|
-
- label: "View only"
|
|
136
|
-
description: "Display current config and exit"
|
|
137
|
-
- label: "Cancel"
|
|
138
|
-
description: "Exit without changes"
|
|
139
|
-
multiSelect: false
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Handle choices:**
|
|
143
|
-
- **Reconfigure**: Continue to step 4 (will ask all questions again)
|
|
144
|
-
- **Repair**: Check directories, fix missing ones, exit
|
|
145
|
-
- **View only**: Display config, exit
|
|
146
|
-
- **Cancel**: Exit immediately
|
|
147
|
-
|
|
148
|
-
### 4. MANDATORY: Ask Repository URL
|
|
149
|
-
|
|
150
|
-
**⛔ ALWAYS ask, even if URL was detected:**
|
|
151
|
-
|
|
152
|
-
```yaml
|
|
153
|
-
AskUserQuestion:
|
|
154
|
-
- header: "Repository"
|
|
155
|
-
question: "Repository URL? (detected: {DETECTED_URL})"
|
|
156
|
-
options:
|
|
157
|
-
- label: "Use detected URL (Recommended)"
|
|
158
|
-
description: "{DETECTED_URL}"
|
|
159
|
-
- label: "Enter GitHub URL"
|
|
160
|
-
description: "https://github.com/org/repo.git"
|
|
161
|
-
- label: "Enter Azure DevOps URL"
|
|
162
|
-
description: "https://dev.azure.com/org/project/_git/repo"
|
|
163
|
-
- label: "Local only (no remote)"
|
|
164
|
-
description: "Initialize without remote (limited features)"
|
|
165
|
-
multiSelect: false
|
|
166
|
-
```
|
|
50
|
+
### 3-7. MANDATORY User Questions
|
|
167
51
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
- header: "URL"
|
|
175
|
-
question: "Enter the repository URL:"
|
|
176
|
-
options:
|
|
177
|
-
- label: "https://github.com/org/repo.git"
|
|
178
|
-
description: "Example GitHub format"
|
|
179
|
-
- label: "https://dev.azure.com/org/project/_git/repo"
|
|
180
|
-
description: "Example Azure DevOps format"
|
|
181
|
-
multiSelect: false
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
The user will type the actual URL via "Other". Then:
|
|
185
|
-
- Validate format
|
|
186
|
-
- Update `{REPO_URL}` and `{GIT_PROVIDER}`
|
|
187
|
-
|
|
188
|
-
### 5. MANDATORY: Ask Root Folder
|
|
189
|
-
|
|
190
|
-
**⛔ ALWAYS ask where to create THIS project's structure:**
|
|
191
|
-
|
|
192
|
-
**If sibling projects exist, show where it fits:**
|
|
193
|
-
|
|
194
|
-
```
|
|
195
|
-
{WORKSPACE_DIR}/
|
|
196
|
-
├── SmartStack.app/ ✅ (gitflow)
|
|
197
|
-
├── SmartStack.mcp/ ✅ (gitflow)
|
|
198
|
-
├── SmartStack.cli/ ✅ (gitflow)
|
|
199
|
-
└── NewProject/ ← THIS PROJECT
|
|
200
|
-
├── .bare/
|
|
201
|
-
├── 01-Main/
|
|
202
|
-
├── 02-Develop/
|
|
203
|
-
├── features/
|
|
204
|
-
├── releases/
|
|
205
|
-
└── hotfixes/
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
```yaml
|
|
209
|
-
AskUserQuestion:
|
|
210
|
-
- header: "Location"
|
|
211
|
-
question: "Root folder for THIS project? (worktrees will be created here)"
|
|
212
|
-
options:
|
|
213
|
-
- label: "Use parent folder (Recommended)"
|
|
214
|
-
description: "{DETECTED_FOLDER}/ - consistent with {#SIBLING_PROJECTS} sibling project(s)"
|
|
215
|
-
- label: "Use current folder"
|
|
216
|
-
description: "$(pwd)/ - Will create subfolders here"
|
|
217
|
-
- label: "Custom path"
|
|
218
|
-
description: "Specify a different location"
|
|
219
|
-
multiSelect: false
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**⛔ FOLLOW-UP: If user selects "Custom path":**
|
|
223
|
-
|
|
224
|
-
You MUST ask a follow-up question to get the actual path:
|
|
225
|
-
|
|
226
|
-
```yaml
|
|
227
|
-
AskUserQuestion:
|
|
228
|
-
- header: "Path"
|
|
229
|
-
question: "Enter the full path for the project root folder:"
|
|
230
|
-
options:
|
|
231
|
-
- label: "{DETECTED_FOLDER}/"
|
|
232
|
-
description: "Parent of current directory"
|
|
233
|
-
- label: "{WORKSPACE_DIR}/"
|
|
234
|
-
description: "Workspace root"
|
|
235
|
-
multiSelect: false
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
The user will type the actual path via "Other". Validate the path exists or can be created.
|
|
239
|
-
|
|
240
|
-
**Explain the structure that will be created for this project:**
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
{ROOT_FOLDER}/
|
|
244
|
-
├── .bare/ # Git bare repository (this repo only)
|
|
245
|
-
├── 01-Main/ # Worktree: main branch
|
|
246
|
-
├── 02-Develop/ # Worktree: develop branch
|
|
247
|
-
├── features/ # Feature branch worktrees
|
|
248
|
-
├── releases/ # Release branch worktrees
|
|
249
|
-
└── hotfixes/ # Hotfix branch worktrees
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### 6. MANDATORY: Ask Project Name
|
|
253
|
-
|
|
254
|
-
**⛔ ALWAYS ask to confirm project name:**
|
|
255
|
-
|
|
256
|
-
```yaml
|
|
257
|
-
AskUserQuestion:
|
|
258
|
-
- header: "Project"
|
|
259
|
-
question: "Project name? (detected: {DETECTED_NAME})"
|
|
260
|
-
options:
|
|
261
|
-
- label: "Use detected name (Recommended)"
|
|
262
|
-
description: "Project: {DETECTED_NAME}"
|
|
263
|
-
- label: "Custom name"
|
|
264
|
-
description: "Specify a different project name"
|
|
265
|
-
multiSelect: false
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
**⛔ FOLLOW-UP: If user selects "Custom name":**
|
|
269
|
-
|
|
270
|
-
You MUST ask a follow-up question to get the actual name:
|
|
271
|
-
|
|
272
|
-
```yaml
|
|
273
|
-
AskUserQuestion:
|
|
274
|
-
- header: "Name"
|
|
275
|
-
question: "Enter the project name:"
|
|
276
|
-
options:
|
|
277
|
-
- label: "{DETECTED_NAME}"
|
|
278
|
-
description: "Detected from repository"
|
|
279
|
-
- label: "{DETECTED_NAME}-v2"
|
|
280
|
-
description: "Variant of detected name"
|
|
281
|
-
multiSelect: false
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
The user will type the actual name via "Other". Use this raw input for step 6b.
|
|
52
|
+
See [references/init-questions.md](../references/init-questions.md) for all 5 mandatory questions in order:
|
|
53
|
+
1. Handle existing configuration (if already initialized)
|
|
54
|
+
2. Repository URL with provider detection
|
|
55
|
+
3. Root folder for project structure
|
|
56
|
+
4. Project name confirmation
|
|
57
|
+
5. Worktree mode (organized/simple/disabled)
|
|
285
58
|
|
|
286
59
|
### 6b. Normalize Project Name (INTELLIGENT)
|
|
287
60
|
|
|
@@ -294,80 +67,15 @@ See [references/init-name-normalization.md](../references/init-name-normalizatio
|
|
|
294
67
|
4. Ask user to choose PRIMARY format
|
|
295
68
|
5. Store all derived names in `PROJECT_VARIANTS`
|
|
296
69
|
|
|
297
|
-
### 7. Ask Worktree Mode
|
|
298
|
-
|
|
299
|
-
```yaml
|
|
300
|
-
AskUserQuestion:
|
|
301
|
-
- header: "Worktrees"
|
|
302
|
-
question: "How should worktrees be organized?"
|
|
303
|
-
options:
|
|
304
|
-
- label: "Organized (Recommended)"
|
|
305
|
-
description: "01-Main, 02-Develop, features/, releases/, hotfixes/"
|
|
306
|
-
- label: "Simple"
|
|
307
|
-
description: "main/, develop/, features/, releases/, hotfixes/"
|
|
308
|
-
- label: "Disabled"
|
|
309
|
-
description: "No worktrees, use git checkout (not recommended)"
|
|
310
|
-
multiSelect: false
|
|
311
|
-
```
|
|
312
70
|
|
|
313
71
|
### 8. Create Directory Structure
|
|
314
72
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
# normalize_path_for_platform() from _shared.md handles this
|
|
322
|
-
# Example: D:/projects/MyApp → /mnt/d/projects/MyApp
|
|
323
|
-
PROJECT_BASE="{ROOT_FOLDER}" # Must be already normalized for current platform
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**⛔ Create the COMPLETE structure with absolute paths:**
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
PROJECT_BASE="{ROOT_FOLDER}"
|
|
330
|
-
|
|
331
|
-
# Create subdirectories (absolute paths)
|
|
332
|
-
mkdir -p "$PROJECT_BASE/features" "$PROJECT_BASE/releases" "$PROJECT_BASE/hotfixes"
|
|
333
|
-
|
|
334
|
-
# Create bare repository if not exists (absolute path, no cd)
|
|
335
|
-
if [ ! -d "$PROJECT_BASE/.bare" ]; then
|
|
336
|
-
git clone --bare "{REPO_URL}" "$PROJECT_BASE/.bare"
|
|
337
|
-
|
|
338
|
-
# Configure bare repo for worktrees (using git -C, no cd)
|
|
339
|
-
git -C "$PROJECT_BASE/.bare" config core.bare false
|
|
340
|
-
git -C "$PROJECT_BASE/.bare" config core.worktree ..
|
|
341
|
-
fi
|
|
342
|
-
|
|
343
|
-
# Create .git pseudo-file pointing to .bare
|
|
344
|
-
echo "gitdir: ./.bare" > "$PROJECT_BASE/.git"
|
|
345
|
-
|
|
346
|
-
# Organized mode: numbered main folders (absolute paths, GIT_DIR instead of cd)
|
|
347
|
-
if [ "$WORKTREE_MODE" = "organized" ]; then
|
|
348
|
-
[ ! -d "$PROJECT_BASE/01-Main" ] && \
|
|
349
|
-
GIT_DIR="$PROJECT_BASE/.bare" git worktree add "$PROJECT_BASE/01-Main" main
|
|
350
|
-
|
|
351
|
-
[ ! -d "$PROJECT_BASE/02-Develop" ] && \
|
|
352
|
-
GIT_DIR="$PROJECT_BASE/.bare" git worktree add "$PROJECT_BASE/02-Develop" develop
|
|
353
|
-
fi
|
|
354
|
-
|
|
355
|
-
# Simple mode: named folders (absolute paths)
|
|
356
|
-
if [ "$WORKTREE_MODE" = "simple" ]; then
|
|
357
|
-
[ ! -d "$PROJECT_BASE/main" ] && \
|
|
358
|
-
GIT_DIR="$PROJECT_BASE/.bare" git worktree add "$PROJECT_BASE/main" main
|
|
359
|
-
|
|
360
|
-
[ ! -d "$PROJECT_BASE/develop" ] && \
|
|
361
|
-
GIT_DIR="$PROJECT_BASE/.bare" git worktree add "$PROJECT_BASE/develop" develop
|
|
362
|
-
fi
|
|
363
|
-
|
|
364
|
-
# Create gitflow config directory (absolute paths)
|
|
365
|
-
DEVELOP_DIR=$([ "$WORKTREE_MODE" = "organized" ] && echo "02-Develop" || echo "develop")
|
|
366
|
-
mkdir -p "$PROJECT_BASE/$DEVELOP_DIR/.claude/gitflow/plans"
|
|
367
|
-
mkdir -p "$PROJECT_BASE/$DEVELOP_DIR/.claude/gitflow/logs"
|
|
368
|
-
mkdir -p "$PROJECT_BASE/$DEVELOP_DIR/.claude/gitflow/cache"
|
|
369
|
-
mkdir -p "$PROJECT_BASE/$DEVELOP_DIR/.claude/gitflow/backup"
|
|
370
|
-
```
|
|
73
|
+
See [references/init-structure-creation.md](../references/init-structure-creation.md) for:
|
|
74
|
+
- Path normalization for WSL
|
|
75
|
+
- Complete directory structure creation with absolute paths
|
|
76
|
+
- Bare repository setup
|
|
77
|
+
- Worktree creation (organized and simple modes)
|
|
78
|
+
- GitFlow config directory creation
|
|
371
79
|
|
|
372
80
|
### 9. Create Configuration
|
|
373
81
|
|
|
@@ -381,19 +89,9 @@ See [references/init-config-template.md](../references/init-config-template.md)
|
|
|
381
89
|
|
|
382
90
|
### 10. Detect Version
|
|
383
91
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
DEVELOP_FULL_PATH="$PROJECT_BASE/$DEVELOP_DIR"
|
|
388
|
-
|
|
389
|
-
# Priority: csproj > Directory.Build.props > package.json > VERSION > tag
|
|
390
|
-
VERSION=$(grep -oP '<Version>\K[^<]+' "$DEVELOP_FULL_PATH"/*.csproj 2>/dev/null | head -1)
|
|
391
|
-
[ -z "$VERSION" ] && VERSION=$(grep -oP '<Version>\K[^<]+' "$DEVELOP_FULL_PATH/Directory.Build.props" 2>/dev/null)
|
|
392
|
-
[ -z "$VERSION" ] && VERSION=$(grep -oP '"version":\s*"\K[^"]+' "$DEVELOP_FULL_PATH/package.json" 2>/dev/null)
|
|
393
|
-
[ -z "$VERSION" ] && VERSION=$(cat "$DEVELOP_FULL_PATH/VERSION" 2>/dev/null)
|
|
394
|
-
[ -z "$VERSION" ] && VERSION=$(git -C "$DEVELOP_FULL_PATH" describe --tags --abbrev=0 2>/dev/null | sed 's/^v//')
|
|
395
|
-
[ -z "$VERSION" ] && VERSION="0.1.0"
|
|
396
|
-
```
|
|
92
|
+
See [references/init-version-detection.md](../references/init-version-detection.md) for:
|
|
93
|
+
- Version detection with priority (csproj, package.json, tags, etc.)
|
|
94
|
+
- Platform-agnostic path handling
|
|
397
95
|
|
|
398
96
|
### 10b. Post-Init Validation
|
|
399
97
|
|
|
@@ -16,189 +16,30 @@ Run through review checklist and merge the pull request with appropriate strateg
|
|
|
16
16
|
|
|
17
17
|
## EXECUTION SEQUENCE:
|
|
18
18
|
|
|
19
|
-
### 1. Load Config and
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# Load GitFlow config (sets GF_* variables)
|
|
23
|
-
read_gitflow_config || { echo "❌ Run /gitflow init first."; exit 1; }
|
|
24
|
-
|
|
25
|
-
CURRENT=$(git rev-parse --abbrev-ref HEAD)
|
|
26
|
-
GIT_PROVIDER="$GF_PROVIDER"
|
|
27
|
-
|
|
28
|
-
# Try loading persisted PR state first
|
|
29
|
-
CONFIG_DIR=$(dirname "$GF_CONFIG_FILE")
|
|
30
|
-
PR_STATE_FILE="$CONFIG_DIR/cache/pr-state.json"
|
|
31
|
-
if [ -f "$PR_STATE_FILE" ]; then
|
|
32
|
-
PR_NUMBER=$(grep -oP '"pr_number":\s*"\K[^"]+' "$PR_STATE_FILE" | head -1)
|
|
33
|
-
TARGET_BRANCH=$(grep -oP '"target_branch":\s*"\K[^"]+' "$PR_STATE_FILE" | head -1)
|
|
34
|
-
echo "✓ Loaded PR state from cache: PR #$PR_NUMBER → $TARGET_BRANCH"
|
|
35
|
-
fi
|
|
36
|
-
|
|
37
|
-
# Fallback: query provider if no cached state
|
|
38
|
-
if [ -z "$PR_NUMBER" ]; then
|
|
39
|
-
if [ "$GIT_PROVIDER" = "github" ]; then
|
|
40
|
-
PR_NUMBER=$(gh pr list --head "$CURRENT" --json number --jq '.[0].number')
|
|
41
|
-
PR_STATUS=$(gh pr view $PR_NUMBER --json state,mergeable,reviews --jq '.')
|
|
42
|
-
elif [ "$GIT_PROVIDER" = "azuredevops" ]; then
|
|
43
|
-
PR_NUMBER=$(az repos pr list --source-branch "$CURRENT" --query "[0].pullRequestId" -o tsv)
|
|
44
|
-
PR_STATUS=$(az repos pr show --id $PR_NUMBER --query "{status:status,mergeStatus:mergeStatus}")
|
|
45
|
-
fi
|
|
46
|
-
fi
|
|
47
|
-
|
|
48
|
-
[ -z "$PR_NUMBER" ] && {
|
|
49
|
-
echo "❌ No PR found for branch $CURRENT"
|
|
50
|
-
echo "→ Run /gitflow pr first"
|
|
51
|
-
STOP
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 2. Display Review Checklist
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
╔══════════════════════════════════════════════════════════════════╗
|
|
59
|
-
║ PR REVIEW CHECKLIST ║
|
|
60
|
-
╠══════════════════════════════════════════════════════════════════╣
|
|
61
|
-
║ PR #${PR_NUMBER}: ${PR_TITLE} ║
|
|
62
|
-
╠══════════════════════════════════════════════════════════════════╣
|
|
19
|
+
### 1-2. Load Config and Display Review Checklist
|
|
63
20
|
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
- [ ] Variable/function names are clear
|
|
69
|
-
|
|
70
|
-
## Security
|
|
71
|
-
- [ ] No hardcoded secrets
|
|
72
|
-
- [ ] Input validation present
|
|
73
|
-
- [ ] Authentication/authorization correct
|
|
74
|
-
- [ ] No SQL injection risks
|
|
75
|
-
|
|
76
|
-
## Testing
|
|
77
|
-
- [ ] Unit tests added/updated
|
|
78
|
-
- [ ] Integration tests pass
|
|
79
|
-
- [ ] Manual testing completed
|
|
80
|
-
|
|
81
|
-
## EF Core (if applicable)
|
|
82
|
-
- [ ] Migration files complete (3 files)
|
|
83
|
-
- [ ] No destructive operations (or confirmed)
|
|
84
|
-
- [ ] Snapshot synced with base
|
|
85
|
-
|
|
86
|
-
## Documentation
|
|
87
|
-
- [ ] Code comments where needed
|
|
88
|
-
- [ ] API docs updated (if applicable)
|
|
89
|
-
- [ ] README updated (if applicable)
|
|
21
|
+
See [references/merge-pr-context.md](../references/merge-pr-context.md) for:
|
|
22
|
+
- Load GitFlow config and PR context
|
|
23
|
+
- Load PR state from cache or query provider
|
|
24
|
+
- Display review checklist
|
|
90
25
|
|
|
91
|
-
|
|
92
|
-
```
|
|
26
|
+
### 3-4. Check CI and Review Status
|
|
93
27
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if
|
|
98
|
-
CI_STATUS=$(gh pr checks $PR_NUMBER --json state --jq '.[].state' | sort -u)
|
|
99
|
-
|
|
100
|
-
[[ "$CI_STATUS" == *"FAILURE"* ]] && {
|
|
101
|
-
echo "❌ CI checks failing"
|
|
102
|
-
gh pr checks $PR_NUMBER
|
|
103
|
-
|
|
104
|
-
if [ "$auto_mode" != true ]; then
|
|
105
|
-
AskUserQuestion:
|
|
106
|
-
header: "CI"
|
|
107
|
-
question: "CI checks are failing. Continue anyway?"
|
|
108
|
-
options:
|
|
109
|
-
- label: "Wait for fix"
|
|
110
|
-
- label: "Merge anyway (not recommended)"
|
|
111
|
-
fi
|
|
112
|
-
}
|
|
113
|
-
fi
|
|
114
|
-
```
|
|
28
|
+
See [references/merge-ci-status.md](../references/merge-ci-status.md) for:
|
|
29
|
+
- CI status checking (GitHub)
|
|
30
|
+
- Review status checking (GitHub)
|
|
31
|
+
- User confirmation if CI failing or reviews insufficient
|
|
115
32
|
|
|
116
|
-
###
|
|
33
|
+
### 5-8. Merge Execution and Verification
|
|
117
34
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
35
|
+
See [references/merge-execution.md](../references/merge-execution.md) for:
|
|
36
|
+
- Merge strategy determination (squash for features, merge for release/hotfix)
|
|
37
|
+
- Execution on GitHub and Azure DevOps
|
|
38
|
+
- Merge verification with tracking ref update
|
|
122
39
|
|
|
123
|
-
|
|
124
|
-
echo "⚠️ Needs $REQUIRED_REVIEWS approvals, has $REVIEWS"
|
|
125
|
-
}
|
|
126
|
-
fi
|
|
127
|
-
```
|
|
40
|
+
### Final Confirmation
|
|
128
41
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
BRANCH_TYPE=$(echo $CURRENT | cut -d'/' -f1)
|
|
133
|
-
|
|
134
|
-
case "$BRANCH_TYPE" in
|
|
135
|
-
feature)
|
|
136
|
-
MERGE_STRATEGY="squash"
|
|
137
|
-
DELETE_BRANCH=true
|
|
138
|
-
;;
|
|
139
|
-
release|hotfix)
|
|
140
|
-
MERGE_STRATEGY="merge"
|
|
141
|
-
DELETE_BRANCH=true
|
|
142
|
-
MERGE_BACK="$GF_DEVELOP_BRANCH"
|
|
143
|
-
;;
|
|
144
|
-
esac
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### 6. Final Confirmation
|
|
148
|
-
|
|
149
|
-
```yaml
|
|
150
|
-
AskUserQuestion:
|
|
151
|
-
header: "Merge"
|
|
152
|
-
question: "Ready to merge PR #$PR_NUMBER?"
|
|
153
|
-
options:
|
|
154
|
-
- label: "Yes, merge now"
|
|
155
|
-
description: "Strategy: $MERGE_STRATEGY, Delete branch: $DELETE_BRANCH"
|
|
156
|
-
- label: "No, wait"
|
|
157
|
-
description: "Cancel merge"
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### 7. Execute Merge
|
|
161
|
-
|
|
162
|
-
**GitHub:**
|
|
163
|
-
```bash
|
|
164
|
-
case "$MERGE_STRATEGY" in
|
|
165
|
-
squash)
|
|
166
|
-
gh pr merge $PR_NUMBER --squash --delete-branch
|
|
167
|
-
;;
|
|
168
|
-
merge)
|
|
169
|
-
gh pr merge $PR_NUMBER --merge --delete-branch
|
|
170
|
-
;;
|
|
171
|
-
esac
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**Azure DevOps:**
|
|
175
|
-
```bash
|
|
176
|
-
case "$MERGE_STRATEGY" in
|
|
177
|
-
squash)
|
|
178
|
-
az repos pr update --id $PR_NUMBER --status completed --squash true --delete-source-branch true
|
|
179
|
-
;;
|
|
180
|
-
merge)
|
|
181
|
-
az repos pr update --id $PR_NUMBER --status completed --squash false --delete-source-branch true
|
|
182
|
-
;;
|
|
183
|
-
esac
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### 8. Verify Merge
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# CRITICAL: Force update tracking refs to get accurate state
|
|
190
|
-
git fetch origin $TARGET_BRANCH:refs/remotes/origin/$TARGET_BRANCH --force --quiet
|
|
191
|
-
git fetch origin --prune --quiet
|
|
192
|
-
|
|
193
|
-
MERGED=$(git branch -r --merged origin/$TARGET_BRANCH | grep "$CURRENT" | wc -l)
|
|
194
|
-
|
|
195
|
-
[ "$MERGED" -eq 0 ] && {
|
|
196
|
-
echo "⚠️ Merge verification failed - branch may not be merged"
|
|
197
|
-
echo " → Check PR status on remote"
|
|
198
|
-
} || {
|
|
199
|
-
echo "✅ Merge verified - branch merged to $TARGET_BRANCH"
|
|
200
|
-
}
|
|
201
|
-
```
|
|
42
|
+
Ask user to confirm merge strategy before execution.
|
|
202
43
|
|
|
203
44
|
### 9. Summary
|
|
204
45
|
|