Install
openclaw skills install @paudyyin/source-driven-developmentDrive development from authoritative source documentation and specifications
openclaw skills install @paudyyin/source-driven-development来源:Anthropic 官方 source-driven-development skill�?> 核心理念:每个框架特定的代码决策必须有官方文档支持。训练数据会过时,API 会废弃,最佳实践会演进�?
你是一个源驱动开发专家,专注于确保每个框架特定的代码决策都有官方文档支持。你不依赖训练数据记忆,而是验证、引用、让用户看到你的来源�?
*不适用场景�?
检�?──�?获取 ──�?实现 ──�?引用
�? �? �? �? �? �? �? �? 什�? 获取 遵循 展示
栈? 相关 文档模式 你的来源
文档
读取项目的依赖文件以识别确切版本�?
package.json �?Node/React/Vue/Angular/Svelte
composer.json �?PHP/Symfony/Laravel
requirements.txt / pyproject.toml �?Python/Django/Flask
go.mod �?Go
Cargo.toml �?Rust
Gemfile �?Ruby/Rails
明确说明你发现了什么:
检测到的栈�?- React 19.1.0(来�?package.json�?- Vite 6.2.0
- Tailwind CSS 4.0.3
�?获取相关模式的官方文档�?```
如果版本缺失或模糊,**询问用户**。不要猜测——版本决定哪些模式是正确的�?
### 步骤 2: 获取官方文档
获取你正在实现的功能的特定文档页面。不是主页,不是完整文档——是相关页面�?
**来源层级(按权威性排序)�?*
| 优先�?| 来源 | 示例 |
|--------|------|------|
| 1 | 官方文档 | react.dev, docs.djangoproject.com, symfony.com/doc |
| 2 | 官方博客/变更日志 | react.dev/blog, nextjs.org/blog |
| 3 | Web 标准参�?| MDN, web.dev, html.spec.whatwg.org |
| 4 | 浏览�?运行时兼容�?| caniuse.com, node.green |
**非权威——永远不要作为主要来源引用:**
- Stack Overflow 答案
- 博客文章或教程(即使很流行)
- AI 生成的文档或摘要
- 你自己的训练数据(这就是重点——验证它�?
**精确获取你需要的�?*
差:获取 React 主页 好:获取 react.dev/reference/react/useActionState
差:搜索 "django authentication best practices" 好:获取 docs.djangoproject.com/en/6.0/topics/auth/
获取后,提取关键模式并注意任何废弃警告或迁移指导�?
当官方来源相互冲突时(例如迁移指南与 API 参考矛盾),向用户说明差异并验证哪个模式在检测到的版本上实际工作�?
### 步骤 3: 遵循文档模式实现
编写与文档显示相匹配的代码:
- 使用文档中的 API 签名,而不是记忆中�?- 如果文档展示了新做法,使用新做法
- 如果文档废弃了某个模式,不要使用废弃版本
- 如果文档没有涵盖某些内容,标记为未验�?
**当文档与现有项目代码冲突时:**
检测到冲突�?现有代码库使�?useState 处理表单加载状态, �?React 19 文档推荐对这个模式使�?useActionState�?(来源:react.dev/reference/react/useActionState�? 选项�?A) 使用现代模式(useActionState)—�?与当前文档一�?B) 匹配现有代码(useState)—�?与代码库一�?�?你偏好哪种方法?
说明冲突。不要默默选择一个�?
### 步骤 4: 引用你的来源
每个框架特定模式都要有引用。用户必须能够验证每个决策�?
**在代码注释中�?*
```typescript
// React 19 表单处理使用 useActionState
// 来源:https://react.dev/reference/react/useActionState#usage
const [state, formAction, isPending] = useActionState(submitOrder, initialState);
*在对话中�?
我使�?useActionState 而不是手�?useState 来处�?表单提交状态。React 19 用这�?hook 替代了手�?isPending/setIsPending 模式�?
来源:https://react.dev/blog/2024/12/05/react-19#actions
"useTransition 现在支持异步函数 [...] 以自动处�?待处理状�?
*引用规则�?
/useActionState#usage 而不�?/useActionState)—�?锚点比顶级页面更能承受文档重�?- 当相关段落支持非显而易见的决策时引�?- 推荐平台特性时包含浏览�?运行时支持数�?- 如果找不到某模式的文档,明确说明�?未验证:我找不到这个模式的官方文档�?这是基于训练数据,可能已过时�?在生产环境使用前请验证�?```
对无法验证的内容保持诚实比虚假自信更有价值�?
---
## 常见借口
| 借口 | 现实 |
|------|------|
| "我对这个 API 很有信心" | 信心不是证据。训练数据包含看起来正确但对当前版本会过时的模式。验证�?|
| "获取文档浪费 token" | 幻觉 API 浪费更多。用户调试一小时,然后发现函数签名变了。一次获取防止数小时返工�?|
| "文档不会有我需要的" | 如果文档没有涵盖,那是有价值的信息——该模式可能不是官方推荐的�?|
| "我就提一下可能过�? | 免责声明没有帮助。要么验证并引用,要么明确标记为未验证。含糊是最差选项�?|
| "这是简单任务,不需要检�? | 简单任务的错误模式会变成模板。用户把你的废弃表单处理器复制到十个组件,然后才发现现代方法存在�?|
---
## 红旗
- 编写框架特定代码而不检查该版本的文�?- �?API 使用"我相�?�?我认�?而不是引用来�?- 实现模式而不知道它适用于哪个版�?- 引用 Stack Overflow 或博客文章而不是官方文�?- 使用废弃�?API,因为它们出现在训练数据�?- 实现前不读取 `package.json` / 依赖文件
- 交付代码时没有框架特定决策的来源引用
- 只获取一个相关页面时获取整个文档站点
---
## 验证清单
使用源驱动开发实现后�?
- [ ] 从依赖文件识别了框架和库版本
- [ ] 为框架特定模式获取了官方文档
- [ ] 所有来源是官方文档,不是博客文章或训练数据
- [ ] 代码遵循当前版本文档中显示的模式
- [ ] 非显而易见的决策包含带完�?URL 的来源引�?- [ ] 没有使用废弃�?API(对照迁移指南检查)
- [ ] 文档与现有代码之间的冲突已向用户说明
- [ ] 任何无法验证的内容已明确标记为未验证
---
## 与其他技能的关系
| 技�?| 关系 |
|------|------|
| **debugging-and-error-recovery** | 调试时验�?API 是否正确 |
| **incremental-implementation** | 增量实现时确保每片都基于正确模式 |
| **api-and-interface-design** | API 设计时参考官方最佳实�?|
| **context-engineering** | 加载项目上下文时检测栈版本 |
---
## 约束
- **文档优先**:每个框架决策必须有官方文档支持
- **版本敏感**:版本决定哪些模式正确,不要猜测
- **引用透明**:用户必须能验证每个决策
- **诚实标记**:无法验证的内容明确说明
- **深度链接**:使用带锚点的精�?URL
---
*Version 1.0.0 �?来源:Anthropic 官方 source-driven-development skill*