@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.
Files changed (144) hide show
  1. package/.documentation/agents.html +912 -0
  2. package/.documentation/apex.html +1014 -0
  3. package/.documentation/business-analyse.html +1074 -0
  4. package/.documentation/commands.html +676 -0
  5. package/.documentation/css/styles.css +2030 -0
  6. package/.documentation/efcore.html +2501 -0
  7. package/.documentation/gitflow.html +2053 -0
  8. package/.documentation/hooks.html +409 -0
  9. package/.documentation/index.html +319 -0
  10. package/.documentation/installation.html +458 -0
  11. package/.documentation/js/app.js +794 -0
  12. package/.documentation/test-web.html +509 -0
  13. package/README.md +90 -0
  14. package/config/default-config.json +86 -0
  15. package/config/settings.json +53 -0
  16. package/config/settings.local.example.json +16 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +38198 -0
  19. package/dist/index.js.map +1 -0
  20. package/package.json +86 -0
  21. package/templates/agents/action.md +36 -0
  22. package/templates/agents/efcore/conflicts.md +57 -0
  23. package/templates/agents/efcore/db-deploy.md +51 -0
  24. package/templates/agents/efcore/db-reset.md +59 -0
  25. package/templates/agents/efcore/db-seed.md +56 -0
  26. package/templates/agents/efcore/db-status.md +43 -0
  27. package/templates/agents/efcore/migration.md +85 -0
  28. package/templates/agents/efcore/rebase-snapshot.md +62 -0
  29. package/templates/agents/efcore/scan.md +60 -0
  30. package/templates/agents/efcore/squash.md +67 -0
  31. package/templates/agents/explore-codebase.md +65 -0
  32. package/templates/agents/explore-docs.md +97 -0
  33. package/templates/agents/fix-grammar.md +49 -0
  34. package/templates/agents/gitflow/abort.md +45 -0
  35. package/templates/agents/gitflow/cleanup.md +85 -0
  36. package/templates/agents/gitflow/commit.md +40 -0
  37. package/templates/agents/gitflow/exec.md +48 -0
  38. package/templates/agents/gitflow/finish.md +92 -0
  39. package/templates/agents/gitflow/init.md +139 -0
  40. package/templates/agents/gitflow/merge.md +62 -0
  41. package/templates/agents/gitflow/plan.md +42 -0
  42. package/templates/agents/gitflow/pr.md +78 -0
  43. package/templates/agents/gitflow/review.md +49 -0
  44. package/templates/agents/gitflow/start.md +61 -0
  45. package/templates/agents/gitflow/status.md +32 -0
  46. package/templates/agents/snipper.md +36 -0
  47. package/templates/agents/websearch.md +46 -0
  48. package/templates/commands/_resources/formatting-guide.md +124 -0
  49. package/templates/commands/ai-prompt.md +315 -0
  50. package/templates/commands/apex/1-analyze.md +100 -0
  51. package/templates/commands/apex/2-plan.md +145 -0
  52. package/templates/commands/apex/3-execute.md +171 -0
  53. package/templates/commands/apex/4-examine.md +116 -0
  54. package/templates/commands/apex/5-tasks.md +209 -0
  55. package/templates/commands/apex.md +76 -0
  56. package/templates/commands/application/create.md +362 -0
  57. package/templates/commands/application/templates-backend.md +463 -0
  58. package/templates/commands/application/templates-frontend.md +517 -0
  59. package/templates/commands/application/templates-i18n.md +478 -0
  60. package/templates/commands/application/templates-seed.md +362 -0
  61. package/templates/commands/application.md +303 -0
  62. package/templates/commands/business-analyse/1-init.md +269 -0
  63. package/templates/commands/business-analyse/2-discover.md +520 -0
  64. package/templates/commands/business-analyse/3-analyse.md +408 -0
  65. package/templates/commands/business-analyse/4-specify.md +598 -0
  66. package/templates/commands/business-analyse/5-validate.md +326 -0
  67. package/templates/commands/business-analyse/6-handoff.md +746 -0
  68. package/templates/commands/business-analyse/7-doc-html.md +602 -0
  69. package/templates/commands/business-analyse/bug.md +325 -0
  70. package/templates/commands/business-analyse/change-request.md +368 -0
  71. package/templates/commands/business-analyse/hotfix.md +200 -0
  72. package/templates/commands/business-analyse.md +559 -0
  73. package/templates/commands/controller/create.md +216 -0
  74. package/templates/commands/controller/postman-templates.md +528 -0
  75. package/templates/commands/controller/templates.md +600 -0
  76. package/templates/commands/controller.md +278 -0
  77. package/templates/commands/debug.md +95 -0
  78. package/templates/commands/documentation/module.md +202 -0
  79. package/templates/commands/documentation/templates.md +432 -0
  80. package/templates/commands/documentation.md +190 -0
  81. package/templates/commands/efcore/_env-check.md +153 -0
  82. package/templates/commands/efcore/conflicts.md +269 -0
  83. package/templates/commands/efcore/db-deploy.md +193 -0
  84. package/templates/commands/efcore/db-reset.md +426 -0
  85. package/templates/commands/efcore/db-seed.md +326 -0
  86. package/templates/commands/efcore/db-status.md +214 -0
  87. package/templates/commands/efcore/migration.md +388 -0
  88. package/templates/commands/efcore/rebase-snapshot.md +264 -0
  89. package/templates/commands/efcore/scan.md +202 -0
  90. package/templates/commands/efcore/squash.md +298 -0
  91. package/templates/commands/efcore.md +176 -0
  92. package/templates/commands/epct.md +69 -0
  93. package/templates/commands/explain.md +186 -0
  94. package/templates/commands/explore.md +45 -0
  95. package/templates/commands/feature-full.md +267 -0
  96. package/templates/commands/gitflow/1-init.md +1038 -0
  97. package/templates/commands/gitflow/10-start.md +768 -0
  98. package/templates/commands/gitflow/11-finish.md +323 -0
  99. package/templates/commands/gitflow/12-cleanup.md +276 -0
  100. package/templates/commands/gitflow/13-sync.md +216 -0
  101. package/templates/commands/gitflow/14-rebase.md +251 -0
  102. package/templates/commands/gitflow/2-status.md +167 -0
  103. package/templates/commands/gitflow/3-commit.md +194 -0
  104. package/templates/commands/gitflow/4-plan.md +145 -0
  105. package/templates/commands/gitflow/5-exec.md +147 -0
  106. package/templates/commands/gitflow/6-abort.md +344 -0
  107. package/templates/commands/gitflow/7-pull-request.md +226 -0
  108. package/templates/commands/gitflow/8-review.md +176 -0
  109. package/templates/commands/gitflow/9-merge.md +224 -0
  110. package/templates/commands/gitflow.md +128 -0
  111. package/templates/commands/implement.md +663 -0
  112. package/templates/commands/notification.md +129 -0
  113. package/templates/commands/oneshot.md +57 -0
  114. package/templates/commands/quick-search.md +72 -0
  115. package/templates/commands/review.md +106 -0
  116. package/templates/commands/utils/test-web-config.md +160 -0
  117. package/templates/commands/utils/test-web.md +151 -0
  118. package/templates/commands/workflow.md +193 -0
  119. package/templates/gitflow/config.json +138 -0
  120. package/templates/hooks/ef-migration-check.md +139 -0
  121. package/templates/hooks/hooks.json +15 -0
  122. package/templates/skills/ai-prompt/SKILL.md +778 -0
  123. package/templates/skills/application/SKILL.md +563 -0
  124. package/templates/skills/application/templates-backend.md +450 -0
  125. package/templates/skills/application/templates-frontend.md +531 -0
  126. package/templates/skills/application/templates-i18n.md +520 -0
  127. package/templates/skills/application/templates-seed.md +647 -0
  128. package/templates/skills/business-analyse/SKILL.md +191 -0
  129. package/templates/skills/business-analyse/questionnaire.md +283 -0
  130. package/templates/skills/business-analyse/templates-frd.md +477 -0
  131. package/templates/skills/business-analyse/templates-react.md +580 -0
  132. package/templates/skills/controller/SKILL.md +240 -0
  133. package/templates/skills/controller/postman-templates.md +614 -0
  134. package/templates/skills/controller/templates.md +1468 -0
  135. package/templates/skills/documentation/SKILL.md +133 -0
  136. package/templates/skills/documentation/templates.md +476 -0
  137. package/templates/skills/feature-full/SKILL.md +838 -0
  138. package/templates/skills/notification/SKILL.md +555 -0
  139. package/templates/skills/ui-components/SKILL.md +870 -0
  140. package/templates/skills/workflow/SKILL.md +582 -0
  141. package/templates/test-web/api-health.json +38 -0
  142. package/templates/test-web/minimal.json +19 -0
  143. package/templates/test-web/npm-package.json +46 -0
  144. package/templates/test-web/seo-check.json +54 -0
