Skill对于开发大一点的项目真的很重要。下面是我实现需求一直使用的Skill:
-–
name: “需求实现助手”
description: “自动读取系统架构设计文档、开发指南和使用指南,理解系统架构和功能模块结构,结合文档知识和用户需求进行需求实现,并在实现后自动更新相关文档形成闭环。当用户提出功能需求或问题时自动调用。”
-–
# 需求实现助手
## 功能概述
本Skill用于帮助用户实现基于即插即用系统架构的功能需求。它会自动读取以下核心文档,并在功能实现后自动更新这些文档,形成需求实现的闭环:
1. **架构设计文档** (`d:\MyProject\即插即用系统\架构设计文档.md`)
2. **开发指南** (`d:\MyProject\即插即用系统\开发指南.md`)
3. **系统使用指南** (`d:\MyProject\即插即用系统\系统使用指南.md`)
## 核心能力
### 1. 系统架构理解
- 理解前后端分离架构
- 掌握功能模块的即插即用机制
- 了解共享空间设计
- 熟悉核心模块功能
### 2. 技术栈知识
- **前端**: Vue3 + Pinia + Element Plus + Vite
- **后端**: Python + Flask + SQLAlchemy + SQLite
### 3. 功能模块结构
熟悉标准功能模块结构:
```
feature_modules/{feature_name}/
├── frontend/
│ ├── components/
│ ├── views/
│ ├── store/
│ ├── api/
│ ├── router.js
│ ├── menu.js
│ └── init.js
├── backend/
│ ├── api/
│ ├── models/
│ ├── migrations/
│ └── init.py
└── manifest.json
```
### 4. 即插即用机制
- 模块自动扫描和注册
- 路由、状态管理、菜单自动注册
- 数据库迁移自动执行
- 模块安装和卸载流程
### 5. 系统已提供的辅助功能(避免重复实现)
#### 5.1 模块别名机制(前端)
系统自动为每个功能模块创建别名,**优先使用别名而非路径退格**:
| 别名 | 目标路径 | 说明 |
|------|---------|------|
| `@` | `frontend/src/` | 前端源代码根目录 |
| `@feature_modules` | `frontend/feature_modules/` | 功能模块根目录 |
| `@${module_name}` | `frontend/feature_modules/${module_name}/` | 每个功能模块的目录 |
**使用示例**:
```javascript
//
正确:使用别名引用其他模块
import FileListDialog from ‘@markdown_bank/frontend/views/sub_plugins/FileListDialog.vue’
import { callSharedFunction } from ‘@/shared’
//
错误:使用路径退格
import FileListDialog from ‘../../../../markdown_bank/frontend/views/sub_plugins/FileListDialog.vue’
```
#### 5.2 静态路由映射(envs.ini)
系统提供静态资源访问机制,通过 `envs.ini` 配置:
```ini
[static_routes]
; 配置格式: 路由路径 = 实际文件路径
/uploads = ./uploads
/images = ./images
```
**优先级规则**:
- 模块级配置覆盖全局配置
- 模块间冲突会报错
#### 5.3 模块辅助工具(ModuleHelper)
后端提供 `ModuleHelper` 类,**避免手动计算路径**:
| 方法名 | 功能 | 返回值 |
|--------|------|--------|
| `get_project_root()` | 获取项目根目录 | 绝对路径 |
| `get_feature_modules_dir()` | 获取功能模块目录 | 绝对路径 |
| `get_module_dir()` | 获取当前模块目录 | 绝对路径 |
| `get_module_envs_config(section, key, default)` | 获取模块配置 | 配置值 |
| `to_absolute_path(relative_path)` | 相对路径转绝对路径 | 绝对路径 |
**使用示例**:
```python
#
正确:使用系统提供的辅助方法
from app.utils.module_helper import ModuleHelper
helper = ModuleHelper()
module_dir = helper.get_module_dir()
db_path = helper.to_absolute_path(‘./data.db’)
#
错误:手动计算路径
import os
current_dir = os.path.dirname(os.path.abspath(_file_))
module_dir = os.path.join(current_dir, ‘..’, ‘..’)
```
#### 5.4 Core模块共享函数
Core模块提供通用工具函数,**优先复用而非重复实现**:
| 函数名 | 功能 | 调用方法 |
|--------|------|---------|
| `formatDate` | 日期格式化 | `callSharedFunction(‘core’, ‘formatDate’, date, format)` |
| `uploadFile` | 上传文件 | `callSharedFunction(‘core’, ‘uploadFile’, file, options)` |
| `downloadFile` | 下载文件 | `callSharedFunction(‘core’, ‘downloadFile’, url, filename)` |
| `apiGet` | GET请求封装 | `callSharedFunction(‘core’, ‘apiGet’, url, params)` |
| `apiPost` | POST请求封装 | `callSharedFunction(‘core’, ‘apiPost’, url, data)` |
#### 5.5 共享空间机制
模块间数据共享机制,**优先使用共享空间而非自定义全局变量**:
```javascript
// 注册共享数据
import { setSharedData } from ‘@/shared’
setSharedData(‘moduleName’, ‘key’, value)
// 获取共享数据
import { getSharedData } from ‘@/shared’
const value = getSharedData(‘moduleName’, ‘key’, defaultValue)
// 调用共享函数
import { callSharedFunction } from ‘@/shared’
const result = callSharedFunction(‘moduleName’, ‘functionName’, args)
```
### 6. 文档自动更新
- 更新架构设计文档,记录新增功能的技术实现
- 更新开发指南,添加新功能的开发说明
- 更新系统使用指南,添加新功能的使用说明
## 使用场景
当用户提出以下需求时自动调用本Skill:
1. **功能实现**: “帮我实现一个XX功能”
2. **问题修复**: “这个功能有问题,请修复”
3. **模块开发**: “创建一个新的功能模块”
4. **架构咨询**: “如何实现XX功能?”
5. **代码审查**: “帮我检查这段代码”
## 工作流程
```
┌─────────────────────────────────────────────────────────────────┐
│ 需求实现闭环流程 │
├─────────────────────────────────────────────────────────────────┤
│ 1. 读取文档 │
│ ↓ │
│ 2. 理解需求 │
│ ↓ │
│ 3. 方案设计 ──→ 检查系统是否已提供该功能 ──→ 避免重复实现 │
│ ↓ │
│ 4. 代码实现 │
│ ↓ │
│ 5. 测试验证 │
│ ↓ │
│ 6. 更新文档 ──→ 架构设计文档、开发指南、系统使用指南 │
│ ↓ │
│ 7. 反馈给用户,更新后的文档作为下次需求实现的依据 │
└─────────────────────────────────────────────────────────────────┘
```
### 详细步骤
1. **读取文档**: 自动读取系统架构文档、开发指南和系统使用指南
2. **理解需求**: 分析用户需求,结合文档知识理解系统架构和现有功能
3. **方案设计**:
4. **代码实现**: 编写代码,遵循系统规范和最佳实践
5. **测试验证**: 确保功能正常运行,符合预期
6. **文档更新**: 自动更新相关文档:
7. **闭环反馈**: 更新后的文档将作为下次需求实现的依据
## 文档更新规则
### 架构设计文档更新
- 在相应章节添加新功能的技术实现描述
- 更新模块结构说明(如果涉及新模块)
- 添加API接口说明(如果涉及新API)
- 更新数据模型说明(如果涉及新数据表)
### 开发指南更新
- 添加新功能的开发流程
- 添加新功能的代码规范
- 添加新功能的API调用示例
- 添加新功能的测试方法
### 系统使用指南更新
- 添加新功能的使用说明
- 添加新功能的操作步骤
- 添加新功能的界面截图说明
- 添加新功能的常见问题解答
## 最佳实践
1. **模块化设计**: 严格按照功能模块划分代码
2. **统一规范**: 遵循系统的代码规范和目录结构
3. **状态管理**: 使用Pinia进行状态管理
4. **API设计**: 遵循RESTful API设计规范
5. **错误处理**: 实现完善的错误处理机制
6. **测试覆盖**: 编写测试用例确保功能正常
7. **文档同步**: 功能实现后及时更新相关文档
8. **版本控制**: 使用Git进行版本控制,确保变更可追溯
9. **复用优先**: 优先使用系统已提供的功能(别名、静态路由、共享函数等)
10. **路径规范**: 优先使用别名而非路径退格
## 注意事项
1. 确保修改符合系统架构设计
2. 遵循即插即用机制
3. 注意模块间的依赖关系
4. 使用共享空间进行模块间数据交换
5. 遵循安全最佳实践
6. 更新文档时保持格式统一
7. 文档更新内容应简洁明了
8. 重大架构变更应在文档中明确标注
9. **实现前先检查系统是否已提供该功能**
10. **使用别名引用模块,而非路径退格(`..`)**
-–
*本Skill基于即插即用系统架构设计,旨在帮助开发者快速实现功能需求,并通过文档自动更新形成需求实现闭环。更新后的文档将作为后续需求实现的依据,确保系统架构和功能的持续演进。*