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.
Files changed (119) hide show
  1. package/dist/chunks/agent-teams.mjs +1 -1
  2. package/dist/chunks/api-cli.mjs +1 -1
  3. package/dist/chunks/api-config-selector.mjs +3 -3
  4. package/dist/chunks/ccjk-all.mjs +1 -1
  5. package/dist/chunks/ccjk-mcp.mjs +1 -1
  6. package/dist/chunks/ccjk-setup.mjs +1 -1
  7. package/dist/chunks/ccr.mjs +8 -8
  8. package/dist/chunks/check-updates.mjs +1 -1
  9. package/dist/chunks/claude-code-incremental-manager.mjs +3 -3
  10. package/dist/chunks/claude-config.mjs +1 -1
  11. package/dist/chunks/codex-config-switch.mjs +1 -1
  12. package/dist/chunks/codex-provider-manager.mjs +1 -1
  13. package/dist/chunks/config-switch.mjs +1 -1
  14. package/dist/chunks/config.mjs +19 -3
  15. package/dist/chunks/config2.mjs +1 -1
  16. package/dist/chunks/config3.mjs +1 -1
  17. package/dist/chunks/doctor.mjs +175 -6
  18. package/dist/chunks/features.mjs +3 -3
  19. package/dist/chunks/index10.mjs +19 -5
  20. package/dist/chunks/init.mjs +5 -5
  21. package/dist/chunks/mcp-cli.mjs +3 -3
  22. package/dist/chunks/mcp.mjs +3 -3
  23. package/dist/chunks/package.mjs +1 -1
  24. package/dist/chunks/quick-provider.mjs +1 -1
  25. package/dist/chunks/quick-setup.mjs +5 -5
  26. package/dist/chunks/simple-config.mjs +1 -1
  27. package/dist/chunks/smart-guide.mjs +1 -1
  28. package/dist/chunks/update.mjs +6 -6
  29. package/dist/chunks/zero-config.mjs +7 -4
  30. package/dist/cli.mjs +0 -0
  31. package/dist/index.d.mts +3 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.mjs +1 -1
  34. package/dist/shared/{ccjk.BJ3Zpjo5.mjs → ccjk.BCzOWT1L.mjs} +3 -2
  35. package/dist/shared/{ccjk.B8oqkakg.mjs → ccjk.BLsIiTqO.mjs} +1 -1
  36. package/dist/shared/{ccjk.Hwoicrh8.mjs → ccjk.BXv8aYs1.mjs} +1 -1
  37. package/dist/shared/{ccjk.B9OuS4xZ.mjs → ccjk.CfKJnpbB.mjs} +1 -1
  38. package/dist/shared/{ccjk.BzxpiEPF.mjs → ccjk.Cgv_cFVX.mjs} +2 -2
  39. package/dist/shared/{ccjk.Di1IYU3u.mjs → ccjk.DDL-4C-k.mjs} +47 -10
  40. package/dist/shared/{ccjk.BEiR3L4C.mjs → ccjk.DOw7Fawt.mjs} +3 -3
  41. package/dist/shared/{ccjk.tI_s2uSh.mjs → ccjk.f3TBLJSt.mjs} +1 -1
  42. package/dist/templates/agents/README.md +78 -0
  43. package/dist/templates/common/error-prevention.md +267 -0
  44. package/dist/templates/common/karpathy-baseline.md +83 -0
  45. package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +381 -0
  46. package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +265 -0
  47. package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +539 -0
  48. package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +369 -0
  49. package/dist/templates/common/output-styles/zh-CN/linus-mode.md +135 -0
  50. package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +221 -0
  51. package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +628 -0
  52. package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +628 -0
  53. package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +187 -0
  54. package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +191 -0
  55. package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +249 -0
  56. package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +277 -0
  57. package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +29 -0
  58. package/dist/templates/common/workflow/essential/en/agents/init-architect.md +115 -0
  59. package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +91 -0
  60. package/dist/templates/common/workflow/essential/en/feat.md +92 -0
  61. package/dist/templates/common/workflow/essential/en/goal.md +147 -0
  62. package/dist/templates/common/workflow/essential/en/init-project.md +53 -0
  63. package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +29 -0
  64. package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +115 -0
  65. package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +91 -0
  66. package/dist/templates/common/workflow/essential/zh-CN/feat.md +315 -0
  67. package/dist/templates/common/workflow/essential/zh-CN/goal.md +146 -0
  68. package/dist/templates/common/workflow/essential/zh-CN/init-project.md +53 -0
  69. package/dist/templates/common/workflow/git/en/git-cleanBranches.md +102 -0
  70. package/dist/templates/common/workflow/git/en/git-commit.md +205 -0
  71. package/dist/templates/common/workflow/git/en/git-rollback.md +90 -0
  72. package/dist/templates/common/workflow/git/en/git-worktree.md +276 -0
  73. package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +102 -0
  74. package/dist/templates/common/workflow/git/zh-CN/git-commit.md +205 -0
  75. package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +90 -0
  76. package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +276 -0
  77. package/dist/templates/common/workflow/interview/en/interview.md +67 -0
  78. package/dist/templates/common/workflow/interview/zh-CN/interview.md +67 -0
  79. package/dist/templates/common/workflow/linearMethod/en/linear-method.md +651 -0
  80. package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +752 -0
  81. package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +516 -0
  82. package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +812 -0
  83. package/dist/templates/common/workflow/sixStep/en/workflow.md +83 -0
  84. package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +359 -0
  85. package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +364 -0
  86. package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +366 -0
  87. package/dist/templates/hooks/README.md +212 -0
  88. package/dist/templates/hooks/git-workflow-hooks.md +551 -0
  89. package/dist/templates/hooks/post-test-coverage.md +434 -0
  90. package/dist/templates/hooks/pre-commit-black.md +274 -0
  91. package/dist/templates/hooks/pre-commit-eslint.md +153 -0
  92. package/dist/templates/hooks/pre-commit-gofmt.md +284 -0
  93. package/dist/templates/hooks/pre-commit-prettier.md +212 -0
  94. package/dist/templates/hooks/pre-commit-type-check.md +377 -0
  95. package/dist/templates/skills/ccjk-init.md +154 -0
  96. package/dist/templates/skills/ccjk-mcp-setup.md +205 -0
  97. package/dist/templates/skills/ccjk-troubleshoot.md +228 -0
  98. package/dist/templates/skills/django-patterns.md +1016 -0
  99. package/dist/templates/skills/git-workflow.md +748 -0
  100. package/dist/templates/skills/go-idioms.md +963 -0
  101. package/dist/templates/skills/nextjs-optimization.md +694 -0
  102. package/dist/templates/skills/python-pep8.md +852 -0
  103. package/dist/templates/skills/react-patterns.md +686 -0
  104. package/dist/templates/skills/rust-patterns.md +1057 -0
  105. package/dist/templates/skills/security-best-practices.md +1413 -0
  106. package/dist/templates/skills/testing-best-practices.md +1315 -0
  107. package/dist/templates/skills/ts-best-practices.md +354 -0
  108. package/package.json +40 -43
  109. package/templates/common/karpathy-baseline.md +83 -0
  110. package/templates/common/output-styles/zh-CN/carmack-mode.md +14 -0
  111. package/templates/common/output-styles/zh-CN/dhh-mode.md +14 -0
  112. package/templates/common/output-styles/zh-CN/evan-you-mode.md +14 -0
  113. package/templates/common/output-styles/zh-CN/jobs-mode.md +14 -0
  114. package/templates/common/output-styles/zh-CN/linus-mode.md +14 -0
  115. package/templates/common/output-styles/zh-CN/uncle-bob-mode.md +14 -0
  116. package/templates/common/workflow/linearMethod/zh-CN/linear-method.md +2 -0
  117. package/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +2 -0
  118. package/templates/common/workflow/sixStep/zh-CN/workflow.md +2 -0
  119. 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
+ ```