- 新增 11 个技能文档,指导 AI 完成特定开发任务 - 新增参考代码文件,用于代码分析和重构 - 优化 DataiIntegrationBatchServiceImpl.java,提取常量到 SalesforceConstants.java - 移动 SessionManager.java 到 auth 模块 - 更新 docs/index.md,添加技能文档索引 主要变更: - 新增技能文档:Bootstrap、SSOT Hub、信息架构、需求定义、架构决策、提示词资产化、上下文锚定、执行记录、变更归档、闭环复盘、测试提交 - 提取常量:批次处理、状态值、字段名、日志消息等 - 优化代码:改进代码结构和可读性 Related: - Prompts: docs/prompts/03-创建工作流提示词.md - Prompts: docs/prompts/07生成技能书提示词.md
370 lines
9.4 KiB
Markdown
370 lines
9.4 KiB
Markdown
---
|
||
name: 0006-prompt-engineering
|
||
description: 提示词资产化,基于 Prompt 模板编写执行提示词
|
||
---
|
||
|
||
# 技能:提示词资产化 (Prompt Engineering)
|
||
|
||
## 元数据 (Metadata)
|
||
|
||
- **name**: prompt-engineering
|
||
- **description**: 提示词资产化,基于 Prompt 模板编写执行提示词
|
||
- **version**: 1.0.0
|
||
- **author**: SSOT Architect
|
||
- **lastUpdated**: 2026-01-15
|
||
|
||
## 触发与定位 (Triggers & Scope)
|
||
|
||
### 触发条件 (Triggers)
|
||
当以下情况发生时,AI 应当"觉醒"本技能:
|
||
|
||
1. **架构决策完成**: 完成架构决策后,需要编写执行提示词
|
||
2. **新功能开发**: 需要为特定功能创建提示词
|
||
3. **提示词优化**: 发现现有提示词效果不好,需要优化
|
||
4. **代码生成**: 需要生成特定类型的代码
|
||
5. **工作流阶段 3**: 用户进入工作流的"提示词资产化"阶段
|
||
|
||
### 定位范围 (Scope)
|
||
- **适用模块**: 所有 Datai 项目模块
|
||
- **影响文件**: `docs/prompts/PROMPT-XXX.md`, `docs/index.md`
|
||
- **相关技能**: skill-architecture-decision, skill-context-anchoring
|
||
|
||
## 核心指令集 (Instructions)
|
||
|
||
### 架构约束 (Architecture Constraints)
|
||
|
||
1. **Treat Prompts as Code 原则**:
|
||
- 提示词必须有输入变量
|
||
- 提示词必须有输出定义
|
||
- 提示词必须有版本号
|
||
- 提示词必须可重复调用
|
||
|
||
2. **提示词必须包含**:
|
||
- Goal: 该提示词解决什么具体问题?
|
||
- Context Links: 引用了哪些 docs(必须是相对链接)
|
||
- Inputs: 需要用户提供哪些变量?
|
||
- Prompt Content: 实际的提示词内容(Markdown Code Block)
|
||
- Output Definition: 期望的输出格式(JSON/Markdown/Code)
|
||
- Version: 提示词的版本号
|
||
|
||
3. **引用真源规则**:
|
||
- 提示词开头必须引用 `docs/requirements/` 和 `docs/design/` 的文件链接
|
||
- 必须明确引用的上下文文件
|
||
- 必须说明引用的原因
|
||
|
||
4. **搜索策略规则**:
|
||
- 在 Prompt 中明确规定接下来需要查找哪些文件作为参考
|
||
- 必须指定搜索的关键词和文件类型
|
||
- 必须说明搜索的目的
|
||
|
||
### 业务逻辑 SOP (Business Logic SOP)
|
||
|
||
#### 步骤 1: 分析提示词目标
|
||
```markdown
|
||
## 提示词目标分析
|
||
|
||
### 要解决的问题
|
||
[该提示词解决什么具体问题?]
|
||
|
||
### 使用场景
|
||
[在什么情况下使用这个提示词?]
|
||
|
||
### 预期效果
|
||
[使用这个提示词后期望达到什么效果?]
|
||
|
||
### 目标用户
|
||
[谁会使用这个提示词?]
|
||
```
|
||
|
||
#### 步骤 2: 确定上下文链接
|
||
```markdown
|
||
## 上下文链接分析
|
||
|
||
### 必须引用的文档
|
||
- [REQ-XXX](../../requirements/REQ-XXX.md) - [引用原因]
|
||
- [DES-XXX](../../design/DES-XXX.md) - [引用原因]
|
||
- [ADR-XXX](../../decisions/adr/ADR-XXX.md) - [引用原因]
|
||
|
||
### 参考文档
|
||
- [文档1](../../path/to/doc1.md) - [引用原因]
|
||
- [文档2](../../path/to/doc2.md) - [引用原因]
|
||
|
||
### 代码参考
|
||
- [类1](../../path/to/Class1.java) - [引用原因]
|
||
- [类2](../../path/to/Class2.java) - [引用原因]
|
||
```
|
||
|
||
#### 步骤 3: 定义输入变量
|
||
```markdown
|
||
## 输入变量定义
|
||
|
||
### 必填变量
|
||
| 变量名 | 类型 | 说明 | 示例 | 默认值 |
|
||
|--------|------|------|------|--------|
|
||
| [变量名] | [类型] | [说明] | [示例] | [默认值] |
|
||
|
||
### 可选变量
|
||
| 变量名 | 类型 | 说明 | 示例 | 默认值 |
|
||
|--------|------|------|------|--------|
|
||
| [变量名] | [类型] | [说明] | [示例] | [默认值] |
|
||
```
|
||
|
||
#### 步骤 4: 定义输出格式
|
||
```markdown
|
||
## 输出格式定义
|
||
|
||
### 输出格式
|
||
[JSON/Markdown/Code]
|
||
|
||
### 输出结构
|
||
[详细的输出结构说明]
|
||
|
||
### 输出要求
|
||
- [要求1]
|
||
- [要求2]
|
||
- [要求3]
|
||
|
||
### 输出示例
|
||
```json
|
||
{
|
||
"field1": "value1",
|
||
"field2": "value2"
|
||
}
|
||
```
|
||
```
|
||
|
||
#### 步骤 5: 编写提示词内容
|
||
```markdown
|
||
## 提示词内容
|
||
|
||
### 角色设定
|
||
你是 [角色描述]。
|
||
|
||
### 任务描述
|
||
[任务描述]
|
||
|
||
### 上下文信息
|
||
基于以下文档:
|
||
- [REQ-XXX](../../requirements/REQ-XXX.md)
|
||
- [DES-XXX](../../design/DES-XXX.md)
|
||
- [ADR-XXX](../../decisions/adr/ADR-XXX.md)
|
||
|
||
### 搜索策略
|
||
在开始执行前,请搜索以下文件作为参考:
|
||
1. 搜索关键词:[关键词],文件类型:[文件类型]
|
||
2. 搜索关键词:[关键词],文件类型:[文件类型]
|
||
|
||
### 执行步骤
|
||
1. [步骤1]
|
||
2. [步骤2]
|
||
3. [步骤3]
|
||
|
||
### 输出要求
|
||
- [要求1]
|
||
- [要求2]
|
||
- [要求3]
|
||
|
||
### 输出格式
|
||
[输出格式说明]
|
||
```
|
||
|
||
#### 步骤 6: 创建提示词文档
|
||
```markdown
|
||
---
|
||
name: PROMPT-001
|
||
description: [提示词描述]
|
||
version: 1.0.0
|
||
---
|
||
|
||
# 提示词: [提示词名称]
|
||
|
||
## 元数据 (Metadata)
|
||
|
||
- **name**: [提示词名称]
|
||
- **description**: [该提示词解决什么具体问题?]
|
||
- **version**: [版本号]
|
||
- **author**: [作者]
|
||
- **lastUpdated**: [最后更新日期]
|
||
|
||
## 目标 (Goal)
|
||
|
||
[该提示词解决什么具体问题?]
|
||
|
||
## 上下文链接 (Context Links)
|
||
|
||
### 必须引用的文档
|
||
- [REQ-XXX](../../requirements/REQ-XXX.md) - [引用原因]
|
||
- [DES-XXX](../../design/DES-XXX.md) - [引用原因]
|
||
- [ADR-XXX](../../decisions/adr/ADR-XXX.md) - [引用原因]
|
||
|
||
### 参考文档
|
||
- [文档1](../../path/to/doc1.md) - [引用原因]
|
||
- [文档2](../../path/to/doc2.md) - [引用原因]
|
||
|
||
### 代码参考
|
||
- [类1](../../path/to/Class1.java) - [引用原因]
|
||
- [类2](../../path/to/Class2.java) - [引用原因]
|
||
|
||
## 输入变量 (Inputs)
|
||
|
||
### 必填变量
|
||
| 变量名 | 类型 | 说明 | 示例 | 默认值 |
|
||
|--------|------|------|------|--------|
|
||
| [变量名] | [类型] | [说明] | [示例] | [默认值] |
|
||
|
||
### 可选变量
|
||
| 变量名 | 类型 | 说明 | 示例 | 默认值 |
|
||
|--------|------|------|------|--------|
|
||
| [变量名] | [类型] | [说明] | [示例] | [默认值] |
|
||
|
||
## 提示词内容 (Prompt Content)
|
||
|
||
```markdown
|
||
[实际的提示词内容]
|
||
```
|
||
|
||
## 输出定义 (Output Definition)
|
||
|
||
### 输出格式
|
||
[期望的输出格式:JSON/Markdown/Code]
|
||
|
||
### 输出结构
|
||
[详细的输出结构说明]
|
||
|
||
### 输出要求
|
||
- [要求1]
|
||
- [要求2]
|
||
- [要求3]
|
||
|
||
### 输出示例
|
||
```json
|
||
[输出示例]
|
||
```
|
||
|
||
## 版本历史 (Version History)
|
||
|
||
| 版本 | 日期 | 变更内容 | 变更人 |
|
||
|------|------|----------|--------|
|
||
| 1.0.0 | YYYY-MM-DD | 初始版本 | [姓名] |
|
||
```
|
||
|
||
#### 步骤 7: 更新 docs/index.md
|
||
```markdown
|
||
### 💡 提示词资产 (Prompts)
|
||
| 文档 | 版本 | 描述 | 更新日期 |
|
||
|------|------|------|----------|
|
||
| [PROMPT-001](prompts/PROMPT-001.md) | v1.0.0 | [提示词描述] | 2026-01-15 |
|
||
```
|
||
|
||
### 工具调用 (Tool Usage)
|
||
|
||
1. **提示词编号生成工具**:
|
||
- 使用 `Grep` 工具搜索 `docs/prompts/` 目录
|
||
- 查找最大的 PROMPT 编号
|
||
- 生成新的 PROMPT 编号
|
||
|
||
2. **上下文链接验证工具**:
|
||
- 使用 `Read` 工具验证引用的文档是否存在
|
||
- 使用 `LS` 工具验证引用的文件路径是否正确
|
||
|
||
3. **文件创建工具**:
|
||
- 使用 `Write` 工具创建提示词文档
|
||
- 确保文件路径正确
|
||
|
||
4. **索引更新工具**:
|
||
- 使用 `Read` 工具读取 `docs/index.md`
|
||
- 使用 `SearchReplace` 工具更新索引
|
||
|
||
## 错误陷阱与验证 (Anti-Patterns & Checklist)
|
||
|
||
### 常见错误 (Anti-Patterns)
|
||
|
||
1. **错误**: 提示词缺少版本号
|
||
- **后果**: 无法追踪提示词的变更历史
|
||
- **修正**: 必须包含版本号和版本历史
|
||
|
||
2. **错误**: 引用文档使用绝对路径
|
||
- **后果**: 文档移动后链接失效
|
||
- **修正**: 必须使用相对链接
|
||
|
||
3. **错误**: 输入变量定义不清晰
|
||
- **后果**: 用户不知道需要提供什么输入
|
||
- **修正**: 必须明确定义每个输入变量的类型、说明和示例
|
||
|
||
4. **错误**: 输出格式不明确
|
||
- **后果**: AI 输出的格式不符合预期
|
||
- **修正**: 必须明确定义输出格式和输出结构
|
||
|
||
5. **错误**: 提示词内容过于简单
|
||
- **后果**: AI 无法理解任务要求
|
||
- **修正**: 必须包含详细的任务描述、上下文信息和执行步骤
|
||
|
||
### 验收清单 (Acceptance Checklist)
|
||
|
||
- [ ] 提示词文档已创建
|
||
- [ ] 提示词编号符合规范
|
||
- [ ] 目标已明确定义
|
||
- [ ] 上下文链接已定义
|
||
- [ ] 输入变量已定义
|
||
- [ ] 输出格式已定义
|
||
- [ ] 提示词内容已编写
|
||
- [ ] 版本号已定义
|
||
- [ ] docs/index.md 已更新
|
||
- [ ] 相关文档已链接
|
||
|
||
### Correct vs Incorrect 对比
|
||
|
||
#### Correct 示例
|
||
```markdown
|
||
## 上下文链接 (Context Links)
|
||
|
||
### 必须引用的文档
|
||
- [REQ-001](../../requirements/REQ-001.md) - 用户需求
|
||
- [DES-001](../../design/DES-001.md) - 系统设计
|
||
- [ADR-001](../../decisions/adr/ADR-001.md) - 技术选型
|
||
|
||
## 输入变量 (Inputs)
|
||
|
||
| 变量名 | 类型 | 说明 | 示例 | 默认值 |
|
||
|--------|------|------|------|--------|
|
||
| className | String | Java 类名 | UserService | - |
|
||
| packageName | String | 包名 | com.datai.service | - |
|
||
| fields | Array | 字段列表 | [{name: "id", type: "Long"}] | - |
|
||
|
||
## 输出定义 (Output Definition)
|
||
|
||
### 输出格式
|
||
Java Code
|
||
|
||
### 输出结构
|
||
完整的 Java 类文件,包含:
|
||
- 包声明
|
||
- 导入语句
|
||
- 类定义
|
||
- 字段定义
|
||
- 方法定义
|
||
```
|
||
|
||
#### Incorrect 示例
|
||
```markdown
|
||
## 上下文
|
||
参考需求文档和设计文档
|
||
|
||
## 输入
|
||
- 类名
|
||
- 包名
|
||
- 字段
|
||
|
||
## 输出
|
||
Java 代码
|
||
```
|
||
|
||
**问题**: 上下文链接不明确,输入变量定义不清晰,输出格式不具体。
|
||
|
||
## 相关文档 (Related Documents)
|
||
|
||
- [工作流提示词](../prompts/03-创建工作流提示词.md#阶段-3-提示词资产化-prompt-engineering)
|
||
- [架构决策技能](./0005-architecture-decision.md)
|
||
- [上下文锚定技能](./0007-context-anchoring.md)
|
||
- [Prompt 模板](../prompts/03-创建工作流提示词.md#42-prompt-first-模板-提示词资产)
|