mcpField
B
brief-ku

brief-ku

github.com/adytm404开发253 次安装8 周前更新
代码仓库

关于 brief-ku

brief-ku 是一项将应用构想转化为产品与技术规格及实施计划的技能,面向开发者和编码 Agent。它分阶段澄清关键需求,并根据当前 Agent 的模式和权限调整流程,适当时可继续实施。

主要功能

  1. 01分阶段收集需求
  2. 02推荐架构与技术
  3. 03生成 PRD 和技术规格
  4. 04制定实施计划
  5. 05根据 Agent 模式与权限调整行为

适用场景

  1. 01将模糊的应用构想转成开发说明
  2. 02在选择架构前澄清需求
  3. 03使用 AI Agent 规划或构建应用

安装

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

$npx skills add https://github.com/adytm404/skills --skill brief-ku

安装后在 Claude Code 中输入/brief-ku确认已加载。

附带文件README.md

详细介绍

应用架构师与 PRD 构建技能

目的

这项技能可将简短、模糊或非技术性的应用需求转化为完整且可直接用于实现的产品规格说明。

用户输入示例:

Buatkan saya aplikasi absensi.

如果重要需求尚不明确,这项技能不得立即生成完整的 PRD。它必须先用简单、非技术性的语言了解用户需求,在适当时推荐合理的默认方案,并且仅在缺失信息会对产品、架构、安全、数据库、身份验证、部署或实现产生实质影响时,才提出后续问题。

最终结果应足够详细,可直接交给编码 Agent 或软件开发人员。


核心行为

这项技能分为五个阶段:

  1. 了解应用构想
  2. 澄清关键需求
  3. 推荐架构和技术
  4. 生成完整的产品与技术规格
  5. 制定可直接用于实现的开发计划

切勿用技术术语让非技术用户应接不暇。

先用简单的语言解释技术决策,再在内部将答案转化为技术需求。


执行模式检测

开始实质性工作之前,先确定当前 AI Agent 处于 Plan 模式还是 Build 模式。

此要求适用于 OpenCode、Codex、Claude Code、Cursor 及其他兼容的 Agent。不同宿主的模式名称、元数据和权限各不相同,因此应使用当前宿主的原生信号,而非假设存在通用 API。

应分别检测能力,而非根据宿主名称推断。确定当前 Agent 是否能够:

  • 提出结构化问题
  • 读取文件
  • 编辑文件
  • 执行命令
  • 访问浏览器或外部文档
  • 访问数据库或部署平台
  • 在不受只读限制的情况下运行

仅使用实际可用的能力。宿主名称得到确认,并不代表某项工具或权限必然可用。

按以下优先级进行检测:

  1. 明确指出当前模式的系统或开发者指令。
  2. 宿主公开的原生模式元数据。
  3. 工具权限,例如是否允许编辑文件、执行 shell 命令和使用实现工具,或者会话是否为只读。
  4. 用户的明确请求,例如只要求制定计划,或要求构建应用。

没有可靠信号时,切勿声称已检测到某种模式。

Plan 模式

当 Agent 处于 Plan 模式时:

  • 收集需求并解决关键歧义。
  • 生成用户要求的 PRD、技术规格说明和实施计划。
  • 在具备读取权限且与任务相关时,检查现有项目文件。
  • 不得编辑应用文件、运行破坏性命令或开始实现。
  • 不得绕过只读限制,也不得尝试强制宿主切换到 Build 模式。
  • 完成规划后,除非用户只要求制定计划,否则使用宿主原生的交互式提问或选项工具,询问用户是否希望切换到 Build 模式并继续实现。
  • 如果宿主提供原生模式切换控件,请指导用户使用该控件或请求用户使用。不得假装聊天回复已改变宿主的实际权限。

构建模式

当 Agent 处于构建模式时:

  • 充分了解需求并完成规划,确保能够安全地实施。
  • 规划完成后,立即按计划实施,无需再次征求确认。
  • 继续完成代码更改、必要的迁移、验证、相关测试,并提供简洁的完成报告。
  • 将实施计划作为工作指南,而不是停止编码的理由。
  • 只有在关键歧义、外部授权、机密信息、不可逆操作或依赖不可用阻碍安全推进时,才询问用户。

如果用户明确要求仅生成 PRD、规范、评审或计划,则该要求优先于自动实施。构建权限意味着可以实施,但不会覆盖用户要求的范围。

未知模式

如果没有可靠的模式信号,且无法从用户意图中明确判断期望结果,请使用当前 Agent 的交互式提问工具,提供以下概念选项:

Question: What should happen after the specification is ready?
Options:
- Plan and build (Recommended) — generate the plan, then implement it.
- Plan only — stop after the PRD and implementation plan.

如果没有交互式提问工具,则以简洁的文本方式提出同样的问题。若系统指令明确将会话标记为规划模式或只读模式,绝不能仅因存在 shell 或编辑工具就推断为构建模式。


指令优先级

当指令冲突时,按以下顺序处理:

  1. 系统指令和宿主环境的原生限制
  2. 用户明确要求的范围和约束
  3. 现有项目的惯例和架构
  4. 已确认的需求
  5. 已记录的假设
  6. 此技能的默认设置

绝不要仅因此技能采用了不同的默认设置,就替换现有项目的技术栈或惯例。


首要规则

当用户的请求不完整时,不要默默臆造重要的业务或技术需求。

如果缺少的信息会对以下任何事项造成实质影响,请先询问用户:

  • 应用范围
  • 仅 UI 还是完整功能应用
  • 平台
  • 身份验证
  • 用户角色
  • 数据库
  • 核心业务逻辑
  • 后端
  • API
  • 第三方集成
  • 文件存储
  • 安全模型
  • 部署目标
  • 原生设备功能
  • 支付或金融流程
  • 敏感用户数据

对于次要的实施细节,选择合理的默认设置并记录假设。


默认假设

仅当用户没有表达偏好,且缺少的选项不涉及关键业务时,才采用这些默认设置。

  • 默认应用平台:基于 Web 的应用
  • 默认交付模式:功能完整的应用
  • 默认 UI:响应式
  • 默认架构:全栈
  • 默认数据库:PostgreSQL
  • 默认身份验证:电子邮件和密码
  • 默认授权:存在多种用户类型时采用基于角色的访问控制
  • 默认 API 风格:REST API
  • 默认部署假设:现代云/VPS 部署
  • 默认安全基线:符合生产环境要求的常见 Web 安全实践
  • 默认时区处理:一致地存储时间戳,并明确指定应用的业务时区
  • 默认技术栈:选择最符合应用需求的技术栈

如果用户的部署环境或应用需求表明有更合适的选择,不要盲目套用默认设置。

例如:

  • 如果用户明确面向共享主机或 cPanel,Laravel + MySQL 可能是更好的默认选择。
  • 如果用户需要现代 SaaS 仪表盘,Next.js + PostgreSQL 可能更合适。
  • 如果用户需要快速构建 MVP,并使用托管后端服务,Next.js + Supabase 可能是合适的选择。
  • 如果用户需要原生移动应用,请推荐合适的原生或跨平台移动技术栈。

必须优先澄清

如果用户的初始请求尚未回答以下问题,请在对话早期询问这两个决策。

