Community编程与开发github.com

hydroimperium/api-design

设计和审查API、接口及合约,确保其正确性、一致性、安全性和可演化性。用于定义端点、请求与响应模式、错误处理、认证、分页、版本控制或集成边界。

api-design 是什么?

该技能专注于API设计与审查,旨在帮助开发者在实现之前先定义好合约。它支持任何需要设计或修改API接口、定义请求/响应模式、处理错误、认证、分页、版本控制以及与第三方服务集成的场景。该技能适用于Claude Code、Cursor、Codex等AI代理平台,通过在对话中触发关键词(如“API”、“endpoint”、“contract”)来激活。其工作流程包括:明确合约(确定调用方、需求、数据、约束)、建模资源和操作(使用名词描述资源,保持URL稳定)、定义细节模式(方法、路径、认证、参数、验证规则、成功/错误响应、幂等性、分页、速率限制等)、设计错误(包含机器可读代码、人性化消息、字段、请求ID)、确保安全与隐私(认证、授权、输入验证、最少数据暴露)、以及考虑可演化性(添加字段、保持向后兼容、记录弃用)。最终输出一个标准化的合约文档,包含请求/响应模式、错误列表和示例。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hydroimperium/ai-skills/tree/HEAD/skills/engineering/api-design

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

API设计

在实现之前设计合约。

何时使用

当用户遇到以下情况时使用:

  • 设计新的API或接口;
  • 修改现有合约;
  • 定义请求/响应模式;
  • 审查错误处理、认证、分页或版本控制;
  • 与第三方服务集成;
  • 询问“这个端点应该是什么样子?”。

1. 明确合约

确定:

  • 谁调用API:前端、移动端、服务、合作伙伴、代理;
  • 调用者需要完成什么任务;
  • 输入和输出的数据;
  • 调用者绝对不能看到什么;
  • 延迟、容量和可靠性要求;
  • 兼容性和版本控制约束。

2. 建模资源和操作

  • 对资源使用名词,对非CRUD操作使用显式动作。
  • 保持URL稳定且可预测。
  • 对于一件事,偏好一种清晰的方式。
  • 避免将数据库结构泄露到公共合约中。
  • 定义标识符、所有权和租户。

3. 定义模式

对于每个端点或接口:

  • 方法和路径;
  • 目的;
  • 认证和权限;
  • 路径、查询和主体参数;
  • 验证规则;
  • 成功响应;
  • 错误响应;
  • 幂等性;
  • 分页;
  • 速率限制;
  • 示例。

4. 设计错误

每个错误应包含:

  • 稳定的机器可读代码;
  • 人性化可读消息;
  • 导致错误的字段或参数;
  • 用于支持的请求ID;
  • 没有堆栈跟踪、机密或内部路径。

使用一致的HTTP状态码。不要为失败操作返回200。

5. 安全与隐私

  • 对每个非公共端点进行身份验证。
  • 在对象级别授权,而不仅仅是路由级别。
  • 在边界验证所有输入。
  • 仅返回调用者需要的字段。
  • 如果内部ID泄露信息,则不暴露。
  • 定义速率限制和滥用控制。
  • 将Webhooks视为不受信任的输入。

6. 可演化性

  • 添加字段而不是改变其含义。
  • 保留旧字段直到客户端迁移。
  • 仅在必要时进行版本控制。
  • 记录弃用和迁移。
  • 避免在次要版本中进行破坏性变更。

7. 输出格式

## 合约

### `METHOD /path`

**目的:** <它的功能>  
**认证:** <谁可以调用它>  
**幂等性:** <是/否及键>

#### 请求

| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|

#### 响应

```json
{}
```

#### 错误

| 状态 | 代码 | 何时出现 |
|---|---|---|

#### 示例

```http
METHOD /path
...
```

## 兼容性

- <可以变更的内容>
- <需要新版本的内容>

## 待定问题

- <问题>

规则

  • 不要编造业务规则。
  • 没有理由就不要暴露内部字段。
  • 不要在端点之间使用不一致的命名。
  • 不要围绕当前数据库模式设计公共API。
  • 不要省略错误和空状态行为。
  • 如果API处理金钱、健康或个人数据,则需要安全审查。

质量检查清单

  • 调用者和任务明确。
  • 模式完整。
  • 错误一致且安全。
  • 认证和对象级权限已定义。
  • 分页和限制已定义。
  • 兼容性已处理。
  • 示例有效。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能