sumulige-claude 1.5.1 → 1.5.2

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 (219) hide show
  1. package/.claude/hooks/hook-registry.json +0 -15
  2. package/.claude/rules/coding-style.md +18 -7
  3. package/.claude/rules/hooks.md +15 -4
  4. package/.claude/rules/performance.md +15 -5
  5. package/.claude/rules/security.md +140 -4
  6. package/.claude/rules/testing.md +138 -9
  7. package/.claude/rules/web-design-standard.md +16 -5
  8. package/.claude/skills/algorithmic-art/metadata.yaml +28 -0
  9. package/.claude/skills/api-tester/SKILL.md +61 -0
  10. package/.claude/skills/api-tester/examples/basic.md +3 -0
  11. package/.claude/skills/api-tester/metadata.yaml +30 -0
  12. package/.claude/skills/api-tester/templates/default.md +3 -0
  13. package/.claude/skills/brand-guidelines/metadata.yaml +26 -0
  14. package/.claude/skills/canvas-design/metadata.yaml +27 -0
  15. package/.claude/skills/code-reviewer-123/SKILL.md +61 -0
  16. package/.claude/skills/code-reviewer-123/examples/basic.md +3 -0
  17. package/.claude/skills/code-reviewer-123/metadata.yaml +30 -0
  18. package/.claude/skills/code-reviewer-123/templates/default.md +3 -0
  19. package/.claude/skills/doc-coauthoring/metadata.yaml +27 -0
  20. package/.claude/skills/docx/metadata.yaml +30 -0
  21. package/.claude/skills/frontend-design/metadata.yaml +28 -0
  22. package/.claude/skills/internal-comms/metadata.yaml +28 -0
  23. package/.claude/skills/mcp-builder/metadata.yaml +26 -0
  24. package/.claude/skills/my-skill/SKILL.md +61 -0
  25. package/.claude/skills/my-skill/examples/basic.md +3 -0
  26. package/.claude/skills/my-skill/metadata.yaml +30 -0
  27. package/.claude/skills/my-skill/templates/default.md +3 -0
  28. package/.claude/skills/pdf/metadata.yaml +29 -0
  29. package/.claude/skills/pptx/metadata.yaml +29 -0
  30. package/.claude/skills/react-best-practices/metadata.yaml +26 -0
  31. package/.claude/skills/react-node-practices/SKILL.md +409 -0
  32. package/.claude/skills/react-node-practices/metadata.yaml +56 -0
  33. package/.claude/skills/skill-creator/metadata.yaml +25 -0
  34. package/.claude/skills/slack-gif-creator/metadata.yaml +28 -0
  35. package/.claude/skills/test-skill-name/SKILL.md +61 -0
  36. package/.claude/skills/test-skill-name/examples/basic.md +3 -0
  37. package/.claude/skills/test-skill-name/metadata.yaml +30 -0
  38. package/.claude/skills/test-skill-name/templates/default.md +3 -0
  39. package/.claude/skills/test-workflow/metadata.yaml +32 -0
  40. package/.claude/skills/theme-factory/metadata.yaml +26 -0
  41. package/.claude/skills/threejs-fundamentals/metadata.yaml +27 -0
  42. package/.claude/skills/web-artifacts-builder/metadata.yaml +30 -0
  43. package/.claude/skills/web-design-guidelines/metadata.yaml +26 -0
  44. package/.claude/skills/webapp-testing/metadata.yaml +26 -0
  45. package/.claude/skills/xlsx/metadata.yaml +29 -0
  46. package/LICENSE +21 -0
  47. package/cli.js +1 -1
  48. package/package.json +25 -3
  49. package/.claude/.kickoff-hint.txt +0 -52
  50. package/.claude/.sumulige-claude-version +0 -1
  51. package/.claude/.version +0 -1
  52. package/.claude/AGENTS.md +0 -42
  53. package/.claude/ANCHORS.md +0 -40
  54. package/.claude/CLAUDE.md +0 -138
  55. package/.claude/MEMORY.md +0 -69
  56. package/.claude/PROJECT_LOG.md +0 -101
  57. package/.claude/THINKING_CHAIN_GUIDE.md +0 -287
  58. package/.claude/USAGE.md +0 -175
  59. package/.claude/boris-optimizations.md +0 -167
  60. package/.claude/handoffs/INDEX.md +0 -21
  61. package/.claude/handoffs/LATEST.md +0 -76
  62. package/.claude/handoffs/handoff_2026-01-22T13-07-04-757Z.md +0 -76
  63. package/.claude/quality-gate.json +0 -82
  64. package/.claude/rag/skill-index.json +0 -135
  65. package/.claude/settings.json +0 -99
  66. package/.claude/settings.local.json +0 -175
  67. package/.claude/templates/PROJECT_KICKOFF.md +0 -89
  68. package/.claude/templates/PROJECT_PROPOSAL.md +0 -227
  69. package/.claude/templates/TASK_PLAN.md +0 -121
  70. package/.claude/templates/hooks/README.md +0 -302
  71. package/.claude/templates/hooks/hook.sh.template +0 -94
  72. package/.claude/templates/hooks/user-prompt-submit.cjs.template +0 -116
  73. package/.claude/templates/hooks/user-response-submit.cjs.template +0 -94
  74. package/.claude/templates/hooks/validate.js +0 -173
  75. package/.claude/templates/tasks/develop.md +0 -69
  76. package/.claude/templates/tasks/research.md +0 -64
  77. package/.claude/templates/tasks/test.md +0 -96
  78. package/.claude/thinking-routes/.last-sync +0 -1
  79. package/.claude/thinking-routes/QUICKREF.md +0 -98
  80. package/.claude/workflow/document-scanner.js +0 -426
  81. package/.claude/workflow/knowledge-engine.js +0 -941
  82. package/.claude/workflow/notebooklm/browser.js +0 -1028
  83. package/.claude/workflow/phases/phase1-research.js +0 -578
  84. package/.claude/workflow/phases/phase1-research.ts +0 -465
  85. package/.claude/workflow/phases/phase2-approve.js +0 -722
  86. package/.claude/workflow/phases/phase3-plan.js +0 -1200
  87. package/.claude/workflow/phases/phase4-develop.js +0 -894
  88. package/.claude/workflow/search-cache.js +0 -230
  89. package/.claude/workflow/templates/approval.md +0 -315
  90. package/.claude/workflow/templates/development.md +0 -377
  91. package/.claude/workflow/templates/planning.md +0 -328
  92. package/.claude/workflow/templates/research.md +0 -250
  93. package/.claude/workflow/types.js +0 -37
  94. package/.claude/workflow/web-search.js +0 -278
  95. package/.claude-plugin/marketplace.json +0 -71
  96. package/.github/workflows/sync-skills.yml +0 -74
  97. package/.versionrc +0 -25
  98. package/AGENTS.md +0 -580
  99. package/CHANGELOG.md +0 -481
  100. package/CLAUDE-template.md +0 -114
  101. package/DEV_TOOLS_GUIDE.md +0 -190
  102. package/PROJECT_STRUCTURE.md +0 -266
  103. package/Q&A.md +0 -325
  104. package/config/defaults.json +0 -34
  105. package/config/official-skills.json +0 -183
  106. package/config/quality-gate.json +0 -67
  107. package/config/skill-categories.json +0 -40
  108. package/config/version-manifest.json +0 -85
  109. package/demos/power-3d-scatter.html +0 -683
  110. package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +0 -36
  111. package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +0 -36
  112. package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +0 -36
  113. package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +0 -36
  114. package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +0 -36
  115. package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +0 -36
  116. package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +0 -36
  117. package/development/knowledge-base/.index.clean.json +0 -1
  118. package/development/knowledge-base/.index.json +0 -486
  119. package/development/knowledge-base/test-best-practices.md +0 -29
  120. package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +0 -160
  121. package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +0 -160
  122. package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +0 -160
  123. package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +0 -160
  124. package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +0 -160
  125. package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +0 -160
  126. package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +0 -160
  127. package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +0 -160
  128. package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +0 -160
  129. package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +0 -160
  130. package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +0 -226
  131. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +0 -345
  132. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +0 -284
  133. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +0 -14
  134. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +0 -35
  135. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +0 -34
  136. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +0 -5
  137. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +0 -60
  138. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +0 -25
  139. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +0 -70
  140. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +0 -48
  141. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +0 -20
  142. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +0 -21
  143. package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +0 -160
  144. package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +0 -226
  145. package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +0 -345
  146. package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +0 -284
  147. package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +0 -14
  148. package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +0 -160
  149. package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +0 -178
  150. package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +0 -377
  151. package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +0 -442
  152. package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +0 -800
  153. package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +0 -625
  154. package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +0 -830
  155. package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +0 -957
  156. package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +0 -381
  157. package/development/todos/.state.json +0 -19
  158. package/development/todos/INDEX.md +0 -63
  159. package/development/todos/active/_README.md +0 -49
  160. package/development/todos/archived/_README.md +0 -11
  161. package/development/todos/backlog/_README.md +0 -11
  162. package/development/todos/backlog/mcp-integration.md +0 -35
  163. package/development/todos/completed/_README.md +0 -11
  164. package/development/todos/completed/boris-optimizations.md +0 -39
  165. package/development/todos/completed/develop/local-knowledge-index.md +0 -85
  166. package/development/todos/completed/develop/todo-system.md +0 -47
  167. package/development/todos/completed/develop/web-search-integration.md +0 -83
  168. package/development/todos/completed/test/phase1-e2e-test.md +0 -103
  169. package/docs/DEVELOPMENT.md +0 -461
  170. package/docs/MARKETPLACE.md +0 -352
  171. package/docs/RELEASE.md +0 -93
  172. package/jest.config.js +0 -63
  173. package/lib/commands.js +0 -3588
  174. package/lib/config-manager.js +0 -441
  175. package/lib/config-schema.js +0 -408
  176. package/lib/config-validator.js +0 -330
  177. package/lib/config.js +0 -122
  178. package/lib/errors.js +0 -305
  179. package/lib/incremental-sync.js +0 -274
  180. package/lib/marketplace.js +0 -487
  181. package/lib/migrations.js +0 -154
  182. package/lib/permission-audit.js +0 -255
  183. package/lib/quality-gate.js +0 -431
  184. package/lib/quality-rules.js +0 -373
  185. package/lib/utils.js +0 -150
  186. package/lib/version-check.js +0 -169
  187. package/lib/version-manifest.js +0 -171
  188. package/project-paradigm.md +0 -313
  189. package/prompts/how-to-find.md +0 -163
  190. package/prompts/linus-architect.md +0 -71
  191. package/prompts/software-architect.md +0 -173
  192. package/prompts/web-designer.md +0 -249
  193. package/scripts/fix-hooks.mjs +0 -97
  194. package/scripts/sync-external.mjs +0 -298
  195. package/scripts/sync-to-home.sh +0 -108
  196. package/scripts/update-registry.mjs +0 -325
  197. package/sources.yaml +0 -83
  198. package/tests/README.md +0 -263
  199. package/tests/commands.test.js +0 -1086
  200. package/tests/config-manager.test.js +0 -677
  201. package/tests/config-schema.test.js +0 -425
  202. package/tests/config-validator.test.js +0 -436
  203. package/tests/config.test.js +0 -100
  204. package/tests/errors.test.js +0 -477
  205. package/tests/manual/phase1-e2e.sh +0 -389
  206. package/tests/manual/phase2-test-cases.md +0 -311
  207. package/tests/manual/phase3-test-cases.md +0 -309
  208. package/tests/manual/phase4-test-cases.md +0 -414
  209. package/tests/manual/test-cases.md +0 -417
  210. package/tests/marketplace.test.js +0 -420
  211. package/tests/migrations.test.js +0 -187
  212. package/tests/quality-gate.test.js +0 -679
  213. package/tests/quality-rules.test.js +0 -619
  214. package/tests/sync-external.test.js +0 -214
  215. package/tests/update-registry.test.js +0 -251
  216. package/tests/utils.test.js +0 -171
  217. package/tests/version-check.test.js +0 -75
  218. package/tests/web-search.test.js +0 -392
  219. package/thinkinglens-silent.md +0 -138