1. 应用范围

使用非技术性语言提问:

你希望应用只是一个界面/原型,还是希望它具备完整功能,包括登录、数据存储和后台流程?

提供简单选项:

  • 仅界面 — 适用于原型、演示或 UI 设计。
  • 完整功能 — 功能确实可以运行,并根据需要包含数据库/后端。
  • 还不确定 — 根据应用构想选择最合适的选项。

默认值:完整功能。

不要只使用“前端”或“全栈”等术语而不加解释。


2. 应用平台

提问:

你希望将应用开发成网站还是移动应用?

提供选项:

  • 基于 Web — 通过浏览器访问,并可适配笔记本电脑和手机。
  • 移动应用 — 安装在 Android/iOS 上的应用。
  • 还不确定 — 推荐最合适的平台。

默认值:基于 Web。

如果用户要求开发移动应用,请确定他们需要的是:

  • 仅 Android
  • 仅 iOS
  • Android 和 iOS
  • 原生移动应用
  • 跨平台移动应用

如果用户明确要求原生移动应用,请尊重这一要求,并推荐合适的原生技术栈。


需求探索原则

必须使用交互式提问工具

每当技能需要用户作答时,必须使用当前 AI Agent 的交互式提问/选项工具,而不是将问题作为普通聊天文本发送。

使用当前 Agent 或运行时提供的工具,例如:

  • OpenCode:question
  • Codex:request_user_input 或该运行时提供的等效交互式输入工具
  • Claude Code:AskUserQuestion
  • Cursor:可用的交互式提问、选择或用户输入工具
  • 其他 Agent:宿主提供的等效结构化提问或选项工具

不同 Agent 的工具名称和参数格式各不相同。检测可用工具并遵循其准确的原生格式;不要模仿其他 Agent 的工具调用格式。

对于每个结构化问题:

  • 如果工具支持,请提供简短、清晰的标题或标签。
  • 使用简单、非技术性的语言提问。
  • 提供简洁的选项标签和简短说明。
  • 将推荐选项放在首位,并在工具支持标签或说明时标记为推荐选项。
  • 如果工具支持,请允许用户自定义回答或填写自由文本。
  • 只有在多个答案都可能适用时,才启用多选,例如选择所需功能或支持的平台。
  • 对于互斥的决定,使用单选,例如仅 UI 与完整功能。
  • 只有在当前轮次开始时已知的信息足以独立回答问题时,才将问题分组。
  • 绝不要在同一次工具调用中提出依赖于当前答案的后续问题。
  • 不要在正文中重复通过工具提出的问题。

如果当前运行时确实不提供交互式提问工具,请改用简洁的编号列表并列出明确选项。仅当必需的工具不可用时才允许此回退,不得仅为方便而使用。

如果不需要用户回答、需求已经明确,或某个次要细节可以安全地使用已记录的默认值,则不要使用交互式提问工具。


逐步提问

不要一次提出 20 个问题。

提出能推动下一步架构决策所需的最少问题。

对于模糊的初始请求,应采用自适应的多轮需求探索,而不是一次性提供冗长的问题表单。

第 1 轮 — 基础方向

只询问 2-3 个相互独立、用于确定方向的决策,通常包括:

  • 应用范围:UI/原型,还是功能完整
  • 平台:Web、移动端、桌面端、仅 API,或其他相关选项
  • 无法推断时的交付级别:原型、MVP、可用于生产环境,或企业级

如果详细后端、身份验证、角色、存储、集成或部署问题是否相关取决于这些答案,则暂时不要询问。

规划检查点

收到第 1 轮的回答后:

  1. 更新需求状态。
  2. 用 1-3 句简洁的话总结所选方向。
  3. 说明根据这些回答,哪些产品或架构决策现在变得重要。
  4. 根据这些依赖关系准备下一轮问题。

此检查点是简短的工作理解,并非最终 PRD。暂时不要生成完整规格说明。

示例:

初步方向:用于运营工作的功能完整 Web 应用。这意味着系统可能需要用户账户、数据存储和访问规则。接下来需要明确用户和主要流程。

第 2 轮 — 产品形态

根据第 1 轮的回答提出约 2-5 个自适应问题。常见主题包括:

  • 目标用户和角色
  • 主要工作流和 P0 功能
  • 账户和登录行为
  • 必须持久化的数据
  • 应用特有的业务规则

如果选择了 UI/原型,第 2 轮应聚焦页面、交互、模拟数据、视觉方向和响应式适配目标。除非原型必须呈现后端内容,否则不要询问后端问题。

如果选择了 功能完整,通常应在确定架构之前,于第 2 轮明确目标用户、核心工作流、身份验证、角色和持久化数据。

第 3 轮及以后 — 条件性细节

每轮收到回答后,更新需求状态;只有仍存在重大歧义时,才再提出一小轮问题。条件性主题可能包括:

  • 支付
  • GPS、摄像头、生物识别或原生设备访问
  • 第三方集成
  • 文件存储
  • 多租户
  • 敏感数据生命周期
  • 部署限制
  • 规模或合规要求

每次进入下一轮之前,提供一个简短的规划检查点,说明已了解到什么,以及为什么接下来的决策很重要。

不要强行设定固定轮数。对于需求模糊且第 1 轮回答选择了功能完整方案的情况,通常至少需要两轮。如果用户的原始请求已经提供所需细节,则跳过不必要的轮次。

只有当用户的回答揭示了其他重要歧义时,才提出后续问题。

不要仅仅因为工具支持多个问题,就在第 1 轮询问所有可能的问题。


首轮澄清模板

必要时,通过当前 Agent 的交互式问题/选项工具,只提交与以下问题类似的基础问题:

  1. 这个应用想要仅包含界面,还是要功能完整、真正可用?
  2. 想要制作成网站还是移动应用?如果不确定,默认选择网站。
  3. 目标是原型、MVP,还是可用于生产环境?仅在这会实质性改变预期结果且无法推断时询问。

根据应用调整问题。不要询问无关问题。

除非用户已经提供基础决策,否则有关用户、核心操作、登录、角色、持久化数据和技术的问题应放在第 2 轮或之后询问。


使用非技术性语言

优先使用:

是否需要保存用户数据和活动记录,以便下次打开应用时仍可使用?

而不是:

要用数据库吗?

优先使用:

每位用户是否都需要拥有自己的账户?

而不是:

需要身份验证吗?

优先使用:

是否有不同类型的用户,例如管理员和员工?

而不是:

需要基于角色的访问控制吗?

优先使用:

应用将部署在普通主机/cPanel、VPS 上,还是尚未确定?

而不是:

部署目标?

可以在解释技术术语的含义后再引入这些术语。


处理“我不知道”

不要因为用户不理解技术问题而让他们无法继续。

对于技术选项,允许用户回答:

  • 随意
  • 都行
  • 不知道
  • 请推荐
  • 请帮我选

用户不知道时,选择最合适的选项,并简要说明原因。

例如:

对于这类应用,我建议使用 PostgreSQL,因为数据之间有关联,并且需要一致的结构。

不要反复要求用户在他们不理解的技术之间做选择。


需求状态模型

在内部将重要需求归类为:

  • KNOWN
  • ASSUMED
  • UNKNOWN
  • NOT_REQUIRED

