@mison/ag-kit-cn 2.0.1
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/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +285 -0
- package/.agent/agents/backend-specialist.md +268 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/database-architect.md +225 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +618 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +382 -0
- package/.agent/agents/orchestrator.md +438 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +405 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/mcp_config.json +12 -0
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +84 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +74 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +57 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +201 -0
- package/.agent/skills/behavioral-modes/SKILL.md +264 -0
- package/.agent/skills/brainstorming/SKILL.md +164 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
- package/.agent/skills/clean-code/SKILL.md +200 -0
- package/.agent/skills/code-review-checklist/SKILL.md +125 -0
- package/.agent/skills/database-design/SKILL.md +54 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +50 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +307 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +44 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +432 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +194 -0
- package/.agent/skills/performance-profiling/SKILL.md +149 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +166 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/red-team-tactics/SKILL.md +203 -0
- package/.agent/skills/rust-pro/SKILL.md +190 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +114 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +242 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/restore-localize-compat.md +525 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +295 -0
- package/AGENT_FLOW.md +609 -0
- package/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/adapters/base.js +63 -0
- package/bin/adapters/codex.js +391 -0
- package/bin/adapters/gemini.js +137 -0
- package/bin/ag-kit.js +1336 -0
- package/bin/core/builder.js +80 -0
- package/bin/core/generator.js +59 -0
- package/bin/core/resource-loader.js +64 -0
- package/bin/core/transformer.js +208 -0
- package/bin/interactive.js +65 -0
- package/bin/utils/atomic-writer.js +97 -0
- package/bin/utils/git-helper.js +68 -0
- package/bin/utils/managed-block.js +65 -0
- package/bin/utils/manifest.js +241 -0
- package/bin/utils.js +82 -0
- package/docs/codex-rules-template.md +36 -0
- package/docs/mapping-spec.md +68 -0
- package/docs/multi-target-adapter.md +80 -0
- package/docs/official/README.md +53 -0
- package/docs/official/antigravity/agent-modes-settings.md +64 -0
- package/docs/official/antigravity/rules-workflows.md +96 -0
- package/docs/official/antigravity/skills.md +147 -0
- package/docs/official/codex/agents-md.md +119 -0
- package/docs/official/codex/config-advanced.md +358 -0
- package/docs/official/codex/config-basic.md +141 -0
- package/docs/official/codex/config-reference.md +223 -0
- package/docs/official/codex/config-sample.md +216 -0
- package/docs/official/codex/mcp.md +107 -0
- package/docs/official/codex/rules.md +79 -0
- package/docs/official/codex/skills.md +114 -0
- package/docs/official/sources-index.md +32 -0
- package/docs/operations.md +145 -0
- package/docs/terminology-style-guide.md +69 -0
- package/package.json +51 -0
- package/scripts/postinstall-check.js +112 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tailwind-patterns
|
|
3
|
+
description: Tailwind CSS v4 原则。CSS-first 配置、容器查询、现代化模式与 Design Token(设计令牌)架构。
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tailwind CSS 模式(v4,2025)
|
|
8
|
+
|
|
9
|
+
> 采用 CSS 原生配置的现代 Utility-first CSS(工具优先)。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Tailwind v4 架构
|
|
14
|
+
|
|
15
|
+
### 相比 v3 的变化
|
|
16
|
+
|
|
17
|
+
| v3(Legacy) | v4(Current) |
|
|
18
|
+
|-------------|---------------|
|
|
19
|
+
| `tailwind.config.js` | 基于 CSS 的 `@theme` 指令 |
|
|
20
|
+
| PostCSS plugin | Oxide 引擎(约 10x 更快) |
|
|
21
|
+
| JIT mode | 原生内建、始终开启 |
|
|
22
|
+
| Plugin system | CSS 原生能力增强 |
|
|
23
|
+
| `@apply` directive | 仍可用,但不推荐重度依赖 |
|
|
24
|
+
|
|
25
|
+
### v4 核心概念
|
|
26
|
+
|
|
27
|
+
| 概念 | 说明 |
|
|
28
|
+
|------|------|
|
|
29
|
+
| **CSS-first(CSS 优先)** | 配置写在 CSS 中,而不是 JavaScript |
|
|
30
|
+
| **Oxide Engine** | Rust 编译引擎,速度更快 |
|
|
31
|
+
| **Native Nesting** | 不依赖 PostCSS 的 CSS 嵌套 |
|
|
32
|
+
| **CSS Variables** | 设计 token 通过 `--*` 变量暴露 |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. 基于 CSS 的配置
|
|
37
|
+
|
|
38
|
+
### 主题定义
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
@theme {
|
|
42
|
+
/* Colors - use semantic names */
|
|
43
|
+
--color-primary: oklch(0.7 0.15 250);
|
|
44
|
+
--color-surface: oklch(0.98 0 0);
|
|
45
|
+
--color-surface-dark: oklch(0.15 0 0);
|
|
46
|
+
|
|
47
|
+
/* Spacing scale */
|
|
48
|
+
--spacing-xs: 0.25rem;
|
|
49
|
+
--spacing-sm: 0.5rem;
|
|
50
|
+
--spacing-md: 1rem;
|
|
51
|
+
--spacing-lg: 2rem;
|
|
52
|
+
|
|
53
|
+
/* Typography */
|
|
54
|
+
--font-sans: 'Inter', system-ui, sans-serif;
|
|
55
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 何时扩展与覆盖
|
|
60
|
+
|
|
61
|
+
| 动作 | 适用场景 |
|
|
62
|
+
|------|----------|
|
|
63
|
+
| **Extend** | 在保留默认值的同时新增 |
|
|
64
|
+
| **Override** | 需要整体替换默认刻度体系 |
|
|
65
|
+
| **Semantic tokens** | 采用项目语义命名(primary、surface) |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3. 容器查询(v4 原生)
|
|
70
|
+
|
|
71
|
+
### Breakpoint 与 Container 的区别
|
|
72
|
+
|
|
73
|
+
| 类型 | 响应对象 |
|
|
74
|
+
|------|----------|
|
|
75
|
+
| **Breakpoint(断点)** (`md:`) | 视口宽度(viewport) |
|
|
76
|
+
| **Container(容器)** (`@container`) | 父容器宽度 |
|
|
77
|
+
|
|
78
|
+
### 容器查询用法
|
|
79
|
+
|
|
80
|
+
| 模式 | 类名 |
|
|
81
|
+
|------|------|
|
|
82
|
+
| 定义容器 | 在父元素上添加 `@container` |
|
|
83
|
+
| 容器断点 | 在子元素上使用 `@sm:`、`@md:`、`@lg:` |
|
|
84
|
+
| 命名容器 | `@container/card` 提升语义与精确性 |
|
|
85
|
+
|
|
86
|
+
### 何时使用
|
|
87
|
+
|
|
88
|
+
| 场景 | 选择 |
|
|
89
|
+
|------|------|
|
|
90
|
+
| 页面级布局 | 视口断点 |
|
|
91
|
+
| 组件级响应式 | 容器查询 |
|
|
92
|
+
| 可复用组件 | 容器查询(与上下文解耦) |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 4. 响应式设计
|
|
97
|
+
|
|
98
|
+
### 断点系统
|
|
99
|
+
|
|
100
|
+
| 前缀 | 最小宽度 | 目标 |
|
|
101
|
+
|------|----------|------|
|
|
102
|
+
| (none) | 0px | Mobile-first 基础样式 |
|
|
103
|
+
| `sm:` | 640px | 大手机/小平板 |
|
|
104
|
+
| `md:` | 768px | 平板 |
|
|
105
|
+
| `lg:` | 1024px | 笔记本 |
|
|
106
|
+
| `xl:` | 1280px | 桌面端 |
|
|
107
|
+
| `2xl:` | 1536px | 大屏桌面 |
|
|
108
|
+
|
|
109
|
+
### Mobile-first 原则
|
|
110
|
+
|
|
111
|
+
1. 先写移动端基础样式(无前缀)
|
|
112
|
+
2. 再用前缀添加大屏覆盖规则
|
|
113
|
+
3. 示例:`w-full md:w-1/2 lg:w-1/3`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 5. 深色模式
|
|
118
|
+
|
|
119
|
+
### 配置策略
|
|
120
|
+
|
|
121
|
+
| 方法 | 行为 | 适用场景 |
|
|
122
|
+
|------|------|----------|
|
|
123
|
+
| `class` | 通过 `.dark` 类切换 | 需要手动主题切换 |
|
|
124
|
+
| `media` | 跟随系统主题 | 不提供用户开关 |
|
|
125
|
+
| `selector` | 自定义选择器(v4) | 复杂多主题体系 |
|
|
126
|
+
|
|
127
|
+
### 深色模式示例
|
|
128
|
+
|
|
129
|
+
| 元素 | 浅色 | 深色 |
|
|
130
|
+
|------|------|------|
|
|
131
|
+
| Background | `bg-white` | `dark:bg-zinc-900` |
|
|
132
|
+
| Text | `text-zinc-900` | `dark:text-zinc-100` |
|
|
133
|
+
| Borders | `border-zinc-200` | `dark:border-zinc-700` |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 6. 现代布局模式
|
|
138
|
+
|
|
139
|
+
### Flexbox 模式
|
|
140
|
+
|
|
141
|
+
| 模式 | 类名 |
|
|
142
|
+
|------|------|
|
|
143
|
+
| 双轴居中 | `flex items-center justify-center` |
|
|
144
|
+
| 纵向堆叠 | `flex flex-col gap-4` |
|
|
145
|
+
| 横向排列 | `flex gap-4` |
|
|
146
|
+
| 两端对齐 | `flex justify-between items-center` |
|
|
147
|
+
| 自动换行网格 | `flex flex-wrap gap-4` |
|
|
148
|
+
|
|
149
|
+
### Grid 模式
|
|
150
|
+
|
|
151
|
+
| 模式 | 类名 |
|
|
152
|
+
|------|------|
|
|
153
|
+
| Auto-fit 响应式网格 | `grid grid-cols-[repeat(auto-fit,minmax(250px,1fr))]` |
|
|
154
|
+
| 非对称(Bento) | `grid grid-cols-3 grid-rows-2` + spans |
|
|
155
|
+
| 侧栏布局 | `grid grid-cols-[auto_1fr]` |
|
|
156
|
+
|
|
157
|
+
> **说明:** 优先使用非对称/Bento(便当格)布局,避免千篇一律的对称三列网格。
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 7. 现代颜色系统
|
|
162
|
+
|
|
163
|
+
### OKLCH 与 RGB/HSL
|
|
164
|
+
|
|
165
|
+
| 格式 | 优势 |
|
|
166
|
+
|------|------|
|
|
167
|
+
| **OKLCH** | 感知均匀,更利于设计一致性 |
|
|
168
|
+
| **HSL** | 色相/饱和度语义直观 |
|
|
169
|
+
| **RGB** | 兼容性传统且广泛 |
|
|
170
|
+
|
|
171
|
+
### 颜色 Token 架构
|
|
172
|
+
|
|
173
|
+
| 层级 | 示例 | 作用 |
|
|
174
|
+
|------|------|------|
|
|
175
|
+
| **Primitive** | `--blue-500` | 原始色值层 |
|
|
176
|
+
| **Semantic** | `--color-primary` | 语义命名层 |
|
|
177
|
+
| **Component** | `--button-bg` | 组件局部层 |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 8. 排版系统
|
|
182
|
+
|
|
183
|
+
### 字体栈模式
|
|
184
|
+
|
|
185
|
+
| 类型 | 推荐 |
|
|
186
|
+
|------|------|
|
|
187
|
+
| Sans | `'Inter', 'SF Pro', system-ui, sans-serif` |
|
|
188
|
+
| Mono | `'JetBrains Mono', 'Fira Code', monospace` |
|
|
189
|
+
| Display | `'Outfit', 'Poppins', sans-serif` |
|
|
190
|
+
|
|
191
|
+
### 字号刻度
|
|
192
|
+
|
|
193
|
+
| 类名 | 大小 | 用途 |
|
|
194
|
+
|------|------|------|
|
|
195
|
+
| `text-xs` | 0.75rem | 标签、说明文字 |
|
|
196
|
+
| `text-sm` | 0.875rem | 次级文本 |
|
|
197
|
+
| `text-base` | 1rem | 正文 |
|
|
198
|
+
| `text-lg` | 1.125rem | 引导性文本 |
|
|
199
|
+
| `text-xl`+ | 1.25rem+ | 标题 |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 9. 动画与过渡
|
|
204
|
+
|
|
205
|
+
### 内置动画
|
|
206
|
+
|
|
207
|
+
| 类名 | 效果 |
|
|
208
|
+
|------|------|
|
|
209
|
+
| `animate-spin` | 持续旋转 |
|
|
210
|
+
| `animate-ping` | 注意力脉冲效果 |
|
|
211
|
+
| `animate-pulse` | 轻微透明度脉冲 |
|
|
212
|
+
| `animate-bounce` | 弹跳效果 |
|
|
213
|
+
|
|
214
|
+
### 过渡模式
|
|
215
|
+
|
|
216
|
+
| 模式 | 类名 |
|
|
217
|
+
|------|------|
|
|
218
|
+
| 所有属性 | `transition-all duration-200` |
|
|
219
|
+
| 指定属性 | `transition-colors duration-150` |
|
|
220
|
+
| 缓动函数 | `ease-out` 或 `ease-in-out` |
|
|
221
|
+
| Hover 动效 | `hover:scale-105 transition-transform` |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 10. 组件抽取
|
|
226
|
+
|
|
227
|
+
### 何时抽取
|
|
228
|
+
|
|
229
|
+
| 信号 | 动作 |
|
|
230
|
+
|------|------|
|
|
231
|
+
| 同一类组合出现 3 次以上 | 抽为组件 |
|
|
232
|
+
| 状态变体复杂 | 抽为组件 |
|
|
233
|
+
| 设计系统核心元素 | 抽取并补文档 |
|
|
234
|
+
|
|
235
|
+
### 抽取方式
|
|
236
|
+
|
|
237
|
+
| 方法 | 适用场景 |
|
|
238
|
+
|------|----------|
|
|
239
|
+
| **React/Vue component** | 需要动态逻辑或 JS 行为 |
|
|
240
|
+
| **@apply in CSS** | 静态样式、无需 JS |
|
|
241
|
+
| **Design tokens(设计令牌)** | 复用基础值(颜色/间距/字号) |
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 11. 反模式
|
|
246
|
+
|
|
247
|
+
| ❌ 不要这样做 | ✅ 推荐做法 |
|
|
248
|
+
|-------------|------------|
|
|
249
|
+
| 到处用任意值(arbitrary values) | 使用设计系统刻度 |
|
|
250
|
+
| 滥用 `!important` | 正确处理样式优先级 |
|
|
251
|
+
| 内联 `style=` | 优先使用 utilities |
|
|
252
|
+
| 重复超长 class 列表 | 抽取组件 |
|
|
253
|
+
| v3/v4 配置混用 | 完整迁移到 CSS-first |
|
|
254
|
+
| 重度使用 `@apply` | 优先组件化抽象 |
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 12. 性能原则
|
|
259
|
+
|
|
260
|
+
| 原则 | 实现方式 |
|
|
261
|
+
|------|----------|
|
|
262
|
+
| **清理未使用样式** | v4 默认自动处理 |
|
|
263
|
+
| **避免动态 class 拼接** | 不要用模板字符串生成类名 |
|
|
264
|
+
| **使用 Oxide** | v4 默认启用,速度更快 |
|
|
265
|
+
| **构建缓存** | 在 CI/CD 中启用缓存 |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
> **牢记:** Tailwind v4 是 CSS-first。应充分使用 CSS Variables、Container Queries 与原生能力。配置文件已是可选项。
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd-workflow
|
|
3
|
+
description: TDD(测试驱动开发)工作流原则。红-绿-重构循环。
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TDD(测试驱动开发)工作流
|
|
8
|
+
|
|
9
|
+
> 先写测试,后写代码。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. TDD 核心循环
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
🔴 红(RED)→ 编写一个失败的测试
|
|
17
|
+
↓
|
|
18
|
+
🟢 绿(GREEN)→ 编写最少量的代码使测试通过
|
|
19
|
+
↓
|
|
20
|
+
🔵 重构(REFACTOR)→ 优化代码结构与质量
|
|
21
|
+
↓
|
|
22
|
+
循环往复...
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. TDD 三大法则
|
|
28
|
+
|
|
29
|
+
1. **除非是为了使一个失败的单元测试通过,否则不允许编写任何生产代码。**
|
|
30
|
+
2. **只允许编写刚好能够证明失败的测试(编译失败也算失败)。**
|
|
31
|
+
3. **只允许编写刚好能够使当前失败测试通过的生产代码。**
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3. “红(RED)”阶段准则
|
|
36
|
+
|
|
37
|
+
### 编写重点
|
|
38
|
+
|
|
39
|
+
| 关注点 | 示例 |
|
|
40
|
+
| --------------------- | ---------------------------- |
|
|
41
|
+
| Behavior(行为) | “应当能够相加两个数字” |
|
|
42
|
+
| Edge Cases(边缘情况) | “应当能够处理空输入” |
|
|
43
|
+
| 错误状态 | “遇到无效数据时应当抛出异常” |
|
|
44
|
+
|
|
45
|
+
### “红”阶段规则
|
|
46
|
+
|
|
47
|
+
- 测试**必须**先失败。
|
|
48
|
+
- 测试名称应清晰描述预期的行为。
|
|
49
|
+
- 每个测试(最好)仅包含一个 Assertion(断言)。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. “绿(GREEN)”阶段准则
|
|
54
|
+
|
|
55
|
+
### 最少代码原则
|
|
56
|
+
|
|
57
|
+
| 原则 | 含义 |
|
|
58
|
+
| ------------ | ------------------------------------------- |
|
|
59
|
+
| **YAGNI** | You Aren't Gonna Need It(你不会需要它) |
|
|
60
|
+
| **最简方案** | 编写能让测试通过的最少代码 |
|
|
61
|
+
| **暂不优化** | 此时只求“跑通”,不求“精炼” |
|
|
62
|
+
|
|
63
|
+
### “绿”阶段规则
|
|
64
|
+
|
|
65
|
+
- 不要编写多余的代码。
|
|
66
|
+
- 暂时不要进行性能优化。
|
|
67
|
+
- 仅仅是为了通过测试,不多做一点。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 5. “重构(REFACTOR)”阶段准则
|
|
72
|
+
|
|
73
|
+
### 优化方向
|
|
74
|
+
|
|
75
|
+
| 领域 | 动作 |
|
|
76
|
+
| -------- | ------------------- |
|
|
77
|
+
| 重复逻辑 | 提取公共函数/代码块 |
|
|
78
|
+
| 命名规范 | 使代码意图更加清晰 |
|
|
79
|
+
| 代码结构 | 改善组织架构 |
|
|
80
|
+
| 复杂度 | 简化逻辑判断 |
|
|
81
|
+
|
|
82
|
+
### 重构规则
|
|
83
|
+
|
|
84
|
+
- **所有测试必须保持绿色。**
|
|
85
|
+
- 采取小步快跑的增量式改动。
|
|
86
|
+
- 每次重构之后都进行 Commit(提交)。
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 6. AAA 模式
|
|
91
|
+
|
|
92
|
+
每个测试均应遵循 AAA(Arrange-Act-Assert,准备-执行-断言):
|
|
93
|
+
|
|
94
|
+
| 步骤 | 目的 |
|
|
95
|
+
| ------------------ | -------------------- |
|
|
96
|
+
| **Arrange(准备)** | 初始化测试数据与环境 |
|
|
97
|
+
| **Act(执行)** | 执行被测代码逻辑 |
|
|
98
|
+
| **Assert(断言)** | 验证结果是否符合预期 |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 7. 何时使用 TDD
|
|
103
|
+
|
|
104
|
+
| 场景 | TDD 价值 |
|
|
105
|
+
| ------------------ | ----------------------- |
|
|
106
|
+
| 新功能开发 | 极高 |
|
|
107
|
+
| Bug(缺陷)修复 | 极高(先写复现测试) |
|
|
108
|
+
| 复杂逻辑实现 | 极高 |
|
|
109
|
+
| Spike(探索性研究) | 较低(研究完后再补 TDD) |
|
|
110
|
+
| UI(用户界面)布局调试 | 较低 |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 8. 测试优先级
|
|
115
|
+
|
|
116
|
+
| 优先级 | 测试类型 |
|
|
117
|
+
|----------|-----------|
|
|
118
|
+
| 1 | Happy path(正常路径) |
|
|
119
|
+
| 2 | Error cases(错误处理) |
|
|
120
|
+
| 3 | Edge cases(边界情况) |
|
|
121
|
+
| 4 | Performance(性能) |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 9. 应避免的反模式
|
|
126
|
+
|
|
127
|
+
| ❌ 禁止(Don't) | ✅ 推荐(Do) |
|
|
128
|
+
| ---------------------- | -------------------------- |
|
|
129
|
+
| 跳过“红”阶段直接写代码 | 亲眼见证测试失败后再写代码 |
|
|
130
|
+
| 先写代码后补测试 | 先写测试作为规格说明 |
|
|
131
|
+
| 初期就进行过度工程 | 保持简单,仅满足当前测试 |
|
|
132
|
+
| 一个测试包含过多断言 | 每个测试仅验证一个行为 |
|
|
133
|
+
| 测试内部实现细节 | 测试对外的行为表现 |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 10. AI 增强型 TDD 协作模式
|
|
138
|
+
|
|
139
|
+
### Multi-Agent(多智能体)编排视角
|
|
140
|
+
|
|
141
|
+
| Agent | 角色 |
|
|
142
|
+
|-------|------|
|
|
143
|
+
| Agent A | 编写失败测试(RED) |
|
|
144
|
+
| Agent B | 编写实现使其通过(GREEN) |
|
|
145
|
+
| Agent C | 进行优化(REFACTOR) |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
> **记住:** 测试就是规格。如果你写不出测试,说明你还没有真正理解需求。
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testing-patterns
|
|
3
|
+
description: 测试模式与原则。覆盖 Unit(单元测试)、Integration(集成测试)与 Mock(模拟)策略。
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 测试模式
|
|
8
|
+
|
|
9
|
+
> 构建可靠测试体系的原则。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. 测试金字塔
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/\ E2E(端到端,少量)
|
|
17
|
+
/ \ 关键流程
|
|
18
|
+
/----\
|
|
19
|
+
/ \ Integration(集成测试,中量)
|
|
20
|
+
/--------\ API、数据库查询
|
|
21
|
+
/ \
|
|
22
|
+
/------------\ Unit(单元测试,大量)
|
|
23
|
+
函数、类等基础逻辑
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. AAA 模式
|
|
29
|
+
|
|
30
|
+
| 步骤 | 目的 |
|
|
31
|
+
|------|------|
|
|
32
|
+
| **Arrange(准备)** | 准备测试数据与上下文 |
|
|
33
|
+
| **Act(执行)** | 执行被测代码 |
|
|
34
|
+
| **Assert(断言)** | 断言结果是否符合预期 |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. 测试类型选择
|
|
39
|
+
|
|
40
|
+
### 各类型使用时机
|
|
41
|
+
|
|
42
|
+
| 类型 | 适用场景 | 速度 |
|
|
43
|
+
|------|----------|------|
|
|
44
|
+
| **Unit(单元测试)** | 纯函数、核心逻辑 | 快(<50ms) |
|
|
45
|
+
| **Integration(集成测试)** | API、数据库、服务协作 | 中 |
|
|
46
|
+
| **E2E(端到端测试)** | 关键用户流程 | 慢 |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 4. 单元测试原则
|
|
51
|
+
|
|
52
|
+
### 优秀单元测试特征
|
|
53
|
+
|
|
54
|
+
| 原则 | 含义 |
|
|
55
|
+
|------|------|
|
|
56
|
+
| Fast(快速) | 单个用例 < 100ms |
|
|
57
|
+
| Isolated(隔离) | 不依赖外部系统 |
|
|
58
|
+
| Repeatable(可重复) | 每次结果一致 |
|
|
59
|
+
| Self-checking(自校验) | 无需手工验证 |
|
|
60
|
+
| Timely(及时) | 与代码同步编写 |
|
|
61
|
+
|
|
62
|
+
### 单元测试该测什么
|
|
63
|
+
|
|
64
|
+
| 应该测试 | 不应测试 |
|
|
65
|
+
|----------|---------|
|
|
66
|
+
| 业务逻辑 | 框架内部实现 |
|
|
67
|
+
| 边界条件 | 第三方库本身 |
|
|
68
|
+
| 错误处理 | 过于简单的 getter(取值器) |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 5. 集成测试原则
|
|
73
|
+
|
|
74
|
+
### 重点覆盖
|
|
75
|
+
|
|
76
|
+
| 领域 | 关注点 |
|
|
77
|
+
|------|--------|
|
|
78
|
+
| API 端点 | 请求/响应链路 |
|
|
79
|
+
| 数据库 | 查询与事务行为 |
|
|
80
|
+
| 外部服务 | 契约一致性 |
|
|
81
|
+
|
|
82
|
+
### Setup/Teardown(准备/清理)约定
|
|
83
|
+
|
|
84
|
+
| 阶段 | 动作 |
|
|
85
|
+
|------|------|
|
|
86
|
+
| Before All(全局前置) | 建立资源连接 |
|
|
87
|
+
| Before Each(用例前置) | 重置状态 |
|
|
88
|
+
| After Each(用例清理) | 执行清理 |
|
|
89
|
+
| After All(全局清理) | 释放连接 |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 6. Mock(模拟)原则
|
|
94
|
+
|
|
95
|
+
### 何时需要 Mock
|
|
96
|
+
|
|
97
|
+
| 应该 Mock | 不应 Mock |
|
|
98
|
+
|----------|----------|
|
|
99
|
+
| 外部 API | 被测代码本身 |
|
|
100
|
+
| 数据库(单元测试) | 简单依赖对象 |
|
|
101
|
+
| 时间/随机数 | 纯函数 |
|
|
102
|
+
| 网络请求 | 内存型替代实现 |
|
|
103
|
+
|
|
104
|
+
### Mock 类型
|
|
105
|
+
|
|
106
|
+
| 类型 | 用途 |
|
|
107
|
+
|------|------|
|
|
108
|
+
| Stub(桩) | 返回固定值 |
|
|
109
|
+
| Spy(监视) | 跟踪调用行为 |
|
|
110
|
+
| Mock(模拟) | 预设期望并校验 |
|
|
111
|
+
| Fake(伪实现) | 提供简化实现 |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 7. 测试组织方式
|
|
116
|
+
|
|
117
|
+
### 命名规范
|
|
118
|
+
|
|
119
|
+
| 模式 | 示例 |
|
|
120
|
+
|------|------|
|
|
121
|
+
| Should(行为式) | "should return error when..." |
|
|
122
|
+
| When(条件式) | "when user not found..." |
|
|
123
|
+
| Given-When-Then(前提-条件-结果) | "given X, when Y, then Z" |
|
|
124
|
+
|
|
125
|
+
### 分组方式
|
|
126
|
+
|
|
127
|
+
| 层级 | 用途 |
|
|
128
|
+
|------|------|
|
|
129
|
+
| describe(分组) | 归类相关测试 |
|
|
130
|
+
| it/test(用例) | 单个测试用例 |
|
|
131
|
+
| beforeEach(前置) | 共享初始化逻辑 |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 8. 测试数据策略
|
|
136
|
+
|
|
137
|
+
### 常见策略
|
|
138
|
+
|
|
139
|
+
| 方法 | 用途 |
|
|
140
|
+
|------|------|
|
|
141
|
+
| Factories(工厂) | 动态生成测试数据 |
|
|
142
|
+
| Fixtures(夹具) | 预定义数据集 |
|
|
143
|
+
| Builders(构建器) | 链式构建对象 |
|
|
144
|
+
|
|
145
|
+
### 基本原则
|
|
146
|
+
|
|
147
|
+
- 使用贴近真实的数据
|
|
148
|
+
- 非关键字段可随机化(faker 数据生成库)
|
|
149
|
+
- 共享公共 fixtures(预置数据)
|
|
150
|
+
- 保持最小必要数据集
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 9. 最佳实践
|
|
155
|
+
|
|
156
|
+
| 实践 | 目的 |
|
|
157
|
+
|------|------|
|
|
158
|
+
| 单测关注单一断言目标 | 失败原因更清晰 |
|
|
159
|
+
| 用例相互独立 | 避免顺序依赖 |
|
|
160
|
+
| 保持测试快速 | 能高频执行 |
|
|
161
|
+
| 命名具描述性 | 测试即文档 |
|
|
162
|
+
| 严格清理状态 | 避免副作用污染 |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 10. 反模式
|
|
167
|
+
|
|
168
|
+
| ❌ 禁止(Don't) | ✅ 推荐(Do) |
|
|
169
|
+
|-----------------|-------------|
|
|
170
|
+
| 测实现细节 | 测可观察行为 |
|
|
171
|
+
| 重复测试代码 | 使用 factories(工厂)复用 |
|
|
172
|
+
| 测试前置过于复杂 | 简化或拆分场景 |
|
|
173
|
+
| 忽略 flaky(不稳定)测试 | 修复根因 |
|
|
174
|
+
| 不做清理 | 重置状态 |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
> **牢记:** 测试本身就是文档。如果别人无法通过测试理解代码行为,就应该重写测试。
|