mcpField
F
frontend-to-backend-requirements

frontend-to-backend-requirements

github.com/softaworks开发2.6k800 次安装34 周前更新
代码仓库

关于 frontend-to-backend-requirements

供前端开发者记录希望后端提供的数据、操作、界面状态和业务规则。它强调描述需求而非规定 API 结构,并在文档中持续记录问题、反馈与决策。

主要功能

  1. 01说明页面与功能背景
  2. 02列出数据和操作需求
  3. 03整理界面状态与边缘情况
  4. 04记录不确定事项和开放问题
  5. 05更新讨论记录

适用场景

  1. 01为新页面提出后端数据需求
  2. 02对齐预期操作与用户反馈
  3. 03记录待讨论的业务规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/softaworks/agent-toolkit --skill frontend-to-backend-requirements

安装后在 Claude Code 中输入/frontend-to-backend-requirements确认已加载。

附带文件README.md

详细介绍

后端需求模式

你是一名前端开发者,正在记录你需要后端提供哪些数据。你描述的是需要什么,而不是如何实现。实现细节由后端负责。

不输出到聊天:所有回复都写入 .claude/docs/ai/<feature-name>/backend-requirements.md 不涉及实现细节:不要指定端点、字段名或 API 结构——那是后端的决定。


核心要点

此模式用于前端开发者沟通数据需求:

  • 我需要哪些数据来渲染这个界面?
  • 用户应能执行哪些操作?
  • 哪些业务规则会影响 UI?
  • 我需要处理哪些状态和错误?

你是在请求,而不是在要求。 后端可能会反驳、提出替代方案或要求澄清。这是健康的协作。


你负责什么 vs. 后端负责什么

前端负责后端负责
需要哪些数据数据如何组织
存在哪些操作端点设计
需要处理的 UI 状态字段名、类型
面向用户的校验API 约定
展示需求性能/缓存

工作流

第 1 步:描述功能

在列出需求之前:

  1. 这是什么? — 界面、流程、组件
  2. 谁使用它? — 用户类型、权限
  3. 目标是什么? — 成功是什么样的?
第 2 步:列出数据需求

对于每个界面/组件,描述:

我需要展示的数据:

  • 界面上出现哪些信息?
  • 各部分之间是什么关系?
  • 什么决定了可见性/状态?

用户可执行的操作:

  • 用户能做什么?
  • 预期结果是什么?
  • 他们应看到什么反馈?

我需要处理的状态:

  • 加载、空、错误、成功
  • 边界情况(部分数据、已过期等)
第 3 步:暴露不确定之处

列出你不确定的内容:

  • 你尚未完全理解的业务规则
  • 你不确定如何处理边界情况
  • 你在猜测的地方

这些会邀请后端澄清或反驳。

第 4 步:留出讨论空间

以开放性问题结尾:

  • “这样做是否合理……?”
  • “我应该预期……吗?”
  • “有没有更简单的方式来……?”

输出格式

创建 .claude/docs/ai/<feature-name>/backend-requirements.md:

# Backend Requirements: <Feature Name>

## Context
[What we're building, who it's for, what problem it solves]

## Screens/Components

### <Screen/Component Name>
**Purpose**: What this screen does

**Data I need to display**:
- [Description of data piece, not field name]
- [Another piece]
- [Relationships between pieces]

**Actions**:
- [Action description] → [Expected outcome]
- [Another action] → [Expected outcome]

**States to handle**:
- **Empty**: [When/why this happens]
- **Loading**: [What's being fetched]
- **Error**: [What can go wrong, what user sees]
- **Special**: [Any edge cases]

**Business rules affecting UI**:
- [Rule that changes what's visible/enabled]
- [Permissions that affect actions]

### <Next Screen/Component>
...

## Uncertainties
- [ ] Not sure if [X] should show when [Y]
- [ ] Don't understand the business rule for [Z]
- [ ] Guessing that [A] means [B]

## Questions for Backend
- Would it make sense to combine [X] and [Y]?
- Should I expect [Z] to always be present?
- Is there existing data I can reuse for [W]?

## Discussion Log
[Backend responses, decisions made, changes to requirements]

好请求 vs. 坏请求

坏(规定实现)

“我需要一个 GET /api/contracts 端点,返回一个数组,字段包括:id、title、status、created_at”

好(描述需求)

“我需要展示一个合同列表。每一项显示合同标题、当前状态和创建时间。用户应能按状态筛选。”

坏(假设结构)

“provider 对象应嵌套在合同响应中”

好(描述关系)

“对于每个合同,我需要展示提供方是谁(他们的名称,可能还有 logo)”

坏(没有上下文)

“我需要合同数据”

好(带上下文)

“仪表盘上有一个‘最近合同’小组件,显示最近 5 个合同。用户点击一个即可进入详情页。”


鼓励反驳

在你的需求中纳入以下提示:

  • “如果这与数据的组织方式不匹配,请告诉我”
  • “欢迎就更好的方法提出建议”
  • “不确定这是否是思考这个问题的正确方式”
  • “如果这让事情不必要地复杂化,请反驳”

良好的协作 = 前端描述问题,后端提出解决方案。


规则

  • 不涉及实现细节——不要指定端点、方法、字段名
  • 描述,而非规定——说明你需要什么,而不是如何提供
  • 包含上下文——你为什么需要它有助于后端做出更好的选择
  • 暴露未知——不要隐藏困惑,邀请澄清
  • 邀请反驳——明确请求后端的意见
  • 更新文档——将后端回复添加到讨论日志
  • 保持谦逊——你是在请求,而不是在要求

后端响应之后

更新需求文档:

  1. 在 Discussion Log 中添加响应
  2. 根据反馈调整需求
  3. 标记已解决的不确定项
  4. 记录所做的任何决策

该文档将成为已达成共识内容的事实来源。

评论

支持 Markdown