收到以下内容后,例如:

创建一个考勤应用。

可能的内部状态:

Application Type: Attendance System — KNOWN
Application Scope: Full Functional — ASSUMED
Platform: Web — ASSUMED
Target Users: UNKNOWN
Authentication: ASSUMED_REQUIRED
Database: ASSUMED_REQUIRED
User Roles: UNKNOWN
Backend: ASSUMED_REQUIRED
Attendance Method: UNKNOWN
Location Validation: UNKNOWN
Deployment: UNKNOWN
Technology Stack: UNKNOWN

使用此模型来判断哪些内容需要澄清。

除非有助于用户理解,否则不要展示此内部状态。


需求完整度

使用以下概念性量表:

  • 0-30% — 需求过于模糊;必须澄清。
  • 30-60% — 澄清主要的产品和架构决策。
  • 60-80% — 只询问剩余的少数重要问题。
  • 80-100% — 生成规格说明,并记录次要假设。

不要为了达到一个人为设定的 100% 而提问。


产品探索

尝试确定:

应用信息

  • 应用名称(如已知)
  • 应用类型
  • 业务目的
  • 要解决的问题
  • 目标用户

平台

  • Web
  • 移动端
  • 原生移动应用
  • 跨平台
  • 桌面端
  • 仅 API
  • 多平台

范围

  • 仅 UI/原型
  • 功能完整
  • MVP
  • 可用于生产环境的系统

项目背景

确定请求属于以下哪种情况:

  • 全新项目 — 没有现有代码库的新应用
  • 现有项目 — 在现有代码库中添加功能、重新设计、迁移或修复

对于现有项目,在推荐架构或实施方案之前,先检查可用的项目背景信息:

  • 目录结构和包清单
  • 框架、语言和运行时版本
  • 现有数据库架构和迁移
  • 身份验证和授权模式
  • API 约定
  • 编码约定和 Agent 指令
  • 测试框架和命令
  • 部署和环境配置

除非既有模式与需求不兼容、不安全、存在问题,或用户明确要求迁移,否则应沿用这些模式。解释任何拟议的偏离及其影响。

对于全新项目,根据已确认的需求和已记录的假设,选择最简单且合适的架构。

交付级别

将预期交付级别归类为:

  • 原型 — UI 和交互可以使用模拟数据;不意味着需要生产环境后端
  • MVP — 能够完成核心工作流的最小可用产品
  • 可用于生产环境 — 包含运营安全、测试、部署、监控和恢复要求
  • 企业级 — 可能需要组织规模的控制措施,例如合规性、可审计性、高可用性和正式运维

不要将每个完整功能的需求都视为企业级软件。如果交付级别会实质性地改变范围,且无法推断,应通过交互式提问工具进行询问。否则,选择合理的级别并记录下来。

范围边界

每份最终 PRD 都必须区分:

In Scope
Out of Scope / Non-Goals
Future Considerations

不要悄悄将未来想法或可选建议纳入当前实施范围。在构建模式下,只实现已确认在范围内的工作。

规模与约束

仅在规模或成本会影响架构时询问相关问题。相关因素包括:

  • 预期用户数和并发使用量
  • 单组织还是多租户运行
  • 数据和文件量
  • 离线需求
  • 托管预算
  • 地理或法规限制

对于常见的小规模应用,应采用合理且有文档记录的假设,而不是强行进行推测性的容量规划。

用户类型

确定:

  • 谁会使用该应用
  • 是否有多个角色
  • 每个角色的权限

示例:

  • 管理员
  • 员工
  • 教师
  • 学生
  • 客户
  • 供应商
  • 操作员
  • 所有者

功能发现

确定:

  • 主要工作流
  • 核心功能
  • 辅助功能
  • 管理功能
  • 报告需求
  • 搜索/筛选需求
  • 通知
  • 文件上传
  • 导出/导入
  • 外部集成
  • 位置/GPS
  • 相机
  • QR 码
  • 支付
  • 审批工作流
  • 审计跟踪

没有明确需求时,不要自动添加昂贵或复杂的功能。

你可以单独推荐可选功能。


仅 UI 模式

如果用户选择仅界面,不要强行要求数据库、后端、身份验证服务器逻辑或 API 实现。

规格应侧重于:

  • 页面
  • 导航
  • 组件
  • 布局
  • 响应式行为
  • 模拟数据
  • 交互状态
  • 加载状态
  • 空状态
  • 错误状态
  • 表单行为
  • UI 验证
  • 设计方向

明确标记依赖后端的交互为模拟实现。

示例:

Login form:
- UI only
- Authentication is simulated
- No real credential validation

完整功能模式

如果用户选择完整功能,确定应用是否需要:

  • 数据库
  • 后端
  • 身份验证
  • 授权
  • API
  • 文件存储
  • 后台处理
  • 外部集成
  • 部署
  • 日志记录
  • 监控
  • 安全控制

对于大多数数据驱动型应用,除非应用的性质表明无需后端和数据库,否则默认需要后端和数据库。


技术推荐引擎

根据应用需求推荐技术栈,而不是所有项目都使用同一套技术栈。

用简明易懂的语言简要说明推荐理由。


推荐的默认技术栈

现代 Web 应用/SaaS/仪表板

建议从以下方案开始:

Frontend: Next.js
Language: TypeScript
Backend: Next.js server/API or dedicated Node.js service when needed
Database: PostgreSQL
ORM: Prisma or equivalent
Authentication: Auth.js or equivalent secure authentication solution
Validation: Zod or equivalent schema validation
Styling: Tailwind CSS

用户没有偏好,且没有更适合其他技术栈的部署限制时,使用此方案。


共享主机/cPanel

推荐:

Backend: Laravel
Language: PHP
Frontend: Blade or suitable JavaScript frontend
Database: MySQL/MariaDB
Authentication: Laravel authentication

易于通过 cPanel 部署很重要时,优先选择此方案。


快速 MVP/托管后端

可选方案:

Frontend: Next.js
Language: TypeScript
Backend/Data Platform: Supabase
Database: PostgreSQL
Authentication: Supabase Auth
Storage: Supabase Storage when files are required

快速开发和降低基础设施复杂度是优先事项时,使用此方案。


原生 Android

可选方案:

Language: Kotlin
UI: Jetpack Compose
Backend: API-based backend
Database: PostgreSQL/MySQL on server
Local Storage: Room when offline storage is needed

原生 iOS

可选方案:

Language: Swift
UI: SwiftUI
Backend: API-based backend
Database: PostgreSQL/MySQL on server
Local Storage: SwiftData/Core Data when needed

跨平台移动应用

可选方案:

Flutter + Dart

或

React Native + TypeScript

根据用户的生态系统和需求进行选择。

如果用户明确要求原生开发,不要将跨平台方案称为“原生”。


数据库选择

除非符合以下情况,否则不要让用户选择数据库:

  • 用户已经了解各个选项
  • 用户受到基础设施限制
  • 用户所在组织要求使用特定数据库
  • 数据库选择会实质性影响集成或部署

否则,请直接推荐数据库。

常见推荐:

  • PostgreSQL — 现代结构化应用、SaaS、关系型业务数据
  • MySQL/MariaDB — 共享主机/cPanel 和常见的 PHP 生态系统
  • SQLite — 本地原型或简单的单用户应用
  • 托管 PostgreSQL — 快速部署 MVP

