ccjk 14.1.10 → 14.2.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/chunks/agent-teams.mjs +1 -1
- package/dist/chunks/api-cli.mjs +1 -1
- package/dist/chunks/api-config-selector.mjs +3 -3
- package/dist/chunks/ccjk-all.mjs +1 -1
- package/dist/chunks/ccjk-mcp.mjs +1 -1
- package/dist/chunks/ccjk-setup.mjs +1 -1
- package/dist/chunks/ccr.mjs +8 -8
- package/dist/chunks/check-updates.mjs +1 -1
- package/dist/chunks/claude-code-incremental-manager.mjs +3 -3
- package/dist/chunks/claude-config.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +1 -1
- package/dist/chunks/codex-provider-manager.mjs +1 -1
- package/dist/chunks/config-switch.mjs +1 -1
- package/dist/chunks/config.mjs +19 -3
- package/dist/chunks/config2.mjs +1 -1
- package/dist/chunks/config3.mjs +1 -1
- package/dist/chunks/doctor.mjs +175 -6
- package/dist/chunks/features.mjs +3 -3
- package/dist/chunks/index10.mjs +19 -5
- package/dist/chunks/init.mjs +5 -5
- package/dist/chunks/mcp-cli.mjs +3 -3
- package/dist/chunks/mcp.mjs +3 -3
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/quick-provider.mjs +1 -1
- package/dist/chunks/quick-setup.mjs +5 -5
- package/dist/chunks/simple-config.mjs +1 -1
- package/dist/chunks/smart-guide.mjs +1 -1
- package/dist/chunks/update.mjs +6 -6
- package/dist/chunks/zero-config.mjs +7 -4
- package/dist/cli.mjs +0 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccjk.BJ3Zpjo5.mjs → ccjk.BCzOWT1L.mjs} +3 -2
- package/dist/shared/{ccjk.B8oqkakg.mjs → ccjk.BLsIiTqO.mjs} +1 -1
- package/dist/shared/{ccjk.Hwoicrh8.mjs → ccjk.BXv8aYs1.mjs} +1 -1
- package/dist/shared/{ccjk.B9OuS4xZ.mjs → ccjk.CfKJnpbB.mjs} +1 -1
- package/dist/shared/{ccjk.BzxpiEPF.mjs → ccjk.Cgv_cFVX.mjs} +2 -2
- package/dist/shared/{ccjk.Di1IYU3u.mjs → ccjk.DDL-4C-k.mjs} +47 -10
- package/dist/shared/{ccjk.BEiR3L4C.mjs → ccjk.DOw7Fawt.mjs} +3 -3
- package/dist/shared/{ccjk.tI_s2uSh.mjs → ccjk.f3TBLJSt.mjs} +1 -1
- package/dist/templates/agents/README.md +78 -0
- package/dist/templates/common/error-prevention.md +267 -0
- package/dist/templates/common/karpathy-baseline.md +83 -0
- package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +381 -0
- package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +265 -0
- package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +539 -0
- package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +369 -0
- package/dist/templates/common/output-styles/zh-CN/linus-mode.md +135 -0
- package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +221 -0
- package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +628 -0
- package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +628 -0
- package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +187 -0
- package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +191 -0
- package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +249 -0
- package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +277 -0
- package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +29 -0
- package/dist/templates/common/workflow/essential/en/agents/init-architect.md +115 -0
- package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +91 -0
- package/dist/templates/common/workflow/essential/en/feat.md +92 -0
- package/dist/templates/common/workflow/essential/en/goal.md +147 -0
- package/dist/templates/common/workflow/essential/en/init-project.md +53 -0
- package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +29 -0
- package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +115 -0
- package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +91 -0
- package/dist/templates/common/workflow/essential/zh-CN/feat.md +315 -0
- package/dist/templates/common/workflow/essential/zh-CN/goal.md +146 -0
- package/dist/templates/common/workflow/essential/zh-CN/init-project.md +53 -0
- package/dist/templates/common/workflow/git/en/git-cleanBranches.md +102 -0
- package/dist/templates/common/workflow/git/en/git-commit.md +205 -0
- package/dist/templates/common/workflow/git/en/git-rollback.md +90 -0
- package/dist/templates/common/workflow/git/en/git-worktree.md +276 -0
- package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +102 -0
- package/dist/templates/common/workflow/git/zh-CN/git-commit.md +205 -0
- package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +90 -0
- package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +276 -0
- package/dist/templates/common/workflow/interview/en/interview.md +67 -0
- package/dist/templates/common/workflow/interview/zh-CN/interview.md +67 -0
- package/dist/templates/common/workflow/linearMethod/en/linear-method.md +651 -0
- package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +752 -0
- package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +516 -0
- package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +812 -0
- package/dist/templates/common/workflow/sixStep/en/workflow.md +83 -0
- package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +359 -0
- package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +364 -0
- package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +366 -0
- package/dist/templates/hooks/README.md +212 -0
- package/dist/templates/hooks/git-workflow-hooks.md +551 -0
- package/dist/templates/hooks/post-test-coverage.md +434 -0
- package/dist/templates/hooks/pre-commit-black.md +274 -0
- package/dist/templates/hooks/pre-commit-eslint.md +153 -0
- package/dist/templates/hooks/pre-commit-gofmt.md +284 -0
- package/dist/templates/hooks/pre-commit-prettier.md +212 -0
- package/dist/templates/hooks/pre-commit-type-check.md +377 -0
- package/dist/templates/skills/ccjk-init.md +154 -0
- package/dist/templates/skills/ccjk-mcp-setup.md +205 -0
- package/dist/templates/skills/ccjk-troubleshoot.md +228 -0
- package/dist/templates/skills/django-patterns.md +1016 -0
- package/dist/templates/skills/git-workflow.md +748 -0
- package/dist/templates/skills/go-idioms.md +963 -0
- package/dist/templates/skills/nextjs-optimization.md +694 -0
- package/dist/templates/skills/python-pep8.md +852 -0
- package/dist/templates/skills/react-patterns.md +686 -0
- package/dist/templates/skills/rust-patterns.md +1057 -0
- package/dist/templates/skills/security-best-practices.md +1413 -0
- package/dist/templates/skills/testing-best-practices.md +1315 -0
- package/dist/templates/skills/ts-best-practices.md +354 -0
- package/package.json +40 -43
- package/templates/common/karpathy-baseline.md +83 -0
- package/templates/common/output-styles/zh-CN/carmack-mode.md +14 -0
- package/templates/common/output-styles/zh-CN/dhh-mode.md +14 -0
- package/templates/common/output-styles/zh-CN/evan-you-mode.md +14 -0
- package/templates/common/output-styles/zh-CN/jobs-mode.md +14 -0
- package/templates/common/output-styles/zh-CN/linus-mode.md +14 -0
- package/templates/common/output-styles/zh-CN/uncle-bob-mode.md +14 -0
- package/templates/common/workflow/linearMethod/zh-CN/linear-method.md +2 -0
- package/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +2 -0
- package/templates/common/workflow/sixStep/zh-CN/workflow.md +2 -0
- package/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +2 -0
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: git-workflow-hooks
|
|
3
|
+
type: Multiple
|
|
4
|
+
name: Git Workflow Hooks
|
|
5
|
+
description: Comprehensive git workflow automation with branch protection, commit linting, and PR automation
|
|
6
|
+
priority: 8
|
|
7
|
+
matcher: Bash(git *)
|
|
8
|
+
command: multiple
|
|
9
|
+
timeout: 30000
|
|
10
|
+
enabled: true
|
|
11
|
+
applicableTo: [all]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Git Workflow Hooks
|
|
15
|
+
|
|
16
|
+
## Description
|
|
17
|
+
|
|
18
|
+
This comprehensive hook system automates git workflows including branch protection, commit message linting, PR automation, and release management. It provides a complete git workflow solution for teams following modern development practices.
|
|
19
|
+
|
|
20
|
+
## 描述
|
|
21
|
+
|
|
22
|
+
这个综合钩子系统自动化 git 工作流,包括分支保护、提交消息检查、PR 自动化和发布管理。它为遵循现代开发实践的团队提供完整的 git 工作流解决方案。
|
|
23
|
+
|
|
24
|
+
## When it runs
|
|
25
|
+
|
|
26
|
+
- **Pre-commit**: Before any `git commit` command
|
|
27
|
+
- **Pre-push**: Before any `git push` command
|
|
28
|
+
- **Post-commit**: After successful commits
|
|
29
|
+
- **Post-merge**: After successful merges
|
|
30
|
+
- **Branch operations**: On branch creation, deletion, switching
|
|
31
|
+
|
|
32
|
+
## 运行时机
|
|
33
|
+
|
|
34
|
+
- **预提交**: 任何 `git commit` 命令之前
|
|
35
|
+
- **预推送**: 任何 `git push` 命令之前
|
|
36
|
+
- **提交后**: 成功提交后
|
|
37
|
+
- **合并后**: 成功合并后
|
|
38
|
+
- **分支操作**: 分支创建、删除、切换时
|
|
39
|
+
|
|
40
|
+
## Configuration
|
|
41
|
+
|
|
42
|
+
### Prerequisites
|
|
43
|
+
```bash
|
|
44
|
+
# Install required tools
|
|
45
|
+
npm install --save-dev @commitlint/cli @commitlint/config-conventional
|
|
46
|
+
npm install --save-dev husky lint-staged
|
|
47
|
+
npm install --save-dev semantic-release
|
|
48
|
+
|
|
49
|
+
# Initialize husky
|
|
50
|
+
npx husky install
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Commit Message Configuration
|
|
54
|
+
```javascript
|
|
55
|
+
// commitlint.config.js
|
|
56
|
+
module.exports = {
|
|
57
|
+
extends: ['@commitlint/config-conventional'],
|
|
58
|
+
rules: {
|
|
59
|
+
'type-enum': [
|
|
60
|
+
2,
|
|
61
|
+
'always',
|
|
62
|
+
[
|
|
63
|
+
'feat', // New feature
|
|
64
|
+
'fix', // Bug fix
|
|
65
|
+
'docs', // Documentation
|
|
66
|
+
'style', // Formatting
|
|
67
|
+
'refactor', // Code refactoring
|
|
68
|
+
'test', // Tests
|
|
69
|
+
'chore', // Maintenance
|
|
70
|
+
'perf', // Performance
|
|
71
|
+
'ci', // CI/CD
|
|
72
|
+
'build', // Build system
|
|
73
|
+
'revert' // Revert commit
|
|
74
|
+
]
|
|
75
|
+
],
|
|
76
|
+
'subject-max-length': [2, 'always', 72],
|
|
77
|
+
'subject-case': [2, 'always', 'lower-case']
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Branch Protection Rules
|
|
83
|
+
```yaml
|
|
84
|
+
# In your CCJK configuration
|
|
85
|
+
hooks:
|
|
86
|
+
git-workflow-hooks:
|
|
87
|
+
enabled: true
|
|
88
|
+
branchProtection:
|
|
89
|
+
protectedBranches: ['main', 'master', 'develop']
|
|
90
|
+
requirePullRequest: true
|
|
91
|
+
requireReviews: 2
|
|
92
|
+
dismissStaleReviews: true
|
|
93
|
+
requireStatusChecks: true
|
|
94
|
+
requiredStatusChecks: ['ci/tests', 'ci/lint']
|
|
95
|
+
enforceAdmins: false
|
|
96
|
+
allowForcePush: false
|
|
97
|
+
allowDeletions: false
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Hook Configuration
|
|
101
|
+
```yaml
|
|
102
|
+
hooks:
|
|
103
|
+
# Pre-commit hooks
|
|
104
|
+
pre-commit-lint-staged:
|
|
105
|
+
type: PreToolUse
|
|
106
|
+
matcher: "Bash(git commit *)"
|
|
107
|
+
command: "npx lint-staged"
|
|
108
|
+
priority: 15
|
|
109
|
+
|
|
110
|
+
pre-commit-commitlint:
|
|
111
|
+
type: PreToolUse
|
|
112
|
+
matcher: "Bash(git commit *)"
|
|
113
|
+
command: "npx commitlint --edit $1"
|
|
114
|
+
priority: 14
|
|
115
|
+
|
|
116
|
+
# Pre-push hooks
|
|
117
|
+
pre-push-branch-protection:
|
|
118
|
+
type: PreToolUse
|
|
119
|
+
matcher: "Bash(git push *)"
|
|
120
|
+
command: "ccjk-git-branch-check"
|
|
121
|
+
priority: 13
|
|
122
|
+
|
|
123
|
+
pre-push-tests:
|
|
124
|
+
type: PreToolUse
|
|
125
|
+
matcher: "Bash(git push *)"
|
|
126
|
+
command: "npm test"
|
|
127
|
+
priority: 12
|
|
128
|
+
|
|
129
|
+
# Post-commit hooks
|
|
130
|
+
post-commit-auto-tag:
|
|
131
|
+
type: PostToolUse
|
|
132
|
+
matcher: "Bash(git commit *)"
|
|
133
|
+
command: "ccjk-git-auto-tag"
|
|
134
|
+
priority: 5
|
|
135
|
+
|
|
136
|
+
# Post-merge hooks
|
|
137
|
+
post-merge-cleanup:
|
|
138
|
+
type: PostToolUse
|
|
139
|
+
matcher: "Bash(git merge *)"
|
|
140
|
+
command: "ccjk-git-cleanup-branches"
|
|
141
|
+
priority: 4
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 配置
|
|
145
|
+
|
|
146
|
+
### 前置条件
|
|
147
|
+
```bash
|
|
148
|
+
# 安装必需的工具
|
|
149
|
+
npm install --save-dev @commitlint/cli @commitlint/config-conventional
|
|
150
|
+
npm install --save-dev husky lint-staged
|
|
151
|
+
npm install --save-dev semantic-release
|
|
152
|
+
|
|
153
|
+
# 初始化 husky
|
|
154
|
+
npx husky install
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 提交消息配置
|
|
158
|
+
```javascript
|
|
159
|
+
// commitlint.config.js
|
|
160
|
+
module.exports = {
|
|
161
|
+
extends: ['@commitlint/config-conventional'],
|
|
162
|
+
rules: {
|
|
163
|
+
'type-enum': [
|
|
164
|
+
2,
|
|
165
|
+
'always',
|
|
166
|
+
[
|
|
167
|
+
'feat', // 新功能
|
|
168
|
+
'fix', // 错误修复
|
|
169
|
+
'docs', // 文档
|
|
170
|
+
'style', // 格式化
|
|
171
|
+
'refactor', // 代码重构
|
|
172
|
+
'test', // 测试
|
|
173
|
+
'chore', // 维护
|
|
174
|
+
'perf', // 性能
|
|
175
|
+
'ci', // CI/CD
|
|
176
|
+
'build', // 构建系统
|
|
177
|
+
'revert' // 回滚提交
|
|
178
|
+
]
|
|
179
|
+
],
|
|
180
|
+
'subject-max-length': [2, 'always', 72],
|
|
181
|
+
'subject-case': [2, 'always', 'lower-case']
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Customization
|
|
187
|
+
|
|
188
|
+
### Custom Commit Types
|
|
189
|
+
```javascript
|
|
190
|
+
// commitlint.config.js
|
|
191
|
+
module.exports = {
|
|
192
|
+
extends: ['@commitlint/config-conventional'],
|
|
193
|
+
rules: {
|
|
194
|
+
'type-enum': [
|
|
195
|
+
2,
|
|
196
|
+
'always',
|
|
197
|
+
[
|
|
198
|
+
'feat', 'fix', 'docs', 'style', 'refactor',
|
|
199
|
+
'test', 'chore', 'perf', 'ci', 'build', 'revert',
|
|
200
|
+
// Custom types
|
|
201
|
+
'security', // Security fixes
|
|
202
|
+
'deps', // Dependency updates
|
|
203
|
+
'config', // Configuration changes
|
|
204
|
+
'release' // Release commits
|
|
205
|
+
]
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Branch Naming Conventions
|
|
212
|
+
```yaml
|
|
213
|
+
hooks:
|
|
214
|
+
pre-push-branch-naming:
|
|
215
|
+
type: PreToolUse
|
|
216
|
+
matcher: "Bash(git push *)"
|
|
217
|
+
command: |
|
|
218
|
+
branch=$(git branch --show-current)
|
|
219
|
+
if [[ ! $branch =~ ^(feature|bugfix|hotfix|release)/.+ ]]; then
|
|
220
|
+
echo "Branch name must follow pattern: feature/*, bugfix/*, hotfix/*, or release/*"
|
|
221
|
+
exit 1
|
|
222
|
+
fi
|
|
223
|
+
priority: 14
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Automatic Versioning
|
|
227
|
+
```yaml
|
|
228
|
+
hooks:
|
|
229
|
+
post-commit-semantic-release:
|
|
230
|
+
type: PostToolUse
|
|
231
|
+
matcher: "Bash(git commit *)"
|
|
232
|
+
command: |
|
|
233
|
+
if [ "$(git branch --show-current)" = "main" ]; then
|
|
234
|
+
npx semantic-release --dry-run
|
|
235
|
+
fi
|
|
236
|
+
priority: 3
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### PR Template Generation
|
|
240
|
+
```yaml
|
|
241
|
+
hooks:
|
|
242
|
+
pre-push-pr-template:
|
|
243
|
+
type: PreToolUse
|
|
244
|
+
matcher: "Bash(git push *)"
|
|
245
|
+
command: |
|
|
246
|
+
if [ ! -f .github/pull_request_template.md ]; then
|
|
247
|
+
ccjk-generate-pr-template
|
|
248
|
+
fi
|
|
249
|
+
priority: 11
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## 自定义
|
|
253
|
+
|
|
254
|
+
### 自定义提交类型
|
|
255
|
+
```javascript
|
|
256
|
+
// commitlint.config.js
|
|
257
|
+
module.exports = {
|
|
258
|
+
extends: ['@commitlint/config-conventional'],
|
|
259
|
+
rules: {
|
|
260
|
+
'type-enum': [
|
|
261
|
+
2,
|
|
262
|
+
'always',
|
|
263
|
+
[
|
|
264
|
+
'feat', 'fix', 'docs', 'style', 'refactor',
|
|
265
|
+
'test', 'chore', 'perf', 'ci', 'build', 'revert',
|
|
266
|
+
// 自定义类型
|
|
267
|
+
'security', // 安全修复
|
|
268
|
+
'deps', // 依赖更新
|
|
269
|
+
'config', // 配置更改
|
|
270
|
+
'release' // 发布提交
|
|
271
|
+
]
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### 分支命名约定
|
|
278
|
+
```yaml
|
|
279
|
+
hooks:
|
|
280
|
+
pre-push-branch-naming:
|
|
281
|
+
type: PreToolUse
|
|
282
|
+
matcher: "Bash(git push *)"
|
|
283
|
+
command: |
|
|
284
|
+
branch=$(git branch --show-current)
|
|
285
|
+
if [[ ! $branch =~ ^(feature|bugfix|hotfix|release)/.+ ]]; then
|
|
286
|
+
echo "分支名称必须遵循模式: feature/*, bugfix/*, hotfix/*, 或 release/*"
|
|
287
|
+
exit 1
|
|
288
|
+
fi
|
|
289
|
+
priority: 14
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Error Handling
|
|
293
|
+
|
|
294
|
+
- **Commit message validation fails**: Commit is blocked with formatting guidelines
|
|
295
|
+
- **Branch protection violation**: Push is blocked with protection rules explanation
|
|
296
|
+
- **Test failures**: Push is blocked until tests pass
|
|
297
|
+
- **Lint errors**: Commit is blocked until code quality issues are resolved
|
|
298
|
+
- **Merge conflicts**: Merge is blocked with conflict resolution instructions
|
|
299
|
+
|
|
300
|
+
## 错误处理
|
|
301
|
+
|
|
302
|
+
- **提交消息验证失败**: 阻止提交并显示格式指南
|
|
303
|
+
- **分支保护违规**: 阻止推送并解释保护规则
|
|
304
|
+
- **测试失败**: 阻止推送直到测试通过
|
|
305
|
+
- **Lint 错误**: 阻止提交直到代码质量问题解决
|
|
306
|
+
- **合并冲突**: 阻止合并并提供冲突解决说明
|
|
307
|
+
|
|
308
|
+
## Advanced Configuration
|
|
309
|
+
|
|
310
|
+
### Multi-environment Workflows
|
|
311
|
+
```yaml
|
|
312
|
+
hooks:
|
|
313
|
+
pre-push-environment-check:
|
|
314
|
+
type: PreToolUse
|
|
315
|
+
matcher: "Bash(git push origin main)"
|
|
316
|
+
command: |
|
|
317
|
+
echo "Pushing to production branch"
|
|
318
|
+
npm run test:e2e
|
|
319
|
+
npm run build:prod
|
|
320
|
+
npm run security:audit
|
|
321
|
+
priority: 15
|
|
322
|
+
|
|
323
|
+
pre-push-staging-check:
|
|
324
|
+
type: PreToolUse
|
|
325
|
+
matcher: "Bash(git push origin develop)"
|
|
326
|
+
command: |
|
|
327
|
+
echo "Pushing to staging branch"
|
|
328
|
+
npm run test:integration
|
|
329
|
+
npm run build:staging
|
|
330
|
+
priority: 15
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Automated Changelog Generation
|
|
334
|
+
```yaml
|
|
335
|
+
hooks:
|
|
336
|
+
post-commit-changelog:
|
|
337
|
+
type: PostToolUse
|
|
338
|
+
matcher: "Bash(git commit *)"
|
|
339
|
+
command: |
|
|
340
|
+
if [ "$(git branch --show-current)" = "main" ]; then
|
|
341
|
+
npx conventional-changelog -p angular -i CHANGELOG.md -s
|
|
342
|
+
git add CHANGELOG.md
|
|
343
|
+
git commit --amend --no-edit
|
|
344
|
+
fi
|
|
345
|
+
priority: 2
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Integration with Issue Tracking
|
|
349
|
+
```yaml
|
|
350
|
+
hooks:
|
|
351
|
+
pre-commit-issue-link:
|
|
352
|
+
type: PreToolUse
|
|
353
|
+
matcher: "Bash(git commit *)"
|
|
354
|
+
command: |
|
|
355
|
+
commit_msg=$(cat .git/COMMIT_EDITMSG)
|
|
356
|
+
branch=$(git branch --show-current)
|
|
357
|
+
|
|
358
|
+
# Extract issue number from branch name
|
|
359
|
+
if [[ $branch =~ feature/([0-9]+) ]]; then
|
|
360
|
+
issue_num=${BASH_REMATCH[1]}
|
|
361
|
+
if [[ ! $commit_msg =~ \#$issue_num ]]; then
|
|
362
|
+
echo "$commit_msg
|
|
363
|
+
|
|
364
|
+
Closes #$issue_num" > .git/COMMIT_EDITMSG
|
|
365
|
+
fi
|
|
366
|
+
fi
|
|
367
|
+
priority: 13
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Code Quality Gates
|
|
371
|
+
```yaml
|
|
372
|
+
hooks:
|
|
373
|
+
pre-push-quality-gate:
|
|
374
|
+
type: PreToolUse
|
|
375
|
+
matcher: "Bash(git push *)"
|
|
376
|
+
command: |
|
|
377
|
+
# Run comprehensive quality checks
|
|
378
|
+
npm run lint
|
|
379
|
+
npm run test:coverage
|
|
380
|
+
npm run audit:security
|
|
381
|
+
npm run check:dependencies
|
|
382
|
+
|
|
383
|
+
# Check coverage threshold
|
|
384
|
+
coverage=$(npx nyc report --reporter=text-summary | grep "Lines" | awk '{print $3}' | sed 's/%//')
|
|
385
|
+
if (( $(echo "$coverage < 80" | bc -l) )); then
|
|
386
|
+
echo "Coverage $coverage% is below 80% threshold"
|
|
387
|
+
exit 1
|
|
388
|
+
fi
|
|
389
|
+
priority: 12
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## 高级配置
|
|
393
|
+
|
|
394
|
+
### 多环境工作流
|
|
395
|
+
```yaml
|
|
396
|
+
hooks:
|
|
397
|
+
pre-push-environment-check:
|
|
398
|
+
type: PreToolUse
|
|
399
|
+
matcher: "Bash(git push origin main)"
|
|
400
|
+
command: |
|
|
401
|
+
echo "推送到生产分支"
|
|
402
|
+
npm run test:e2e
|
|
403
|
+
npm run build:prod
|
|
404
|
+
npm run security:audit
|
|
405
|
+
priority: 15
|
|
406
|
+
|
|
407
|
+
pre-push-staging-check:
|
|
408
|
+
type: PreToolUse
|
|
409
|
+
matcher: "Bash(git push origin develop)"
|
|
410
|
+
command: |
|
|
411
|
+
echo "推送到预发布分支"
|
|
412
|
+
npm run test:integration
|
|
413
|
+
npm run build:staging
|
|
414
|
+
priority: 15
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### 自动变更日志生成
|
|
418
|
+
```yaml
|
|
419
|
+
hooks:
|
|
420
|
+
post-commit-changelog:
|
|
421
|
+
type: PostToolUse
|
|
422
|
+
matcher: "Bash(git commit *)"
|
|
423
|
+
command: |
|
|
424
|
+
if [ "$(git branch --show-current)" = "main" ]; then
|
|
425
|
+
npx conventional-changelog -p angular -i CHANGELOG.md -s
|
|
426
|
+
git add CHANGELOG.md
|
|
427
|
+
git commit --amend --no-edit
|
|
428
|
+
fi
|
|
429
|
+
priority: 2
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
## Performance Tips
|
|
433
|
+
|
|
434
|
+
### Selective Hook Execution
|
|
435
|
+
```yaml
|
|
436
|
+
hooks:
|
|
437
|
+
pre-commit-selective:
|
|
438
|
+
type: PreToolUse
|
|
439
|
+
matcher: "Bash(git commit *)"
|
|
440
|
+
command: |
|
|
441
|
+
# Only run expensive checks on certain file types
|
|
442
|
+
if git diff --cached --name-only | grep -E '\.(js|ts|jsx|tsx)$'; then
|
|
443
|
+
npm run lint:js
|
|
444
|
+
npm run test:unit
|
|
445
|
+
fi
|
|
446
|
+
|
|
447
|
+
if git diff --cached --name-only | grep -E '\.(css|scss|less)$'; then
|
|
448
|
+
npm run lint:css
|
|
449
|
+
fi
|
|
450
|
+
priority: 10
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### Parallel Hook Execution
|
|
454
|
+
```yaml
|
|
455
|
+
hooks:
|
|
456
|
+
pre-push-parallel:
|
|
457
|
+
type: PreToolUse
|
|
458
|
+
matcher: "Bash(git push *)"
|
|
459
|
+
command: |
|
|
460
|
+
# Run checks in parallel
|
|
461
|
+
npm run lint &
|
|
462
|
+
npm run test &
|
|
463
|
+
npm run build &
|
|
464
|
+
|
|
465
|
+
# Wait for all background jobs
|
|
466
|
+
wait
|
|
467
|
+
priority: 10
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
## 性能提示
|
|
471
|
+
|
|
472
|
+
### 选择性钩子执行
|
|
473
|
+
```yaml
|
|
474
|
+
hooks:
|
|
475
|
+
pre-commit-selective:
|
|
476
|
+
type: PreToolUse
|
|
477
|
+
matcher: "Bash(git commit *)"
|
|
478
|
+
command: |
|
|
479
|
+
# 仅对特定文件类型运行昂贵的检查
|
|
480
|
+
if git diff --cached --name-only | grep -E '\.(js|ts|jsx|tsx)$'; then
|
|
481
|
+
npm run lint:js
|
|
482
|
+
npm run test:unit
|
|
483
|
+
fi
|
|
484
|
+
|
|
485
|
+
if git diff --cached --name-only | grep -E '\.(css|scss|less)$'; then
|
|
486
|
+
npm run lint:css
|
|
487
|
+
fi
|
|
488
|
+
priority: 10
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
## Integration Examples
|
|
492
|
+
|
|
493
|
+
### GitHub Actions Integration
|
|
494
|
+
```yaml
|
|
495
|
+
# .github/workflows/hooks.yml
|
|
496
|
+
name: Git Hooks
|
|
497
|
+
on: [push, pull_request]
|
|
498
|
+
|
|
499
|
+
jobs:
|
|
500
|
+
hooks:
|
|
501
|
+
runs-on: ubuntu-latest
|
|
502
|
+
steps:
|
|
503
|
+
- uses: actions/checkout@v3
|
|
504
|
+
- uses: actions/setup-node@v3
|
|
505
|
+
with:
|
|
506
|
+
node-version: '18'
|
|
507
|
+
- run: npm ci
|
|
508
|
+
- run: npx ccjk hooks validate
|
|
509
|
+
- run: npm run lint
|
|
510
|
+
- run: npm test
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### GitLab CI Integration
|
|
514
|
+
```yaml
|
|
515
|
+
# .gitlab-ci.yml
|
|
516
|
+
stages:
|
|
517
|
+
- validate
|
|
518
|
+
- test
|
|
519
|
+
|
|
520
|
+
git-hooks:
|
|
521
|
+
stage: validate
|
|
522
|
+
script:
|
|
523
|
+
- npx ccjk hooks validate
|
|
524
|
+
- npm run lint
|
|
525
|
+
- npm test
|
|
526
|
+
only:
|
|
527
|
+
- merge_requests
|
|
528
|
+
- main
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
## 集成示例
|
|
532
|
+
|
|
533
|
+
### GitHub Actions 集成
|
|
534
|
+
```yaml
|
|
535
|
+
# .github/workflows/hooks.yml
|
|
536
|
+
name: Git 钩子
|
|
537
|
+
on: [push, pull_request]
|
|
538
|
+
|
|
539
|
+
jobs:
|
|
540
|
+
hooks:
|
|
541
|
+
runs-on: ubuntu-latest
|
|
542
|
+
steps:
|
|
543
|
+
- uses: actions/checkout@v3
|
|
544
|
+
- uses: actions/setup-node@v3
|
|
545
|
+
with:
|
|
546
|
+
node-version: '18'
|
|
547
|
+
- run: npm ci
|
|
548
|
+
- run: npx ccjk hooks validate
|
|
549
|
+
- run: npm run lint
|
|
550
|
+
- run: npm test
|
|
551
|
+
```
|