@@ -1,94 +0,0 @@
1
- #!/usr/bin/env bash
2
- #
3
- # [Hook Name] - Shell Hook Template
4
- #
5
- # 触发时机: [说明触发时机]
6
- # 环境变量:
7
- # - CLAUDE_PROJECT_DIR: 项目根目录
8
- #
9
- # @version 1.0.0
10
- #
11
-
12
- set -euo pipefail # 严格模式
13
-
14
- # ============================================================
15
- # 标准头部 - 所有 hooks 必须包含
16
- # ============================================================
17
-
18
- # 获取项目目录,提供 fallback
19
- CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
20
-
21
- # 如果不在项目环境中,静默退出
22
- [[ -z "${CLAUDE_PROJECT_DIR:-}" ]] && exit 0
23
-
24
- # ============================================================
25
- # 配置区域
26
- # ============================================================
27
-
28
- VERBOSE="${VERBOSE:-false}"
29
- HOOKS_DIR="$CLAUDE_PROJECT_DIR/.claude/hooks"
30
- DATA_DIR="$HOOKS_DIR/.data"
31
-
32
- # ============================================================
33
- # 工具函数
34
- // ============================================================
35
-
36
- # 安全日志
37
- log() {
38
- if [[ "$VERBOSE" == "true" ]]; then
39
- echo "[Hook] $*" >&2
40
- fi
41
- }
42
-
43
- # 确保目录存在
44
- ensure_dir() {
45
- local dir="$1"
46
- mkdir -p "$dir" 2>/dev/null || true
47
- }
48
-
49
- # 安全读取文件
50
- safe_read() {
51
- local file="$1"
52
- local default="${2:-}"
53
- if [[ -f "$file" ]]; then
54
- cat "$file" 2>/dev/null || echo "$default"
55
- else
56
- echo "$default"
57
- fi
58
- }
59
-
60
- # 安全写入文件
61
- safe_write() {
62
- local file="$1"
63
- local content="$2"
64
- ensure_dir "$(dirname "$file")"
65
- echo "$content" > "$file" 2>/dev/null || true
66
- }
67
-
68
- # ============================================================
69
- # Hook 核心逻辑
70
- # ============================================================
71
-
72
- main() {
73
- # 错误处理:任何错误都静默处理,不影响 Claude Code
74
- {
75
-
76
- log "Project: $CLAUDE_PROJECT_DIR"
77
-
78
- # ===== 在这里实现你的 hook 逻辑 =====
79
-
80
- # 示例: 记录执行时间
81
- local timestamp_file="$DATA_DIR/last-run.txt"
82
- safe_write "$timestamp_file" "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
83
-
84
- # ===== Hook 逻辑结束 =====
85
-
86
- } || true
87
- }
88
-
89
- # ============================================================
90
- # 执行
91
- # ============================================================
92
-
93
- main
94
- exit 0
@@ -1,116 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * [Hook Name] - UserPromptSubmit Hook Template
4
- *
5
- * 触发时机: 用户每次提交提示时
6
- * 环境变量:
7
- * - CLAUDE_PROJECT_DIR: 项目根目录
8
- * - CLAUDE_TOOL_NAME: 当前调用的工具名
9
- * - CLAUDE_TOOL_INPUT: 工具输入内容
10
- *
11
- * @version 1.0.0
12
- */
13
-
14
- const fs = require('fs');
15
- const path = require('path');
16
-
17
- // ============================================================
18
- // 标准头部 - 所有 hooks 必须包含
19
- // ============================================================
20
-
21
- const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
22
-
23
- // 如果不在 Claude Code 环境中运行,静默退出
24
- if (!process.env.CLAUDE_PROJECT_DIR) {
25
- process.exit(0);
26
- }
27
-
28
- // ============================================================
29
- // 配置区域
30
- // ============================================================
31
-
32
- const CONFIG = {
33
- // 你的 hook 配置
34
- enabled: true,
35
- verbose: false, // 设为 true 开启调试输出
36
- };
37
-
38
- // ============================================================
39
- // 工具函数
40
- // ============================================================
41
-
42
- /**
43
- * 安全日志 - 只有 verbose=true 时才输出
44
- */
45
- function log(...args) {
46
- if (CONFIG.verbose) {
47
- console.error('[Hook]', ...args);
48
- }
49
- }
50
-
51
- /**
52
- * 安全读取文件
53
- */
54
- function safeReadFile(filePath, defaultValue = '') {
55
- try {
56
- return fs.readFileSync(filePath, 'utf-8');
57
- } catch (e) {
58
- return defaultValue;
59
- }
60
- }
61
-
62
- /**
63
- * 安全写入文件
64
- */
65
- function safeWriteFile(filePath, content) {
66
- try {
67
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
68
- fs.writeFileSync(filePath, content, 'utf-8');
69
- return true;
70
- } catch (e) {
71
- log('Write error:', e.message);
72
- return false;
73
- }
74
- }
75
-
76
- // ============================================================
77
- // Hook 核心逻辑
78
- // ============================================================
79
-
80
- /**
81
- * 主处理函数
82
- */
83
- function main() {
84
- try {
85
- // 获取环境变量
86
- const toolName = process.env.CLAUDE_TOOL_NAME || '';
87
- const toolInput = process.env.CLAUDE_TOOL_INPUT || '';
88
-
89
- log('Tool:', toolName);
90
- log('Project:', PROJECT_DIR);
91
-
92
- // ===== 在这里实现你的 hook 逻辑 =====
93
-
94
- // 示例: 追踪操作
95
- const trackerFile = path.join(PROJECT_DIR, '.claude/hooks/.tracker.json');
96
- const data = JSON.parse(safeReadFile(trackerFile, '{}'));
97
- data.lastRun = new Date().toISOString();
98
- data.runs = (data.runs || 0) + 1;
99
- safeWriteFile(trackerFile, JSON.stringify(data, null, 2));
100
-
101
- // ===== Hook 逻辑结束 =====
102
-
103
- } catch (error) {
104
- // 静默处理错误,不干扰用户对话
105
- log('Error:', error.message);
106
- }
107
-
108
- // 永远输出成功,不影响 Claude Code 正常运行
109
- process.exit(0);
110
- }
111
-
112
- // ============================================================
113
- // 执行
114
- // ============================================================
115
-
116
- main();
@@ -1,94 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * [Hook Name] - UserResponseSubmit Hook Template
4
- *
5
- * 触发时机: AI 返回响应后
6
- * 环境变量:
7
- * - CLAUDE_PROJECT_DIR: 项目根目录
8
- * - CLAUDE_RESPONSE_CONTENT: 响应内容
9
- *
10
- * @version 1.0.0
11
- */
12
-
13
- const fs = require('fs');
14
- const path = require('path');
15
-
16
- // ============================================================
17
- // 标准头部 - 所有 hooks 必须包含
18
- // ============================================================
19
-
20
- const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
21
-
22
- // 如果不在 Claude Code 环境中运行,静默退出
23
- if (!process.env.CLAUDE_PROJECT_DIR) {
24
- process.exit(0);
25
- }
26
-
27
- // ============================================================
28
- // 配置区域
29
- // ============================================================
30
-
31
- const CONFIG = {
32
- enabled: true,
33
- verbose: false,
34
- };
35
-
36
- // ============================================================
37
- // 工具函数
38
- // ============================================================
39
-
40
- function log(...args) {
41
- if (CONFIG.verbose) {
42
- console.error('[Hook]', ...args);
43
- }
44
- }
45
-
46
- function safeReadFile(filePath, defaultValue = '') {
47
- try {
48
- return fs.readFileSync(filePath, 'utf-8');
49
- } catch (e) {
50
- return defaultValue;
51
- }
52
- }
53
-
54
- function safeWriteFile(filePath, content) {
55
- try {
56
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
57
- fs.writeFileSync(filePath, content, 'utf-8');
58
- return true;
59
- } catch (e) {
60
- log('Write error:', e.message);
61
- return false;
62
- }
63
- }
64
-
65
- // ============================================================
66
- // Hook 核心逻辑
67
- // ============================================================
68
-
69
- function main() {
70
- try {
71
- const responseContent = process.env.CLAUDE_RESPONSE_CONTENT || '';
72
-
73
- log('Response length:', responseContent.length);
74
-
75
- // ===== 在这里实现你的 hook 逻辑 =====
76
-
77
- // 示例: 记录响应统计
78
- const statsFile = path.join(PROJECT_DIR, '.claude/hooks/.response-stats.json');
79
- const stats = JSON.parse(safeReadFile(statsFile, '{}'));
80
- stats.totalResponses = (stats.totalResponses || 0) + 1;
81
- stats.totalChars = (stats.totalChars || 0) + responseContent.length;
82
- stats.lastUpdate = new Date().toISOString();
83
- safeWriteFile(statsFile, JSON.stringify(stats, null, 2));
84
-
85
- // ===== Hook 逻辑结束 =====
86
-
87
- } catch (error) {
88
- log('Error:', error.message);
89
- }
90
-
91
- process.exit(0);
92
- }
93
-
94
- main();
@@ -1,173 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Hook Validator - 检查 hook 是否符合最佳实践
4
- *
5
- * 使用方法:
6
- * node validate.js [hook-file]
7
- *
8
- * 示例:
9
- * node validate.js ../my-hook.cjs
10
- * node validate.js *.cjs
11
- */
12
-
13
- const fs = require('fs');
14
- const path = require('path');
15
-
16
- const CHECKS = {
17
- ENV_FALLBACK: {
18
- name: '环境变量 fallback',
19
- pattern: /process\.env\.CLAUDE_PROJECT_DIR\s*\|\|/,
20
- required: true,
21
- error: '缺少 CLAUDE_PROJECT_DIR fallback (|| process.cwd())'
22
- },
23
-
24
- SILENT_EXIT: {
25
- name: '静默退出检查',
26
- pattern: /if\s*\(\s*!process\.env\.CLAUDE_PROJECT_DIR/,
27
- required: true,
28
- error: '缺少非项目环境的静默退出检查'
29
- },
30
-
31
- ERROR_HANDLING: {
32
- name: '错误处理',
33
- pattern: /try\s*\{/,
34
- required: true,
35
- error: '缺少 try-catch 错误处理'
36
- },
37
-
38
- SAFE_EXIT: {
39
- name: '安全退出',
40
- pattern: /process\.exit\(0\)/,
41
- required: true,
42
- error: '缺少明确的 process.exit(0)'
43
- },
44
-
45
- NO_STDOUT: {
46
- name: '避免 stdout 输出',
47
- pattern: /console\.log\(/,
48
- required: false,
49
- error: '检测到 console.log - 建议使用 console.error 用于调试'
50
- },
51
-
52
- SAFE_MKDIR: {
53
- name: '安全创建目录',
54
- pattern: /mkdirSync.*recursive/,
55
- required: true,
56
- error: '目录创建缺少 { recursive: true } 选项'
57
- }
58
- };
59
-
60
- /**
61
- * 验证单个 hook 文件
62
- */
63
- function validateHook(filePath) {
64
- const results = {
65
- file: filePath,
66
- passed: 0,
67
- failed: 0,
68
- warnings: 0,
69
- checks: []
70
- };
71
-
72
- if (!fs.existsSync(filePath)) {
73
- results.error = '文件不存在';
74
- return results;
75
- }
76
-
77
- const content = fs.readFileSync(filePath, 'utf-8');
78
-
79
- for (const [key, check] of Object.entries(CHECKS)) {
80
- const passed = check.pattern.test(content);
81
-
82
- if (check.required) {
83
- if (passed) {
84
- results.passed++;
85
- } else {
86
- results.failed++;
87
- }
88
- } else {
89
- // 可选检查作为警告
90
- if (passed) {
91
- results.warnings++;
92
- }
93
- }
94
-
95
- results.checks.push({
96
- name: check.name,
97
- passed: check.required ? passed : !passed,
98
- required: check.required,
99
- error: check.error
100
- });
101
- }
102
-
103
- return results;
104
- }
105
-
106
- /**
107
- * 打印验证结果
108
- */
109
- function printResults(results) {
110
- console.log(`\n📎 ${path.basename(results.file)}`);
111
- console.log('─'.repeat(50));
112
-
113
- if (results.error) {
114
- console.log(`❌ ${results.error}`);
115
- return;
116
- }
117
-
118
- for (const check of results.checks) {
119
- if (check.passed) {
120
- console.log(`✅ ${check.name}`);
121
- } else if (check.required) {
122
- console.log(`❌ ${check.name}`);
123
- console.log(` ${check.error}`);
124
- } else {
125
- console.log(`⚠️ ${check.name}`);
126
- console.log(` ${check.error}`);
127
- }
128
- }
129
-
130
- const total = results.passed + results.failed;
131
- const score = total > 0 ? Math.round((results.passed / total) * 100) : 0;
132
-
133
- console.log('─'.repeat(50));
134
- console.log(`得分: ${score}% | ✅ ${results.passed} | ❌ ${results.failed} | ⚠️ ${results.warnings}`);
135
- }
136
-
137
- /**
138
- * 主函数
139
- */
140
- function main() {
141
- const args = process.argv.slice(2);
142
-
143
- if (args.length === 0) {
144
- console.log(`
145
- 🔍 Hook Validator - 检查 hook 最佳实践
146
-
147
- 使用方法:
148
- node validate.js <hook-file>
149
- node validate.js *.cjs
150
-
151
- 示例:
152
- node validate.js my-hook.cjs
153
- node validate.js ../*.cjs
154
- `);
155
- process.exit(0);
156
- }
157
-
158
- let allPassed = true;
159
-
160
- for (const arg of args) {
161
- const results = validateHook(arg);
162
- printResults(results);
163
-
164
- if (results.failed > 0) {
165
- allPassed = false;
166
- }
167
- }
168
-
169
- console.log('');
170
- process.exit(allPassed ? 0 : 1);
171
- }
172
-
173
- main();
@@ -1,69 +0,0 @@
1
- # 开发任务标题
2
-
3
- > **类型**: 💻 Develop | 实现/编码/重构
4
- > **状态**: 进行中
5
- > **优先级**: P0/P1/P2
6
- > **创建时间**: YYYY-MM-DD
7
-
8
- ---
9
-
10
- ## 📋 任务描述
11
-
12
- 简要描述开发目标和需求。
13
-
14
- ---
15
-
16
- ## ✅ 子任务清单
17
-
18
- ### 第一阶段
19
- - [ ] 任务1.1
20
- - [ ] 任务1.2
21
-
22
- ### 第二阶段
23
- - [ ] 任务2.1
24
- - [ ] 任务2.2
25
-
26
- ---
27
-
28
- ## 🎯 验收标准
29
-
30
- - [ ] 功能正常运行
31
- - [ ] 无 TypeScript 错误
32
- - [ ] 无 ESLint 警告
33
- - [ ] 通过测试验证
34
-
35
- ---
36
-
37
- ## 📁 关键文件
38
-
39
- | 文件 | 说明 | 状态 |
40
- |------|------|------|
41
- | `path/to/file` | 文件说明 | 🔴 待实现 |
42
- | `path/to/file` | 文件说明 | 🟡 进行中 |
43
- | `path/to/file` | 文件说明 | 🟢 已完成 |
44
-
45
- ---
46
-
47
- ## 🔗 依赖任务
48
-
49
- - 前置任务:[任务名]
50
- - 后续任务:[任务名]
51
-
52
- ---
53
-
54
- ## 📝 开发日志
55
-
56
- ### YYYY-MM-DD
57
- - 进度记录
58
-
59
- ---
60
-
61
- ## 🧪 测试说明
62
-
63
- ```bash
64
- # 运行测试
65
- npm test
66
-
67
- # 本地验证
68
- npm run dev
69
- ```
@@ -1,64 +0,0 @@
1
- # 研究任务标题
2
-
3
- > **类型**: 📊 Research | 调研/设计/探索
4
- > **状态**: 进行中
5
- > **优先级**: P0/P1/P2
6
- > **创建时间**: YYYY-MM-DD
7
-
8
- ---
9
-
10
- ## 📋 任务描述
11
-
12
- 简要描述研究目标和背景。
13
-
14
- ---
15
-
16
- ## 🎯 研究目标
17
-
18
- 1. 目标一
19
- 2. 目标二
20
- 3. 目标三
21
-
22
- ---
23
-
24
- ## 🔍 研究方法
25
-
26
- - [ ] 文献调研
27
- - [ ] 技术方案对比
28
- - [ ] 原型验证
29
- - [ ] 风险评估
30
-
31
- ---
32
-
33
- ## 📊 研究成果
34
-
35
- ### 调研发现
36
-
37
- 1. 发现一
38
- 2. 发现二
39
-
40
- ### 推荐方案
41
-
42
- | 方案 | 优点 | 缺点 | 推荐度 |
43
- |------|------|------|--------|
44
- | 方案A | | | ⭐⭐⭐ |
45
- | 方案B | | | ⭐⭐ |
46
-
47
- ---
48
-
49
- ## 📁 相关文件
50
-
51
- - 调研文档:
52
- - 技术文档:
53
-
54
- ---
55
-
56
- ## 🔗 依赖任务
57
-
58
-
59
-
60
- ---
61
-
62
- ## 📝 备注
63
-
64
- 记录研究过程中的重要发现和决策点。
@@ -1,96 +0,0 @@
1
- # 测试任务标题
2
-
3
- > **类型**: 🧪 Test | 测试/验证/QA
4
- > **状态**: 进行中
5
- > **优先级**: P0/P1/P2
6
- > **创建时间**: YYYY-MM-DD
7
- > **相关开发任务**: [链接到开发任务]
8
-
9
- ---
10
-
11
- ## 📋 任务描述
12
-
13
- 描述测试范围和目标。
14
-
15
- ---
16
-
17
- ## 🎯 测试范围
18
-
19
- | 功能/模块 | 测试类型 | 优先级 |
20
- |----------|----------|--------|
21
- | 模块A | 功能测试 | P0 |
22
- | 模块B | 集成测试 | P1 |
23
- | 模块C | 回归测试 | P2 |
24
-
25
- ---
26
-
27
- ## ✅ 测试用例
28
-
29
- ### 功能测试
30
-
31
- | 用例ID | 用例描述 | 步骤 | 预期结果 | 状态 |
32
- |--------|----------|------|----------|------|
33
- | T001 | 描述 | 步骤 | 预期 | ⬜ |
34
-
35
- ### 边界测试
36
-
37
- | 用例ID | 用例描述 | 步骤 | 预期结果 | 状态 |
38
- |--------|----------|------|----------|------|
39
- | T101 | 描述 | 步骤 | 预期 | ⬜ |
40
-
41
- ---
42
-
43
- ## 🐛 问题记录
44
-
45
- | ID | 问题描述 | 严重程度 | 状态 | 修复方案 |
46
- |----|----------|----------|------|----------|
47
- | B001 | | 🔴高/🟡中/🟢低 | ⬜ | |
48
-
49
- ---
50
-
51
- ## 📁 测试文件
52
-
53
- | 文件 | 说明 |
54
- |------|------|
55
- | `path/to/test` | 测试文件 |
56
- | `/tmp/screenshots/` | 截图目录 |
57
-
58
- ---
59
-
60
- ## 🧪 测试命令
61
-
62
- ```bash
63
- # 运行测试
64
- npm test
65
-
66
- # Playwright E2E
67
- npx playwright test
68
-
69
- # 手动测试 URL
70
- http://localhost:3000/test-page
71
- ```
72
-
73
- ---
74
-
75
- ## 📝 测试结果
76
-
77
- ### 测试统计
78
-
79
- - 总用例数: 0
80
- - 通过: 0
81
- - 失败: 0
82
- - 跳过: 0
83
- - 通过率: 0%
84
-
85
- ### 回归测试
86
-
87
- - 上次通过率: 0%
88
- - 本次通过率: 0%
89
- - 变化: 0%
90
-
91
- ---
92
-
93
- ## 🔗 关联问题
94
-
95
- - 相关 Bug: [链接]
96
- - 相关需求: [链接]
@@ -1 +0,0 @@
1
- 100