不要仅仅因为应用包含类似 JSON 的数据就默认使用 NoSQL。


后端决策

确定是否需要后端功能。

常见的后端需求包括:

  • 用户账户
  • 持久化数据
  • 权限
  • 业务规则
  • 文件存储
  • 支付
  • 报告
  • 外部 API 集成
  • 管理操作

如果用户只需要 UI,应模拟这些系统,而不是实现它们。


身份验证要求

如果应用包含以下内容,则必须考虑身份验证:

  • 用户专属数据
  • 私有数据
  • 管理员功能
  • 受限功能
  • 存储的个人记录
  • 与用户关联的数据修改

常见 Web 应用的默认身份验证方式:

  • 电子邮件 + 密码
  • 安全的密码哈希
  • 登录
  • 登出
  • 会话管理
  • 忘记密码
  • 重置密码
  • 账户状态验证

仅在适当时才应提供注册功能。

某些应用应使用由管理员创建的账户,而不是开放注册。


授权

如果存在多种用户类型,请定义基于角色的访问控制。

示例:

Admin:
- Manage users
- View all records
- Manage configuration
- View reports

Employee:
- View own profile
- Create own attendance
- View own attendance history

必须在后端强制执行授权。

在前端隐藏按钮并不足以实现访问控制。


安全基线

每个完整功能的应用都必须包含“安全要求”部分。

根据架构应用相关的安全措施。

身份验证安全

  • 绝不存储明文密码
  • 使用 Argon2、bcrypt、scrypt 或适当的安全密码哈希实现
  • 安全的会话或令牌管理
  • 会话过期
  • 安全登出
  • 密码重置令牌必须过期
  • 在实际可行时防止用户枚举

授权

  • 服务端权限验证
  • 基于角色或资源的授权
  • 保护管理员端点
  • 验证记录所有权

输入验证

  • 服务端验证
  • 架构验证
  • 长度限制
  • 类型验证
  • 拒绝意外输入
  • 在适当时进行清理

数据库安全

  • ORM 或预处理语句
  • 防止 SQL 注入
  • 数据库凭据遵循最小权限原则
  • 将数据库凭据存储在环境变量中

Web 安全

请考虑:

  • HTTPS
  • 安全 Cookie
  • HttpOnly Cookie
  • SameSite Cookie 策略
  • 适用时启用 CSRF 防护
  • 防止 XSS
  • 适当时使用内容安全策略
  • 安全标头
  • CORS 配置
  • 速率限制

API 安全

  • 身份验证中间件
  • 授权中间件
  • 输入验证
  • 速率限制
  • 一致的错误处理
  • 生产环境中不得暴露内部堆栈跟踪
  • 避免泄露敏感信息

密钥管理

不得将密钥硬编码。

使用环境变量或安全的密钥管理器存储密钥。

示例:

DATABASE_URL
AUTH_SECRET
JWT_SECRET
SMTP_PASSWORD
THIRD_PARTY_API_KEY

示例中绝不要放入真实凭据。


按功能扩展安全要求

文件上传

适用时包括:

  • 文件类型验证
  • 文件大小限制
  • 安全的自动生成文件名
  • 适用时防止上传可执行文件
  • 私有文件使用私有存储
  • 对文件访问进行授权
  • 对高风险使用场景考虑恶意软件扫描

支付或金融数据

请考虑:

  • 审计轨迹
  • 幂等性
  • 严格授权
  • 交易完整性
  • 适当时采用不可变的金融历史记录
  • 除非使用符合规范的服务提供商和架构,否则绝不要存储敏感的支付卡数据

管理面板

包括:

  • 严格授权
  • 对敏感操作记录审计日志
  • 管理员活动历史
  • 防止权限提升

位置

包括:

  • 用户权限处理
  • 位置验证
  • 适当的精度
  • 隐私考量
  • 不要收集超出功能所需范围的位置数据

摄像头 / 生物识别

在最终确定之前,明确隐私、同意、存储和设备权限要求。


# 业务逻辑规则

将用户陈述转化为精确的系统规则。

用户陈述示例:

员工只能签到一次。

转换为:

- A user may create only one check-in record per attendance date.
- Duplicate check-in requests must be rejected.
- The server, not the client, determines authoritative attendance timestamps.

示例:

管理员和员工不一样。

转换为:

Roles:
- ADMIN
- EMPLOYEE

ADMIN can manage employees and view all attendance records.
EMPLOYEE can only access their own attendance records.

API 设计

对于使用 API 的完整功能型应用,生成完整的 API 章节。

包括:

  • HTTP 方法
  • 路由
  • 用途
  • 身份验证要求
  • 权限要求
  • 请求参数
  • 请求正文
  • 响应格式
  • 重要验证
  • 预期错误

API 示例

POST /api/attendance/check-in

用途:

创建今天的签到记录。

身份验证:

必需。

授权:

员工账户。

请求示例:

{
  "latitude": -7.9666,
  "longitude": 112.6326
}

响应示例:

{
  "success": true,
  "data": {
    "id": "att_123",
    "checkInAt": "2026-09-06T08:01:00+07:00",
    "status": "present"
  }
}

可能的错误:

  • 401 UNAUTHENTICATED
  • 403 FORBIDDEN
  • 409 ALREADY_CHECKED_IN
  • 422 INVALID_LOCATION
  • 429 RATE_LIMITED

API 命名规则

除非另一种风格明显更合适,否则优先采用可预测的 REST 约定。

示例:

POST   /api/auth/login
POST   /api/auth/logout
GET    /api/auth/me

GET    /api/users
POST   /api/users
GET    /api/users/:id
PATCH  /api/users/:id
DELETE /api/users/:id

对于无法自然映射到 CRUD 的操作,可以使用明确的操作端点:

POST /api/attendance/check-in
POST /api/attendance/check-out
POST /api/leave-requests/:id/approve

API 响应约定

使用一致的格式。

成功:

{
  "success": true,
  "data": {}
}

错误:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message"
  }
}

不要暴露敏感的实现细节。


数据库规范

对于完整功能型的数据驱动应用,生成:

  • 表/实体
  • 重要字段
  • 适用时的数据类型
  • 主键
  • 外键
  • 唯一约束
  • 索引建议
  • 关系
  • 适用时的软删除要求
  • 创建/更新时间戳
  • 业务约束

示例:

users
-----
id
name
email
password_hash
role
status
created_at
updated_at

attendance
----------
id
user_id
attendance_date
check_in_at
check_out_at
check_in_latitude
check_in_longitude
status
created_at
updated_at

关系:

users 1 ---- N attendance

还要说明重要约束。

示例:

UNIQUE(user_id, attendance_date)

以防止每日考勤重复。


数据生命周期与运维

对于会持久化用户、业务、财务、健康、教育、人力资源、政府或其他敏感数据的应用,请定义相关生命周期规则:

  • 数据所有权
  • 保留期限
  • 账户删除行为
  • 软删除与硬删除
  • 导出要求
  • 备份频率和保留期限
  • 恢复预期和恢复测试
  • 审计历史
  • 归档或匿名化
  • 用户指出的法律或监管约束

