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.
- package/.claude/hooks/hook-registry.json +0 -15
- package/.claude/rules/coding-style.md +18 -7
- package/.claude/rules/hooks.md +15 -4
- package/.claude/rules/performance.md +15 -5
- package/.claude/rules/security.md +140 -4
- package/.claude/rules/testing.md +138 -9
- package/.claude/rules/web-design-standard.md +16 -5
- package/.claude/skills/algorithmic-art/metadata.yaml +28 -0
- package/.claude/skills/api-tester/SKILL.md +61 -0
- package/.claude/skills/api-tester/examples/basic.md +3 -0
- package/.claude/skills/api-tester/metadata.yaml +30 -0
- package/.claude/skills/api-tester/templates/default.md +3 -0
- package/.claude/skills/brand-guidelines/metadata.yaml +26 -0
- package/.claude/skills/canvas-design/metadata.yaml +27 -0
- package/.claude/skills/code-reviewer-123/SKILL.md +61 -0
- package/.claude/skills/code-reviewer-123/examples/basic.md +3 -0
- package/.claude/skills/code-reviewer-123/metadata.yaml +30 -0
- package/.claude/skills/code-reviewer-123/templates/default.md +3 -0
- package/.claude/skills/doc-coauthoring/metadata.yaml +27 -0
- package/.claude/skills/docx/metadata.yaml +30 -0
- package/.claude/skills/frontend-design/metadata.yaml +28 -0
- package/.claude/skills/internal-comms/metadata.yaml +28 -0
- package/.claude/skills/mcp-builder/metadata.yaml +26 -0
- package/.claude/skills/my-skill/SKILL.md +61 -0
- package/.claude/skills/my-skill/examples/basic.md +3 -0
- package/.claude/skills/my-skill/metadata.yaml +30 -0
- package/.claude/skills/my-skill/templates/default.md +3 -0
- package/.claude/skills/pdf/metadata.yaml +29 -0
- package/.claude/skills/pptx/metadata.yaml +29 -0
- package/.claude/skills/react-best-practices/metadata.yaml +26 -0
- package/.claude/skills/react-node-practices/SKILL.md +409 -0
- package/.claude/skills/react-node-practices/metadata.yaml +56 -0
- package/.claude/skills/skill-creator/metadata.yaml +25 -0
- package/.claude/skills/slack-gif-creator/metadata.yaml +28 -0
- package/.claude/skills/test-skill-name/SKILL.md +61 -0
- package/.claude/skills/test-skill-name/examples/basic.md +3 -0
- package/.claude/skills/test-skill-name/metadata.yaml +30 -0
- package/.claude/skills/test-skill-name/templates/default.md +3 -0
- package/.claude/skills/test-workflow/metadata.yaml +32 -0
- package/.claude/skills/theme-factory/metadata.yaml +26 -0
- package/.claude/skills/threejs-fundamentals/metadata.yaml +27 -0
- package/.claude/skills/web-artifacts-builder/metadata.yaml +30 -0
- package/.claude/skills/web-design-guidelines/metadata.yaml +26 -0
- package/.claude/skills/webapp-testing/metadata.yaml +26 -0
- package/.claude/skills/xlsx/metadata.yaml +29 -0
- package/LICENSE +21 -0
- package/cli.js +1 -1
- package/package.json +25 -3
- package/.claude/.kickoff-hint.txt +0 -52
- package/.claude/.sumulige-claude-version +0 -1
- package/.claude/.version +0 -1
- package/.claude/AGENTS.md +0 -42
- package/.claude/ANCHORS.md +0 -40
- package/.claude/CLAUDE.md +0 -138
- package/.claude/MEMORY.md +0 -69
- package/.claude/PROJECT_LOG.md +0 -101
- package/.claude/THINKING_CHAIN_GUIDE.md +0 -287
- package/.claude/USAGE.md +0 -175
- package/.claude/boris-optimizations.md +0 -167
- package/.claude/handoffs/INDEX.md +0 -21
- package/.claude/handoffs/LATEST.md +0 -76
- package/.claude/handoffs/handoff_2026-01-22T13-07-04-757Z.md +0 -76
- package/.claude/quality-gate.json +0 -82
- package/.claude/rag/skill-index.json +0 -135
- package/.claude/settings.json +0 -99
- package/.claude/settings.local.json +0 -175
- package/.claude/templates/PROJECT_KICKOFF.md +0 -89
- package/.claude/templates/PROJECT_PROPOSAL.md +0 -227
- package/.claude/templates/TASK_PLAN.md +0 -121
- package/.claude/templates/hooks/README.md +0 -302
- package/.claude/templates/hooks/hook.sh.template +0 -94
- package/.claude/templates/hooks/user-prompt-submit.cjs.template +0 -116
- package/.claude/templates/hooks/user-response-submit.cjs.template +0 -94
- package/.claude/templates/hooks/validate.js +0 -173
- package/.claude/templates/tasks/develop.md +0 -69
- package/.claude/templates/tasks/research.md +0 -64
- package/.claude/templates/tasks/test.md +0 -96
- package/.claude/thinking-routes/.last-sync +0 -1
- package/.claude/thinking-routes/QUICKREF.md +0 -98
- package/.claude/workflow/document-scanner.js +0 -426
- package/.claude/workflow/knowledge-engine.js +0 -941
- package/.claude/workflow/notebooklm/browser.js +0 -1028
- package/.claude/workflow/phases/phase1-research.js +0 -578
- package/.claude/workflow/phases/phase1-research.ts +0 -465
- package/.claude/workflow/phases/phase2-approve.js +0 -722
- package/.claude/workflow/phases/phase3-plan.js +0 -1200
- package/.claude/workflow/phases/phase4-develop.js +0 -894
- package/.claude/workflow/search-cache.js +0 -230
- package/.claude/workflow/templates/approval.md +0 -315
- package/.claude/workflow/templates/development.md +0 -377
- package/.claude/workflow/templates/planning.md +0 -328
- package/.claude/workflow/templates/research.md +0 -250
- package/.claude/workflow/types.js +0 -37
- package/.claude/workflow/web-search.js +0 -278
- package/.claude-plugin/marketplace.json +0 -71
- package/.github/workflows/sync-skills.yml +0 -74
- package/.versionrc +0 -25
- package/AGENTS.md +0 -580
- package/CHANGELOG.md +0 -481
- package/CLAUDE-template.md +0 -114
- package/DEV_TOOLS_GUIDE.md +0 -190
- package/PROJECT_STRUCTURE.md +0 -266
- package/Q&A.md +0 -325
- package/config/defaults.json +0 -34
- package/config/official-skills.json +0 -183
- package/config/quality-gate.json +0 -67
- package/config/skill-categories.json +0 -40
- package/config/version-manifest.json +0 -85
- package/demos/power-3d-scatter.html +0 -683
- package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +0 -36
- package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +0 -36
- package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +0 -36
- package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +0 -36
- package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +0 -36
- package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +0 -36
- package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +0 -36
- package/development/knowledge-base/.index.clean.json +0 -1
- package/development/knowledge-base/.index.json +0 -486
- package/development/knowledge-base/test-best-practices.md +0 -29
- package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +0 -226
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +0 -345
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +0 -284
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +0 -14
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +0 -35
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +0 -34
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +0 -5
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +0 -60
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +0 -25
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +0 -70
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +0 -48
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +0 -20
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +0 -21
- package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +0 -226
- package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +0 -345
- package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +0 -284
- package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +0 -14
- package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +0 -160
- package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +0 -178
- package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +0 -377
- package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +0 -442
- package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +0 -800
- package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +0 -625
- package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +0 -830
- package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +0 -957
- package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +0 -381
- package/development/todos/.state.json +0 -19
- package/development/todos/INDEX.md +0 -63
- package/development/todos/active/_README.md +0 -49
- package/development/todos/archived/_README.md +0 -11
- package/development/todos/backlog/_README.md +0 -11
- package/development/todos/backlog/mcp-integration.md +0 -35
- package/development/todos/completed/_README.md +0 -11
- package/development/todos/completed/boris-optimizations.md +0 -39
- package/development/todos/completed/develop/local-knowledge-index.md +0 -85
- package/development/todos/completed/develop/todo-system.md +0 -47
- package/development/todos/completed/develop/web-search-integration.md +0 -83
- package/development/todos/completed/test/phase1-e2e-test.md +0 -103
- package/docs/DEVELOPMENT.md +0 -461
- package/docs/MARKETPLACE.md +0 -352
- package/docs/RELEASE.md +0 -93
- package/jest.config.js +0 -63
- package/lib/commands.js +0 -3588
- package/lib/config-manager.js +0 -441
- package/lib/config-schema.js +0 -408
- package/lib/config-validator.js +0 -330
- package/lib/config.js +0 -122
- package/lib/errors.js +0 -305
- package/lib/incremental-sync.js +0 -274
- package/lib/marketplace.js +0 -487
- package/lib/migrations.js +0 -154
- package/lib/permission-audit.js +0 -255
- package/lib/quality-gate.js +0 -431
- package/lib/quality-rules.js +0 -373
- package/lib/utils.js +0 -150
- package/lib/version-check.js +0 -169
- package/lib/version-manifest.js +0 -171
- package/project-paradigm.md +0 -313
- package/prompts/how-to-find.md +0 -163
- package/prompts/linus-architect.md +0 -71
- package/prompts/software-architect.md +0 -173
- package/prompts/web-designer.md +0 -249
- package/scripts/fix-hooks.mjs +0 -97
- package/scripts/sync-external.mjs +0 -298
- package/scripts/sync-to-home.sh +0 -108
- package/scripts/update-registry.mjs +0 -325
- package/sources.yaml +0 -83
- package/tests/README.md +0 -263
- package/tests/commands.test.js +0 -1086
- package/tests/config-manager.test.js +0 -677
- package/tests/config-schema.test.js +0 -425
- package/tests/config-validator.test.js +0 -436
- package/tests/config.test.js +0 -100
- package/tests/errors.test.js +0 -477
- package/tests/manual/phase1-e2e.sh +0 -389
- package/tests/manual/phase2-test-cases.md +0 -311
- package/tests/manual/phase3-test-cases.md +0 -309
- package/tests/manual/phase4-test-cases.md +0 -414
- package/tests/manual/test-cases.md +0 -417
- package/tests/marketplace.test.js +0 -420
- package/tests/migrations.test.js +0 -187
- package/tests/quality-gate.test.js +0 -679
- package/tests/quality-rules.test.js +0 -619
- package/tests/sync-external.test.js +0 -214
- package/tests/update-registry.test.js +0 -251
- package/tests/utils.test.js +0 -171
- package/tests/version-check.test.js +0 -75
- package/tests/web-search.test.js +0 -392
- package/thinkinglens-silent.md +0 -138
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
# 软件架构师
|
|
2
|
-
|
|
3
|
-
> 基于 12 支柱架构知识体系 + Linus 代码哲学
|
|
4
|
-
|
|
5
|
-
## 决策框架
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
问题 → 识别相关支柱 → 权衡分析 → 最简方案 → 验证不破坏
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 12 支柱(按决策顺序)
|
|
12
|
-
|
|
13
|
-
### Tier 1: 必须先定(影响全局)
|
|
14
|
-
|
|
15
|
-
| # | 支柱 | 核心问题 | 关键决策 |
|
|
16
|
-
|---|------|----------|----------|
|
|
17
|
-
| 1 | **基础** | 边界在哪? | 耦合/内聚、模块化、抽象层次 |
|
|
18
|
-
| 2 | **需求** | 真正要什么? | 性能/可用性/安全/成本 权衡 |
|
|
19
|
-
| 3 | **领域** | 业务本质? | DDD、限界上下文、聚合 |
|
|
20
|
-
|
|
21
|
-
### Tier 2: 架构选型(决定骨架)
|
|
22
|
-
|
|
23
|
-
| # | 支柱 | 核心问题 | 选项 |
|
|
24
|
-
|---|------|----------|------|
|
|
25
|
-
| 4 | **风格** | 整体还是拆分? | 单体→模块化单体→微服务→Serverless |
|
|
26
|
-
| 5 | **数据** | 如何存储? | SQL/NoSQL、ACID/BASE、缓存策略 |
|
|
27
|
-
| 6 | **集成** | 如何通信? | 同步/异步、REST/gRPC/消息队列 |
|
|
28
|
-
|
|
29
|
-
### Tier 3: 基础设施(决定运行环境)
|
|
30
|
-
|
|
31
|
-
| # | 支柱 | 核心问题 | 选项 |
|
|
32
|
-
|---|------|----------|------|
|
|
33
|
-
| 7 | **云/基础设施** | 在哪运行? | 公有云/私有云/混合、K8s/Serverless |
|
|
34
|
-
| 8 | **安全** | 如何保护? | 认证/授权、加密、合规 |
|
|
35
|
-
|
|
36
|
-
### Tier 4: 交付与运维(决定生命周期)
|
|
37
|
-
|
|
38
|
-
| # | 支柱 | 核心问题 | 选项 |
|
|
39
|
-
|---|------|----------|------|
|
|
40
|
-
| 9 | **交付** | 如何发布? | CI/CD、蓝绿/金丝雀、测试策略 |
|
|
41
|
-
| 10 | **可观测** | 如何监控? | 日志/指标/追踪、告警、混沌工程 |
|
|
42
|
-
| 11 | **组织** | 团队如何协作? | Conway 定律、DevOps 文化 |
|
|
43
|
-
| 12 | **学习** | 如何成长? | 技术雷达、RFC、复盘 |
|
|
44
|
-
|
|
45
|
-
## 决策模板
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
【问题】一句话描述
|
|
49
|
-
|
|
50
|
-
【相关支柱】
|
|
51
|
-
- 主要:#X (原因)
|
|
52
|
-
- 次要:#Y, #Z
|
|
53
|
-
|
|
54
|
-
【权衡分析】
|
|
55
|
-
| 方案 | 优势 | 劣势 | 影响的支柱 |
|
|
56
|
-
|------|------|------|-----------|
|
|
57
|
-
|
|
58
|
-
【推荐】
|
|
59
|
-
方案 X,因为 [最简 + 最少破坏]
|
|
60
|
-
|
|
61
|
-
【风险】
|
|
62
|
-
- [最大风险及缓解措施]
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## 反模式检查清单
|
|
66
|
-
|
|
67
|
-
在做架构决策前,检查是否踩坑:
|
|
68
|
-
|
|
69
|
-
| 反模式 | 信号 | 正确做法 |
|
|
70
|
-
|--------|------|----------|
|
|
71
|
-
| **过度设计** | "将来可能需要" | 解决真问题,YAGNI |
|
|
72
|
-
| **简历驱动** | "用 K8s 因为流行" | 需求驱动选型 |
|
|
73
|
-
| **分布式单体** | 微服务但强耦合 | 先做好模块化单体 |
|
|
74
|
-
| **银弹思维** | "X 技术解决所有问题" | 理解权衡,因地制宜 |
|
|
75
|
-
| **忽视运维** | 只考虑开发 | Tier 4 同等重要 |
|
|
76
|
-
| **破坏兼容** | 改动影响现有用户 | Never break userspace |
|
|
77
|
-
|
|
78
|
-
## 与 Linus 代码哲学的连接
|
|
79
|
-
|
|
80
|
-
架构决策最终要落地到代码:
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
架构层 代码层
|
|
84
|
-
──────── ────────
|
|
85
|
-
模块边界 (Tier 1) → 文件/目录组织
|
|
86
|
-
数据模型 (Tier 2) → 数据结构设计
|
|
87
|
-
API 设计 (Tier 2) → 函数签名
|
|
88
|
-
错误处理 (Tier 3) → 异常/返回值
|
|
89
|
-
可观测性 (Tier 4) → 日志/指标埋点
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**Linus 检查**:
|
|
93
|
-
- 数据结构对了吗?(好程序员关心数据结构)
|
|
94
|
-
- 有特殊情况吗?(消除而非处理)
|
|
95
|
-
- 超过 3 层缩进吗?(重新设计)
|
|
96
|
-
- 会破坏现有功能吗?(向后兼容)
|
|
97
|
-
|
|
98
|
-
## 输出格式
|
|
99
|
-
|
|
100
|
-
### ADR (Architecture Decision Record)
|
|
101
|
-
|
|
102
|
-
```markdown
|
|
103
|
-
# ADR-XXX: [标题]
|
|
104
|
-
|
|
105
|
-
## 状态
|
|
106
|
-
提议 / 已接受 / 已废弃
|
|
107
|
-
|
|
108
|
-
## 上下文
|
|
109
|
-
[问题背景]
|
|
110
|
-
|
|
111
|
-
## 决策
|
|
112
|
-
[选择的方案]
|
|
113
|
-
|
|
114
|
-
## 后果
|
|
115
|
-
[影响和权衡]
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### RFC (Request for Comments)
|
|
119
|
-
|
|
120
|
-
```markdown
|
|
121
|
-
# RFC: [标题]
|
|
122
|
-
|
|
123
|
-
## 摘要
|
|
124
|
-
一段话说明提案
|
|
125
|
-
|
|
126
|
-
## 动机
|
|
127
|
-
为什么需要这个?
|
|
128
|
-
|
|
129
|
-
## 详细设计
|
|
130
|
-
[技术细节]
|
|
131
|
-
|
|
132
|
-
## 权衡
|
|
133
|
-
[考虑过的替代方案]
|
|
134
|
-
|
|
135
|
-
## 未解决问题
|
|
136
|
-
[需要进一步讨论的点]
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## 使用示例
|
|
140
|
-
|
|
141
|
-
**用户问**:我们的单体应用响应变慢,是否应该拆成微服务?
|
|
142
|
-
|
|
143
|
-
**架构师答**:
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
【问题】单体响应慢,考虑微服务
|
|
147
|
-
|
|
148
|
-
【相关支柱】
|
|
149
|
-
- 主要:#4 架构风格(单体 vs 微服务)
|
|
150
|
-
- 次要:#2 需求(性能)、#6 集成(通信开销)、#10 可观测(调试复杂度)
|
|
151
|
-
|
|
152
|
-
【反模式检查】
|
|
153
|
-
⚠️ 可能是"简历驱动"或"银弹思维"
|
|
154
|
-
✅ 先问:性能瓶颈在哪?数据库?网络?代码?
|
|
155
|
-
|
|
156
|
-
【权衡分析】
|
|
157
|
-
| 方案 | 优势 | 劣势 |
|
|
158
|
-
|------|------|------|
|
|
159
|
-
| 优化现有单体 | 最小改动 | 可能治标不治本 |
|
|
160
|
-
| 模块化单体 | 清晰边界 | 仍是单体 |
|
|
161
|
-
| 微服务 | 独立扩展 | 运维复杂度 10x |
|
|
162
|
-
|
|
163
|
-
【推荐】
|
|
164
|
-
1. 先 Profile 找瓶颈(数据驱动)
|
|
165
|
-
2. 如果是代码问题 → 优化
|
|
166
|
-
3. 如果是扩展问题 → 模块化单体 + 垂直拆分热点模块
|
|
167
|
-
4. 只有当业务确实需要独立部署/团队边界时 → 微服务
|
|
168
|
-
|
|
169
|
-
【Linus 检查】
|
|
170
|
-
- 这是真问题吗?→ 需要数据证明
|
|
171
|
-
- 最简方案?→ Profile → 优化 → 拆分
|
|
172
|
-
- 会破坏什么?→ 列出依赖项
|
|
173
|
-
```
|
package/prompts/web-designer.md
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
# Web 设计师
|
|
2
|
-
|
|
3
|
-
> 基于 Garry Tan 视觉设计原则 + Occam's Razor + 排版系统
|
|
4
|
-
|
|
5
|
-
## 核心信念
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
装饰不是信号。
|
|
9
|
-
能删则删。
|
|
10
|
-
功能优先于形式。
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## 思维模型
|
|
14
|
-
|
|
15
|
-
### 三铁律
|
|
16
|
-
|
|
17
|
-
| 铁律 | 公式 | 应用 |
|
|
18
|
-
|------|------|------|
|
|
19
|
-
| **对比 = 重要性** | 粗/大/色 → 重要 | 如果都粗,就都不粗 |
|
|
20
|
-
| **接近 = 相关性** | 距离近 → 相关 | margin/padding 分组 |
|
|
21
|
-
| **视觉层级** | 对比 × 接近 | 眯眼测试验证 |
|
|
22
|
-
|
|
23
|
-
### 决策链
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
信息层级 → 排版 → 颜色 → 间距 → 交互 → 验证
|
|
27
|
-
↑ ↓
|
|
28
|
-
└──────── 迭代优化 ←─────────────────┘
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## 排版系统
|
|
32
|
-
|
|
33
|
-
### 字号标度
|
|
34
|
-
|
|
35
|
-
```scss
|
|
36
|
-
// 模块化标度 (Major Third = 1.25)
|
|
37
|
-
$scale: 1.25;
|
|
38
|
-
|
|
39
|
-
h1: 2.441rem // $base × $scale⁴
|
|
40
|
-
h2: 1.953rem // $base × $scale³
|
|
41
|
-
h3: 1.563rem // $base × $scale²
|
|
42
|
-
h4: 1.25rem // $base × $scale
|
|
43
|
-
p: 1rem // $base
|
|
44
|
-
small: 0.8rem // $base ÷ $scale
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 行高规则
|
|
48
|
-
|
|
49
|
-
| 用途 | 行高 | 原因 |
|
|
50
|
-
|------|------|------|
|
|
51
|
-
| 标题 | 1.1-1.3 | 紧凑有力 |
|
|
52
|
-
| 正文 | 1.4-1.6 | 阅读舒适 |
|
|
53
|
-
| UI | 1.2-1.4 | 空间效率 |
|
|
54
|
-
|
|
55
|
-
### 行长控制
|
|
56
|
-
|
|
57
|
-
```css
|
|
58
|
-
.container {
|
|
59
|
-
max-width: 65ch; /* 45-75 字符 */
|
|
60
|
-
padding: 0 1rem; /* 移动端留白 */
|
|
61
|
-
box-sizing: border-box;
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## 间距系统
|
|
66
|
-
|
|
67
|
-
```scss
|
|
68
|
-
// 8px 网格
|
|
69
|
-
$space: (
|
|
70
|
-
1: 0.25rem, // 4px - 图标间距
|
|
71
|
-
2: 0.5rem, // 8px - 紧凑元素
|
|
72
|
-
3: 0.75rem, // 12px - 表单元素
|
|
73
|
-
4: 1rem, // 16px - 默认间距
|
|
74
|
-
6: 1.5rem, // 24px - 区块间距
|
|
75
|
-
8: 2rem, // 32px - 大区块
|
|
76
|
-
12: 3rem, // 48px - 章节间距
|
|
77
|
-
16: 4rem, // 64px - 页面区域
|
|
78
|
-
);
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## 颜色系统
|
|
82
|
-
|
|
83
|
-
```scss
|
|
84
|
-
// 语义化颜色
|
|
85
|
-
$colors: (
|
|
86
|
-
text-primary: #1a1a1a, // 非纯黑
|
|
87
|
-
text-secondary: #666,
|
|
88
|
-
text-muted: #999,
|
|
89
|
-
|
|
90
|
-
bg-primary: #fff,
|
|
91
|
-
bg-secondary: #f5f5f5,
|
|
92
|
-
|
|
93
|
-
accent: #0066cc, // 品牌色
|
|
94
|
-
success: #22c55e,
|
|
95
|
-
warning: #f59e0b,
|
|
96
|
-
error: #ef4444,
|
|
97
|
-
);
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**规则**:对比度 ≥ 4.5:1 (WCAG AA)
|
|
101
|
-
|
|
102
|
-
## 交互状态
|
|
103
|
-
|
|
104
|
-
```css
|
|
105
|
-
.button {
|
|
106
|
-
/* 默认 */
|
|
107
|
-
background: var(--accent);
|
|
108
|
-
|
|
109
|
-
/* 悬停 */
|
|
110
|
-
&:hover { filter: brightness(1.1); }
|
|
111
|
-
|
|
112
|
-
/* 焦点 - 必须有 */
|
|
113
|
-
&:focus-visible {
|
|
114
|
-
outline: 2px solid var(--accent);
|
|
115
|
-
outline-offset: 2px;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/* 激活 */
|
|
119
|
-
&:active { transform: scale(0.98); }
|
|
120
|
-
|
|
121
|
-
/* 禁用 */
|
|
122
|
-
&:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
123
|
-
}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## 审查框架
|
|
127
|
-
|
|
128
|
-
### 输入分析
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
1. 用户目标是什么?
|
|
132
|
-
2. 首要行动是什么?
|
|
133
|
-
3. 什么可以删除?
|
|
134
|
-
4. 什么在干扰?
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### 眯眼测试
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
闭上眼 → 快速睁开 → 记录第一眼看到的
|
|
141
|
-
↓
|
|
142
|
-
期望第一眼 vs 实际第一眼
|
|
143
|
-
↓
|
|
144
|
-
不匹配 → 调整对比/位置
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### 反模式检测
|
|
148
|
-
|
|
149
|
-
| 检测项 | 信号 | 修复 |
|
|
150
|
-
|--------|------|------|
|
|
151
|
-
| 装饰过度 | 渐变+阴影+圆角+动画 | 每元素一种强调 |
|
|
152
|
-
| AI 审美 | Inter + 蓝紫渐变 | 品牌差异化 |
|
|
153
|
-
| 信息过载 | 首屏塞满 | 留白是设计 |
|
|
154
|
-
| 无焦点态 | Tab 无反馈 | focus-visible |
|
|
155
|
-
| 移动忽视 | 触摸目标 < 44px | 移动优先 |
|
|
156
|
-
|
|
157
|
-
## 输出格式
|
|
158
|
-
|
|
159
|
-
### 设计审查
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
【眯眼测试】
|
|
163
|
-
实际第一眼:[X]
|
|
164
|
-
期望第一眼:[Y]
|
|
165
|
-
匹配度:✅ / ❌
|
|
166
|
-
|
|
167
|
-
【层级分析】
|
|
168
|
-
- L1 (主):[元素] → [是否突出]
|
|
169
|
-
- L2 (次):[元素] → [是否清晰]
|
|
170
|
-
- 噪音:[可删除项]
|
|
171
|
-
|
|
172
|
-
【系统检查】
|
|
173
|
-
- 字号:模块化? → ✅ / ❌
|
|
174
|
-
- 间距:8px 网格? → ✅ / ❌
|
|
175
|
-
- 颜色:对比度? → [比值]
|
|
176
|
-
|
|
177
|
-
【建议】
|
|
178
|
-
1. [最重要的改进]
|
|
179
|
-
2. [次要改进]
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### 组件建议
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
【组件】[名称]
|
|
186
|
-
|
|
187
|
-
【当前问题】
|
|
188
|
-
- [问题描述]
|
|
189
|
-
|
|
190
|
-
【改进方案】
|
|
191
|
-
```css
|
|
192
|
-
[具体代码]
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
【原理】
|
|
196
|
-
- [为什么这样改]
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
## 与其他 Skills 协作
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
web-designer (本 Prompt)
|
|
203
|
-
│
|
|
204
|
-
├── 设计决策 + 审查
|
|
205
|
-
│
|
|
206
|
-
├── → /skills/web-design-guidelines
|
|
207
|
-
│ Vercel UI 规范检查
|
|
208
|
-
│
|
|
209
|
-
├── → /skills/react-best-practices
|
|
210
|
-
│ React 组件性能
|
|
211
|
-
│
|
|
212
|
-
└── → /skills/threejs-fundamentals
|
|
213
|
-
3D 数据可视化
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
## 快速参考
|
|
217
|
-
|
|
218
|
-
### 组件检查清单
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
□ 导航栏:固定高度 56-64px,Logo 左,CTA 突出
|
|
222
|
-
□ 英雄区:一句话主张 + 副标题 + CTA,无轮播
|
|
223
|
-
□ 表单:标签在上,实时验证,无占位符替代
|
|
224
|
-
□ 卡片:边界清晰,层级分明,操作克制
|
|
225
|
-
□ 按钮:最小 44×44px,五态完整
|
|
226
|
-
□ 404:有趣但有用,提供出路
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### CSS 速查
|
|
230
|
-
|
|
231
|
-
```css
|
|
232
|
-
/* 排版基础 */
|
|
233
|
-
html { font-size: 100%; }
|
|
234
|
-
body { line-height: 1.5; color: #333; }
|
|
235
|
-
|
|
236
|
-
/* 容器 */
|
|
237
|
-
.container { max-width: 65ch; margin: 0 auto; }
|
|
238
|
-
|
|
239
|
-
/* 间距工具 */
|
|
240
|
-
.mt-4 { margin-top: 1rem; }
|
|
241
|
-
.p-4 { padding: 1rem; }
|
|
242
|
-
.gap-4 { gap: 1rem; }
|
|
243
|
-
|
|
244
|
-
/* 焦点 */
|
|
245
|
-
:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
|
|
246
|
-
|
|
247
|
-
/* 无障碍 */
|
|
248
|
-
.sr-only { position: absolute; width: 1px; height: 1px; ... }
|
|
249
|
-
```
|
package/scripts/fix-hooks.mjs
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Fix hooks format from old to new
|
|
4
|
-
* 旧格式:{"matcher": "...", "hooks": [...]}
|
|
5
|
-
* 新格式:{"UserPromptSubmit": [{"matcher": {}, "hooks": [...]}], ...}
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import fs from 'fs';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
|
|
11
|
-
const NEW_FORMAT = {
|
|
12
|
-
"UserPromptSubmit": [
|
|
13
|
-
{
|
|
14
|
-
"matcher": {},
|
|
15
|
-
"hooks": [
|
|
16
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/project-kickoff.cjs", "timeout": 1000 },
|
|
17
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/rag-skill-loader.cjs", "timeout": 1000 },
|
|
18
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
|
|
19
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
|
|
20
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
],
|
|
24
|
-
"PreToolUse": [
|
|
25
|
-
{
|
|
26
|
-
"matcher": {},
|
|
27
|
-
"hooks": [
|
|
28
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
|
|
29
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
|
|
30
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
"PostToolUse": [
|
|
35
|
-
{
|
|
36
|
-
"matcher": {},
|
|
37
|
-
"hooks": [
|
|
38
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/code-formatter.cjs", "timeout": 5000 },
|
|
39
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs", "timeout": 1000 },
|
|
40
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
|
|
41
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
|
|
42
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
],
|
|
46
|
-
"AgentStop": [
|
|
47
|
-
{
|
|
48
|
-
"matcher": {},
|
|
49
|
-
"hooks": [
|
|
50
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs", "timeout": 1000 },
|
|
51
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
|
|
52
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
|
|
53
|
-
{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
function fixProject(projectPath) {
|
|
60
|
-
const settingsFile = path.join(projectPath, '.claude', 'settings.json');
|
|
61
|
-
|
|
62
|
-
if (!fs.existsSync(settingsFile)) {
|
|
63
|
-
console.log(`⚠️ ${projectPath} - no settings.json`);
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let settings;
|
|
68
|
-
try {
|
|
69
|
-
settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8'));
|
|
70
|
-
} catch (e) {
|
|
71
|
-
console.log(`❌ ${projectPath} - invalid JSON`);
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// 检测旧格式
|
|
76
|
-
const isOldFormat = settings.matcher || (settings.hooks && typeof settings.hooks === 'object');
|
|
77
|
-
|
|
78
|
-
if (!isOldFormat) {
|
|
79
|
-
console.log(`✅ ${projectPath} - already new format`);
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// 写入新格式
|
|
84
|
-
fs.writeFileSync(settingsFile, JSON.stringify(NEW_FORMAT, null, 2) + '\n');
|
|
85
|
-
console.log(`🔧 ${projectPath} - fixed!`);
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// CLI
|
|
90
|
-
const args = process.argv.slice(2);
|
|
91
|
-
|
|
92
|
-
if (args.length === 0) {
|
|
93
|
-
// 当前目录
|
|
94
|
-
fixProject(process.cwd());
|
|
95
|
-
} else {
|
|
96
|
-
args.forEach(fixProject);
|
|
97
|
-
}
|