@atlashub/smartstack-cli 1.5.1 → 1.5.3
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/css/styles.css +2168 -2168
- package/.documentation/js/app.js +794 -794
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -567
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,234 +1,234 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Create a SmartStack hook extension project
|
|
3
|
-
argument-hint: <name> [trigger] [description]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Create Hook Extension
|
|
7
|
-
|
|
8
|
-
Scaffold a complete SmartStack **hook** extension project.
|
|
9
|
-
|
|
10
|
-
## What is a Hook?
|
|
11
|
-
|
|
12
|
-
A hook is a validation/action trigger:
|
|
13
|
-
- Runs automatically at specific points (pre-commit, pre-merge, etc.)
|
|
14
|
-
- Can block operations if issues detected
|
|
15
|
-
- Defined in markdown with detection patterns
|
|
16
|
-
- Integrates with GitFlow workflow
|
|
17
|
-
|
|
18
|
-
## Arguments
|
|
19
|
-
|
|
20
|
-
Parse from `$ARGUMENTS`:
|
|
21
|
-
- **name** (required): Hook name in kebab-case
|
|
22
|
-
- **trigger** (optional): pre-commit | pre-merge | pre-push | post-commit
|
|
23
|
-
- **description** (optional): What the hook validates
|
|
24
|
-
|
|
25
|
-
## Project Structure
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
smartstack-{name}/
|
|
29
|
-
├── package.json
|
|
30
|
-
├── tsconfig.json
|
|
31
|
-
├── tsup.config.ts
|
|
32
|
-
├── README.md
|
|
33
|
-
├── .gitignore
|
|
34
|
-
├── src/
|
|
35
|
-
│ └── index.ts
|
|
36
|
-
└── templates/
|
|
37
|
-
└── hooks/
|
|
38
|
-
└── {name}.md # Hook template
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Generated Hook Template
|
|
42
|
-
|
|
43
|
-
```markdown
|
|
44
|
-
---
|
|
45
|
-
description: {description}
|
|
46
|
-
trigger: {trigger}
|
|
47
|
-
blocking: true
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
# {PascalCaseName} Hook
|
|
51
|
-
|
|
52
|
-
{description}
|
|
53
|
-
|
|
54
|
-
## Purpose
|
|
55
|
-
|
|
56
|
-
This hook validates [what it validates] before allowing [the action].
|
|
57
|
-
|
|
58
|
-
## Trigger Points
|
|
59
|
-
|
|
60
|
-
| Trigger | When | Blocking |
|
|
61
|
-
|---------|------|----------|
|
|
62
|
-
| pre-commit | Before git commit | Yes |
|
|
63
|
-
| pre-merge | Before branch merge | Yes |
|
|
64
|
-
| pre-push | Before git push | Yes |
|
|
65
|
-
| post-commit | After git commit | No |
|
|
66
|
-
|
|
67
|
-
Current trigger: **{trigger}**
|
|
68
|
-
|
|
69
|
-
## Detection Patterns
|
|
70
|
-
|
|
71
|
-
### BLOCKING Patterns
|
|
72
|
-
|
|
73
|
-
These patterns will **prevent** the operation:
|
|
74
|
-
|
|
75
|
-
| Pattern | File Types | Risk Level | Reason |
|
|
76
|
-
|---------|-----------|------------|--------|
|
|
77
|
-
| `PATTERN_ONE` | *.ts, *.js | Critical | Description |
|
|
78
|
-
| `PATTERN_TWO` | *.sql | High | Description |
|
|
79
|
-
| `PATTERN_THREE` | * | Medium | Description |
|
|
80
|
-
|
|
81
|
-
### WARNING Patterns
|
|
82
|
-
|
|
83
|
-
These patterns will **warn** but allow:
|
|
84
|
-
|
|
85
|
-
| Pattern | File Types | Reason |
|
|
86
|
-
|---------|-----------|--------|
|
|
87
|
-
| `WARN_PATTERN` | *.ts | Description |
|
|
88
|
-
|
|
89
|
-
## Detection Script
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
#!/bin/bash
|
|
93
|
-
# {PascalCaseName} Hook
|
|
94
|
-
# {description}
|
|
95
|
-
|
|
96
|
-
set -e
|
|
97
|
-
|
|
98
|
-
echo "🔍 Running {name} check..."
|
|
99
|
-
|
|
100
|
-
# Configuration
|
|
101
|
-
BLOCKING_PATTERNS=(
|
|
102
|
-
"PATTERN_ONE"
|
|
103
|
-
"PATTERN_TWO"
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
WARNING_PATTERNS=(
|
|
107
|
-
"WARN_PATTERN"
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
FILE_TYPES="*.ts *.js *.tsx *.jsx"
|
|
111
|
-
|
|
112
|
-
FOUND_BLOCKING=0
|
|
113
|
-
FOUND_WARNING=0
|
|
114
|
-
|
|
115
|
-
# Check blocking patterns
|
|
116
|
-
for pattern in "${BLOCKING_PATTERNS[@]}"; do
|
|
117
|
-
if grep -rn "$pattern" --include="$FILE_TYPES" . 2>/dev/null; then
|
|
118
|
-
echo "❌ BLOCKING: Found '$pattern'"
|
|
119
|
-
FOUND_BLOCKING=$((FOUND_BLOCKING + 1))
|
|
120
|
-
fi
|
|
121
|
-
done
|
|
122
|
-
|
|
123
|
-
# Check warning patterns
|
|
124
|
-
for pattern in "${WARNING_PATTERNS[@]}"; do
|
|
125
|
-
if grep -rn "$pattern" --include="$FILE_TYPES" . 2>/dev/null; then
|
|
126
|
-
echo "⚠️ WARNING: Found '$pattern'"
|
|
127
|
-
FOUND_WARNING=$((FOUND_WARNING + 1))
|
|
128
|
-
fi
|
|
129
|
-
done
|
|
130
|
-
|
|
131
|
-
# Results
|
|
132
|
-
if [ $FOUND_BLOCKING -gt 0 ]; then
|
|
133
|
-
echo ""
|
|
134
|
-
echo "╔═══════════════════════════════════════════╗"
|
|
135
|
-
echo "║ ❌ HOOK BLOCKED: $FOUND_BLOCKING issues found ║"
|
|
136
|
-
echo "╚═══════════════════════════════════════════╝"
|
|
137
|
-
echo ""
|
|
138
|
-
echo "Fix the issues above or bypass with:"
|
|
139
|
-
echo " SKIP_{NAME_UPPER}_HOOK=1 git commit -m 'message'"
|
|
140
|
-
exit 1
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
if [ $FOUND_WARNING -gt 0 ]; then
|
|
144
|
-
echo ""
|
|
145
|
-
echo "⚠️ $FOUND_WARNING warnings found (non-blocking)"
|
|
146
|
-
fi
|
|
147
|
-
|
|
148
|
-
echo "✅ Hook PASSED"
|
|
149
|
-
exit 0
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Integration
|
|
153
|
-
|
|
154
|
-
### With GitFlow
|
|
155
|
-
|
|
156
|
-
In `/gitflow:3-commit`, this hook runs automatically:
|
|
157
|
-
|
|
158
|
-
1. User initiates commit
|
|
159
|
-
2. Hook executes detection script
|
|
160
|
-
3. If blocking patterns found → commit rejected
|
|
161
|
-
4. User must fix or explicitly bypass
|
|
162
|
-
|
|
163
|
-
### Manual Execution
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
# Run hook manually
|
|
167
|
-
./.claude/hooks/{name}.sh
|
|
168
|
-
|
|
169
|
-
# Check specific files
|
|
170
|
-
./.claude/hooks/{name}.sh src/specific-file.ts
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## Bypass (Emergency Only)
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# Use with extreme caution!
|
|
177
|
-
SKIP_{NAME_UPPER}_HOOK=1 git commit -m "message"
|
|
178
|
-
|
|
179
|
-
# Or in environment
|
|
180
|
-
export SKIP_{NAME_UPPER}_HOOK=1
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
**WARNING**: Bypassing should be documented and justified.
|
|
184
|
-
|
|
185
|
-
## Logging
|
|
186
|
-
|
|
187
|
-
All detections logged to:
|
|
188
|
-
`~/.claude/gitflow/logs/{name}.json`
|
|
189
|
-
|
|
190
|
-
```json
|
|
191
|
-
{
|
|
192
|
-
"timestamp": "2024-01-15T10:30:00Z",
|
|
193
|
-
"hook": "{name}",
|
|
194
|
-
"trigger": "{trigger}",
|
|
195
|
-
"result": "blocked|passed|warning",
|
|
196
|
-
"blocking_issues": [],
|
|
197
|
-
"warnings": [],
|
|
198
|
-
"branch": "feature/xxx",
|
|
199
|
-
"user": "username"
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
## Customization
|
|
204
|
-
|
|
205
|
-
Edit patterns in the hook file:
|
|
206
|
-
- Add new blocking patterns
|
|
207
|
-
- Adjust file type filters
|
|
208
|
-
- Customize error messages
|
|
209
|
-
|
|
210
|
-
## Priority
|
|
211
|
-
|
|
212
|
-
Security > Correctness > Speed
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Trigger Options
|
|
216
|
-
|
|
217
|
-
| Trigger | Use Case |
|
|
218
|
-
|---------|----------|
|
|
219
|
-
| `pre-commit` | Validate before local commit |
|
|
220
|
-
| `pre-merge` | Validate before branch merge |
|
|
221
|
-
| `pre-push` | Validate before pushing to remote |
|
|
222
|
-
| `post-commit` | Log/notify after commit |
|
|
223
|
-
|
|
224
|
-
## Workflow
|
|
225
|
-
|
|
226
|
-
1. Parse arguments (name, trigger, description)
|
|
227
|
-
2. Validate name format
|
|
228
|
-
3. Create project directory
|
|
229
|
-
4. Generate hook template with proper trigger
|
|
230
|
-
5. Display success message
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
User: $ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Create a SmartStack hook extension project
|
|
3
|
+
argument-hint: <name> [trigger] [description]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Create Hook Extension
|
|
7
|
+
|
|
8
|
+
Scaffold a complete SmartStack **hook** extension project.
|
|
9
|
+
|
|
10
|
+
## What is a Hook?
|
|
11
|
+
|
|
12
|
+
A hook is a validation/action trigger:
|
|
13
|
+
- Runs automatically at specific points (pre-commit, pre-merge, etc.)
|
|
14
|
+
- Can block operations if issues detected
|
|
15
|
+
- Defined in markdown with detection patterns
|
|
16
|
+
- Integrates with GitFlow workflow
|
|
17
|
+
|
|
18
|
+
## Arguments
|
|
19
|
+
|
|
20
|
+
Parse from `$ARGUMENTS`:
|
|
21
|
+
- **name** (required): Hook name in kebab-case
|
|
22
|
+
- **trigger** (optional): pre-commit | pre-merge | pre-push | post-commit
|
|
23
|
+
- **description** (optional): What the hook validates
|
|
24
|
+
|
|
25
|
+
## Project Structure
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
smartstack-{name}/
|
|
29
|
+
├── package.json
|
|
30
|
+
├── tsconfig.json
|
|
31
|
+
├── tsup.config.ts
|
|
32
|
+
├── README.md
|
|
33
|
+
├── .gitignore
|
|
34
|
+
├── src/
|
|
35
|
+
│ └── index.ts
|
|
36
|
+
└── templates/
|
|
37
|
+
└── hooks/
|
|
38
|
+
└── {name}.md # Hook template
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Generated Hook Template
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
---
|
|
45
|
+
description: {description}
|
|
46
|
+
trigger: {trigger}
|
|
47
|
+
blocking: true
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
# {PascalCaseName} Hook
|
|
51
|
+
|
|
52
|
+
{description}
|
|
53
|
+
|
|
54
|
+
## Purpose
|
|
55
|
+
|
|
56
|
+
This hook validates [what it validates] before allowing [the action].
|
|
57
|
+
|
|
58
|
+
## Trigger Points
|
|
59
|
+
|
|
60
|
+
| Trigger | When | Blocking |
|
|
61
|
+
|---------|------|----------|
|
|
62
|
+
| pre-commit | Before git commit | Yes |
|
|
63
|
+
| pre-merge | Before branch merge | Yes |
|
|
64
|
+
| pre-push | Before git push | Yes |
|
|
65
|
+
| post-commit | After git commit | No |
|
|
66
|
+
|
|
67
|
+
Current trigger: **{trigger}**
|
|
68
|
+
|
|
69
|
+
## Detection Patterns
|
|
70
|
+
|
|
71
|
+
### BLOCKING Patterns
|
|
72
|
+
|
|
73
|
+
These patterns will **prevent** the operation:
|
|
74
|
+
|
|
75
|
+
| Pattern | File Types | Risk Level | Reason |
|
|
76
|
+
|---------|-----------|------------|--------|
|
|
77
|
+
| `PATTERN_ONE` | *.ts, *.js | Critical | Description |
|
|
78
|
+
| `PATTERN_TWO` | *.sql | High | Description |
|
|
79
|
+
| `PATTERN_THREE` | * | Medium | Description |
|
|
80
|
+
|
|
81
|
+
### WARNING Patterns
|
|
82
|
+
|
|
83
|
+
These patterns will **warn** but allow:
|
|
84
|
+
|
|
85
|
+
| Pattern | File Types | Reason |
|
|
86
|
+
|---------|-----------|--------|
|
|
87
|
+
| `WARN_PATTERN` | *.ts | Description |
|
|
88
|
+
|
|
89
|
+
## Detection Script
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
#!/bin/bash
|
|
93
|
+
# {PascalCaseName} Hook
|
|
94
|
+
# {description}
|
|
95
|
+
|
|
96
|
+
set -e
|
|
97
|
+
|
|
98
|
+
echo "🔍 Running {name} check..."
|
|
99
|
+
|
|
100
|
+
# Configuration
|
|
101
|
+
BLOCKING_PATTERNS=(
|
|
102
|
+
"PATTERN_ONE"
|
|
103
|
+
"PATTERN_TWO"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
WARNING_PATTERNS=(
|
|
107
|
+
"WARN_PATTERN"
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
FILE_TYPES="*.ts *.js *.tsx *.jsx"
|
|
111
|
+
|
|
112
|
+
FOUND_BLOCKING=0
|
|
113
|
+
FOUND_WARNING=0
|
|
114
|
+
|
|
115
|
+
# Check blocking patterns
|
|
116
|
+
for pattern in "${BLOCKING_PATTERNS[@]}"; do
|
|
117
|
+
if grep -rn "$pattern" --include="$FILE_TYPES" . 2>/dev/null; then
|
|
118
|
+
echo "❌ BLOCKING: Found '$pattern'"
|
|
119
|
+
FOUND_BLOCKING=$((FOUND_BLOCKING + 1))
|
|
120
|
+
fi
|
|
121
|
+
done
|
|
122
|
+
|
|
123
|
+
# Check warning patterns
|
|
124
|
+
for pattern in "${WARNING_PATTERNS[@]}"; do
|
|
125
|
+
if grep -rn "$pattern" --include="$FILE_TYPES" . 2>/dev/null; then
|
|
126
|
+
echo "⚠️ WARNING: Found '$pattern'"
|
|
127
|
+
FOUND_WARNING=$((FOUND_WARNING + 1))
|
|
128
|
+
fi
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
# Results
|
|
132
|
+
if [ $FOUND_BLOCKING -gt 0 ]; then
|
|
133
|
+
echo ""
|
|
134
|
+
echo "╔═══════════════════════════════════════════╗"
|
|
135
|
+
echo "║ ❌ HOOK BLOCKED: $FOUND_BLOCKING issues found ║"
|
|
136
|
+
echo "╚═══════════════════════════════════════════╝"
|
|
137
|
+
echo ""
|
|
138
|
+
echo "Fix the issues above or bypass with:"
|
|
139
|
+
echo " SKIP_{NAME_UPPER}_HOOK=1 git commit -m 'message'"
|
|
140
|
+
exit 1
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
if [ $FOUND_WARNING -gt 0 ]; then
|
|
144
|
+
echo ""
|
|
145
|
+
echo "⚠️ $FOUND_WARNING warnings found (non-blocking)"
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
echo "✅ Hook PASSED"
|
|
149
|
+
exit 0
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Integration
|
|
153
|
+
|
|
154
|
+
### With GitFlow
|
|
155
|
+
|
|
156
|
+
In `/gitflow:3-commit`, this hook runs automatically:
|
|
157
|
+
|
|
158
|
+
1. User initiates commit
|
|
159
|
+
2. Hook executes detection script
|
|
160
|
+
3. If blocking patterns found → commit rejected
|
|
161
|
+
4. User must fix or explicitly bypass
|
|
162
|
+
|
|
163
|
+
### Manual Execution
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Run hook manually
|
|
167
|
+
./.claude/hooks/{name}.sh
|
|
168
|
+
|
|
169
|
+
# Check specific files
|
|
170
|
+
./.claude/hooks/{name}.sh src/specific-file.ts
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Bypass (Emergency Only)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Use with extreme caution!
|
|
177
|
+
SKIP_{NAME_UPPER}_HOOK=1 git commit -m "message"
|
|
178
|
+
|
|
179
|
+
# Or in environment
|
|
180
|
+
export SKIP_{NAME_UPPER}_HOOK=1
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**WARNING**: Bypassing should be documented and justified.
|
|
184
|
+
|
|
185
|
+
## Logging
|
|
186
|
+
|
|
187
|
+
All detections logged to:
|
|
188
|
+
`~/.claude/gitflow/logs/{name}.json`
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"timestamp": "2024-01-15T10:30:00Z",
|
|
193
|
+
"hook": "{name}",
|
|
194
|
+
"trigger": "{trigger}",
|
|
195
|
+
"result": "blocked|passed|warning",
|
|
196
|
+
"blocking_issues": [],
|
|
197
|
+
"warnings": [],
|
|
198
|
+
"branch": "feature/xxx",
|
|
199
|
+
"user": "username"
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Customization
|
|
204
|
+
|
|
205
|
+
Edit patterns in the hook file:
|
|
206
|
+
- Add new blocking patterns
|
|
207
|
+
- Adjust file type filters
|
|
208
|
+
- Customize error messages
|
|
209
|
+
|
|
210
|
+
## Priority
|
|
211
|
+
|
|
212
|
+
Security > Correctness > Speed
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Trigger Options
|
|
216
|
+
|
|
217
|
+
| Trigger | Use Case |
|
|
218
|
+
|---------|----------|
|
|
219
|
+
| `pre-commit` | Validate before local commit |
|
|
220
|
+
| `pre-merge` | Validate before branch merge |
|
|
221
|
+
| `pre-push` | Validate before pushing to remote |
|
|
222
|
+
| `post-commit` | Log/notify after commit |
|
|
223
|
+
|
|
224
|
+
## Workflow
|
|
225
|
+
|
|
226
|
+
1. Parse arguments (name, trigger, description)
|
|
227
|
+
2. Validate name format
|
|
228
|
+
3. Create project directory
|
|
229
|
+
4. Generate hook template with proper trigger
|
|
230
|
+
5. Display success message
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
User: $ARGUMENTS
|