不要臆造保留期限或合规声明。如果该选择对业务至关重要,请询问;否则将其标记为尚未解决的决策或已记录的假设。

对于可用于生产的系统,请在相关时纳入运维要求:

  • 监控和运行状况检查
  • 错误告警
  • 备份和恢复流程
  • 迁移和回滚策略
  • 与事件相关的审计日志
  • 仅在有充分依据或已提供相关信息时定义恢复目标

前端页面和路由

生成前端路由规范。

示例:

/login
/dashboard
/attendance
/attendance/history
/profile

/admin
/admin/users
/admin/attendance
/admin/reports
/admin/settings

对于每个重要路由,请包括:

  • 访问级别
  • 用途
  • 主要组件
  • 主要操作
  • 加载状态
  • 空状态
  • 错误状态

路由清单与可访问性验证

对于每个 Web 应用或 API,请创建完整的适用路由清单。“可访问”是指每个路由都能为每个相关参与者返回其定义的结果;这并不意味着每个路由都必须向所有人返回 200。

在实际项目可用时,从中发现路由:

  • 基于文件的页面和 API 路由
  • 路由器配置
  • 嵌套布局和路由组
  • 动态路由和全匹配路由
  • 重定向和回调
  • 身份验证和角色限制路由
  • 导航链接、菜单、按钮和程序化导航
  • 页面所需的服务端操作、加载器或 API 依赖项

对于全新项目,请在实施前根据已确认的需求推导路由清单。对于现有项目,请将文档中记录的路由与源代码进行对比,并报告不一致之处。

路由契约

为每个范围内的路由定义以下字段:

字段说明
路由 ID稳定 ID,例如 ROUTE-WEB-001 或 ROUTE-API-001
路径静态路径或动态模式
类型页面、API、重定向、回调、webhook 或内部操作
访问权限公开、已认证、特定角色或服务认证
预期结果渲染的页面、响应状态、重定向或领域结果
测试数据所需的 fixture、账户、参数或请求正文
导航来源菜单、链接、按钮、流程或有意仅允许直接访问
验证冒烟测试、授权、渲染、导航、依赖项或 E2E 测试 ID

示例:

Route ID: ROUTE-WEB-003
Path: /admin/users
Type: Page
Access: ADMIN
Expected Results:
- ADMIN: 200 and users page renders
- EMPLOYEE: 403 or documented safe redirect
- Guest: redirect to /login
Navigation Source: admin sidebar
Verification: TEST-ROUTE-003, TEST-AUTHZ-004, TEST-NAV-002

必需的验证层

应用所有相关层:

  1. 注册——路由存在,且不会意外产生 404。
  2. HTTP 结果——状态或重定向符合路由契约,且不会意外返回 500。
  3. 身份验证——在适用情况下,访客、已认证用户、会话过期用户和已停用账户的行为均正确。
  4. 授权——每个相关角色都能获得允许访问的页面或结果,或预期的拒绝结果。
  5. 渲染——页面渲染时不会出现未捕获的异常、hydration 失败或空白屏幕。
  6. 导航——用户可见的路由可通过预期的菜单、链接、按钮或工作流访问。
  7. 依赖项——加载器、服务端操作、API 和必需数据不会导致路由故障。
  8. 动态参数——有效、无效、记录缺失和无权访问记录等情况均能正确处理。
  9. 错误边界——预期的 403、404、验证错误和意外错误状态均能正确渲染。
  10. 响应式访问——主导航在受支持的桌面和移动布局上均可正常使用。

统一使用以下结果标签:

PASS — expected page, response, denial, or redirect observed
FAIL — route missing, wrong access result, unexpected 500, render crash, or broken navigation
NOT_RUN — verification could not run; include the concrete blocker
NOT_APPLICABLE — layer does not apply; include the reason when not obvious

路由访问矩阵

为生成详细且可直接用于实现的输出,请创建涵盖每个范围内路由和相关角色的矩阵:

路由访客已认证用户管理员预期结果测试 ID状态
/login渲染重定向到仪表板重定向到仪表板不形成身份验证循环TEST-ROUTE-001计划中
/dashboard重定向到登录页渲染个人仪表板渲染仪表板受保护的路由TEST-ROUTE-002计划中
/admin/users重定向到登录页403渲染用户页面仅限管理员TEST-ROUTE-003计划中

根据实际角色调整角色列。对于 API,请使用预期的 HTTP 状态和响应契约。

路由例外

某些路由可能需要特殊设置或排除,包括:

  • 仅用于开发或框架内部的路由
  • 已签名的 webhooks
  • 需要提供方状态的 OAuth 回调
  • 第三方软件包路由
  • 计划移除的弃用路由

记录每个例外、所需 fixture 和替代验证方式。绝不要默默跳过路由。


用户流程

描述重要的端到端流程。

示例:

Employee Login
↓
Dashboard
↓
Check In
↓
Validate location
↓
Validate duplicate attendance
↓
Save attendance
↓
Display confirmation

在重要时,也要包括替代流程和错误流程。


功能优先级

使用以下级别对功能分类:

  • P0 — 必需
  • P1 — 重要
  • P2 — 可选

示例:

优先级功能
P0登录
P0签到
P0签退
P0出勤历史
P1请假申请
P1报告
P2QR 考勤
P2人脸识别

不要自动将可选想法提升为必需范围。


验收标准

每项重要的 P0 功能都应有可衡量的验收标准。

示例:

Feature: Employee Check-in

Acceptance Criteria:
- User must be authenticated.
- User may check in only once per business day.
- Authoritative time must come from the server.
- Invalid location must be rejected when office radius validation is enabled.
- Successful check-in must be stored permanently.
- Duplicate check-in must return a clear error.

避免使用含糊的标准,例如:

该功能应正常运行。


需求可追溯性

对于详细规格或可直接用于实现的规格,为 P0 需求分配稳定 ID。将每项需求与其实现和验证环节关联起来。

示例:

Requirement: REQ-ATT-001
Feature: Employee check-in
Priority: P0
Pages: /attendance
API: POST /api/attendance/check-in
Data: attendance
Business Rules: one check-in per employee per business day
Verification: TEST-ATT-API-001, TEST-ATT-E2E-001

在能提升交接质量时使用可追溯性。不要给简短的原型增加不必要的标识符。


验证矩阵

对于每项 P0 功能,说明如何证明其已完成。优先采用可观察的检查,而非模糊的保证。

示例:

需求验证方式
邮箱/密码登录集成测试验证有效和无效凭据
员工无法访问管理员 API授权测试返回 403
每天只能签到一次数据库唯一约束和重复请求 API 测试
GPS 半径限制单元边界测试和超出允许半径的 API 测试

在 Build 模式下,如果所需工具和环境可用,则运行列出的检查。报告跳过的检查及具体原因。


边缘情况

始终考虑相关的边缘情况。

示例:

  • 用户重复提交
  • 网络缓慢导致重复请求
  • 用户提交后刷新页面
  • 表单提交期间会话过期
  • 已禁用的账户仍有旧会话
  • 用户尝试访问其他用户的数据
  • 未签到就签退
  • 记录跨越午夜
  • 不同时区
  • 缺少必填字段
  • 关联记录已删除
  • 第三方 API 不可用
  • 文件上传中断
  • API 请求超时
  • 数据库事务部分失败

仅包含与产品相关的边缘情况。


错误处理

适用时,定义常见 HTTP 错误:

400 — Invalid request
401 — Authentication required
403 — Permission denied
404 — Resource not found
409 — Business rule conflict
422 — Validation failed
429 — Too many requests
500 — Unexpected server error

在适当情况下,包含特定领域的错误代码。

示例:

ALREADY_CHECKED_IN
INVALID_ATTENDANCE_LOCATION
ACCOUNT_DISABLED
LEAVE_ALREADY_APPROVED

非功能性需求

评估并纳入相关需求。

性能

考虑:

  • 分页
  • 数据库索引
  • 查询优化
  • 有依据时使用缓存
  • 图片优化
  • 延迟加载

响应式设计

Web 应用应适用于:

  • 桌面端
  • 平板电脑
  • 移动浏览器

除非用户另有说明。

无障碍访问

考虑:

  • 语义化 HTML
  • 表单标签
  • 键盘导航
  • 焦点状态
  • 足够的对比度
  • 便于屏幕阅读器使用的组件

可靠性

包括:

  • 加载状态
  • 空状态
  • 适用时的重试行为
  • 错误状态
  • 事务处理
  • 重复请求保护

日志记录

考虑记录:

  • 应用错误
  • 身份验证事件
  • 敏感管理操作
  • 集成故障

不要记录密码、令牌或不必要的敏感数据。


UI 规范

如果用户未提供设计方向,则推荐简洁实用的默认方案。

示例:

Design:
- Modern
- Minimal
- Responsive
- Clear visual hierarchy
- Consistent spacing
- Accessible forms

除非确有需要,否则不要自行设计品牌配色方案。

对于仪表板,请确定:

  • 导航类型
  • 卡片
  • 表格
  • 筛选器
  • 搜索
  • 表单
  • 确认对话框
  • 通知
  • 空状态
  • 移动端导航

测试要求

对于完整的功能性应用,请制定适当的测试计划。

构建模式下的强制测试驱动开发

在构建模式下进行实现工作时,只要有可用的可执行测试工具,或能够合理地配置测试工具,就使用 TDD。现有项目的测试约定优先于首选工具。

按纵向切片使用以下循环:

Select one observable behavior
Define the public seam
Write one failing test
Run it and confirm RED for the expected reason
Write the minimum implementation
Run it and confirm GREEN
Run the relevant regression tests
Continue with the next behavior
Review and refactor only after behavior is green

必要规则:

  • 先红后绿。不要在编写失败的行为测试之前编写生产实现。
  • 每个循环只实现一个小行为和一个接缝。
  • 通过公共接口测试,而非私有方法或实现细节。
  • 预期值必须来自规范、已完成的示例或其他独立的事实来源。
  • 不要先写完所有测试,再编写所有实现。应使用纵向示踪切片。
  • 不要仅为了让错误行为通过,就削弱或重写有效测试。
  • 除非已运行测试命令并观察到结果,否则不要声称测试处于 RED 或 GREEN 状态。
  • 如果测试无法运行,请将其标记为 NOT_RUN,说明具体阻碍,绝不要报告为通过。

默认公共接缝:

  • 用户导航和渲染的浏览器或页面边界
  • API 的 HTTP 边界
  • 业务规则的公共服务或函数边界
  • 约束和事务的数据库集成边界

只有当选择会显著影响架构或测试成本时,才请用户选择接缝。否则,选择能够验证该行为的最窄公共接缝。

如果完整功能项目缺少测试工具,请在实现第一个功能前,先设置与技术栈兼容的最小测试框架。没有具体理由时,不要替换现有测试栈。

路由 TDD 顺序

将路由实现为纵向行为切片。示例:

Slice 1 — Guest opens /login
RED: route test expects the login form to render
GREEN: implement the login page

Slice 2 — Valid user submits login
RED: integration test expects authentication and dashboard redirect
GREEN: implement the minimum authentication flow

Slice 3 — Guest opens /dashboard
RED: route test expects redirect to /login
GREEN: add route protection

Slice 4 — Employee opens /admin/users
RED: authorization test expects 403 or the documented safe redirect
GREEN: enforce the ADMIN permission

每个路由切片只应添加满足当前失败测试所需的行为。

单元测试

测试:

  • 验证
  • 实用工具
  • 业务规则

API / 集成测试

测试:

  • 身份验证
  • 授权
  • CRUD
  • 业务规则
  • 数据库交互

端到端测试

测试关键用户流程。

示例:

login
→ check-in
→ check-out
→ view attendance history

也要包含负面用例。

示例:

Employee requests admin-only endpoint
→ API must return 403

路由冒烟测试和导航测试

每个范围内的路由都至少需要一项符合其契约的路由级验证。并非每条路由都需要完整的 E2E 测试。

使用:

  • 单元测试验证纯粹的验证逻辑和业务规则
  • 集成测试验证身份验证、授权、数据库行为、中间件、API、加载器和服务端操作
  • 路由冒烟测试验证注册以及预期的状态/重定向行为
  • 浏览器测试验证渲染、导航、响应式菜单和未捕获的客户端错误
  • E2E 测试验证 P0 用户旅程

在适用时,动态路由必须包含有代表性的有效、无效、记录缺失和未授权记录用例。


部署要求

仅当部署会显著影响架构,或用户提到了基础设施时,才询问部署相关问题。

可能的环境:

  • 共享主机/cPanel
  • VPS
  • Docker
  • 云平台
  • 托管平台
  • App Store / Play Store
  • 内部/本地使用

根据目标生成部署要求。

在相关时包含:

  • 环境变量
  • 构建流程
  • 数据库迁移
  • 存储
  • 域名/HTTPS
  • 反向代理
  • 进程管理器
  • Docker
  • 备份策略

环境变量

生成所需环境变量列表,不要包含真实凭据。

示例:

APP_URL=
DATABASE_URL=
AUTH_SECRET=
SMTP_HOST=
SMTP_PORT=
SMTP_USER=
SMTP_PASSWORD=
STORAGE_BUCKET=

只包含所选技术栈实际需要的变量。


开发阶段

生成实现顺序。

示例:

Phase 1 — Project Setup
Phase 2 — Database Schema
Phase 3 — Authentication & Authorization
Phase 4 — Core Backend/API
Phase 5 — Core Frontend
Phase 6 — Admin Features
Phase 7 — Validation & Security
Phase 8 — Testing
Phase 9 — Deployment

根据应用调整阶段。


实施任务

将各阶段拆分为适合编码 Agent 执行的可操作任务。

在 Build 模式下,将功能任务组织为 TDD 循环,而不是横向批次:

Vertical Slice
Failing Test and RED Command
Minimum Implementation
GREEN and Regression Commands
Route/Requirement Verification Update

不要创建这样的阶段:先编写所有测试,再开始实现;或先实现所有页面,再验证路由。

示例:

Phase 2 — Database

- Create users table
- Create attendance table
- Add role enum
- Add unique attendance-per-day constraint
- Add required indexes
- Create migrations
- Add development seed data

任务应有足够的细节,让编码 Agent 能以最少的歧义执行。


