@tinkcarlos/skillora 0.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/.claude/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# 多技能协作协议 (Multi-Skill Orchestration Protocol)
|
|
2
|
+
|
|
3
|
+
本文档定义了代码审查过程中何时、如何调用其他技能的规范来进行专业审查。
|
|
4
|
+
|
|
5
|
+
## 核心原则
|
|
6
|
+
|
|
7
|
+
**代码审查需要多领域专业知识。** 审查涉及前端、后端、数据库、安全、性能等多个领域,单凭通用规则无法覆盖所有专业细节。本协议确保在审查时引用正确的专业技能规范。
|
|
8
|
+
|
|
9
|
+
## 技能规范路由表 (Skill Standards Router)
|
|
10
|
+
|
|
11
|
+
### 按代码类型 → 引用对应技能规范
|
|
12
|
+
|
|
13
|
+
| 代码类型 | 引用技能规范 | 审查重点 |
|
|
14
|
+
|----------|-------------|----------|
|
|
15
|
+
| **前端 UI/组件** | `frontend-design` | 组件设计、状态管理、样式规范 |
|
|
16
|
+
| **前端状态管理** | `react-state-management` | Redux/Zustand/Jotai 模式 |
|
|
17
|
+
| **React 组件** | `react-state-management` + `tailwind-design-system` | Hooks、生命周期、样式 |
|
|
18
|
+
| **Next.js 代码** | `nextjs-app-router-patterns` | SSR/SSG、RSC、路由 |
|
|
19
|
+
| **Python 后端** | `async-python-patterns` + `fastapi-templates` | 异步模式、API 设计 |
|
|
20
|
+
| **Node.js 后端** | `nodejs-backend-patterns` + `typescript-advanced-types` | 中间件、类型安全 |
|
|
21
|
+
| **API 设计** | `api-design-principles` | RESTful/GraphQL 规范、契约 |
|
|
22
|
+
| **数据库变更** | `database-migration` + `postgresql-table-design` | 迁移安全、索引设计 |
|
|
23
|
+
| **SQL 查询** | `sql-optimization-patterns` | 性能、N+1、索引使用 |
|
|
24
|
+
| **认证授权** | `auth-implementation-patterns` | JWT/OAuth2/RBAC |
|
|
25
|
+
| **AI/LLM 代码** | `langchain-architecture` + `prompt-engineering-patterns` | Agent 设计、Prompt 优化 |
|
|
26
|
+
| **RAG 实现** | `rag-implementation` + `embedding-strategies` | 检索策略、分块 |
|
|
27
|
+
| **微服务** | `microservices-patterns` + `distributed-tracing` | 服务边界、追踪 |
|
|
28
|
+
| **异步/并发** | `async-python-patterns` / `go-concurrency-patterns` | 竞态、锁、异步模式 |
|
|
29
|
+
| **测试代码** | `python-testing-patterns` / `javascript-testing-patterns` | 测试模式、覆盖率 |
|
|
30
|
+
|
|
31
|
+
### 强制引用规则
|
|
32
|
+
|
|
33
|
+
| 触发条件 | 必须引用的技能规范 | 审查要点 |
|
|
34
|
+
|----------|-------------------|----------|
|
|
35
|
+
| 包含 React/Vue 组件 | `frontend-design` | 组件设计是否符合规范 |
|
|
36
|
+
| 包含 API 端点 | `api-design-principles` | API 设计是否符合 REST/GraphQL 规范 |
|
|
37
|
+
| 包含 ORM 模型变更 | `database-migration` | 迁移是否安全、是否有回滚策略 |
|
|
38
|
+
| 包含 SQL 查询 | `sql-optimization-patterns` | 是否有 N+1、索引使用是否正确 |
|
|
39
|
+
| 包含认证/授权逻辑 | `auth-implementation-patterns` | 安全实现是否正确 |
|
|
40
|
+
| 包含异步/并发代码 | `async-python-patterns` / 对应语言技能 | 异步模式是否正确 |
|
|
41
|
+
| 包含 LLM/AI 代码 | `langchain-architecture` | Agent 设计是否合理 |
|
|
42
|
+
|
|
43
|
+
## 审查流程中的技能引用
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
代码审查开始
|
|
47
|
+
│
|
|
48
|
+
▼
|
|
49
|
+
┌──────────────────────────────────────────────────────┐
|
|
50
|
+
│ Phase 0: 识别代码类型 + 选择技能规范 │
|
|
51
|
+
│ ─────────────────────────────────────────────────────│
|
|
52
|
+
│ 1. 分析变更文件,识别代码类型 │
|
|
53
|
+
│ 2. 查询技能规范路由表 │
|
|
54
|
+
│ 3. 加载对应技能的规范作为审查标准 │
|
|
55
|
+
└──────────────────────────────────────────────────────┘
|
|
56
|
+
│
|
|
57
|
+
▼
|
|
58
|
+
┌──────────────────────────────────────────────────────┐
|
|
59
|
+
│ Phase 1-6: 按技能规范审查 │
|
|
60
|
+
│ ─────────────────────────────────────────────────────│
|
|
61
|
+
│ 前端代码 → 按 frontend-design 规范审查 │
|
|
62
|
+
│ 后端代码 → 按 api-design-principles 规范审查 │
|
|
63
|
+
│ 数据库 → 按 database-migration 规范审查 │
|
|
64
|
+
│ 安全 → 按 auth-implementation-patterns 规范审查 │
|
|
65
|
+
└──────────────────────────────────────────────────────┘
|
|
66
|
+
│
|
|
67
|
+
▼
|
|
68
|
+
┌──────────────────────────────────────────────────────┐
|
|
69
|
+
│ Phase 7: 输出审查报告 + 技能规范引用报告 │
|
|
70
|
+
│ ─────────────────────────────────────────────────────│
|
|
71
|
+
│ 记录引用了哪些技能规范 │
|
|
72
|
+
│ 标注哪些发现来自哪个技能规范 │
|
|
73
|
+
└──────────────────────────────────────────────────────┘
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 技能规范审查检查清单
|
|
77
|
+
|
|
78
|
+
### 前端代码审查 (引用 `frontend-design`)
|
|
79
|
+
|
|
80
|
+
| 检查项 | 来源技能 | P 级别 |
|
|
81
|
+
|--------|----------|--------|
|
|
82
|
+
| 组件是否遵循单一职责 | `frontend-design` | P2 |
|
|
83
|
+
| 状态管理是否合理 | `react-state-management` | P1 |
|
|
84
|
+
| 是否有适当的 loading/error/empty 状态 | `frontend-design` | P1 |
|
|
85
|
+
| 样式是否遵循设计系统 | `tailwind-design-system` | P2 |
|
|
86
|
+
| 是否有无障碍支持 | `frontend-design` | P2 |
|
|
87
|
+
|
|
88
|
+
### 后端代码审查 (引用 `api-design-principles`)
|
|
89
|
+
|
|
90
|
+
| 检查项 | 来源技能 | P 级别 |
|
|
91
|
+
|--------|----------|--------|
|
|
92
|
+
| API 路径是否符合 RESTful 规范 | `api-design-principles` | P2 |
|
|
93
|
+
| 是否有适当的输入验证 | `api-design-principles` | P1 |
|
|
94
|
+
| 错误响应格式是否一致 | `api-design-principles` | P2 |
|
|
95
|
+
| 是否有适当的认证授权 | `auth-implementation-patterns` | P0 |
|
|
96
|
+
|
|
97
|
+
### 数据库代码审查 (引用 `database-migration`)
|
|
98
|
+
|
|
99
|
+
| 检查项 | 来源技能 | P 级别 |
|
|
100
|
+
|--------|----------|--------|
|
|
101
|
+
| 迁移是否可回滚 | `database-migration` | P0 |
|
|
102
|
+
| 是否有数据备份策略 | `database-migration` | P1 |
|
|
103
|
+
| 索引设计是否合理 | `postgresql-table-design` | P1 |
|
|
104
|
+
| 是否有 N+1 查询问题 | `sql-optimization-patterns` | P1 |
|
|
105
|
+
|
|
106
|
+
### 异步/并发代码审查 (引用对应语言技能)
|
|
107
|
+
|
|
108
|
+
| 检查项 | 来源技能 | P 级别 |
|
|
109
|
+
|--------|----------|--------|
|
|
110
|
+
| 是否正确使用 async/await | `async-python-patterns` | P1 |
|
|
111
|
+
| 是否有竞态条件 | `async-python-patterns` | P0 |
|
|
112
|
+
| 资源是否正确释放 | `async-python-patterns` | P1 |
|
|
113
|
+
| 超时是否合理设置 | `async-python-patterns` | P1 |
|
|
114
|
+
|
|
115
|
+
## 技能协作输出模板
|
|
116
|
+
|
|
117
|
+
审查报告必须包含技能规范引用部分:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
## 🔄 技能规范引用报告
|
|
121
|
+
|
|
122
|
+
### 引用的技能规范
|
|
123
|
+
| 技能规范 | 引用原因 | 应用于 |
|
|
124
|
+
|----------|----------|--------|
|
|
125
|
+
| `frontend-design` | 包含 React 组件 | Header.tsx, Modal.tsx |
|
|
126
|
+
| `api-design-principles` | 包含 API 端点 | routes/users.py |
|
|
127
|
+
| `database-migration` | 包含迁移文件 | alembic/versions/*.py |
|
|
128
|
+
|
|
129
|
+
### 基于技能规范的发现
|
|
130
|
+
| 发现 | 来源技能规范 | 违反的规范 |
|
|
131
|
+
|------|-------------|-----------|
|
|
132
|
+
| 缺少 loading 状态 | `frontend-design` | "必须有 loading/error/empty 状态" |
|
|
133
|
+
| API 路径不规范 | `api-design-principles` | "使用复数名词,避免动词" |
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Definition of Done
|
|
137
|
+
|
|
138
|
+
审查完成前,确认:
|
|
139
|
+
|
|
140
|
+
- [ ] 已识别所有代码类型并查询技能规范路由表
|
|
141
|
+
- [ ] 已加载对应技能规范作为审查标准
|
|
142
|
+
- [ ] 审查发现已标注来源技能规范
|
|
143
|
+
- [ ] 技能规范引用报告已输出
|
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
# UI/UX Design Review Criteria
|
|
2
|
+
|
|
3
|
+
Comprehensive visual design and user experience review guidelines for frontend code review.
|
|
4
|
+
|
|
5
|
+
## Visual Design Review
|
|
6
|
+
|
|
7
|
+
### Typography Issues
|
|
8
|
+
|
|
9
|
+
| Issue | What to Look For | Fix |
|
|
10
|
+
|-------|------------------|-----|
|
|
11
|
+
| **Too many fonts** | >3 font families | Limit to 2-3 max |
|
|
12
|
+
| **Inconsistent sizes** | Random px values | Use type scale (14, 16, 18, 20, 24, 30, 36, 48) |
|
|
13
|
+
| **Poor readability** | Body text <14px | Min 16px for body |
|
|
14
|
+
| **Line height** | Tight or loose | 1.4-1.6 for body, 1.2-1.3 for headings |
|
|
15
|
+
| **Line length** | >80 characters | 50-75 characters optimal |
|
|
16
|
+
| **Font weight contrast** | No hierarchy | Use 400 for body, 500/600/700 for headings |
|
|
17
|
+
|
|
18
|
+
```css
|
|
19
|
+
/* 🚫 Typography chaos */
|
|
20
|
+
.title { font-size: 23px; font-weight: 500; }
|
|
21
|
+
.subtitle { font-size: 17px; font-weight: 400; }
|
|
22
|
+
.body { font-size: 14px; line-height: 1.2; }
|
|
23
|
+
|
|
24
|
+
/* ✅ Systematic typography */
|
|
25
|
+
:root {
|
|
26
|
+
--font-size-sm: 0.875rem; /* 14px */
|
|
27
|
+
--font-size-base: 1rem; /* 16px */
|
|
28
|
+
--font-size-lg: 1.125rem; /* 18px */
|
|
29
|
+
--font-size-xl: 1.25rem; /* 20px */
|
|
30
|
+
--font-size-2xl: 1.5rem; /* 24px */
|
|
31
|
+
--font-size-3xl: 1.875rem; /* 30px */
|
|
32
|
+
|
|
33
|
+
--line-height-tight: 1.25;
|
|
34
|
+
--line-height-normal: 1.5;
|
|
35
|
+
--line-height-relaxed: 1.75;
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Color Issues
|
|
40
|
+
|
|
41
|
+
| Issue | What to Look For | Fix |
|
|
42
|
+
|-------|------------------|-----|
|
|
43
|
+
| **Inconsistent palette** | Random hex values | Define color tokens |
|
|
44
|
+
| **Poor contrast** | Text hard to read | WCAG AA: 4.5:1 for text |
|
|
45
|
+
| **Too many colors** | Rainbow UI | 1 primary + 1-2 accents + neutrals |
|
|
46
|
+
| **Semantic confusion** | Red for success | Use consistent semantic colors |
|
|
47
|
+
| **No dark mode support** | Hardcoded colors | Use CSS variables |
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
/* 🚫 Color chaos */
|
|
51
|
+
.button { background: #3b82f6; }
|
|
52
|
+
.link { color: #2563eb; }
|
|
53
|
+
.card { border-color: #60a5fa; }
|
|
54
|
+
/* Three different blues! */
|
|
55
|
+
|
|
56
|
+
/* ✅ Systematic colors */
|
|
57
|
+
:root {
|
|
58
|
+
--color-primary-50: #eff6ff;
|
|
59
|
+
--color-primary-100: #dbeafe;
|
|
60
|
+
--color-primary-500: #3b82f6;
|
|
61
|
+
--color-primary-600: #2563eb;
|
|
62
|
+
--color-primary-700: #1d4ed8;
|
|
63
|
+
|
|
64
|
+
--color-success: #10b981;
|
|
65
|
+
--color-warning: #f59e0b;
|
|
66
|
+
--color-error: #ef4444;
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Spacing Issues
|
|
71
|
+
|
|
72
|
+
| Issue | What to Look For | Fix |
|
|
73
|
+
|-------|------------------|-----|
|
|
74
|
+
| **Inconsistent spacing** | Random px values | Use 4/8px grid |
|
|
75
|
+
| **Cramped UI** | Elements too close | Min 8px between elements |
|
|
76
|
+
| **Unbalanced whitespace** | Uneven padding | Consistent inner padding |
|
|
77
|
+
| **No breathing room** | Dense content | Adequate margins between sections |
|
|
78
|
+
|
|
79
|
+
```css
|
|
80
|
+
/* 🚫 Random spacing */
|
|
81
|
+
.card { padding: 17px; margin-bottom: 23px; }
|
|
82
|
+
.button { padding: 9px 14px; margin-right: 7px; }
|
|
83
|
+
|
|
84
|
+
/* ✅ Spacing scale (4px base) */
|
|
85
|
+
:root {
|
|
86
|
+
--space-1: 0.25rem; /* 4px */
|
|
87
|
+
--space-2: 0.5rem; /* 8px */
|
|
88
|
+
--space-3: 0.75rem; /* 12px */
|
|
89
|
+
--space-4: 1rem; /* 16px */
|
|
90
|
+
--space-6: 1.5rem; /* 24px */
|
|
91
|
+
--space-8: 2rem; /* 32px */
|
|
92
|
+
--space-12: 3rem; /* 48px */
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.card { padding: var(--space-6); margin-bottom: var(--space-6); }
|
|
96
|
+
.button { padding: var(--space-2) var(--space-4); }
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Visual Hierarchy
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
Check for clear hierarchy:
|
|
103
|
+
1. What's most important? (Should be most prominent)
|
|
104
|
+
2. What's the reading order? (Should flow naturally)
|
|
105
|
+
3. Are related items grouped?
|
|
106
|
+
4. Is there clear separation between sections?
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Hierarchy Tools**:
|
|
110
|
+
- Size (larger = more important)
|
|
111
|
+
- Weight (bolder = more important)
|
|
112
|
+
- Color (brighter/saturated = more attention)
|
|
113
|
+
- Position (top/left = seen first)
|
|
114
|
+
- Whitespace (more space around = more emphasis)
|
|
115
|
+
|
|
116
|
+
## Layout Review
|
|
117
|
+
|
|
118
|
+
### Alignment Issues
|
|
119
|
+
|
|
120
|
+
```css
|
|
121
|
+
/* 🚫 Inconsistent alignment */
|
|
122
|
+
.form-group { text-align: left; }
|
|
123
|
+
.form-group:nth-child(2) { text-align: center; }
|
|
124
|
+
/* Why different? */
|
|
125
|
+
|
|
126
|
+
/* 🚫 Jagged edges */
|
|
127
|
+
.card { margin-left: 20px; }
|
|
128
|
+
.sidebar { padding-left: 24px; }
|
|
129
|
+
/* Items don't line up */
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Check**:
|
|
133
|
+
- [ ] All text left-aligned (except centered headings/CTAs)
|
|
134
|
+
- [ ] Grid items align to common grid
|
|
135
|
+
- [ ] Buttons in groups are same width or auto-sized consistently
|
|
136
|
+
- [ ] Form labels align consistently (top/left)
|
|
137
|
+
|
|
138
|
+
### Container Issues
|
|
139
|
+
|
|
140
|
+
```css
|
|
141
|
+
/* 🚫 Full-width content (hard to read) */
|
|
142
|
+
.content { width: 100%; }
|
|
143
|
+
/* 200+ character lines on wide screens */
|
|
144
|
+
|
|
145
|
+
/* ✅ Max-width for readability */
|
|
146
|
+
.content {
|
|
147
|
+
max-width: 65ch; /* ~65 characters */
|
|
148
|
+
margin: 0 auto;
|
|
149
|
+
padding: 0 var(--space-4);
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```css
|
|
154
|
+
/* 🚫 Fixed width breaking mobile */
|
|
155
|
+
.card { width: 400px; }
|
|
156
|
+
/* Overflows on mobile */
|
|
157
|
+
|
|
158
|
+
/* ✅ Responsive constraints */
|
|
159
|
+
.card {
|
|
160
|
+
width: 100%;
|
|
161
|
+
max-width: 400px;
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## User Experience Review
|
|
166
|
+
|
|
167
|
+
### Loading States
|
|
168
|
+
|
|
169
|
+
| Scenario | Bad UX | Good UX |
|
|
170
|
+
|----------|--------|---------|
|
|
171
|
+
| **Button submit** | Nothing happens | Button disabled + spinner |
|
|
172
|
+
| **Page load** | Blank page | Skeleton screen |
|
|
173
|
+
| **Data fetch** | Spinner forever | Skeleton + timeout message |
|
|
174
|
+
| **Image load** | Layout shift | Placeholder with aspect ratio |
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
/* 🚫 No loading state */
|
|
178
|
+
<button onClick={submit}>Submit</button>
|
|
179
|
+
|
|
180
|
+
/* ✅ Loading state */
|
|
181
|
+
<button onClick={submit} disabled={isLoading}>
|
|
182
|
+
{isLoading ? <Spinner /> : 'Submit'}
|
|
183
|
+
</button>
|
|
184
|
+
|
|
185
|
+
/* 🚫 Spinner only */
|
|
186
|
+
{isLoading && <Spinner />}
|
|
187
|
+
|
|
188
|
+
/* ✅ Skeleton for content */
|
|
189
|
+
{isLoading ? (
|
|
190
|
+
<div className="skeleton skeleton-text" />
|
|
191
|
+
) : (
|
|
192
|
+
<p>{content}</p>
|
|
193
|
+
)}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Error States
|
|
197
|
+
|
|
198
|
+
| Error Type | What to Show |
|
|
199
|
+
|------------|--------------|
|
|
200
|
+
| **Form validation** | Inline error under field + red border |
|
|
201
|
+
| **API error** | Toast/banner with retry option |
|
|
202
|
+
| **Not found** | Helpful message + navigation options |
|
|
203
|
+
| **Permission denied** | Explain why + what to do |
|
|
204
|
+
| **Network error** | Offline indicator + retry |
|
|
205
|
+
|
|
206
|
+
```tsx
|
|
207
|
+
/* 🚫 Generic error */
|
|
208
|
+
<div className="error">Error occurred</div>
|
|
209
|
+
|
|
210
|
+
/* ✅ Helpful error */
|
|
211
|
+
<div className="error" role="alert">
|
|
212
|
+
<strong>Unable to save changes</strong>
|
|
213
|
+
<p>Your session may have expired. Please refresh the page and try again.</p>
|
|
214
|
+
<button onClick={retry}>Retry</button>
|
|
215
|
+
</div>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Empty States
|
|
219
|
+
|
|
220
|
+
```tsx
|
|
221
|
+
/* 🚫 Blank space */
|
|
222
|
+
{items.length === 0 && null}
|
|
223
|
+
|
|
224
|
+
/* ✅ Helpful empty state */
|
|
225
|
+
{items.length === 0 && (
|
|
226
|
+
<div className="empty-state">
|
|
227
|
+
<img src="/empty-inbox.svg" alt="" />
|
|
228
|
+
<h3>No messages yet</h3>
|
|
229
|
+
<p>When you receive messages, they'll appear here.</p>
|
|
230
|
+
<button>Compose message</button>
|
|
231
|
+
</div>
|
|
232
|
+
)}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Feedback & Confirmation
|
|
236
|
+
|
|
237
|
+
| Action | Required Feedback |
|
|
238
|
+
|--------|-------------------|
|
|
239
|
+
| **Form submit** | Success toast + clear form or redirect |
|
|
240
|
+
| **Delete** | Confirmation dialog + success message |
|
|
241
|
+
| **Copy** | "Copied!" tooltip |
|
|
242
|
+
| **Save** | Autosave indicator or save confirmation |
|
|
243
|
+
| **Error** | Error message + how to fix |
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
/* 🚫 No feedback on delete */
|
|
247
|
+
<button onClick={() => deleteItem(id)}>Delete</button>
|
|
248
|
+
|
|
249
|
+
/* ✅ Confirmation + feedback */
|
|
250
|
+
<button onClick={() => setShowConfirm(true)}>Delete</button>
|
|
251
|
+
{showConfirm && (
|
|
252
|
+
<Dialog>
|
|
253
|
+
<p>Delete this item? This action cannot be undone.</p>
|
|
254
|
+
<button onClick={() => setShowConfirm(false)}>Cancel</button>
|
|
255
|
+
<button onClick={async () => {
|
|
256
|
+
await deleteItem(id);
|
|
257
|
+
toast.success('Item deleted');
|
|
258
|
+
setShowConfirm(false);
|
|
259
|
+
}}>Delete</button>
|
|
260
|
+
</Dialog>
|
|
261
|
+
)}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Interaction Design
|
|
265
|
+
|
|
266
|
+
### Button States
|
|
267
|
+
|
|
268
|
+
Every button needs these states:
|
|
269
|
+
- **Default**: Normal appearance
|
|
270
|
+
- **Hover**: Visual change on mouse over
|
|
271
|
+
- **Focus**: Visible focus ring (keyboard nav)
|
|
272
|
+
- **Active**: Pressed state
|
|
273
|
+
- **Disabled**: Grayed out + cursor not-allowed
|
|
274
|
+
- **Loading**: Spinner + disabled
|
|
275
|
+
|
|
276
|
+
```css
|
|
277
|
+
.button {
|
|
278
|
+
/* Default */
|
|
279
|
+
background: var(--color-primary-500);
|
|
280
|
+
cursor: pointer;
|
|
281
|
+
|
|
282
|
+
/* Focus (required for a11y) */
|
|
283
|
+
&:focus-visible {
|
|
284
|
+
outline: 2px solid var(--color-primary-500);
|
|
285
|
+
outline-offset: 2px;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/* Hover */
|
|
289
|
+
&:hover:not(:disabled) {
|
|
290
|
+
background: var(--color-primary-600);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/* Active */
|
|
294
|
+
&:active:not(:disabled) {
|
|
295
|
+
transform: scale(0.98);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* Disabled */
|
|
299
|
+
&:disabled {
|
|
300
|
+
opacity: 0.5;
|
|
301
|
+
cursor: not-allowed;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Form UX
|
|
307
|
+
|
|
308
|
+
| Issue | Bad | Good |
|
|
309
|
+
|-------|-----|------|
|
|
310
|
+
| **Label visibility** | Placeholder only | Visible label + placeholder |
|
|
311
|
+
| **Error timing** | On submit only | On blur + on submit |
|
|
312
|
+
| **Required indicator** | None | Asterisk or "(required)" |
|
|
313
|
+
| **Password** | No visibility toggle | Toggle show/hide |
|
|
314
|
+
| **Long form** | Single page | Multi-step with progress |
|
|
315
|
+
|
|
316
|
+
```tsx
|
|
317
|
+
/* 🚫 Placeholder as label */
|
|
318
|
+
<input placeholder="Email" />
|
|
319
|
+
|
|
320
|
+
/* ✅ Proper label */
|
|
321
|
+
<label htmlFor="email">Email *</label>
|
|
322
|
+
<input
|
|
323
|
+
id="email"
|
|
324
|
+
placeholder="you@example.com"
|
|
325
|
+
aria-describedby="email-error"
|
|
326
|
+
/>
|
|
327
|
+
{error && <span id="email-error" className="error">{error}</span>}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Animation & Motion
|
|
331
|
+
|
|
332
|
+
| Principle | Implementation |
|
|
333
|
+
|-----------|----------------|
|
|
334
|
+
| **Purpose** | Animation should convey meaning |
|
|
335
|
+
| **Duration** | 150-300ms for micro-interactions |
|
|
336
|
+
| **Easing** | ease-out for enter, ease-in for exit |
|
|
337
|
+
| **Reduced motion** | Respect prefers-reduced-motion |
|
|
338
|
+
|
|
339
|
+
```css
|
|
340
|
+
/* ✅ Meaningful transition */
|
|
341
|
+
.modal {
|
|
342
|
+
transform: scale(0.95);
|
|
343
|
+
opacity: 0;
|
|
344
|
+
transition: transform 200ms ease-out, opacity 200ms ease-out;
|
|
345
|
+
}
|
|
346
|
+
.modal.open {
|
|
347
|
+
transform: scale(1);
|
|
348
|
+
opacity: 1;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/* ✅ Respect user preference */
|
|
352
|
+
@media (prefers-reduced-motion: reduce) {
|
|
353
|
+
.modal {
|
|
354
|
+
transition: none;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## Dark Mode Review
|
|
360
|
+
|
|
361
|
+
### Common Issues
|
|
362
|
+
|
|
363
|
+
```css
|
|
364
|
+
/* 🚫 Hardcoded colors */
|
|
365
|
+
.card { background: white; color: #333; }
|
|
366
|
+
/* Doesn't adapt to dark mode */
|
|
367
|
+
|
|
368
|
+
/* ✅ CSS variables */
|
|
369
|
+
:root {
|
|
370
|
+
--bg-primary: #ffffff;
|
|
371
|
+
--text-primary: #1a1a1a;
|
|
372
|
+
}
|
|
373
|
+
@media (prefers-color-scheme: dark) {
|
|
374
|
+
:root {
|
|
375
|
+
--bg-primary: #1a1a1a;
|
|
376
|
+
--text-primary: #ffffff;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
.card { background: var(--bg-primary); color: var(--text-primary); }
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
```css
|
|
383
|
+
/* 🚫 Pure black background */
|
|
384
|
+
body { background: #000000; }
|
|
385
|
+
/* Too harsh, causes eye strain */
|
|
386
|
+
|
|
387
|
+
/* ✅ Soft dark */
|
|
388
|
+
body { background: #1a1a1a; } /* Or #121212 */
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
```css
|
|
392
|
+
/* 🚫 Same shadows in dark mode */
|
|
393
|
+
.card { box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
|
394
|
+
/* Invisible in dark mode */
|
|
395
|
+
|
|
396
|
+
/* ✅ Adaptive shadows */
|
|
397
|
+
.card {
|
|
398
|
+
box-shadow: 0 2px 4px var(--shadow-color);
|
|
399
|
+
}
|
|
400
|
+
:root { --shadow-color: rgba(0,0,0,0.1); }
|
|
401
|
+
:root[data-theme="dark"] { --shadow-color: rgba(0,0,0,0.4); }
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
## Mobile UX Checklist
|
|
405
|
+
|
|
406
|
+
- [ ] **Touch targets**: Min 44x44px
|
|
407
|
+
- [ ] **Thumb zones**: Important actions within easy reach
|
|
408
|
+
- [ ] **No hover-dependent UI**: All hover interactions have tap alternatives
|
|
409
|
+
- [ ] **Scrolling**: Smooth, no janky scroll
|
|
410
|
+
- [ ] **Forms**: Appropriate keyboard types (email, tel, number)
|
|
411
|
+
- [ ] **Navigation**: Easy to reach, not hidden
|
|
412
|
+
- [ ] **Text input**: No zoom on focus (min 16px font)
|
|
413
|
+
- [ ] **Images**: Responsive, not overflowing
|
|
414
|
+
- [ ] **Modals**: Full-screen or well-sized for mobile
|
|
415
|
+
- [ ] **Tables**: Horizontally scrollable or card layout
|
|
416
|
+
|
|
417
|
+
```html
|
|
418
|
+
<!-- ✅ Appropriate input types -->
|
|
419
|
+
<input type="email" inputmode="email" autocomplete="email" />
|
|
420
|
+
<input type="tel" inputmode="tel" autocomplete="tel" />
|
|
421
|
+
<input type="number" inputmode="numeric" pattern="[0-9]*" />
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Design System Compliance
|
|
425
|
+
|
|
426
|
+
### Checklist
|
|
427
|
+
|
|
428
|
+
- [ ] Using defined color tokens (not hex values)
|
|
429
|
+
- [ ] Using defined spacing scale
|
|
430
|
+
- [ ] Using defined typography scale
|
|
431
|
+
- [ ] Using defined border-radius tokens
|
|
432
|
+
- [ ] Using defined shadow tokens
|
|
433
|
+
- [ ] Components follow naming conventions
|
|
434
|
+
- [ ] States match documented patterns
|
|
435
|
+
- [ ] Icons from approved icon set
|
|
436
|
+
- [ ] Illustrations match style guide
|
|
437
|
+
|
|
438
|
+
### Token Usage
|
|
439
|
+
|
|
440
|
+
```css
|
|
441
|
+
/* 🚫 Custom values */
|
|
442
|
+
.card {
|
|
443
|
+
padding: 22px;
|
|
444
|
+
border-radius: 6px;
|
|
445
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.12);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/* ✅ Design tokens */
|
|
449
|
+
.card {
|
|
450
|
+
padding: var(--space-6);
|
|
451
|
+
border-radius: var(--radius-md);
|
|
452
|
+
box-shadow: var(--shadow-sm);
|
|
453
|
+
}
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
## UX Heuristics Checklist (Nielsen's 10)
|
|
457
|
+
|
|
458
|
+
| # | Heuristic | What to Check |
|
|
459
|
+
|---|-----------|---------------|
|
|
460
|
+
| 1 | **Visibility of system status** | Loading states, progress indicators |
|
|
461
|
+
| 2 | **Match real world** | Familiar language, logical order |
|
|
462
|
+
| 3 | **User control & freedom** | Undo, cancel, back navigation |
|
|
463
|
+
| 4 | **Consistency** | Same patterns throughout |
|
|
464
|
+
| 5 | **Error prevention** | Confirmations, constraints |
|
|
465
|
+
| 6 | **Recognition over recall** | Visible options, recent items |
|
|
466
|
+
| 7 | **Flexibility** | Shortcuts for power users |
|
|
467
|
+
| 8 | **Aesthetic & minimal** | No clutter, essential info only |
|
|
468
|
+
| 9 | **Error recovery** | Clear messages, solutions |
|
|
469
|
+
| 10 | **Help & documentation** | Tooltips, help text |
|
|
470
|
+
|