architecture-design
系统架构设计方法论,包含架构模式选择、系统分层、目录结构设计
数据模型和API设计方法论,包含ERD设计、数据字典、RESTful API规范
$ npx -y skills add echoVic/boss-skill --skill data-api-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/data-api-designContext preview
The summary Claude sees to decide when to auto-load this skill.
数据模型和API设计方法论,包含ERD设计、数据字典、RESTful API规范
name: architect/data-api-design description: 数据模型和API设计方法论,包含ERD设计、数据字典、RESTful API规范 version: 1.0.0 agent: architect type: methodology user-invocable: false agent-invocable: true dependencies: [] triggers: - 架构设计完成后 - 需要设计数据模型时 - 需要定义API接口时
在系统架构确定后,需要设计:
从PRD中识别核心实体(名词):
**示例**:
确定实体之间的关系:
| 关系类型 | 说明 | 示例 | |----------|------|------| | **一对一 (1:1)** | 一个A对应一个B | User - Profile | | **一对多 (1:N)** | 一个A对应多个B | User - Post | | **多对多 (M:N)** | 多个A对应多个B | Post - Tag |
**关系表示**:
使用 Mermaid 绘制 ERD:
erDiagram
User ||--o{ Post : creates
User ||--o{ Comment : writes
Post ||--o{ Comment : has
Post }o--o{ Tag : has
User {
uuid id PK
string email UK
string name
string passwordHash
enum role
datetime createdAt
datetime updatedAt
}
Post {
uuid id PK
uuid authorId FK
string title
text content
enum status
datetime publishedAt
datetime createdAt
datetime updatedAt
}
Comment {
uuid id PK
uuid postId FK
uuid userId FK
text content
datetime createdAt
}
Tag {
uuid id PK
string name UK
}为每个表定义详细的字段信息:
| 字段 | 类型 | 约束 | 默认值 | 说明 | |------|------|------|--------|------| | id | UUID | PK | uuid_generate_v4() | 主键 | | email | VARCHAR(255) | UNIQUE, NOT NULL | - | 邮箱,用于登录 | | name | VARCHAR(100) | NOT NULL | - | 用户名 | | passwordHash | VARCHAR(255) | NOT NULL | - | 密码哈希(bcrypt) | | role | ENUM('user', 'admin') | NOT NULL | 'user' | 用户角色 | | createdAt | TIMESTAMP | NOT NULL | NOW() | 创建时间 | | updatedAt | TIMESTAMP | NOT NULL | NOW() | 更新时间 |
**索引**:
| 字段 | 类型 | 约束 | 默认值 | 说明 | |------|------|------|--------|------| | id | UUID | PK | uuid_generate_v4() | 主键 | | authorId | UUID | FK, NOT NULL | - | 作者ID,外键关联User.id | | title | VARCHAR(200) | NOT NULL | - | 文章标题 | | content | TEXT | NOT NULL | - | 文章内容 | | status | ENUM('draft', 'published', 'archived') | NOT NULL | 'draft' | 文章状态 | | publishedAt | TIMESTAMP | NULL | - | 发布时间 | | createdAt | TIMESTAMP | NOT NULL | NOW() | 创建时间 | | updatedAt | TIMESTAMP | NOT NULL | NOW() | 更新时间 |
**索引**:
| 数据类型 | 使用场景 | PostgreSQL | MySQL | MongoDB | |----------|----------|------------|-------|---------| | **主键** | 唯一标识 | UUID, SERIAL | INT AUTO_INCREMENT, UUID | ObjectId | | **字符串** | 短文本 | VARCHAR(n) | VARCHAR(n) | String | | **长文本** | 文章内容 | TEXT | TEXT | String | | **整数** | 数量、年龄 | INTEGER, BIGINT | INT, BIGINT | Number | | **小数** | 价格、评分 | DECIMAL(p,s) | DECIMAL(p,s) | Number | | **布尔** | 是否标志 | BOOLEAN | TINYINT(1) | Boolean | | **日期时间** | 时间戳 | TIMESTAMP | DATETIME | Date | | **枚举** | 固定选项 | ENUM | ENUM | String | | **JSON** | 灵活数据 | JSONB | JSON | Object |
**推荐**:
| 规范 | 适用场景 | 优点 | 缺点 | |------|----------|------|------| | **RESTful** | 通用场景、CRUD操作 | 简单、标准、易理解 | 过度获取、多次请求 | | **GraphQL** | 复杂查询、多端适配 | 按需获取、类型安全 | 学习曲线、缓存复杂 | | **gRPC** | 微服务、高性能 | 性能高、类型安全 | 浏览器支持差 |
**本项目推荐**:RESTful(除非有特殊需求)
| 方法 | 用途 | 示例 | 幂等性 | |------|------|------|--------| | GET | 获取资源 | `GET /users` | 是 | | POST | 创建资源 | `POST /users` | 否 | | PUT | 完整更新 | `PUT /users/123` | 是 | | PATCH | 部分更新 | `PATCH /users/123` | 否 | | DELETE | 删除资源 | `DELETE /users/123` | 是 |
| 操作 | 方法 | URL | 说明 | |------|------|-----|------| | 获取列表 | GET | `/api/v1/users` | 支持分页、筛选、排序 | | 获取详情 | GET | `/api/v1/users/:id` | 返回单个资源 | | 创建 | POST | `/api/v1/users` | 请求体包含资源数据 | | 完整更新 | PUT | `/api/v1/users/:id` | 替换整个资源 | | 部分更新 | PATCH | `/api/v1/users/:id` | 只更新指定字段 | | 删除 | DELETE | `/api/v1/users/:id` | 删除资源 |
**嵌套资源**:
**查询参数**:
**单个资源**:
{
"success": true,
"data": {
"id": "123",
"name": "John Doe",
"email": "john@example.com"
}
}**资源列表**:
{
"success": true,
"data": [
{ "id": "1", "name": "Item 1" },
{ "id": "2", "name": "Item 2" }
],
"meta": {
"page": 1,
"limit": 20,
"total": 100,
"totalPages": 5
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "邮箱格式不正确",
"details": [
{
"field": "email",
"message": "必须是有效的邮箱地址"
}
]
}
}**错误码**:
**JWT (推荐)**:
Authorization: Bearer <token>
**请求头**:
POST /api/v1/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}**响应**:
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "123",
"name": "John DLanguages / 语言 / 言語 / 언어 / Idiomas / Langues: English · 中文 · 日本語 · 한국어 · Español · Français · Português Boss is an auditable agent-team workflow for coding agents.
Repo: echoVic/boss-skill
系统架构设计方法论,包含架构模式选择、系统分层、目录结构设计
后端API开发方法论,包括RESTful/GraphQL设计、请求验证、错误处理和安全实现
后端测试编写指南,包括单元测试、集成测试和E2E测试的编写方法和最佳实践
需求澄清 Skill。当用户只给了模糊描述时自动触发,通过业务提问把一句话翻译成完整需求,交给 Boss 流水线执行。 Triggers: '我想做一个', '帮我做', '有个想法', 'brainstorm', '帮我规划一下', '做个XX', 'I want to build' Does NOT…
自动生成 CHANGELOG,基于 git 提交历史和 pipeline 产物信息,遵循 Conventional Commits 和 Keep a Changelog 规范