实施就绪关卡

在 Build 模式下开始实施前,请确认以下每一项均已明确、有意作出假设,或不适用:

  • 项目背景:从零开始还是已有项目
  • 交付级别
  • 范围内的 P0 功能
  • 范围外事项和非目标
  • 用户角色和权限
  • 关键业务规则
  • 数据模型和完整性约束
  • API 或集成契约
  • 安全敏感流程
  • 可衡量的验收标准
  • 验证方法
  • 完整的范围内路由清单
  • 每个路由及相关角色的预期访问结果
  • 动态路由和受保护路由的测试夹具
  • 已记录的路由例外
  • 选定的公共测试接口
  • 已确定的测试运行器以及 RED/GREEN 命令
  • 影响实施的部署约束
  • 敏感或受监管数据的生命周期规则

如果缺少某项会导致实施不安全,或很可能构建出错误的产品,请通过原生交互式提问工具提出最少的阻塞性问题。如果没有剩余的关键阻碍,则通过此关卡并直接继续实施,无需再次确认。

不要利用此关卡要求不切实际的完整性,也不要因普通且有安全默认值的实施细节而延误进度。


完成定义

包含项目级的完成定义。

示例:

The project is considered complete when:

- All P0 features are implemented.
- Every in-scope page and API route is inventoried.
- Every route returns the expected page, status, denial, or redirect for each relevant actor.
- Internal navigation does not point to missing routes.
- Protected and role-restricted routes enforce access on the server where applicable.
- Dynamic routes cover valid, invalid, missing-record, and unauthorized-record behavior where applicable.
- P0 pages render without uncaught client errors on supported desktop and mobile navigation.
- Route exceptions and `NOT_RUN` checks are documented.
- Each new behavior was implemented through an observed RED/GREEN TDD cycle when test tooling was available.
- Authentication works correctly.
- Authorization is enforced server-side.
- Database migrations are available.
- Required API endpoints are implemented.
- Server-side validation exists.
- Major error states are handled.
- Security requirements are applied.
- Core flows have automated tests.
- Responsive UI works on supported devices.
- Environment variables are documented.
- Deployment instructions are documented.
- The application can be started using the provided README.

最终输出结构

当需求足够明确时,请使用以下结构生成规格说明:

# Product Requirement Document

## 1. Project Overview
## 2. Problem Statement
## 3. Product Goals
## 4. Target Users
## 5. Application Scope
## 6. In Scope
## 7. Out of Scope / Non-Goals
## 8. Future Considerations
## 9. Platform
## 10. Delivery Level
## 11. User Roles & Permissions
## 12. Functional Requirements
## 13. Feature Priority
## 14. Requirement Traceability
## 15. User Flows
## 16. Pages & Navigation
## 17. Route Inventory
## 18. Route Access Matrix
## 19. Route Exceptions
## 20. UI Requirements
## 21. Technology Stack
## 22. System Architecture
## 23. Database Design
## 24. Data Lifecycle & Operations
## 25. API Specification
## 26. Authentication
## 27. Authorization
## 28. Security Requirements
## 29. Validation Rules
## 30. Error Handling
## 31. Edge Cases
## 32. Non-Functional Requirements
## 33. Testing Requirements
## 34. TDD Strategy & Test Seams
## 35. TDD Vertical Slices
## 36. Route Verification Matrix
## 37. Verification Matrix
## 38. Test Commands
## 39. Environment Variables
## 40. Deployment Requirements
## 41. Development Phases
## 42. Implementation Tasks
## 43. Acceptance Criteria
## 44. Definition of Done
## 45. Assumptions

不适用的章节可以省略。


可选的多文件输出

当用户要求提供可直接用于实施的规格说明时,可将内容按概念拆分为:

PRD.md
TECHNICAL_SPEC.md
IMPLEMENTATION_PLAN.md

推荐的职责划分:

PRD.md

包含:

  • 产品概述
  • 问题
  • 目标
  • 用户
  • 角色
  • 功能
  • 优先级
  • 用户流程
  • 验收标准

TECHNICAL_SPEC.md

包含:

  • 技术栈
  • 架构
  • 数据库
  • API
  • 身份验证
  • 授权
  • 安全
  • 验证
  • 错误处理
  • 环境变量
  • 部署

IMPLEMENTATION_PLAN.md

包含:

  • 开发阶段
  • 任务拆分
  • 依赖关系
  • 测试顺序
  • 完成定义

如果对编码 Agent 有帮助,也可以提议包含编码规范和实施规则的 AGENTS.md。


澄清问题停止条件

当信息足以制定合理的实施计划时,停止提问。

对于可以安全采用默认值处理的小偏好,不要继续追问。

生成最终 PRD 前,请确保以下内容均已明确、有意作出假设,或不适用:

Application purpose
Project context: greenfield or existing project
Application scope
In-scope and out-of-scope boundaries
Delivery level
Platform
Target users
Core features
Authentication
User roles
Data persistence
Backend requirement
Technology stack
Critical integrations
Security-sensitive features
Deployment constraints
Data lifecycle requirements
Verification approach
Route inventory and expected access outcomes
Test seams and executable test commands

假设规则

使用假设时:

  1. 作出合理的假设。
  2. 不要隐瞒假设。
  3. 将重要假设列入最终的 Assumptions 部分。
  4. 允许用户之后修改假设。
  5. 绝不要对可能大幅改变产品的关键业务规则作出假设。

示例:

Assumption:
The application will be web-based because no platform preference was provided.

Assumption:
PostgreSQL will be used because the application contains relational business data and no deployment constraint requires MySQL.

交互示例

用户:

请为我创建一个考勤应用。

助手:

助手调用当前 Agent 的交互式提问工具。概念性载荷:

Question: Aplikasinya ingin dibuat sampai tahap mana?
Options:
- Full functional (Recommended) — fitur berjalan dengan login, penyimpanan data, dan proses di belakangnya.
- Tampilan saja — prototype atau demo UI tanpa sistem nyata di belakangnya.
- Belum tahu — pilihkan berdasarkan kebutuhan aplikasi.

Question: Aplikasinya ingin digunakan melalui apa?
Options:
- Website (Recommended) — dibuka melalui browser dan responsive di laptop maupun HP.
- Mobile app — di-install di Android atau iOS.
- Belum tahu — pilihkan platform paling sesuai.

首次调用此工具时,不要询问用户角色、登录、数据存储、考勤方式或 GPS 规则,因为这些细节取决于范围和平台方面的回答。

用户:

功能要完整,只做 Web 端。

助手规划检查点:

初步方向:完整功能的 Web 考勤应用。系统需要存储数据,也可能需要具有不同权限的账户。接下来,我需要先明确用户和考勤流程,再确定架构。

随后,助手调用交互式提问工具进行第 2 轮提问:

Question: Siapa yang menggunakan aplikasi ini?
Options:
- Admin dan karyawan (Recommended) — admin mengelola sistem, karyawan melakukan absensi.
- Karyawan saja — tanpa panel administrasi khusus.
- Pengguna lain — jelaskan jenis pengguna yang dibutuhkan.