@@ -0,0 +1,193 @@
1
+ # /workflow - Gestion Workflows SmartStack
2
+
3
+ > **Synergie Skill/Commande:**
4
+ > - **Skill** (`templates/skills/workflow/`) → Invocation automatique par Claude
5
+ > - **Commande** (`/workflow`) → Invocation manuelle par l'utilisateur
6
+
7
+ ---
8
+
9
+ ## ARGUMENTS
10
+
11
+ ```
12
+ /workflow <action> [options]
13
+ ```
14
+
15
+ | Action | Description |
16
+ |--------|-------------|
17
+ | `create` | Creer un nouveau workflow complet |
18
+ | `trigger` | Ajouter un nouveau trigger |
19
+ | `step` | Ajouter un step a un workflow existant |
20
+ | `template` | Creer un email template |
21
+
22
+ ---
23
+
24
+ ## WORKFLOW
25
+
26
+ ### /workflow create
27
+
28
+ Cree un workflow complet avec trigger et steps.
29
+
30
+ **Questions:**
31
+ 1. Code du workflow ? (kebab-case)
32
+ 2. Nom descriptif ?
33
+ 3. Quel trigger ? (existant ou nouveau)
34
+ 4. Quels steps ? (Email, Wait, Condition, Webhook)
35
+ 5. Systeme ? (oui/non)
36
+ 6. Priorite ? (1-100, defaut 10)
37
+
38
+ **Actions:**
39
+ 1. Creer/utiliser le trigger
40
+ 2. Ajouter le workflow dans WorkflowConfiguration.cs seed
41
+ 3. Ajouter les steps dans WorkflowStepConfiguration.cs seed
42
+ 4. Creer les email templates si necessaire
43
+ 5. Creer migration EF Core
44
+
45
+ ### /workflow trigger
46
+
47
+ Ajoute un nouveau trigger.
48
+
49
+ **Questions:**
50
+ 1. Code du trigger ? (format: entity.event)
51
+ 2. Nom descriptif ?
52
+ 3. Variables disponibles ?
53
+
54
+ **Actions:**
55
+ 1. Ajouter dans WorkflowTriggerConfiguration.cs seed
56
+ 2. Creer migration EF Core
57
+
58
+ ### /workflow step
59
+
60
+ Ajoute un step a un workflow existant.
61
+
62
+ **Questions:**
63
+ 1. Quel workflow ?
64
+ 2. Type de step ? (SendEmail, Wait, Condition, Webhook)
65
+ 3. Configuration specifique selon le type
66
+
67
+ **Actions:**
68
+ 1. Ajouter dans WorkflowStepConfiguration.cs seed
69
+ 2. Mettre a jour l'ordre des steps
70
+ 3. Creer migration EF Core
71
+
72
+ ### /workflow template
73
+
74
+ Cree un email template.
75
+
76
+ **Questions:**
77
+ 1. Code du template ?
78
+ 2. Nom ?
79
+ 3. Categorie ? (Transactional, Marketing, System)
80
+ 4. Langues ? (fr, en, it, de)
81
+
82
+ **Actions:**
83
+ 1. Ajouter dans EmailTemplateConfiguration.cs seed
84
+ 2. Ajouter les translations
85
+ 3. Creer migration EF Core
86
+
87
+ ---
88
+
89
+ ## TEMPLATES
90
+
91
+ ### Template Trigger Seed
92
+
93
+ ```csharp
94
+ new
95
+ {
96
+ Id = Guid.Parse("$TRIGGER_GUID"),
97
+ Code = "$ENTITY.$EVENT",
98
+ Name = "$NAME",
99
+ Description = "$DESCRIPTION",
100
+ TriggerType = "$TRIGGER_TYPE",
101
+ AvailableVariablesJson = JsonSerializer.Serialize(new[]
102
+ {
103
+ new { Name = "entityId", Type = "Guid", Description = "Entity ID" },
104
+ new { Name = "entityName", Type = "string", Description = "Entity name" },
105
+ new { Name = "userEmail", Type = "string", Description = "User email" },
106
+ }),
107
+ IsActive = true,
108
+ CreatedAt = seedDate
109
+ },
110
+ ```
111
+
112
+ ### Template Workflow Seed
113
+
114
+ ```csharp
115
+ new
116
+ {
117
+ Id = Guid.Parse("$WORKFLOW_GUID"),
118
+ Code = "$CODE",
119
+ Name = "$NAME",
120
+ Description = "$DESCRIPTION",
121
+ TriggerId = Guid.Parse("$TRIGGER_GUID"),
122
+ ApplicationId = (Guid?)null,
123
+ IsActive = true,
124
+ IsSystem = $IS_SYSTEM,
125
+ Priority = $PRIORITY,
126
+ CreatedAt = seedDate
127
+ },
128
+ ```
129
+
130
+ ### Template Step Seed (Email)
131
+
132
+ ```csharp
133
+ new
134
+ {
135
+ Id = Guid.Parse("$STEP_GUID"),
136
+ WorkflowId = Guid.Parse("$WORKFLOW_GUID"),
137
+ Name = "$NAME",
138
+ StepType = WorkflowStepType.SendEmail,
139
+ StepOrder = $ORDER,
140
+ EmailTemplateId = Guid.Parse("$TEMPLATE_GUID"),
141
+ IsActive = true,
142
+ CreatedAt = seedDate
143
+ },
144
+ ```
145
+
146
+ ### Template Step Seed (Wait)
147
+
148
+ ```csharp
149
+ new
150
+ {
151
+ Id = Guid.Parse("$STEP_GUID"),
152
+ WorkflowId = Guid.Parse("$WORKFLOW_GUID"),
153
+ Name = "$NAME",
154
+ StepType = WorkflowStepType.Wait,
155
+ StepOrder = $ORDER,
156
+ DelayMinutes = $DELAY_MINUTES,
157
+ IsActive = true,
158
+ CreatedAt = seedDate
159
+ },
160
+ ```
161
+
162
+ ### Template Declenchement
163
+
164
+ ```csharp
165
+ await _workflowService.TriggerAsync(
166
+ "$TRIGGER_CODE",
167
+ new Dictionary<string, object>
168
+ {
169
+ ["entityId"] = entity.Id,
170
+ ["entityName"] = entity.Name,
171
+ ["userEmail"] = _currentUser.Email
172
+ },
173
+ language: "fr",
174
+ cancellationToken: ct);
175
+ ```
176
+
177
+ ---
178
+
179
+ ## FICHIERS CLES
180
+
181
+ | Fichier | Role |
182
+ |---------|------|
183
+ | `Domain/Communications/Workflow.cs` | Entite workflow |
184
+ | `Domain/Communications/WorkflowStep.cs` | Entite step |
185
+ | `Domain/Communications/WorkflowTrigger.cs` | Entite trigger |
186
+ | `Infrastructure/.../WorkflowConfiguration.cs` | Seed workflows |
187
+ | `Infrastructure/.../WorkflowTriggerConfiguration.cs` | Seed triggers |
188
+ | `Infrastructure/.../WorkflowStepConfiguration.cs` | Seed steps |
189
+ | `Infrastructure/Services/Workflow/WorkflowExecutionService.cs` | Execution |
190
+
191
+ ---
192
+
193
+ User: $ARGUMENTS
@@ -0,0 +1,138 @@
1
+ {
2
+ "$schema": "https://atlashub.ch/schemas/claude-gitflow-config.json",
3
+ "version": "1.2.0",
4
+ "worktrees": {
5
+ "enabled": true,
6
+ "basePath": "../worktrees",
7
+ "permanent": {
8
+ "main": true,
9
+ "develop": true
10
+ },
11
+ "structure": {
12
+ "features": "features/{name}",
13
+ "releases": "releases/v{version}",
14
+ "hotfixes": "hotfixes/{name}"
15
+ },
16
+ "cleanupOnFinish": true
17
+ },
18
+ "git": {
19
+ "branches": {
20
+ "main": "main",
21
+ "develop": "develop",
22
+ "featurePrefix": "feature/",
23
+ "releasePrefix": "release/",
24
+ "hotfixPrefix": "hotfix/"
25
+ },
26
+ "remote": "origin",
27
+ "mergeStrategy": "--no-ff",
28
+ "tagPrefix": "v",
29
+ "protectedBranches": ["main", "develop"],
30
+ "requireLinearHistory": false
31
+ },
32
+ "efcore": {
33
+ "enabled": true,
34
+ "autoDetect": true,
35
+ "crossBranch": {
36
+ "enabled": true,
37
+ "scanOnMigrationCreate": true,
38
+ "blockOnConflict": true,
39
+ "cacheExpiry": 300
40
+ },
41
+ "contexts": [
42
+ {
43
+ "name": "ApplicationDbContext",
44
+ "projectPath": "auto-detect",
45
+ "startupProject": "auto-detect",
46
+ "migrationsFolder": "Migrations",
47
+ "migrationsAssembly": null
48
+ }
49
+ ],
50
+ "database": {
51
+ "configFile": "appsettings.Local.json",
52
+ "connectionStringName": "DefaultConnection",
53
+ "provider": "SqlServer",
54
+ "seedOnDeploy": false,
55
+ "confirmBeforeReset": true,
56
+ "backupBeforeReset": true
57
+ },
58
+ "scripts": {
59
+ "generateOnRelease": true,
60
+ "generateOnHotfix": true,
61
+ "idempotent": true,
62
+ "outputPath": "./scripts/migrations",
63
+ "namingPattern": "{type}_{version}_{timestamp}.sql"
64
+ },
65
+ "validation": {
66
+ "validateBeforeCommit": true,
67
+ "validateBeforeMerge": true,
68
+ "checkModelSnapshotConflicts": true,
69
+ "crossBranchValidation": true,
70
+ "requireBuildSuccess": true,
71
+ "warnOnPendingMigrations": true
72
+ },
73
+ "backup": {
74
+ "enabled": true,
75
+ "beforeRebase": true,
76
+ "beforeSquash": true,
77
+ "beforeMerge": true,
78
+ "retentionDays": 7,
79
+ "location": ".claude/gitflow/backup/migrations"
80
+ },
81
+ "naming": {
82
+ "migrationPrefix": "",
83
+ "hotfixPrefix": "Hotfix_",
84
+ "timestampFormat": "yyyyMMddHHmmss",
85
+ "pattern": "{BranchType}_{Version}_{BranchName}_{Description}",
86
+ "examples": {
87
+ "feature": "Feature_1.2.0_UserAuth_AddRolesTable",
88
+ "hotfix": "Hotfix_1.2.1_LoginFix_FixNullEmail",
89
+ "release": "Release_1.3.0_Initial"
90
+ }
91
+ },
92
+ "rules": {
93
+ "oneMigrationPerFeature": true,
94
+ "recreateOnChange": true,
95
+ "requireDescription": true,
96
+ "validateNaming": true
97
+ }
98
+ },
99
+ "workflow": {
100
+ "requireConfirmation": true,
101
+ "autoDeleteBranch": false,
102
+ "createCheckpoints": true,
103
+ "verboseLogging": false,
104
+ "interactiveMode": true,
105
+ "push": {
106
+ "afterCommit": "worktree",
107
+ "modes": {
108
+ "worktree": "Push automatique si worktree détecté",
109
+ "always": "Push automatique après chaque commit",
110
+ "ask": "Demander à l'utilisateur",
111
+ "never": "Ne jamais push automatiquement"
112
+ }
113
+ },
114
+ "commitConventions": {
115
+ "enabled": true,
116
+ "migration": "db(migrations): ",
117
+ "feature": "feat: ",
118
+ "fix": "fix: ",
119
+ "release": "release: ",
120
+ "hotfix": "hotfix: ",
121
+ "chore": "chore: "
122
+ },
123
+ "hooks": {
124
+ "prePlan": null,
125
+ "postPlan": null,
126
+ "preExec": null,
127
+ "postExec": null,
128
+ "preCommit": null,
129
+ "postCommit": null
130
+ }
131
+ },
132
+ "ui": {
133
+ "colors": true,
134
+ "showProgress": true,
135
+ "compactMode": false,
136
+ "language": "fr"
137
+ }
138
+ }
@@ -0,0 +1,139 @@
1
+ ---
2
+ description: Hook pre-commit - Detecte les operations destructives dans les migrations EF Core
3
+ trigger: pre-commit
4
+ blocking: true
5
+ ---
6
+
7
+ # EF Core Migration Safety Check
8
+
9
+ Scan les migrations EF Core pour detecter les operations destructives.
10
+
11
+ ## Patterns BLOQUANTS
12
+
13
+ ```
14
+ CRITICAL - Operations destructives :
15
+ ├── DropTable(...) → Suppression table entiere
16
+ ├── DropColumn(...) → Suppression colonne (perte donnees)
17
+ ├── DeleteData(...) → Suppression donnees
18
+ ├── DropForeignKey(...) → Casse integrite referentielle
19
+ ├── DropIndex(...) → Impact performance
20
+ ├── DropPrimaryKey(...) → Casse structure table
21
+ ├── DropSchema(...) → Suppression schema entier
22
+ └── migrationBuilder.Sql(...) contenant :
23
+ ├── DELETE
24
+ ├── DROP
25
+ ├── TRUNCATE
26
+ └── ALTER TABLE ... DROP
27
+ ```
28
+
29
+ ## Script de detection
30
+
31
+ ```bash
32
+ # Trouver les migrations modifiees dans ce commit
33
+ MIGRATIONS=$(git diff --cached --name-only --diff-filter=ACMR | grep -E "Migrations/.*\.cs$" | grep -v "Designer\.cs$" | grep -v "Snapshot\.cs$")
34
+
35
+ if [ -z "$MIGRATIONS" ]; then
36
+ echo "✓ Aucune migration detectee"
37
+ exit 0
38
+ fi
39
+
40
+ echo "🔍 Scan des migrations EF Core..."
41
+ echo ""
42
+
43
+ DANGEROUS_FOUND=0
44
+ DANGEROUS_FILES=""
45
+
46
+ for file in $MIGRATIONS; do
47
+ echo "Analyse: $file"
48
+
49
+ # Patterns destructifs EF Core
50
+ DROPS=$(grep -n "DropTable\|DropColumn\|DropIndex\|DropForeignKey\|DropPrimaryKey\|DropSchema\|DeleteData" "$file" 2>/dev/null)
51
+
52
+ # SQL brut dangereux
53
+ SQL_DANGEROUS=$(grep -n "migrationBuilder.Sql" "$file" 2>/dev/null | grep -i "DELETE\|DROP\|TRUNCATE")
54
+
55
+ if [ -n "$DROPS" ] || [ -n "$SQL_DANGEROUS" ]; then
56
+ DANGEROUS_FOUND=1
57
+ DANGEROUS_FILES="$DANGEROUS_FILES\n$file"
58
+
59
+ echo ""
60
+ echo "⚠️ OPERATIONS DESTRUCTIVES DETECTEES dans $file:"
61
+ echo "────────────────────────────────────────────────"
62
+
63
+ if [ -n "$DROPS" ]; then
64
+ echo "$DROPS"
65
+ fi
66
+
67
+ if [ -n "$SQL_DANGEROUS" ]; then
68
+ echo "$SQL_DANGEROUS"
69
+ fi
70
+
71
+ echo "────────────────────────────────────────────────"
72
+ echo ""
73
+ fi
74
+ done
75
+
76
+ if [ $DANGEROUS_FOUND -eq 1 ]; then
77
+ echo ""
78
+ echo "╔══════════════════════════════════════════════════════════╗"
79
+ echo "║ ⛔ COMMIT BLOQUE - OPERATIONS DESTRUCTIVES DETECTEES ║"
80
+ echo "╠══════════════════════════════════════════════════════════╣"
81
+ echo "║ Ces operations peuvent causer une PERTE DE DONNEES : ║"
82
+ echo "║ - DropTable : Supprime une table entiere ║"
83
+ echo "║ - DropColumn : Supprime une colonne et ses donnees ║"
84
+ echo "║ - DeleteData : Supprime des lignes ║"
85
+ echo "║ - SQL DELETE/DROP/TRUNCATE : Operations SQL directes ║"
86
+ echo "╠══════════════════════════════════════════════════════════╣"
87
+ echo "║ ACTIONS REQUISES : ║"
88
+ echo "║ 1. Verifier que vous avez un BACKUP des donnees ║"
89
+ echo "║ 2. Confirmer que cette suppression est intentionnelle ║"
90
+ echo "║ 3. Utiliser --force pour bypasser ce check ║"
91
+ echo "╚══════════════════════════════════════════════════════════╝"
92
+ echo ""
93
+ exit 1
94
+ fi
95
+
96
+ echo "✓ Migrations OK - Aucune operation destructive"
97
+ exit 0
98
+ ```
99
+
100
+ ## Integration Claude Code
101
+
102
+ Dans le workflow `/gitflow:3-commit`, avant le commit :
103
+
104
+ ```
105
+ 1. Detecter migrations modifiees
106
+ 2. Scanner patterns dangereux
107
+ 3. Si trouve :
108
+ → Afficher alerte detaillee
109
+ → Demander confirmation explicite
110
+ → Logger dans .claude/gitflow/logs/
111
+ 4. Si confirme ou rien trouve :
112
+ → Continuer commit
113
+ ```
114
+
115
+ ## Bypass (si vraiment necessaire)
116
+
117
+ ```bash
118
+ # Option 1 : Flag force
119
+ git commit --no-verify -m "message"
120
+
121
+ # Option 2 : Variable environnement
122
+ EF_MIGRATION_FORCE=1 git commit -m "message"
123
+ ```
124
+
125
+ ## Log des validations
126
+
127
+ Quand l'utilisateur confirme une operation dangereuse, logger :
128
+
129
+ ```json
130
+ {
131
+ "timestamp": "<ISO_DATE>",
132
+ "migration": "<FILENAME>",
133
+ "operations": ["DropTable:Users", "DropColumn:Email"],
134
+ "confirmedBy": "user",
135
+ "commitHash": "<HASH>"
136
+ }
137
+ ```
138
+
139
+ Fichier : `.claude/gitflow/logs/dangerous-migrations.json`
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "Bash",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "bun ${CLAUDE_PLUGIN_ROOT}/claude-code-config/scripts/validate-command.js"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }