@atlashub/smartstack-cli 1.1.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 +912 -0
- package/.documentation/apex.html +1014 -0
- package/.documentation/business-analyse.html +1074 -0
- package/.documentation/commands.html +676 -0
- package/.documentation/css/styles.css +2030 -0
- package/.documentation/efcore.html +2501 -0
- package/.documentation/gitflow.html +2053 -0
- package/.documentation/hooks.html +409 -0
- package/.documentation/index.html +319 -0
- package/.documentation/installation.html +458 -0
- package/.documentation/js/app.js +794 -0
- package/.documentation/test-web.html +509 -0
- package/README.md +90 -0
- package/config/default-config.json +86 -0
- package/config/settings.json +53 -0
- package/config/settings.local.example.json +16 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +38198 -0
- package/dist/index.js.map +1 -0
- package/package.json +86 -0
- package/templates/agents/action.md +36 -0
- package/templates/agents/efcore/conflicts.md +57 -0
- package/templates/agents/efcore/db-deploy.md +51 -0
- package/templates/agents/efcore/db-reset.md +59 -0
- package/templates/agents/efcore/db-seed.md +56 -0
- package/templates/agents/efcore/db-status.md +43 -0
- package/templates/agents/efcore/migration.md +85 -0
- package/templates/agents/efcore/rebase-snapshot.md +62 -0
- package/templates/agents/efcore/scan.md +60 -0
- package/templates/agents/efcore/squash.md +67 -0
- package/templates/agents/explore-codebase.md +65 -0
- package/templates/agents/explore-docs.md +97 -0
- package/templates/agents/fix-grammar.md +49 -0
- package/templates/agents/gitflow/abort.md +45 -0
- package/templates/agents/gitflow/cleanup.md +85 -0
- package/templates/agents/gitflow/commit.md +40 -0
- package/templates/agents/gitflow/exec.md +48 -0
- package/templates/agents/gitflow/finish.md +92 -0
- package/templates/agents/gitflow/init.md +139 -0
- package/templates/agents/gitflow/merge.md +62 -0
- package/templates/agents/gitflow/plan.md +42 -0
- package/templates/agents/gitflow/pr.md +78 -0
- package/templates/agents/gitflow/review.md +49 -0
- package/templates/agents/gitflow/start.md +61 -0
- package/templates/agents/gitflow/status.md +32 -0
- package/templates/agents/snipper.md +36 -0
- package/templates/agents/websearch.md +46 -0
- package/templates/commands/_resources/formatting-guide.md +124 -0
- package/templates/commands/ai-prompt.md +315 -0
- package/templates/commands/apex/1-analyze.md +100 -0
- package/templates/commands/apex/2-plan.md +145 -0
- package/templates/commands/apex/3-execute.md +171 -0
- package/templates/commands/apex/4-examine.md +116 -0
- package/templates/commands/apex/5-tasks.md +209 -0
- package/templates/commands/apex.md +76 -0
- package/templates/commands/application/create.md +362 -0
- package/templates/commands/application/templates-backend.md +463 -0
- package/templates/commands/application/templates-frontend.md +517 -0
- package/templates/commands/application/templates-i18n.md +478 -0
- package/templates/commands/application/templates-seed.md +362 -0
- package/templates/commands/application.md +303 -0
- package/templates/commands/business-analyse/1-init.md +269 -0
- package/templates/commands/business-analyse/2-discover.md +520 -0
- package/templates/commands/business-analyse/3-analyse.md +408 -0
- package/templates/commands/business-analyse/4-specify.md +598 -0
- package/templates/commands/business-analyse/5-validate.md +326 -0
- package/templates/commands/business-analyse/6-handoff.md +746 -0
- package/templates/commands/business-analyse/7-doc-html.md +602 -0
- package/templates/commands/business-analyse/bug.md +325 -0
- package/templates/commands/business-analyse/change-request.md +368 -0
- package/templates/commands/business-analyse/hotfix.md +200 -0
- package/templates/commands/business-analyse.md +559 -0
- package/templates/commands/controller/create.md +216 -0
- package/templates/commands/controller/postman-templates.md +528 -0
- package/templates/commands/controller/templates.md +600 -0
- package/templates/commands/controller.md +278 -0
- package/templates/commands/debug.md +95 -0
- package/templates/commands/documentation/module.md +202 -0
- package/templates/commands/documentation/templates.md +432 -0
- package/templates/commands/documentation.md +190 -0
- package/templates/commands/efcore/_env-check.md +153 -0
- package/templates/commands/efcore/conflicts.md +269 -0
- package/templates/commands/efcore/db-deploy.md +193 -0
- package/templates/commands/efcore/db-reset.md +426 -0
- package/templates/commands/efcore/db-seed.md +326 -0
- package/templates/commands/efcore/db-status.md +214 -0
- package/templates/commands/efcore/migration.md +388 -0
- package/templates/commands/efcore/rebase-snapshot.md +264 -0
- package/templates/commands/efcore/scan.md +202 -0
- package/templates/commands/efcore/squash.md +298 -0
- package/templates/commands/efcore.md +176 -0
- package/templates/commands/epct.md +69 -0
- package/templates/commands/explain.md +186 -0
- package/templates/commands/explore.md +45 -0
- package/templates/commands/feature-full.md +267 -0
- package/templates/commands/gitflow/1-init.md +1038 -0
- package/templates/commands/gitflow/10-start.md +768 -0
- package/templates/commands/gitflow/11-finish.md +323 -0
- package/templates/commands/gitflow/12-cleanup.md +276 -0
- package/templates/commands/gitflow/13-sync.md +216 -0
- package/templates/commands/gitflow/14-rebase.md +251 -0
- package/templates/commands/gitflow/2-status.md +167 -0
- package/templates/commands/gitflow/3-commit.md +194 -0
- package/templates/commands/gitflow/4-plan.md +145 -0
- package/templates/commands/gitflow/5-exec.md +147 -0
- package/templates/commands/gitflow/6-abort.md +344 -0
- package/templates/commands/gitflow/7-pull-request.md +226 -0
- package/templates/commands/gitflow/8-review.md +176 -0
- package/templates/commands/gitflow/9-merge.md +224 -0
- package/templates/commands/gitflow.md +128 -0
- package/templates/commands/implement.md +663 -0
- package/templates/commands/notification.md +129 -0
- package/templates/commands/oneshot.md +57 -0
- package/templates/commands/quick-search.md +72 -0
- package/templates/commands/review.md +106 -0
- package/templates/commands/utils/test-web-config.md +160 -0
- package/templates/commands/utils/test-web.md +151 -0
- package/templates/commands/workflow.md +193 -0
- package/templates/gitflow/config.json +138 -0
- package/templates/hooks/ef-migration-check.md +139 -0
- package/templates/hooks/hooks.json +15 -0
- package/templates/skills/ai-prompt/SKILL.md +778 -0
- package/templates/skills/application/SKILL.md +563 -0
- package/templates/skills/application/templates-backend.md +450 -0
- package/templates/skills/application/templates-frontend.md +531 -0
- package/templates/skills/application/templates-i18n.md +520 -0
- package/templates/skills/application/templates-seed.md +647 -0
- package/templates/skills/business-analyse/SKILL.md +191 -0
- package/templates/skills/business-analyse/questionnaire.md +283 -0
- package/templates/skills/business-analyse/templates-frd.md +477 -0
- package/templates/skills/business-analyse/templates-react.md +580 -0
- package/templates/skills/controller/SKILL.md +240 -0
- package/templates/skills/controller/postman-templates.md +614 -0
- package/templates/skills/controller/templates.md +1468 -0
- package/templates/skills/documentation/SKILL.md +133 -0
- package/templates/skills/documentation/templates.md +476 -0
- package/templates/skills/feature-full/SKILL.md +838 -0
- package/templates/skills/notification/SKILL.md +555 -0
- package/templates/skills/ui-components/SKILL.md +870 -0
- package/templates/skills/workflow/SKILL.md +582 -0
- package/templates/test-web/api-health.json +38 -0
- package/templates/test-web/minimal.json +19 -0
- package/templates/test-web/npm-package.json +46 -0
- package/templates/test-web/seo-check.json +54 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 3 - Smart commit with EF Core migration validation
|
|
3
|
+
agent: gitflow-commit
|
|
4
|
+
model: sonnet
|
|
5
|
+
args: [message]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 3: COMMIT - Migration-aware commits
|
|
9
|
+
|
|
10
|
+
You are an expert in GitFlow and EF Core. Manage commits with validation of .NET migrations.
|
|
11
|
+
|
|
12
|
+
> **CLAUDE INSTRUCTION:** The `AskUserQuestion({...})` blocks below are instructions for using the `AskUserQuestion` tool **interactively**. You MUST execute the tool with these parameters to get the user's response BEFORE continuing. DO NOT display this code - WAIT for the response.
|
|
13
|
+
|
|
14
|
+
**Argument:** `$ARGUMENTS` = commit message (optional, generated if absent)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Analyze files
|
|
21
|
+
|
|
22
|
+
- Staged files
|
|
23
|
+
- Modified files not staged
|
|
24
|
+
- Untracked files
|
|
25
|
+
- Detect migration files in each category
|
|
26
|
+
|
|
27
|
+
### 2. Validate migrations
|
|
28
|
+
|
|
29
|
+
A valid EF Core migration = **3 files** :
|
|
30
|
+
- `{Timestamp}_{Name}.cs` - Main migration
|
|
31
|
+
- `{Timestamp}_{Name}.Designer.cs` - Metadata
|
|
32
|
+
- `{Context}ModelSnapshot.cs` - Model state
|
|
33
|
+
|
|
34
|
+
**Checks:**
|
|
35
|
+
- All 3 files are present
|
|
36
|
+
- Build compiles (`dotnet build`)
|
|
37
|
+
- No ModelSnapshot conflicts with develop
|
|
38
|
+
|
|
39
|
+
### 3. ⚠️ SAFETY CHECK - Destructive operations
|
|
40
|
+
|
|
41
|
+
**BLOCKING** - Scan migrations for dangerous operations :
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Patterns to detect in migration .cs files
|
|
45
|
+
grep -n "DropTable\|DropColumn\|DropIndex\|DropForeignKey\|DeleteData" {migration}.cs
|
|
46
|
+
grep -n "migrationBuilder.Sql" {migration}.cs | grep -i "DELETE\|DROP\|TRUNCATE"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**If detected :**
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
╔══════════════════════════════════════════════════════════╗
|
|
53
|
+
║ ⛔ DESTRUCTIVE OPERATIONS DETECTED ║
|
|
54
|
+
╠══════════════════════════════════════════════════════════╣
|
|
55
|
+
║ File: {migration}.cs ║
|
|
56
|
+
║ Line {X}: DropTable("Users") ║
|
|
57
|
+
║ Line {Y}: DropColumn("Email", "Customers") ║
|
|
58
|
+
╠══════════════════════════════════════════════════════════╣
|
|
59
|
+
║ RISKS: ║
|
|
60
|
+
║ - Irreversible data loss ║
|
|
61
|
+
║ - Verify that you have a BACKUP ║
|
|
62
|
+
╚══════════════════════════════════════════════════════════╝
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Actions:**
|
|
66
|
+
1. Display detailed alert (file, line, operation)
|
|
67
|
+
2. Request explicit confirmation: "Do you confirm? (yes/no)"
|
|
68
|
+
3. If "no" → Cancel commit
|
|
69
|
+
4. If "yes" → Log in [.claude/gitflow/logs/](.claude/gitflow/logs/)`dangerous-migrations.json`
|
|
70
|
+
5. Continue commit
|
|
71
|
+
|
|
72
|
+
**Dangerous patterns:**
|
|
73
|
+
|
|
74
|
+
| Pattern | Risk | Level |
|
|
75
|
+
|---------|------|-------|
|
|
76
|
+
| `DropTable` | Delete entire table | CRITICAL |
|
|
77
|
+
| `DropColumn` | Data loss in column | CRITICAL |
|
|
78
|
+
| `DeleteData` | Delete rows | CRITICAL |
|
|
79
|
+
| `DropForeignKey` | Break integrity | HIGH |
|
|
80
|
+
| `DropIndex` | Performance impact | MEDIUM |
|
|
81
|
+
| `Sql("DELETE...")` | Raw destructive SQL | CRITICAL |
|
|
82
|
+
| `Sql("DROP...")` | Raw destructive SQL | CRITICAL |
|
|
83
|
+
| `Sql("TRUNCATE...")` | Empty table | CRITICAL |
|
|
84
|
+
|
|
85
|
+
### 4. Classify commit
|
|
86
|
+
|
|
87
|
+
| Files | Type | Prefix |
|
|
88
|
+
|-------|------|--------|
|
|
89
|
+
| Migrations only | migration | `db(migrations):` |
|
|
90
|
+
| Migrations + code | mixed | `feat:` or `fix:` |
|
|
91
|
+
| Code without migration | code | Based on branch type |
|
|
92
|
+
| Config/docs | chore | `chore:` |
|
|
93
|
+
|
|
94
|
+
### 5. Generate message (if absent)
|
|
95
|
+
|
|
96
|
+
**Migration:**
|
|
97
|
+
```
|
|
98
|
+
db(migrations): {action} {description}
|
|
99
|
+
|
|
100
|
+
Migration: {MigrationName}
|
|
101
|
+
Tables: {CREATE|ALTER|DROP} {tables}
|
|
102
|
+
Context: {DbContext}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Mixed:**
|
|
106
|
+
```
|
|
107
|
+
feat({scope}): {description}
|
|
108
|
+
|
|
109
|
+
- {changes}
|
|
110
|
+
Migrations: {list}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 6. Execute commit
|
|
114
|
+
|
|
115
|
+
- Add missing migration files if necessary
|
|
116
|
+
- Verify one last time
|
|
117
|
+
- Commit with message
|
|
118
|
+
|
|
119
|
+
### 7. Post-commit
|
|
120
|
+
|
|
121
|
+
- Verify no migration files are left uncommitted
|
|
122
|
+
- Display summary
|
|
123
|
+
|
|
124
|
+
### 8. Automatic push (based on config)
|
|
125
|
+
|
|
126
|
+
Read config: `.claude/gitflow/config.json` → `workflow.push.afterCommit`
|
|
127
|
+
|
|
128
|
+
**Worktree detection:**
|
|
129
|
+
```bash
|
|
130
|
+
# If git-common-dir != .git → it's a worktree
|
|
131
|
+
COMMON_DIR=$(git rev-parse --git-common-dir 2>/dev/null)
|
|
132
|
+
if [[ "$COMMON_DIR" != ".git" && "$COMMON_DIR" != "." ]]; then
|
|
133
|
+
IS_WORKTREE=true
|
|
134
|
+
fi
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Push logic:**
|
|
138
|
+
|
|
139
|
+
| Config `afterCommit` | Worktree | Action |
|
|
140
|
+
|---------------------|----------|--------|
|
|
141
|
+
| `worktree` | Yes | Automatic push |
|
|
142
|
+
| `worktree` | No | Ask user |
|
|
143
|
+
| `always` | - | Automatic push |
|
|
144
|
+
| `ask` | - | Ask user |
|
|
145
|
+
| `never` | - | Do not push |
|
|
146
|
+
|
|
147
|
+
**If user is asked:**
|
|
148
|
+
```
|
|
149
|
+
AskUserQuestion({
|
|
150
|
+
questions: [{
|
|
151
|
+
question: "Do you want to push this commit?",
|
|
152
|
+
header: "Push",
|
|
153
|
+
options: [
|
|
154
|
+
{ label: "Yes, push now", description: "git push origin <branch>" },
|
|
155
|
+
{ label: "No, later", description: "Local commit only" }
|
|
156
|
+
],
|
|
157
|
+
multiSelect: false
|
|
158
|
+
}]
|
|
159
|
+
})
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Execute push:**
|
|
163
|
+
```bash
|
|
164
|
+
git push origin $(git branch --show-current)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Push error handling:**
|
|
168
|
+
- If remote not configured → Skip with message
|
|
169
|
+
- If rebase necessary → Warn and suggest:
|
|
170
|
+
```
|
|
171
|
+
/gitflow:4-plan rebase
|
|
172
|
+
```
|
|
173
|
+
- If branch protected → Warn (PR required)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Common errors
|
|
178
|
+
|
|
179
|
+
| Error | Solution |
|
|
180
|
+
|-------|----------|
|
|
181
|
+
| ModelSnapshot missing | Add the file |
|
|
182
|
+
| Designer missing | Add the file |
|
|
183
|
+
| Build fails | `dotnet ef migrations remove` + fix |
|
|
184
|
+
| Conflict detected | Rebase first |
|
|
185
|
+
| **Destructive operation** | Confirm or modify migration |
|
|
186
|
+
|
|
187
|
+
## Modes
|
|
188
|
+
|
|
189
|
+
| Command | Action |
|
|
190
|
+
|---------|--------|
|
|
191
|
+
| `/gitflow:3-commit {msg}` | Commit with message |
|
|
192
|
+
| `/gitflow:3-commit` | Auto generate message |
|
|
193
|
+
| `/gitflow:3-commit --validate` | Validate without commit |
|
|
194
|
+
| `/gitflow:3-commit --dry-run` | Simulation |
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 4 - Generate integration plan with versioning and EF Core analysis
|
|
3
|
+
agent: gitflow-plan
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Phase 4: PLAN - Integration Planning
|
|
8
|
+
|
|
9
|
+
Tu es expert GitFlow et EF Core. Cree un plan d'integration pour la branche courante.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Pre-validation (OBLIGATOIRE)
|
|
14
|
+
|
|
15
|
+
**Verifier la branche courante AVANT toute action:**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
19
|
+
|
|
20
|
+
# Branches autorisees: feature/*, release/*, hotfix/*
|
|
21
|
+
if [[ ! $BRANCH =~ ^(feature|release|hotfix)/ ]]; then
|
|
22
|
+
echo "ERREUR: Cette commande ne peut etre executee que depuis une branche GitFlow"
|
|
23
|
+
echo ""
|
|
24
|
+
echo "Branche actuelle: $BRANCH"
|
|
25
|
+
echo "Branches autorisees: feature/*, release/*, hotfix/*"
|
|
26
|
+
echo ""
|
|
27
|
+
echo "Pour creer une branche:"
|
|
28
|
+
echo " /gitflow:10-start feature \"description\""
|
|
29
|
+
echo " /gitflow:10-start release \"v1.x.0\""
|
|
30
|
+
echo " /gitflow:10-start hotfix \"correctif\""
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Si branche invalide:** Afficher l'erreur et STOPPER. Ne pas continuer le workflow.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
### 1. Analyser contexte
|
|
42
|
+
|
|
43
|
+
**Git:**
|
|
44
|
+
- Branche courante et type (feature/release/hotfix)
|
|
45
|
+
- Commits depuis divergence avec develop/main
|
|
46
|
+
- Fichiers modifies
|
|
47
|
+
|
|
48
|
+
**Version:**
|
|
49
|
+
- Lire depuis source configuree (csproj, VERSION, etc.)
|
|
50
|
+
- Calculer nouvelle version selon type branche
|
|
51
|
+
|
|
52
|
+
**EF Core:**
|
|
53
|
+
- Migrations sur cette branche
|
|
54
|
+
- Migrations sur develop (absentes ici)
|
|
55
|
+
- Conflit ModelSnapshot? (modifie des deux cotes)
|
|
56
|
+
|
|
57
|
+
### 2. Determiner strategie
|
|
58
|
+
|
|
59
|
+
**Feature → Develop:**
|
|
60
|
+
| Condition | Strategie |
|
|
61
|
+
|-----------|-----------|
|
|
62
|
+
| Pas de migrations | Rebase + Merge --no-ff |
|
|
63
|
+
| Migrations sans conflit | Rebase + Merge --no-ff |
|
|
64
|
+
| Conflit ModelSnapshot | Rebase + Remove migration + Re-add |
|
|
65
|
+
|
|
66
|
+
**Release → Main + Develop:**
|
|
67
|
+
| Condition | Strategie |
|
|
68
|
+
|-----------|-----------|
|
|
69
|
+
| Release stable | Tag v{VERSION} + Double merge |
|
|
70
|
+
| Migrations pending | Script SQL idempotent |
|
|
71
|
+
| Version | Auto-increment minor |
|
|
72
|
+
|
|
73
|
+
**Hotfix → Main + Develop:**
|
|
74
|
+
| Condition | Strategie |
|
|
75
|
+
|-----------|-----------|
|
|
76
|
+
| Migration urgente | Prefix `Hotfix_` + Script SQL |
|
|
77
|
+
| Version | Auto-increment patch |
|
|
78
|
+
|
|
79
|
+
### 3. Generate plan file
|
|
80
|
+
|
|
81
|
+
Create plan in [.claude/gitflow/plans/](.claude/gitflow/plans/) named `{type}-{nom}_{date}.md`:
|
|
82
|
+
|
|
83
|
+
````markdown
|
|
84
|
+
# Plan: {BRANCH_NAME}
|
|
85
|
+
|
|
86
|
+
## Meta
|
|
87
|
+
- **Source**: {branch} → **Cible**: {target}
|
|
88
|
+
- **Version**: {current} → {new}
|
|
89
|
+
|
|
90
|
+
## Analyse
|
|
91
|
+
| Git | EF Core |
|
|
92
|
+
|-----|---------|
|
|
93
|
+
| {n} commits | {n} migrations |
|
|
94
|
+
| {n} fichiers | Conflit: {oui|non} |
|
|
95
|
+
|
|
96
|
+
## Pre-requis
|
|
97
|
+
- [ ] Working dir propre
|
|
98
|
+
- [ ] Build OK
|
|
99
|
+
- [ ] Tests OK
|
|
100
|
+
|
|
101
|
+
## Etapes
|
|
102
|
+
1. Preparation (fetch, backup)
|
|
103
|
+
2. Migrations (si conflit: remove + rebase + re-add)
|
|
104
|
+
3. Integration (rebase/merge selon strategie)
|
|
105
|
+
4. Version (tag + update fichier source)
|
|
106
|
+
5. Validation (build, tests, migrations list)
|
|
107
|
+
|
|
108
|
+
## Rollback
|
|
109
|
+
Reset au commit initial + restore migrations backup
|
|
110
|
+
|
|
111
|
+
## Executer
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
/gitflow:5-exec {fichier_plan}
|
|
115
|
+
```
|
|
116
|
+
````
|
|
117
|
+
|
|
118
|
+
### 4. Afficher resume
|
|
119
|
+
|
|
120
|
+
````
|
|
121
|
+
Plan genere: .claude/gitflow/plans/{name}.md
|
|
122
|
+
|
|
123
|
+
Branche: {source} → {target}
|
|
124
|
+
Version: {current} → {new}
|
|
125
|
+
Strategie: {rebase|merge|remove+readd}
|
|
126
|
+
|
|
127
|
+
Executez:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
/gitflow:5-exec
|
|
131
|
+
```
|
|
132
|
+
````
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Cas speciaux
|
|
137
|
+
|
|
138
|
+
**Migrations sur les deux branches:**
|
|
139
|
+
- Merger develop d'abord
|
|
140
|
+
- Resoudre conflits ModelSnapshot
|
|
141
|
+
- `dotnet ef migrations add MergeSnapshot --force`
|
|
142
|
+
|
|
143
|
+
**Hotfix avec migration:**
|
|
144
|
+
- Prefix migration `Hotfix_`
|
|
145
|
+
- Script SQL FROM derniere migration main
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 5 - Execute plan with versioning auto-increment
|
|
3
|
+
agent: gitflow-exec
|
|
4
|
+
model: sonnet
|
|
5
|
+
args: [plan_file]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 5: EXEC - Plan Execution
|
|
9
|
+
|
|
10
|
+
Tu es expert GitFlow et EF Core. Execute le plan d'integration de maniere securisee.
|
|
11
|
+
|
|
12
|
+
**Argument:** `$ARGUMENTS` = chemin plan (optionnel, prend le plus recent)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Pre-validation (OBLIGATOIRE)
|
|
17
|
+
|
|
18
|
+
**Verifier la branche courante AVANT toute action:**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
22
|
+
|
|
23
|
+
# Branches autorisees: feature/*, release/*, hotfix/*
|
|
24
|
+
if [[ ! $BRANCH =~ ^(feature|release|hotfix)/ ]]; then
|
|
25
|
+
echo "ERREUR: Cette commande ne peut etre executee que depuis une branche GitFlow"
|
|
26
|
+
echo ""
|
|
27
|
+
echo "Branche actuelle: $BRANCH"
|
|
28
|
+
echo "Branches autorisees: feature/*, release/*, hotfix/*"
|
|
29
|
+
echo ""
|
|
30
|
+
echo "Vous devez etre sur la branche source du plan pour l'executer."
|
|
31
|
+
echo "Utilisez: git checkout {branche-source}"
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Si branche invalide:** Afficher l'erreur et STOPPER. Ne pas continuer le workflow.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Load plan
|
|
43
|
+
|
|
44
|
+
- Find plan file (argument or most recent in [.claude/gitflow/plans/](.claude/gitflow/plans/))
|
|
45
|
+
- Extract: source branch, target, initial commit, version
|
|
46
|
+
|
|
47
|
+
### 2. Verifier pre-requis
|
|
48
|
+
|
|
49
|
+
- Working directory propre
|
|
50
|
+
- Sur la bonne branche
|
|
51
|
+
- Build OK
|
|
52
|
+
- Plan valide
|
|
53
|
+
|
|
54
|
+
### 3. Create checkpoint (on source branch)
|
|
55
|
+
|
|
56
|
+
Save checkpoint in [.claude/gitflow/logs/](.claude/gitflow/logs/)`checkpoint_{timestamp}.json`:
|
|
57
|
+
- Branch, commit, plan, status
|
|
58
|
+
- Backup migrations if present
|
|
59
|
+
- **IMPORTANT: Commit checkpoint on source branch BEFORE merge**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
git add .claude/gitflow/logs/checkpoint_{timestamp}.json
|
|
63
|
+
git commit -m "chore(gitflow): create integration checkpoint"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 4. Executer etapes
|
|
67
|
+
|
|
68
|
+
**Rebase (si necessaire):**
|
|
69
|
+
- Fetch origin
|
|
70
|
+
- Rebase sur target
|
|
71
|
+
- Si conflit ModelSnapshot: accept theirs + regenerer migration
|
|
72
|
+
|
|
73
|
+
**Merge:**
|
|
74
|
+
- Checkout target (utiliser worktree si necessaire: `git -C {worktree_path}`)
|
|
75
|
+
- Pull
|
|
76
|
+
- Merge --no-ff source
|
|
77
|
+
|
|
78
|
+
**Release/Hotfix - Version:**
|
|
79
|
+
1. Lire version depuis source configuree (csproj, VERSION, etc.)
|
|
80
|
+
2. Creer tag avec version actuelle
|
|
81
|
+
3. Calculer nouvelle version (minor pour release, patch pour hotfix)
|
|
82
|
+
4. Mettre a jour le fichier source
|
|
83
|
+
5. Sync config.json
|
|
84
|
+
|
|
85
|
+
**Release - Double merge:**
|
|
86
|
+
- Merge sur main
|
|
87
|
+
- Tag
|
|
88
|
+
- Merge main sur develop
|
|
89
|
+
|
|
90
|
+
### 5. Archiver plan (sur target branch)
|
|
91
|
+
|
|
92
|
+
**IMPORTANT: Toujours archiver et commiter sur la branche cible AVANT le push**
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Sur target branch (develop)
|
|
96
|
+
mv .claude/gitflow/plans/{plan}.md .claude/gitflow/plans/{plan}_DONE_{timestamp}.md
|
|
97
|
+
# Mettre a jour checkpoint avec status "completed"
|
|
98
|
+
git add .claude/gitflow/logs/ .claude/gitflow/plans/
|
|
99
|
+
git commit -m "chore(gitflow): archive integration plan and checkpoint"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 6. Push
|
|
103
|
+
|
|
104
|
+
- Push target branch
|
|
105
|
+
- Push tag(s)
|
|
106
|
+
- Verifier CI/CD declenche
|
|
107
|
+
|
|
108
|
+
### 7. Validation
|
|
109
|
+
|
|
110
|
+
- Build OK
|
|
111
|
+
- Tests OK (si disponibles)
|
|
112
|
+
- Migrations list correcte
|
|
113
|
+
- Historique git correct
|
|
114
|
+
|
|
115
|
+
### 8. Finaliser
|
|
116
|
+
|
|
117
|
+
- Afficher resume et prochaines etapes
|
|
118
|
+
- Suggerer nettoyage branche source si applicable
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Gestion conflits ModelSnapshot
|
|
123
|
+
|
|
124
|
+
Si conflit pendant rebase:
|
|
125
|
+
1. Accepter version develop: `git checkout --theirs */Migrations/*ModelSnapshot.cs`
|
|
126
|
+
2. Regenerer migration: `dotnet ef migrations add {NomMigration}`
|
|
127
|
+
3. Continuer rebase: `git rebase --continue`
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Modes
|
|
132
|
+
|
|
133
|
+
| Commande | Action |
|
|
134
|
+
|----------|--------|
|
|
135
|
+
| `/gitflow:5-exec` | Plan le plus recent |
|
|
136
|
+
| `/gitflow:5-exec {plan}` | Plan specifie |
|
|
137
|
+
| `/gitflow:5-exec --yes` | Sans confirmations |
|
|
138
|
+
| `/gitflow:5-exec --dry-run` | Simulation |
|
|
139
|
+
| `/gitflow:5-exec --resume` | Reprendre execution interrompue |
|
|
140
|
+
|
|
141
|
+
## Rollback rapide
|
|
142
|
+
|
|
143
|
+
Si echec:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
/gitflow:6-abort --checkpoint
|
|
147
|
+
```
|