Question: Fitur utama apa yang diperlukan?
Options (multiple selection):
- Check-in dan check-out (Recommended) — catat waktu masuk dan pulang.
- Cuti atau izin — ajukan dan kelola ketidakhadiran.
- Laporan — lihat dan ekspor rekap absensi.
- GPS — gunakan lokasi saat absensi.

Question: Bagaimana akun pengguna dikelola?
Options:
- Login, akun dibuat admin (Recommended) — admin membuat akun karyawan.
- Login, pengguna daftar sendiri — pengguna dapat membuat akun.
- Tanpa login — data tidak dipisahkan berdasarkan akun.

用户:

管理员和员工。签到、签退、休假、报告,还有 GPS。需要登录,账户由管理员创建。

助手应分析关键需求是否足够明确。

助手规划检查点:

主要结构已经明确:管理员管理账户和报告,员工进行考勤并申请休假。由于选择了 GPS,在制定最终规格之前,需要确认位置验证规则。

第 3 轮可能的后续提问:

再次调用交互式提问工具,提出聚焦且有条件的问题:

Question: Bagaimana GPS digunakan saat absensi?
Options:
- Batasi radius kantor (Recommended) — absensi hanya diterima di dalam radius yang ditentukan.
- Catat lokasi saja — lokasi disimpan tanpa membatasi absensi.
- Tanpa GPS — hapus pemeriksaan lokasi.

收到这些回答后,更新需求状态。如果没有关键歧义,则生成完整规格;否则,再进行一轮小规模的自适应提问。


技术翻译示例

用户说:

普通登录。

翻译为:

Authentication:
- Email/password login
- Secure password hashing
- Session management
- Logout
- Forgot password
- Reset password

用户说:

管理员和员工不同。

翻译为:

Roles:
ADMIN
EMPLOYEE

Authorization:
ADMIN can manage employees and view organization-wide records.
EMPLOYEE can only access permitted employee features and their own records.

用户说:

必须在办公室考勤。

不要擅自推断具体的执行方式。

通过当前 Agent 的交互式提问工具询问:

Question: Bagaimana sistem memastikan pengguna absen di kantor?
Options:
- Periksa radius GPS (Recommended) — absensi hanya diizinkan saat pengguna berada dalam radius kantor.
- Catat GPS saja — lokasi direkam, tetapi tidak memblokir absensi.
- Cara lain — pengguna menjelaskan aturan sendiri.

如果用户确认,将其翻译为一条准确的业务规则。


架构决策原则

优先选择能够完全满足需求的最简单架构。

不要:

  • 为简单的 CRUD 应用引入微服务
  • 在没有明确理由时添加 Redis
  • 为普通的同步工作流添加 Kafka 或队列
  • 为简单的部署添加 Kubernetes
  • 仅仅因为 GraphQL 很新潮就添加它
  • 在没有数据模型方面理由时添加 NoSQL
  • 如果单体全栈应用已经足够,就不要创建独立的后端服务

优化以下方面:

  • 可维护性
  • 安全性
  • 简洁性
  • 部署兼容性
  • 开发效率
  • 职责划分清晰

交接给编码 Agent 的质量要求

最终规格应能让编码 Agent 理解:

  • 必须构建什么
  • 不得构建什么
  • 谁可以执行哪些操作
  • 存在哪些数据
  • 数据之间的关系
  • 存在哪些页面
  • 存在哪些 API
  • 每个 API 接受和返回什么
  • 必须执行哪些业务规则
  • 身份验证如何运作
  • 授权如何运作
  • 需要哪些安全控制
  • 必须处理哪些边界情况
  • 必须通过哪些测试
  • 实施应遵循什么顺序
  • 如何判定已完成

避免使用含糊的表述,例如:

Create a nice dashboard.
Add secure authentication.
Build CRUD.
Make it responsive.

应将其替换为可衡量的规格。


最终行为规则

始终:

  • 用户使用印尼语沟通时,使用简单的印尼语。
  • 除非用户明确要求使用其他语言,否则使用与用户相同的语言。
  • 开展实质性工作前,先检测并遵循当前 Agent 的 Plan 或 Build 模式。
  • 检测宿主环境的实际能力,不要只依据 Agent 的产品名称进行判断。
  • 保留现有项目约定,除非有充分理由需要更改。
  • Build 模式已启用且用户要求交付可用应用时,直接从规划进入实现。
  • Plan 模式下,规划完成后就停止;如需实现,使用宿主的原生流程请求切换到 Build 模式。
  • 缺少关键要求时,请求澄清。
  • 凡是需要用户回答的问题,都使用当前 Agent 的交互式提问/选项工具。
  • 对模糊请求采用自适应多轮澄清:先确认基础信息,再设置规划检查点,随后根据回答开展后续轮次。
  • 遵循 OpenCode、Codex、Claude Code、Cursor 或当前宿主原生的工具架构,不要假设所有工具格式都通用。
  • 使用非技术性的语言解释技术选择。
  • 为初学者推荐默认选项,不要强迫他们做技术决策。
  • 除非用户另有说明,否则默认构建基于 Web 的应用。
  • 除非用户明确只需要 UI/原型,否则默认构建功能完整的应用。
  • 根据实际项目推荐技术栈。
  • 如果私密功能或用户专属功能有需要,应加入身份验证。
  • 如果存在多个角色,应加入权限控制。
  • 每个功能完整的应用都应包含安全要求。
  • 如果需要持久化结构化数据,应包含数据库设计。
  • 如果存在后端功能,应包含 API/后端路由。
  • 包含验证和错误处理。
  • 纳入相关边界情况。
  • 为核心功能制定验收标准。
  • 包含测试要求。
  • 清点并验证所有范围内的路由,覆盖适用的注册、访问、授权、渲染、导航、依赖、动态参数、错误和响应式层面。
  • 将预期的拒绝访问和重定向视为有效的路由结果,不要要求每个用户都能获得 200 响应。
  • Build 模式下开展实现工作时,只要测试工具可用或能够合理配置,就应采用经观察验证的 RED/GREEN TDD 循环。
  • 包含开发阶段和可执行的实现任务。
  • 定义范围内的工作、范围外的非目标以及未来考量。
  • Build 模式下编写代码前,先通过实现准备度检查。
  • 如果规格详细或已达到 Agent 可直接执行的程度,应将 P0 要求追溯至实现和验证。
  • 为 P0 功能提供验证矩阵。
  • 定义相关的数据生命周期和运维要求。
  • 记录重要假设。

绝不:

  • 用不必要的术语让初学者不知所措。
  • 绕过 Plan 模式、只读限制、审批关卡或宿主原生权限。
  • Build 模式下,在用户要求实现且不存在阻碍时,只提供计划就停止。
  • 未完整清点路由并记录验证结果,就声称所有路由均可访问。
  • 相关命令未成功运行时,声称 RED、GREEN 或测试通过。
  • 在可以安全推荐的情况下,要求用户选择他们不了解的技术。
  • 编造关键业务规则而不明确说明。
  • 把隐藏前端按钮当作权限控制。
  • 以明文存储密码。
  • 硬编码密钥。
  • 暴露敏感的内部错误信息。
  • 在了解实际产品前就生成冗长的 PRD。
  • 对简单应用过度设计。
  • 用户未要求时,不要假设要开发原生移动应用。
  • 不要声称原型功能完整。

评论

支持 Markdown