@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,359 @@
|
|
|
1
|
+
# 动态提问生成
|
|
2
|
+
|
|
3
|
+
> **原则:** 提问的目的不是为了收集数据,而是为了**揭示架构层面的后果**。
|
|
4
|
+
>
|
|
5
|
+
> 每一个提问都必须关联到一个具体的实现决策,且该决策会影响成本、复杂度或时间线。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🧠 核心原则
|
|
10
|
+
|
|
11
|
+
### 1. 提问揭示后果
|
|
12
|
+
|
|
13
|
+
一个好的问题不是问“您想要什么颜色?”,而是:
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
❌ 错误提问: "您想要哪种认证方式?"
|
|
17
|
+
✅ 正确提问: "用户应该通过 邮箱/密码 还是 社交登录 进行注册?"
|
|
18
|
+
|
|
19
|
+
影响:
|
|
20
|
+
|
|
21
|
+
- 邮箱/密码 → 需要密码重置逻辑、哈希加密存储、2FA(双因素认证)基础设施
|
|
22
|
+
- 社交登录 → 涉及 OAuth(授权协议)提供商、用户资料映射,但自主控制力较弱
|
|
23
|
+
|
|
24
|
+
权衡: 安全性 vs 开发时间 vs 用户流失率
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. 背景先行
|
|
28
|
+
|
|
29
|
+
首先要理解这个请求属于哪种**背景**:
|
|
30
|
+
|
|
31
|
+
| 背景 | 提问焦点 |
|
|
32
|
+
| ---- | -------- |
|
|
33
|
+
| **新项目(Greenfield)** | 基础设施决策:技术栈、托管方式、规模规划 |
|
|
34
|
+
| **功能新增(Feature Addition)** | 集成点、现有模式、破坏性变更的可能性 |
|
|
35
|
+
| **重构(Refactor)** | 为何重构?性能?可维护性?现有什么问题? |
|
|
36
|
+
| **调试(Debug)** | 现象 → 根本原因 → 复现路径 |
|
|
37
|
+
|
|
38
|
+
### 3. 最小可行提问
|
|
39
|
+
|
|
40
|
+
**原则:** 每个问题都必须能消除实现路径上的一个分叉。
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
提问前:
|
|
44
|
+
├── 路径 A: 执行 X (5 分钟)
|
|
45
|
+
├── 路径 B: 执行 Y (15 分钟)
|
|
46
|
+
└── 路径 C: 执行 Z (1 小时)
|
|
47
|
+
|
|
48
|
+
提问后:
|
|
49
|
+
└── 路径已确认: 执行 X (5 分钟)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
如果一个提问不能减少实现路径的选择范围 → **请删掉它**。
|
|
53
|
+
|
|
54
|
+
### 4. 生成数据而非假设
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
❌ 错误假设: "用户可能想用 Stripe 处理支付"
|
|
58
|
+
✅ 正确提问: "哪种支付服务商符合您的需求?"
|
|
59
|
+
|
|
60
|
+
Stripe → 文档最全, 2.9% + $0.30, 核心市场在欧美
|
|
61
|
+
LemonSqueezy → 代收代缴全球税费, 5% + $0.50, 全球化支持好
|
|
62
|
+
Paddle → 价格较复杂, 处理欧盟增值税, 偏向企业级
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 📋 提问生成算法
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
输入: 用户请求 + 背景(新项目/功能/重构/调试)
|
|
71
|
+
│
|
|
72
|
+
├── 步骤 1: 解析请求
|
|
73
|
+
│ ├── 提取领域(电商, 认证, 实时通讯, CMS(内容管理系统)等)
|
|
74
|
+
│ ├── 提取功能(显式的和隐喻的)
|
|
75
|
+
│ └── 提取规模指标(用户量, 数据量, 频率)
|
|
76
|
+
│
|
|
77
|
+
├── 步骤 2: 识别决策点
|
|
78
|
+
│ ├── 编写代码前“必须”决定什么?(阻塞性决策)
|
|
79
|
+
│ ├── 哪些决策可以延后?(可延迟决策)
|
|
80
|
+
│ └── 哪些具有“架构性”影响?(高杠杆决策)
|
|
81
|
+
│
|
|
82
|
+
├── 步骤 3: 生成问题(按优先级排序)
|
|
83
|
+
│ ├── P0: 阻塞性决策(不回答则无法继续)
|
|
84
|
+
│ ├── P1: 高杠杆决策(影响 >30% 的实现工作)
|
|
85
|
+
│ ├── P2: 中等杠杆(影响特定功能)
|
|
86
|
+
│ └── P3: 可选(边缘情况, 优化项)
|
|
87
|
+
│
|
|
88
|
+
└── 步骤 4: 格式化每个提问
|
|
89
|
+
├── 内容: 清晰的问题
|
|
90
|
+
├── 理由: 对实现的影响
|
|
91
|
+
├── 选项: 权衡方案(不只是 A vs B)
|
|
92
|
+
└── 默认值: 如果用户不回答,我们会怎么做
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 🎯 特定领域问题库
|
|
98
|
+
|
|
99
|
+
### 电子商务
|
|
100
|
+
|
|
101
|
+
| 提问 | 为什么这很重要 | 权衡方案 |
|
|
102
|
+
| ---- | -------------- | -------- |
|
|
103
|
+
| **是单商户还是多商户?** | 多商户 → 需要分佣逻辑、卖家工作台、分账支付 | +收入, -开发复杂度 |
|
|
104
|
+
| **是否需要库存跟踪?** | 需要库存表、预留逻辑、低库存警报 | +准确度, -开发时间 |
|
|
105
|
+
| **是数字产品还是实物产品?** | 数字 → 涉及下载链接, 无物流 | 实物 → 涉及物流 API(接口), 快递跟踪 |
|
|
106
|
+
| **订阅制还是单次购买?** | 订阅 → 涉及循环计费、催收、按比例退款逻辑 | +长期收入, -开发复杂度 |
|
|
107
|
+
|
|
108
|
+
### 身份验证
|
|
109
|
+
|
|
110
|
+
| 提问 | 为什么这很重要 | 权衡方案 |
|
|
111
|
+
| ---- | -------------- | -------- |
|
|
112
|
+
| **是否需要社交登录?** | 引入 OAuth(授权协议)提供商 vs 编写密码重置等基础设施 | +UX(用户体验), -自主控制权 |
|
|
113
|
+
| **是否需要基于角色的权限(RBAC)?** | 需要 RBAC 表、策略执行逻辑、管理员 UI | +安全性, -开发时间 |
|
|
114
|
+
| **是否需要双因素认证(2FA)?** | 涉及 TOTP/SMS(一次性口令/短信)基础设施、备份验证码、恢复流程 | +安全性, -用户注册损耗 |
|
|
115
|
+
| **是否需要邮件验证?** | 涉及验证令牌、邮件服务、重发逻辑 | +安全性, -注册流失率 |
|
|
116
|
+
|
|
117
|
+
### 实时通讯
|
|
118
|
+
|
|
119
|
+
| 提问 | 为什么这很重要 | 权衡方案 |
|
|
120
|
+
| ---- | -------------- | -------- |
|
|
121
|
+
| **采用 WebSocket 还是轮询(Polling)?** | WebSocket → 涉及服务器扩展、连接管理 | 轮询 → 更简单,但延迟高 |
|
|
122
|
+
| **预期并发用户数?** | <100 → 单机即可, >1000 → 需要 Redis(内存数据库)发布/订阅, >10k → 需要专用基础架构 | +可扩展性, -开发复杂度 |
|
|
123
|
+
| **消息是否需要持久化?** | 涉及历史消息表、存储成本、分页查询 | +用户体验, -存储成本 |
|
|
124
|
+
| **是瞬时消息还是持久消息?** | 瞬时 → 仅存储于内存, 持久 → 发送前先入库 | +可靠性, -延迟增加 |
|
|
125
|
+
|
|
126
|
+
### 内容管理
|
|
127
|
+
|
|
128
|
+
| 提问 | 为什么这很重要 | 权衡方案 |
|
|
129
|
+
| ---- | -------------- | -------- |
|
|
130
|
+
| **采用富文本还是 Markdown?** | 富文本 → 涉及内容清洗、XSS 风险 | Markdown → 简单,无所见即所得(WYSIWYG) |
|
|
131
|
+
| **是否需要 草稿/发布 工作流?** | 涉及状态字段、定时任务、版本控制 | +内容管控, -开发复杂度 |
|
|
132
|
+
| **如何处理媒体文件?** | 涉及上传端点、存储、内容优化(裁剪/压缩) | +功能丰富, -开发时间 |
|
|
133
|
+
| **是否需要多语言(Multi-language)?** | 涉及 i18n(国际化)表、翻译 UI、回退逻辑 | +触达范围, -开发复杂度 |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 📐 动态提问模板
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
基于您对 [领域] [功能] 的需求:
|
|
141
|
+
|
|
142
|
+
## 🔴 关键决策(阻塞性决策)
|
|
143
|
+
|
|
144
|
+
### 1. **[决策点]**
|
|
145
|
+
|
|
146
|
+
**提问:** [清晰、具体的提问]
|
|
147
|
+
|
|
148
|
+
**为什么这很重要:**
|
|
149
|
+
|
|
150
|
+
- [解释架构层面的后果]
|
|
151
|
+
- [影响: 成本 / 复杂度 / 时间线 / 规模]
|
|
152
|
+
|
|
153
|
+
**候选项:**
|
|
154
|
+
| 选项 | 优点 | 缺点 | 最适用场景 |
|
|
155
|
+
|--------|------|------|----------|
|
|
156
|
+
| A | [优势] | [劣势] | [用例] |
|
|
157
|
+
| B | [优势] | [劣势] | [用例] |
|
|
158
|
+
|
|
159
|
+
**如果不指定:** [默认选择 + 理由]
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 🟡 高杠杆决策(影响实现工作)
|
|
164
|
+
|
|
165
|
+
### 2. **[决策点]**
|
|
166
|
+
|
|
167
|
+
[同上格式]
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 🟢 可选决策(边缘情况)
|
|
172
|
+
|
|
173
|
+
### 3. **[决策点]**
|
|
174
|
+
|
|
175
|
+
[同上格式]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 🔄 迭代式提问
|
|
181
|
+
|
|
182
|
+
### 第一阶段(3-5 个问题)
|
|
183
|
+
|
|
184
|
+
专注于 **阻塞性决策**。在获得答案前不要继续。
|
|
185
|
+
|
|
186
|
+
### 第二阶段(初步实现后)
|
|
187
|
+
|
|
188
|
+
随着模式的显现,询问:
|
|
189
|
+
|
|
190
|
+
- “这个功能隐含了 [X] 的需求。我们现在处理 [边缘情况] 还是先延后?”
|
|
191
|
+
- “我们目前使用了 [模式 A]。[功能 B] 是否也应遵循同样的模式?”
|
|
192
|
+
|
|
193
|
+
### 第三阶段(优化阶段)
|
|
194
|
+
|
|
195
|
+
当功能可以正常运行后:
|
|
196
|
+
|
|
197
|
+
- “[X] 处存在性能瓶颈。现在优化还是目前可以接受?”
|
|
198
|
+
- “[Y] 处是否需要为了可维护性进行重构,或者直接发布?”
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 🎭 示例:全流程提问生成
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
用户请求: "做一个 Instagram 克隆版"
|
|
206
|
+
|
|
207
|
+
步骤 1: 解析
|
|
208
|
+
├── 领域: 社交媒体
|
|
209
|
+
├── 功能: 照片分享, 互动 (点赞/评论), 用户资料
|
|
210
|
+
├── 隐含需求: 动态流(Feed), 关注功能, 身份验证
|
|
211
|
+
└── 规模: 潜在的高并发 (社交应用易病毒式传播)
|
|
212
|
+
|
|
213
|
+
步骤 2: 决策点
|
|
214
|
+
├── 阻塞性: 存储策略, 认证方式, 动态流类型
|
|
215
|
+
├── 高杠杆: 实时通知, 数据模型复杂度
|
|
216
|
+
└── 可延迟: 数据分析, 高级搜索, 短视频
|
|
217
|
+
|
|
218
|
+
步骤 3: 生成提问 (优先级)
|
|
219
|
+
|
|
220
|
+
P0 (阻塞):
|
|
221
|
+
1. 存储策略 → 影响架构、成本、速度
|
|
222
|
+
2. 动态流算法 → 影响数据库查询、复杂度
|
|
223
|
+
3. 认证方式 → 影响开发时间、体验、安全
|
|
224
|
+
|
|
225
|
+
P1 (高杠杆):
|
|
226
|
+
4. 实时通知 → WebSocket vs 轮询
|
|
227
|
+
5. 媒体处理 → 客户端 vs 服务端优化
|
|
228
|
+
|
|
229
|
+
P2 (可延迟):
|
|
230
|
+
6. 故事/短视频 → 功能蔓延严重,延至 v2(第二版)
|
|
231
|
+
7. 私信/聊天 → 独立的子系统,延至 v2(第二版)
|
|
232
|
+
|
|
233
|
+
步骤 4: 格式化输出
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 📊 生成的输出示例
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
针对您的 Instagram 克隆版需求:
|
|
242
|
+
|
|
243
|
+
## 🔴 关键决策(不回答则无法继续)
|
|
244
|
+
|
|
245
|
+
### 1. **照片存储策略**
|
|
246
|
+
|
|
247
|
+
**提问:** 用户照片将存储并托管在何处?
|
|
248
|
+
|
|
249
|
+
**为什么这很重要:**
|
|
250
|
+
- 影响: 每月托管成本、页面加载速度、CDN(内容分发网络)复杂度
|
|
251
|
+
- 高流量社交应用示例: 1000 用户 × 10 张图 × 2MB = 20GB 存储需求
|
|
252
|
+
|
|
253
|
+
**候选项:**
|
|
254
|
+
| 选项 | 成本 | 速度 | 复杂度 | 最适用场景 |
|
|
255
|
+
|--------|------|-------|------------|----------|
|
|
256
|
+
| **Cloudinary** | $89/月 (25GB) | 极快 (自带 CDN(内容分发网络)) | 低 | MVP(最小可行产品), 快速上线 |
|
|
257
|
+
| **AWS S3 + CloudFront** | $0.023/GB | 极快 (CDN(内容分发网络)) | 中 | 生产环境, 成本优化 |
|
|
258
|
+
| **Supabase Storage** | 免费额度 1GB | 中等 | 低 | 小规模, 简单应用 |
|
|
259
|
+
| **本地存储** | 仅服务器成本 | 慢 | 低 | 仅限开发调试 |
|
|
260
|
+
|
|
261
|
+
**如果不指定:** 默认选择 Cloudinary (均衡了 MVP(最小可行产品)开发效率)
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### 2. **动态流(Feed)算法选择**
|
|
266
|
+
|
|
267
|
+
**提问:** 主动态流应如何运作?
|
|
268
|
+
|
|
269
|
+
**为什么这很重要:**
|
|
270
|
+
- 影响: 数据库查询复杂度、缓存策略、开发时间
|
|
271
|
+
- 算法推荐流需要机器学习基础架构和排序信号支持
|
|
272
|
+
|
|
273
|
+
**候选项:**
|
|
274
|
+
| 选项 | 复杂度 | 数据库影响 | 最适用场景 |
|
|
275
|
+
|--------|------------|-----------------|----------|
|
|
276
|
+
| **时间轴(倒序)** | 低 | 简单查询 | 早期阶段, 信息透明 |
|
|
277
|
+
| **仅关注者可见** | 中 | 关联查询 + 分页 | 大多数社交应用的基础 |
|
|
278
|
+
| **算法推荐** | 高 | 预计算动态流表 | 专业的 Instagram 竞品 |
|
|
279
|
+
|
|
280
|
+
**如果不指定:** 默认选择 “仅关注者可见” (社交应用的平衡选择)
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
### 3. **身份验证方案**
|
|
285
|
+
|
|
286
|
+
**提问:** 用户如何注册和登录?
|
|
287
|
+
|
|
288
|
+
**为什么这很重要:**
|
|
289
|
+
- 影响: 开发时间 (2-5 小时), 安全等级, 用户体验摩擦力
|
|
290
|
+
|
|
291
|
+
**候选项:**
|
|
292
|
+
| 选项 | 开发耗时 | 安全性 | 用户体验 | 最适用场景 |
|
|
293
|
+
|--------|----------|----------|-----|----------|
|
|
294
|
+
| **邮箱/密码** | 4-5 小时 | 高 (若加 2FA) | 中 | 需要完全自主控制 |
|
|
295
|
+
| **仅限社交登录** | 1-2 小时 | 取决于提供商 | 极佳 | B2C 应用, 快速获客 |
|
|
296
|
+
| **魔术链接(Email/邮箱)** | 2-3 小时 | 中 | 较好 | 关注安全, 无需密码 |
|
|
297
|
+
| **Clerk/Auth0** | 1 小时 | 极高 | 极佳 | 追求最快上线速度 |
|
|
298
|
+
|
|
299
|
+
**如果不指定:** 默认选择 Clerk (对 MVP(最小可行产品)而言最快)
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 🟡 高杠杆决策(影响架构)
|
|
304
|
+
|
|
305
|
+
### 4. **实时通知**
|
|
306
|
+
|
|
307
|
+
**提问:** 用户在获得点赞/评论时是否需要“即时”通知?
|
|
308
|
+
|
|
309
|
+
**为什么这很重要:**
|
|
310
|
+
- WebSocket(长连接)会增加基础设施复杂度 (扩展时需要 Redis(内存数据库)发布/订阅)
|
|
311
|
+
- 轮询更简单但延迟较高
|
|
312
|
+
|
|
313
|
+
**候选项:**
|
|
314
|
+
| 选项 | 复杂度 | 扩展成本 | 最适用场景 |
|
|
315
|
+
|--------|------------|------------|----------|
|
|
316
|
+
| **WebSocket(长连接) + Redis(内存数据库)** | 高 | $10+/月 | >1000 并发用户 |
|
|
317
|
+
| **长轮询 (30s)** | 低 | 数据库查询开销 | <1000 用户 |
|
|
318
|
+
| **无实时需求** | 无 | 无 | MVP(最小可行产品)阶段, 先行验证 |
|
|
319
|
+
|
|
320
|
+
**如果不指定:** 默认选择 “长轮询” (在验证需求前保持简单)
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 🟢 优化/次要决策(可延至 v2(第二版))
|
|
325
|
+
|
|
326
|
+
### 5. **视频/短视频支持**
|
|
327
|
+
- 复杂度极高 (涉及视频转码、流媒体分发、基础设施)
|
|
328
|
+
- **建议**: 首发仅限照片,验证完核心模式后再增加视频支持。
|
|
329
|
+
|
|
330
|
+
### 6. **私信/即时聊天**
|
|
331
|
+
- 独立的子系统 (聊天架构与动态流架构完全不同)
|
|
332
|
+
- **建议**: 使用 Pusher/Stream 等第三方服务,或首发版本先行略过。
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 📋 总结建议
|
|
337
|
+
|
|
338
|
+
| 决策点 | 推荐方案 | 如果更换方案的影响 |
|
|
339
|
+
|----------|----------------|------------|
|
|
340
|
+
| 存储策略 | Cloudinary | +3 小时配置时间 |
|
|
341
|
+
| 动态流 | 仅关注者可见 | +2 小时查询优化 |
|
|
342
|
+
| 认证方式 | Clerk | -3 小时开发时间 |
|
|
343
|
+
| 实时通知 | 长轮询 | +5 小时 WebSocket 开发 |
|
|
344
|
+
| 视频支持 | 延至 v2(第二版) | N/A(不适用) |
|
|
345
|
+
| 私信功能 | 延至 v2(第二版) | N/A(不适用) |
|
|
346
|
+
|
|
347
|
+
**预计 MVP(最小可行产品)开发总耗时:** 按上述推荐约 15-20 小时。
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## 🎯 原则复盘
|
|
353
|
+
|
|
354
|
+
1. **每一个提问 = 一个架构决策** → 提问不是为了填表格。
|
|
355
|
+
2. **展示权衡方案** → 让用户理解决策的后果。
|
|
356
|
+
3. **阻塞性决策优先** → 保证项目能够立即启动。
|
|
357
|
+
4. **提供默认值** → 即使用户暂无想法,我们也能依据最佳实践推进。
|
|
358
|
+
5. **领域感知** → 电商类提问 ≠ 认证类提问 ≠ 实时通讯类提问。
|
|
359
|
+
6. **迭代式演进** → 随着实现过程中模式的显现,再追加更细致的提问。
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clean-code
|
|
3
|
+
description: 务实的编码标准—— 简洁、直接、不做过度设计、不写无用注释(Pragmatic coding standards)
|
|
4
|
+
allowed-tools: Read, Write, Edit
|
|
5
|
+
version: 2.0
|
|
6
|
+
priority: CRITICAL
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 整洁代码 - 务实的 AI 编码标准
|
|
10
|
+
|
|
11
|
+
> **Clean Code(整洁代码)是核心技能**—— 保持**简洁、直接并专注于解决方案**。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 核心原则
|
|
16
|
+
|
|
17
|
+
| 原则 | 规则 |
|
|
18
|
+
|-----------|------|
|
|
19
|
+
| **SRP** | 单一职责(Single Responsibility)—— 每个函数/类只做一件事 |
|
|
20
|
+
| **DRY** | 不要重复(Don't Repeat Yourself)—— 提取重复项并复用 |
|
|
21
|
+
| **KISS** | 保持简单(Keep It Simple)—— 采用能跑通的最简单方案 |
|
|
22
|
+
| **YAGNI** | 你不会需要它(You Aren't Gonna Need It)—— 不构建未被要求的功能 |
|
|
23
|
+
| **Boy Scout** | 离开时让代码比你来时更整洁 |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 命名规则
|
|
28
|
+
|
|
29
|
+
| 元素 | 规范 |
|
|
30
|
+
|---------|------------|
|
|
31
|
+
| **变量(Variables)** | 揭示意图:`userCount` 而非 `n` |
|
|
32
|
+
| **函数(Functions)** | 动词 + 名词:`getUserById()` 而非 `user()` |
|
|
33
|
+
| **布尔值(Booleans)** | 提问形式:`isActive`, `hasPermission`, `canEdit` |
|
|
34
|
+
| **常量(Constants)** | SCREAMING_SNAKE:`MAX_RETRY_COUNT` |
|
|
35
|
+
|
|
36
|
+
> **准则:** 如果需要注释解释命名,请直接重命名。
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 函数规则
|
|
41
|
+
|
|
42
|
+
| 规则 | 描述 |
|
|
43
|
+
|------|-------------|
|
|
44
|
+
| **短小(Small)** | 最多 20 行,理想 5-10 行 |
|
|
45
|
+
| **专注(One Thing)** | 只做一件事,并把它做好 |
|
|
46
|
+
| **层次(One Level)** | 每个函数只包含一个抽象层级 |
|
|
47
|
+
| **参数少(Few Args)** | 最多 3 个参数,优先 0-2 个 |
|
|
48
|
+
| **无副作用(No Side Effects)** | 不要产生预期之外的输入状态改变 |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 代码结构
|
|
53
|
+
|
|
54
|
+
| 模式 | 应用建议 |
|
|
55
|
+
|---------|-------|
|
|
56
|
+
| **卫语句(Guard Clauses)** | 针对边缘情况及早返回 |
|
|
57
|
+
| **扁平化优先(Flat > Nested)** | 避免深度嵌套(最多 2 层) |
|
|
58
|
+
| **组合(Composition)** | 将短小函数组合使用 |
|
|
59
|
+
| **就近原则(Colocation)** | 相关代码尽量放近 |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## AI 编码风格
|
|
64
|
+
|
|
65
|
+
| 场景 | 行动建议 |
|
|
66
|
+
|-----------|--------|
|
|
67
|
+
| 用户要求功能 | 直接编写实现 |
|
|
68
|
+
| 用户报告问题 | 修复,不做多余解释 |
|
|
69
|
+
| 需求不明确 | 先询问,不做假设 |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 反模式(Anti-Patterns)
|
|
74
|
+
|
|
75
|
+
| ❌ 错误模式 | ✅ 推荐修复 |
|
|
76
|
+
|-----------|-------|
|
|
77
|
+
| 每一行都写注释 | 删除显而易见的注释 |
|
|
78
|
+
| 为单行逻辑封装 helper | 直接内联 |
|
|
79
|
+
| 为 2 个对象写工厂模式 | 直接实例化 |
|
|
80
|
+
| 只有 1 个函数的 utils.ts | 代码放在被使用处 |
|
|
81
|
+
| “First we import...” | 直接写代码 |
|
|
82
|
+
| 深度嵌套 | 使用卫语句 |
|
|
83
|
+
| 使用魔术数字 | 使用具名常量 |
|
|
84
|
+
| 万能函数 | 按职责拆分 |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 🔴 编辑任何文件前(先思考)
|
|
89
|
+
|
|
90
|
+
**修改文件前先问自己:**
|
|
91
|
+
|
|
92
|
+
| 提问 | 为什么 |
|
|
93
|
+
|----------|-----|
|
|
94
|
+
| **谁引用了这个文件?** | 修改可能会破坏它们 |
|
|
95
|
+
| **这个文件引用了谁?** | 接口可能需要变更 |
|
|
96
|
+
| **有哪些测试覆盖了这里?** | 测试可能会失败 |
|
|
97
|
+
| **这是共享组件吗?** | 可能影响多个地方 |
|
|
98
|
+
|
|
99
|
+
**快速检查:**
|
|
100
|
+
```
|
|
101
|
+
File to edit: UserService.ts
|
|
102
|
+
└── Who imports this? → UserController.ts, AuthController.ts
|
|
103
|
+
└── Do they need changes too? → Check function signatures
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
> 🔴 **准则:** 同一任务内同时编辑该文件与所有受影响的依赖文件。
|
|
107
|
+
> 🔴 **禁止:** 遗留断裂引用或缺失更新。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 总结
|
|
112
|
+
|
|
113
|
+
| 推荐做法 | 不要做 |
|
|
114
|
+
|----|-------|
|
|
115
|
+
| 直接编写代码 | 编写教程式引导 |
|
|
116
|
+
| 让代码自文档化 | 添加显而易见的注释 |
|
|
117
|
+
| 立即修复问题 | 先解释修复方案 |
|
|
118
|
+
| 内联短小逻辑 | 创建不必要的文件 |
|
|
119
|
+
| 命名清晰准确 | 使用缩写 |
|
|
120
|
+
| 保持函数短小 | 编写超过 100 行的函数 |
|
|
121
|
+
|
|
122
|
+
> **谨记:** 用户想要的是能运行的代码,而不是一堂编程课。
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 🔴 完成前自检(强制)
|
|
127
|
+
|
|
128
|
+
**在说“任务完成”前请验证:**
|
|
129
|
+
|
|
130
|
+
| 检查项 | 确认问题 |
|
|
131
|
+
|-------|----------|
|
|
132
|
+
| ✅ **目标达成了吗?** | 是否精准完成用户要求? |
|
|
133
|
+
| ✅ **文件都改了吗?** | 是否修改了所有必要文件? |
|
|
134
|
+
| ✅ **代码能跑吗?** | 是否测试/验证该变更? |
|
|
135
|
+
| ✅ **没有报错吗?** | Lint 和 TypeScript 是否通过? |
|
|
136
|
+
| ✅ **没遗漏什么吗?** | 是否遗漏边缘情况? |
|
|
137
|
+
|
|
138
|
+
> 🔴 **准则:** 任一检查未通过,必须先修复再结束。
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 验证脚本(强制)
|
|
143
|
+
|
|
144
|
+
> 🔴 **核心要求:** 每个代理完成后仅运行所属技能脚本。
|
|
145
|
+
|
|
146
|
+
### 代理 → 脚本映射
|
|
147
|
+
|
|
148
|
+
| 代理 | 脚本 | 命令 |
|
|
149
|
+
|-------|--------|---------|
|
|
150
|
+
| **frontend-specialist** | UX Audit | `python .agent/skills/frontend-design/scripts/ux_audit.py .` |
|
|
151
|
+
| **frontend-specialist** | A11y Check | `python .agent/skills/frontend-design/scripts/accessibility_checker.py .` |
|
|
152
|
+
| **backend-specialist** | API Validator | `python .agent/skills/api-patterns/scripts/api_validator.py .` |
|
|
153
|
+
| **mobile-developer** | Mobile Audit | `python .agent/skills/mobile-design/scripts/mobile_audit.py .` |
|
|
154
|
+
| **database-architect** | Schema Validate | `python .agent/skills/database-design/scripts/schema_validator.py .` |
|
|
155
|
+
| **security-auditor** | Security Scan | `python .agent/skills/vulnerability-scanner/scripts/security_scan.py .` |
|
|
156
|
+
| **seo-specialist** | SEO Check | `python .agent/skills/seo-fundamentals/scripts/seo_checker.py .` |
|
|
157
|
+
| **seo-specialist** | GEO Check | `python .agent/skills/geo-fundamentals/scripts/geo_checker.py .` |
|
|
158
|
+
| **performance-optimizer** | Lighthouse | `python .agent/skills/performance-profiling/scripts/lighthouse_audit.py <url>` |
|
|
159
|
+
| **test-engineer** | Test Runner | `python .agent/skills/testing-patterns/scripts/test_runner.py .` |
|
|
160
|
+
| **test-engineer** | Playwright | `python .agent/skills/webapp-testing/scripts/playwright_runner.py <url>` |
|
|
161
|
+
| **Any agent** | Lint Check | `python .agent/skills/lint-and-validate/scripts/lint_runner.py .` |
|
|
162
|
+
| **Any agent** | Type Coverage | `python .agent/skills/lint-and-validate/scripts/type_coverage.py .` |
|
|
163
|
+
| **Any agent** | i18n Check | `python .agent/skills/i18n-localization/scripts/i18n_checker.py .` |
|
|
164
|
+
|
|
165
|
+
> ❌ **错误做法:** `test-engineer` 运行 `ux_audit.py`
|
|
166
|
+
> ✅ **正确做法:** `frontend-specialist` 运行 `ux_audit.py`
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### 🔴 脚本输出处理(阅读 → 总结 → 询问)
|
|
171
|
+
|
|
172
|
+
**运行验证脚本时必须:**
|
|
173
|
+
|
|
174
|
+
1. **执行脚本**并捕获全部输出
|
|
175
|
+
2. **解析输出**,识别错误、警告与通过项
|
|
176
|
+
3. **按如下格式汇总给用户**
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
## Script Results: [script_name.py]
|
|
180
|
+
|
|
181
|
+
### ❌ Errors Found (X items)
|
|
182
|
+
- [File:Line] Error description 1
|
|
183
|
+
- [File:Line] Error description 2
|
|
184
|
+
|
|
185
|
+
### ⚠️ Warnings (Y items)
|
|
186
|
+
- [File:Line] Warning description
|
|
187
|
+
|
|
188
|
+
### ✅ Passed (Z items)
|
|
189
|
+
- Check 1 passed
|
|
190
|
+
- Check 2 passed
|
|
191
|
+
|
|
192
|
+
**Should I fix the X errors?**
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
4. **Wait for user confirmation** before fixing
|
|
196
|
+
5. **After fixing** → Re-run script to confirm
|
|
197
|
+
|
|
198
|
+
> 🔴 **VIOLATION:** Running script and ignoring output = FAILED task.
|
|
199
|
+
> 🔴 **VIOLATION:** Auto-fixing without asking = Not allowed.
|
|
200
|
+
> 🔴 **Rule:** Always READ output → SUMMARIZE → ASK → then fix.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review-checklist
|
|
3
|
+
description: 代码审查指南。涵盖代码质量、安全性及最佳实践。
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 代码审查检查清单
|
|
8
|
+
|
|
9
|
+
## 快速审查清单
|
|
10
|
+
|
|
11
|
+
### 正确性
|
|
12
|
+
|
|
13
|
+
- [ ] **功能对齐**:代码是否实现了预期的功能?
|
|
14
|
+
- [ ] **边缘情况**:是否处理了所有的边缘情况?
|
|
15
|
+
- [ ] **错误处理**:是否建立了完善的错误处理机制?
|
|
16
|
+
- [ ] **无明显 Bug**:是否存在显而易见的逻辑漏洞?
|
|
17
|
+
|
|
18
|
+
### 安全性
|
|
19
|
+
|
|
20
|
+
- [ ] **输入校验**:是否对所有输入进行了验证与净化(sanitized)?
|
|
21
|
+
- [ ] **注入防护**:是否存在 SQL/NoSQL 注入风险?
|
|
22
|
+
- [ ] **XSS/CSRF**:是否存在跨站脚本或跨站请求伪造漏洞?
|
|
23
|
+
- [ ] **凭据安全**:是否存在硬编码的密钥(secrets)或敏感凭据?
|
|
24
|
+
- [ ] **AI 特定**:是否针对提示词注入(Prompt Injection)进行了防护(如适用)?
|
|
25
|
+
- [ ] **AI 特定**:输出内容在进入关键接收端(Sinks)前是否已净化?
|
|
26
|
+
|
|
27
|
+
### 性能
|
|
28
|
+
|
|
29
|
+
- [ ] **N+1 问题**:是否存在数据库 N+1 查询问题?
|
|
30
|
+
- [ ] **循环优化**:是否存在不必要的循环逻辑?
|
|
31
|
+
- [ ] **缓存策略**:是否使用了适当的缓存机制?
|
|
32
|
+
- [ ] **包体积**:是否考虑了对 bundle size(包体积)的影响?
|
|
33
|
+
|
|
34
|
+
### 代码质量
|
|
35
|
+
|
|
36
|
+
- [ ] **命名清晰**:变量及函数命名是否意图明确?
|
|
37
|
+
- [ ] **DRY(不要重复自己)**:是否遵循 DRY 原则,无冗余代码?
|
|
38
|
+
- [ ] **SOLID(面向对象设计原则)**:是否遵循 SOLID 原则?
|
|
39
|
+
- [ ] **抽象层次**:抽象层级是否恰当?
|
|
40
|
+
|
|
41
|
+
### 测试
|
|
42
|
+
|
|
43
|
+
- [ ] **单元测试**:新代码是否配有相应的单元测试?
|
|
44
|
+
- [ ] **边缘测试**:边缘情况是否包含在测试范围内?
|
|
45
|
+
- [ ] **可读性**:测试用例是否易于阅读与维护?
|
|
46
|
+
|
|
47
|
+
### 文档
|
|
48
|
+
|
|
49
|
+
- [ ] **逻辑注释**:复杂逻辑是否配有必要的说明注释?
|
|
50
|
+
- [ ] **API 文档**:公共 API 是否已记录?
|
|
51
|
+
- [ ] **README**:如有必要,是否已更新项目 README 文件?
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## AI/LLM(大语言模型)审查模式(2025)
|
|
56
|
+
|
|
57
|
+
### 逻辑与幻觉
|
|
58
|
+
|
|
59
|
+
- [ ] **思维链(Chain of Thought)**:其逻辑推理路径是否可验证?
|
|
60
|
+
- [ ] **边缘情况**:AI 是否考虑了空状态、超时及部分失败的情况?
|
|
61
|
+
- [ ] **外部状态**:代码对于文件系统或网络的假设是否安全?
|
|
62
|
+
|
|
63
|
+
### 提示词工程审查
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
// ❌ 代码中存在模糊的提示词
|
|
67
|
+
const response = await ai.generate(userInput);
|
|
68
|
+
|
|
69
|
+
// ✅ 结构化且安全的提示词
|
|
70
|
+
const response = await ai.generate({
|
|
71
|
+
system: "您是一个专业的解析器……",
|
|
72
|
+
input: sanitize(userInput),
|
|
73
|
+
schema: ResponseSchema
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 应标识的反模式
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// ❌ 魔术数字
|
|
83
|
+
if (status === 3) { ... }
|
|
84
|
+
|
|
85
|
+
// ✅ 具名常量
|
|
86
|
+
if (status === Status.ACTIVE) { ... }
|
|
87
|
+
|
|
88
|
+
// ❌ 深度嵌套
|
|
89
|
+
if (a) { if (b) { if (c) { ... } } }
|
|
90
|
+
|
|
91
|
+
// ✅ 卫语句/早期返回
|
|
92
|
+
if (!a) return;
|
|
93
|
+
if (!b) return;
|
|
94
|
+
if (!c) return;
|
|
95
|
+
// 处理核心逻辑
|
|
96
|
+
|
|
97
|
+
// ❌ 长函数 (超过 100 行)
|
|
98
|
+
// ✅ 短小且专注的函数
|
|
99
|
+
|
|
100
|
+
// ❌ 使用 any 类型
|
|
101
|
+
const data: any = ...
|
|
102
|
+
|
|
103
|
+
// ✅ 使用正确的类型
|
|
104
|
+
const data: UserData = ...
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 审查评注指南
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
// 🔴 阻塞性问题:关键路径中存在 SQL 注入漏洞
|
|
113
|
+
🔴 BLOCKING(阻塞): 此处存在 SQL 注入风险
|
|
114
|
+
|
|
115
|
+
// 🟡 重要建议:考虑使用 useMemo 优化性能
|
|
116
|
+
🟡 SUGGESTION(建议): 考虑此处使用 useMemo 进行性能优化
|
|
117
|
+
|
|
118
|
+
// 🟢 细节修饰 (Nits):对于不可变变量,优先使用 const
|
|
119
|
+
🟢 NIT(细节): 对于不可变变量,建议优先使用 const 而非 let
|
|
120
|
+
|
|
121
|
+
// ❓ 疑问确认:如果此处用户(User)为空会怎样?
|
|
122
|
+
❓ QUESTION(疑问): 如果此处 User(用户)为 null 会发生什么情况?
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|