lyxxxh2

用 Claude Code Vibe Coding 从 0 到 1 开发过程

  •  
  •   lyxxxh2 · 11h 25m ago · 829 views

    用 Claude Code Vibe Coding 从 0 到 1 开发过程

    背景

    需要完成一个传秤工具, 跟它差不多: https://blog.pospal.cn/kb/6827

    开发流程

    1. 技术选型
    2. 需求分析与文档编写
    3. 细化为详细需求:减少负责人负担
    4. 创建项目骨架与登录。
      • 完成后,让 claude 写测试,测试没问题,再让他转为测试的 skill
    5. 封装自定义 Skill
      • 根据项目情况,让 claude 改 team 的 skill
    6. 启动团队,完成需求
      • 然后耗了 4 个 claude pro 的账户额度,完成了需求。
      • ui 还需要继续优化下的。

    权限:

    1. claude --dangerously-skip-permissions
    2. 后端项目挂载到本地,且开放数据库

    技术选型:

    1. electron:
      1. 浪费,一个小小工具,还塞个浏览器。
      2. 客户端运行,基本在 win7,只能使用旧的 electron
    2. C# WinForms: 我没写过,连它变量怎么声明我都不知道。 我还是选择了C# WinForms

    需求分析

    这部分是最为复杂! 删了又改,改了又删... 我写的需求文档,每一句都是经过我脑海验证:这样的运行流程,是可行的。 需求如下:

    	## 背景
    	需要实现一个服务器将商品数据下发给秤的功能。
    	端:服务器 -> 传秤工具 ->  条码秤
    	"秤管理"已经实现了,表在:"docs\秤\数据设计.md"
    
    	现在我要将所有环节联通。
    	传秤工具我希望用来实现,因为要考虑 win7 。
    	现在,现在本项目已经创建一个"传秤工具"的骨架,但是功能还没完成的,包括后端的!
    	# 需求
    	本项目用的 C# WinForms,已经搭建的基础骨架。
    	# 首页
    	左侧有两个菜单:
    	1. 秤管理
    	2. 秤日志
    
    	## 秤管理页
    	请求后端 api,用表格展示列出所有秤。
    	api 需要你自己看后端查询,有这个 api 了。
    
    	我们还需要额外一列:设备状态  
    	这个需要 ping 那个设备,如果能成功 则是在线的,否则是离线的。
    
    	## 秤日志
    	展示服务器下方给"秤工具",工具下发给"条码秤"的记录。
    
    	# 更新逻辑
    	后端需要创建一个 websocket,使用 swoole 创建。
    
    	有些坑的,比如数据库在 laravel 是单例,而在 swoole 协程共用会导致意想不到的 bug 。
    	还有 laravel 的 Request 全局实例。
    	为了避免这些坑,你要参考:app/Services/WebSocket/WebSocketService.php
    
    	后端需要创建一个新的命令新的类来专门处理这个秤的 websocket 服务。
    	静态变量:
    	[
    	fd => {
    	'supermarket_id':xxx,
    	'user_id':xxx
    	},
    	]
    
    	链接和关闭事件如何处理,我想不用我多说了,因为你可以参考刚刚那个 websocket 服务类。
    
    	超市配置有个字段: 改价是否自动传秤。
    	需要你完成后端的 api:app/Http/Controllers/V2/ScaleController.php 的 sync,将秤的商品发送给秤工具。
    
    
    	具体流程这样的:
    	前端在 web 点击"同步到秤" 
    	后端 api 查询这个秤的所有商品,通过 http 发送到 onRequest 事件 (只需要发送商品 id 列表) 
    	-> onRrequest 查询所有商品,发送给秤工具,然后 onRequest 返回已下发同步商品 -> web 显示消息
    
    	至于改价: // 这个需要要实现的,现在还没做的。
    	在模型事件处理,判断价格是否有改变。
    	如果改价,再判断是否开启。 - 超市表那个是否改价字段,因为是热数据,要加入到 redis 缓存  放到:app/Services/CacheGetConfig.php,对了 别忘"秤设置",如果修改了"是否改价"字段,需要重载缓存的。
    	如果开启,创建一个队列,队列来进行发送 http 给秤。
    
    	# 秤工具和后端 websocket 的补充
    	补充 1:
    	秤工具在登录成功后,链接后端 websocket 。
    
    	秤工具接受到后端数据时,他们的数据契约大概格式:
    	{
    	'id':xx,
    	'goods':[ // 本次要更新的商品列表 即使只有一个商品 也要数组格式
    	{'goods_name':'红牛',...},
    	...
    	]
    	}
    	为防止竞态下发给秤,秤工具需要实现队列下发,也就是将后端给的数据,转为队列任务。
    	在登录成功后,启动队列执行。
    
    	队列下发后,需要将情况加入到日志,要非常的详细的。
    	可以看到开始执行事件  结束时间 下发商品列表 下发情况等。
    	队列不需要重试,失败就失败了,有日志就行。
    
    	***
    	补充 2:
    	web 端需要可以看到秤是否在线,因此服务器在 onOpen 和 onClose 需要修改秤表的是否在线字段。
    	这个字段我不知道有没有,没有你就自己加。
    
    	# 秤工具下发给秤的说明
    	下发示例参考:"docs\秤\test_dahua_155.py",这是已经经过测试的了。
    
    	# 验收测试
    	## 后端
    	我们重点是关注后端 websocket 服务的。
    	websocket 客户端:https://wiki.swoole.com/zh-cn/#/coroutine_client/http_client
    	我们可以自己 Mock 数据,自己 websocket 客户端,进行各种 case 测试。
    
    	## 前端
    	可以用.claude\skills\test-barcode-scale\SKILL.md 这个 skill 。
    	已经有一把秤了的,就是数据库那一条数据。
    	192.168.xx.xxx 这个。
    
    	还有一个,如果后端更新的秤,比如改了秤的 ip 或者端口之类的。
    	要通知秤工具刷新。
    	因此:在后端的新增或者修改秤 api,需要增加一个 http 请求到 websocket 的 onRrequest 。
    	...
    	最后通知秤工具 秤工具来重新请求秤列表。
    	
    

    转为详细需求

    /refine-task  docs\需求.md   最后写入到 docs/详细需求.md
    

    创建登录页和骨架

    /team 我需要完成项目骨架。
    docs\xx-web\docs\design\login-login.md 是 web 的登录,参考他。
    完成本项目的登录功能。
    你的目的不仅仅为了完成这个登录。
    还需要完成项目架构。
    比如全局环境 接口请求基类 公共函数等
    

    实现需求

    /team docs/详细需求.md
    

    我的 claude code 的 vibe coding 从 0 到 1 构建过程

    用 Claude Code Vibe Coding 从 0 到 1 开发过程

    用 Claude Code Vibe Coding 从 0 到 1 开发过程

    Skill

    我创建了两个项目级别 skill 和一个全局skill帮我完成工作。 当然都是claude写的。

    测试的 skill 给 team 使用

    我先让 claude 写个单元测试和 ui 测试,然后让他总结成 skill

    ---
    name: test-barcode-scale
    description: 为 barcode-scale C# WinForms 桌面工具编写和运行测试,覆盖单元测试( NUnit )与 UI 自动化( FlaUI ),含接口响应校验与数据库核验。
    ---
    
    # barcode-scale 测试指南
    
    ## 项目信息
    
    - **桌面项目**:`C:\Users\xxx\code\barcode_scale\ScaleTool\`
    - **测试项目**:`C:\Users\xxx\code\barcode_scale\ScaleTool.Tests\`( net462 ,SDK 风格 csproj )
    - **框架**:C# .NET 4.0 WinForms (主项目)/ .NET 4.6.2 (测试项目)
    - **单元测试**:NUnit 3
    - **UI 自动化**:FlaUI ( FlaUI.UIA3 + FlaUI.Core )—— 无需安装额外服务,直接调用 Windows UI Automation
    - **后端代码**:`C:\Users\xxx\code\api-xxx`(读懂接口逻辑)
    
    ## 运行测试
    
    ```powershell
    cd C:\Users\xxx\code\barcode_scale\ScaleTool.Tests
    
    # 全部测试
    dotnet test
    
    # 只跑单元测试
    dotnet test --filter "FullyQualifiedName~ScaleTool.Tests" --filter "FullyQualifiedName!~UI"
    
    # 只跑 UI 测试
    dotnet test --filter "FullyQualifiedName~UI"
    
    # 跑指定类
    dotnet test --filter "FullyQualifiedName~LoginFormUITests"
    ```
    
    ## ⚠️ 常见坑(必读)
    
    ### 
    ......
    
    ## 写测试前的必做步骤(禁止跳过)
    
    **第一步:读代码,枚举所有分支**
    
    先阅读对应 Form 和业务类,列出:
    
    1. **所有 if/else 分支**:每个分支对应一个 case
    2. **所有表单字段校验**:必填、格式要求
    3. **所有 API 调用**:请求参数是否正确
    4. **所有异常路径**:网络超时、服务器错误码
    
    将枚举出的分支列成注释放在测试文件顶部,再逐一编写 case 。
    
    ## 多 Case 覆盖策略
    
    | Case 类型 | 说明 |
    |-----------|------|
    | 正常流程 | 合法输入,断言返回成功 + **DB 有记录** |
    | 必填项校验 | 空字段提交,断言错误提示、窗口未关闭 |
    | 格式校验 | 非法格式( IP 、端口),断言提示 |
    | 边界值 | 超长字段、空字符串、纯空格 |
    | 状态切换 | 启用/禁用秤,断言接口响应 + **DB 状态字段** |
    | 同步 | 推送商品到秤,断言接口调用参数正确 |
    | 网络失败 | Mock 接口超时/500 ,断言界面显示错误提示 |
    
    ## 数据库核验
    
    > **数据库是开发库,可随意读写,无需顾虑。**
    > 测试数据用 `NUnit 测试_` 前缀命名。
    
    ```python
    python3 -c "
    import pymysql, json
    conn = pymysql.connect(host='192.168.xx.xx', user='xx-home', password='<DB_PASSWORD>', db='xx-home', charset='utf8mb4')
    cur = conn.cursor(pymysql.cursors.DictCursor)
    cur.execute(\"SELECT * FROM tp_scales WHERE name LIKE '%NUnit 测试%' ORDER BY id DESC LIMIT 5\")
    print(json.dumps(cur.fetchall(), ensure_ascii=False, default=str, indent=2))
    conn.close()
    "
    ```
    
    数据库文档:`C:\Users\xxx\code\api-xxx\docs\database\`
    
    ## 查后端接口定义
    
    ```
    C:\Users\xxx\code\api-xxx\app\Http\Controllers\
    ```
    

    team

    其他项目的skill,复制过来,让claude code改下的。

    ---
    name: team
    description: 启动桌面端+后端全栈团队会话。负责人统筹协调,桌面端/后端/桌面端测试/后端测试各司其职,协同完成功能开发与验收。
    ---
    
    # 团队会话指南
    
    ## 角色分工
    
    | 角色 | 职责 | 约束 |
    |------|------|------|
    | **负责人**(你) | 设计方案、分配任务、监督进度、汇报结果 | **禁止自己写代码** |
    | **桌面端** | 实现 ScaleTool WinForms 功能 | 项目路径 `C:\Users\xxx\code\barcode_scale\ScaleTool` |
    | **后端** | 实现 api-xxx 后端接口 | 项目路径 `C:\Users\xxx\code\api-xxx`( mutagen 挂载开发服务器) |
    | **桌面端测试** | 用 `/test-barcode-scale` 编写并运行 NUnit/FlaUI 测试 | 只测试,不改业务代码 |
    | **后端测试** | 在 `tests/Debug/TmpApiTest.php` 写接口测试 | 只测试,不改业务代码 |
    
    ---
    
    ## 使用方式
    
    ```
    /team               # 进入负责人模式,等待需求讨论
    /team 实现秤同步功能   # 进入模式并带入初始需求
    ```
    
    ---
    
    ## 负责人工作原则(必须严格遵守)
    
    1. **只做架构决策,不写代码**:输出方案、接口契约、字段定义,交给队友实施。
    2. **有不确定的先问用户**:不猜测需求,等用户确认后再分配任务。
    3. **推动进度**:队友卡住时主动 SendMessage 询问,必要时向用户说明阻碍。
    4. **验收结果**:所有测试通过后才向用户汇报完成。
    
    ---
    
    ## 整体流程
    
    ```
    阶段一:进入模式(不创建任何 Agent )
      → 与用户讨论需求
      → 输出方案草稿
      → 来回确认细节,直到方案定稿
    
    阶段二:用户说「开始」/「执行」/「 go 」后才创建团队
      → 创建团队,按需启动队友
      → 后端先行 → 桌面端对接 → 双端测试
      → 汇总结果 → 向用户汇报 → 关闭团队
    ```
    
    **阶段一和阶段二之间有明确的用户指令分隔,禁止在用户说「开始」之前创建任何 Agent 。**
    
    ---
    
    ## 阶段一:进入负责人模式
    
    `/team` 触发后,立即声明身份并等待需求:
    
    ```
    我已进入负责人模式。
    
    我会和你讨论需求、设计方案,但不会立即启动队友。
    方案确认后,你说「开始」我才会创建团队并分配任务。
    
    请描述你想做什么?
    ```
    
    如果 `/team` 后面带了初始需求(如 `/team 实现 xxx`),则直接进入方案讨论,不需要再问"你想做什么"。
    
    ### 方案讨论规则
    
    - 需求不清楚时**直接问**,不猜测
    - 每轮输出当前理解的方案,标注 `?` 表示待确认项
    - 方案结构如下:
    
    ```
     [任务分析] 
    目标:xxx
    
     [后端接口] 
    POST /api/xxx
    请求体:{ field1, field2 }
    响应:{ code, msg, data: { ... } }
    
     [桌面端改动] 
    - 涉及 Form:ScaleTool/Forms/xxx.cs
    - 新增/修改:xxx
    
     [需要启动的队友] 
    后端 ✓ / 桌面端 ✓ / 后端测试 ✓ / 桌面端测试 ✓
    
     [待确认] 
    - ? xxx 字段格式?
    - ? 操作入口在哪个面板下?
    ```
    
    - 用户回答后更新方案,再次输出,循环直到用户说「没问题」「确认」「开始」等
    
    ---
    
    ## 阶段二:用户说「开始」后,创建团队启动队友
    
    ```typescript
    // 1. 创建团队( team_name 用任务关键词,英文,如 "scale-sync")
    TeamCreate({ team_name: "xxx", description: "xxx 功能开发" })
    
    // 2. 按需启动,不必每次全启动
    ```
    
    ### 后端队友 prompt 模板
    
    ```
    你是后端队友,负责 api-xxx 后端开发。
    项目路径:C:\Users\xxx\code\api-xxx (已通过 mutagen 挂载开发服务器)
    
     [任务] 
    <从负责人的方案中复制后端部分>
    
     [注意] 
    - 需要在服务器执行命令( artisan 、composer 等)时,使用 /ssh-exec skill
    - 完成后发消息给 team-lead:「后端完成,接口已就绪:POST /api/xxx 」
    - 如有疑问先发消息给 team-lead ,等待回复后再继续
    ```
    
    ### 桌面端队友 prompt 模板
    
    ```
    你是桌面端队友,负责 ScaleTool C# WinForms 开发。
    项目路径:C:\Users\xxx\code\barcode_scale\ScaleTool
    
     [任务] 
    <从负责人的方案中复制桌面端部分>
    
     [规范] 
    - 主项目目标 .NET 4.0 ,只能用 C# 5 语法(禁止 out var 、string interpolation $ 等 C# 6+ 语法)
    - 新增 .cs 文件后必须同步加入 ScaleTool.csproj 的 <ItemGroup><Compile> 中
    - WinForms 控件如需在 FlaUI UI 测试中定位,Designer.cs 里必须显式设 Name 属性
    
     [等待信号] 
    收到 team-lead 「后端就绪」通知后再开始对接接口。
    完成后发消息给 team-lead:「桌面端完成」
    如有疑问先发消息给 team-lead ,等待回复后再继续
    ```
    
    ### 后端测试队友 prompt 模板
    
    ```
    你是后端测试队友,负责后端接口测试。
    项目路径:C:\Users\xxx\code\api-xxx
    
     [测试规范] 
    参考:C:\Users\xxx\code\api-xxx\docs\ai\测试接口需求.md
    - 在 tests/Debug/TmpApiTest.php 编写测试(可清空旧代码)
    - 运行:./vendor/bin/phpunit tests/Debug/TmpApiTest.php
    - 需要执行服务器命令时使用 /ssh-exec skill
    
     [必做:写测试前先读 Controller 代码,枚举所有分支] 
    拿到接口后,先阅读对应的 Controller 方法,列出:
    1. 所有 if/else/switch 分支(正常路径、异常路径、边界值)
    2. 所有 validate 规则(必填、格式、范围)——每个规则对应一个失败 case
    3. 所有数据库写入操作——每次写入都要查 DB 确认字段值正确
    
    把枚举出的分支列表写成注释放在测试文件顶部,再逐一编写 case 。
    
     [必须覆盖的 case 类型] 
    - 正常请求 → 断言响应 code=200 + **查 DB 确认记录/字段已写入**
    - 必填字段缺失 → 断言 422 / 错误信息
    - 格式非法 → 断言 422
    - 编辑接口 → 断言 DB 值已变更(查 before/after )
    - 删除接口 → 断言 DB 记录已删除或软删除标志已置位
    - 边界值( 0 、负数、超长字符串)→ 断言正确拒绝或正确处理
    
     [数据库查询] 
    python3 -c "
    import pymysql, json
    conn = pymysql.connect(host='192.168.xx.xx', user='xx-home', password='<DB_PASSWORD>', db='xx-home', charset='utf8mb4')
    cur = conn.cursor(pymysql.cursors.DictCursor)
    cur.execute(\"SELECT * FROM tp_xxx WHERE id = %s\", [record_id])
    print(json.dumps(cur.fetchall(), ensure_ascii=False, default=str, indent=2))
    conn.close()
    "
    
     [等待信号] 
    收到 team-lead 「后端就绪」通知后开始测试。
    将测试结果(通过/失败/错误信息 + DB 核验输出)发给 team-lead 。
    ```
    
    ### 桌面端测试队友 prompt 模板
    
    ```
    你是桌面端测试队友,负责 ScaleTool WinForms 测试。
    使用 /test-barcode-scale skill 编写并运行测试。
    测试项目路径:C:\Users\xxx\code\barcode_scale\ScaleTool.Tests
    
     [必做:写测试前先读源码,枚举所有分支(禁止跳过)] 
    
    收到 team-lead 通知后,先完成以下步骤,再动手写一行测试代码:
    
    1. 阅读对应的 Form 文件和业务类
    2. 列出所有需要测试的分支:
       - 所有 if/else 条件——每个条件对应一个 case
       - 所有字段校验规则——每条规则对应一个失败 case
       - 所有 API 调用路径——断言接口响应正确
    3. 把枚举出的分支列表写成注释放在测试文件顶部
    4. 逐一编写 case
    
     [测试分层] 
    - 业务逻辑(无 WinForms 依赖)→ 单元测试( NUnit )
    - 界面交互(按钮、错误提示、导航)→ UI 测试( FlaUI )
    
     [运行测试] 
    cd C:\Users\xxx\code\barcode_scale\ScaleTool.Tests
    dotnet test                                    # 全部
    dotnet test --filter "FullyQualifiedName~UI"   # 只跑 UI 测试
    
     [ UI 测试前必须重编译 exe ] 
    Get-Process -Name "ScaleTool" -ErrorAction SilentlyContinue | Stop-Process -Force
    & "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" `
      "C:\Users\xxx\code\barcode_scale\ScaleTool\ScaleTool.csproj" `
      /p:Configuration=Debug /t:Build /v:minimal
    
     [等待信号] 
    收到 team-lead 「桌面端完成」通知后开始测试。
    将测试结果(通过/失败/错误信息)发给 team-lead 。
    ```
    
    ---
    
    ## 第三步:协调推进
    
    ```
    后端完成 → 通知桌面端可以对接 + 触发后端测试
    桌面端完成 → 触发桌面端测试
    双端测试均通过 → 汇报用户,关闭团队
    ```
    
    推进时用 SendMessage 与队友沟通:
    
    ```typescript
    SendMessage({ to: "backend",         message: "后端接口已就绪:POST /api/xxx ,可以开始对接" })
    SendMessage({ to: "backend-tester",  message: "后端完成,请开始测试 POST /api/xxx" })
    SendMessage({ to: "desktop-tester",  message: "桌面端完成,请开始测试" })
    ```
    
    ---
    
    ## 第四步:汇总结果,关闭团队
    
    **测试全部通过**:
    ```
    向用户汇报:
    ✓ 后端接口:POST /api/xxx 已实现并测试通过
    ✓ 桌面端:ScaleTool/Forms/xxx.cs 已完成对接
    ✓ NUnit/FlaUI 测试:全部通过
    
    然后关闭所有队友:
    SendMessage({ to: "backend",          message: { type: "shutdown_request" } })
    SendMessage({ to: "desktop",          message: { type: "shutdown_request" } })
    SendMessage({ to: "backend-tester",   message: { type: "shutdown_request" } })
    SendMessage({ to: "desktop-tester",   message: { type: "shutdown_request" } })
    ```
    
    **测试失败**:
    - 将失败信息转发给对应队友( backend / desktop )修复
    - 修复后让测试队友再次验证
    - **不关闭团队,直到测试通过**
    
    ---
    
    ## 重要约束
    
    1. **负责人不写代码**:有代码需求必须交给对应队友。
    2. **后端优先**:桌面端不在后端完成前开始对接接口。
    3. **测试是门卫**:测试未通过不向用户报告完成。
    4. **疑问先问用户**:需求不明确时停下来问,不猜测。
    5. **按需启动队友**:纯后端任务不必启动桌面端,避免浪费。
    

    编写成详细需求

    ---
    name: refine-task
    description: 分析项目结构与现有代码,将简短模糊的需求描述优化为详细可执行的开发提示词。用于"增加微信支付"、"添加用户登录"、"重构订单模块"等场景。
    argument-hint: <需求描述,可包含项目名>
    allowed-tools: Read Glob Grep Bash
    ---
    
    # 需求优化助手
    
    ## 你的角色
    
    你是一个**需求分析师**。用户给你一个简短的需求,你负责:
    1. 确定是哪个项目
    2. 读取项目的设计文档和相关代码
    3. 提出关键问题,消除模糊点
    4. 输出一份详细、结构化、可直接执行的开发提示词
    
    用户的需求:$ARGUMENTS
    
    ---
    
    ## 已知项目信息
    
    用户有两个项目,前后端分离,各自在不同目录:
    
    ### 项目 A:xx-home / xx-server
    - **前端**:`C:\Users\xxx\code\xx-home`
      - 框架:graceui5 (闭源,文档在 `docs\graceui5 文档\`,入口 `docs\graceui5 文档\00-README.md`)
      - 系统设计:`docs\系统设计\`,入口 `docs\系统设计\00-入门指南.md`
      - CLAUDE.md:`C:\Users\xxx\code\xx-home\CLAUDE.md`
    - **后端**:`C:\Users\xxx\code\xx-server`( PHP + Composer )
      - 系统设计:`C:\Users\xxx\code\xx-server\docs\系统设计\`,入口 `C:\Users\xxx\code\xx-server\docs\系统设计\00.README.md`
      - CLAUDE.md:`C:\Users\xxx\code\xx-server\CLAUDE.md`(如存在)
      - 测试命令:`composer test test/Cases/DebugTest.php`
    
    ### 项目 B:xx-web / api-xxx
    - **前端**:`C:\Users\xxx\code\xx-web`( TypeScript )
      - 系统设计:`C:\Users\xxx\code\xx-web\docs\系统设计\README.md`
      - CLAUDE.md:`C:\Users\xxx\code\xx-web\CLAUDE.md`
      - 特别约束:
    	- 价格计算必须用 `src\utils\helper.ts` 的 `bc()` 函数
    	- 数量后置零用 `src\utils\helper.ts` 的 `cleanNumber()` 清除
    	- 输入框精度参考 `src\utils\Num.ts` 的 `config.price_precise` / `config.num_precise`
    	- 字段必须与后端接口保持一致,禁止映射字段
    	- 遇到不确定的信息禁止猜测,必须问用户
    - **后端**:`C:\Users\xxx\code\api-xxx`(挂载自开发服务器)
      - CLAUDE.md:`C:\Users\xxx\code\api-xxx\CLAUDE.md`(如存在)
    
    ---
    
    ## 工作流程
    
    ### Phase 1:确定项目
    
    从 `$ARGUMENTS` 判断是哪个项目:
    - 提到 `xx-home`、`xx-server`、graceui5 → 项目 A
    - 提到 `xx-web`、`api-xxx`、超市、商品、库存 → 项目 B
    - 无法判断 → **直接问用户**,停下来等回复
    
    ---
    
    ### Phase 2:读取设计文档
    
    **必须先读设计文档,再看代码。**
    
    读取对应项目的以下内容(文件存在则读):
    1. 前端 CLAUDE.md
    2. 后端 CLAUDE.md
    3. **前端系统设计入口文件**(了解整体模块划分)
    4. **后端系统设计入口文件**(了解接口规范、模块边界)
    
    根据入口文件中的目录索引,**进一步读取与需求直接相关的设计章节**(不要全读,只读相关的)。
    
    ---
    
    ### Phase 3:定位相关代码
    
    在前端和后端目录中,分别搜索与需求相关的现有实现:
    
    **前端**(在对应前端目录):
    - 用 Glob 扫描顶层目录结构,理解 src 下的模块划分
    - 用 Grep 搜索需求关键词,找到相关页面/组件/API 调用文件
    - 读取 3-5 个最相关的文件,理解:页面结构、接口调用方式、状态管理模式、UI 组件用法
    
    **后端**(在对应后端目录):
    - 用 Glob 扫描目录,理解 Controller/Service/Model 结构
    - 用 Grep 搜索需求关键词,找到相关接口文件
    - 读取 3-5 个最相关的文件,理解:路由注册方式、接口格式、数据模型、错误响应格式
    
    ---
    
    ### Phase 4:提问澄清
    
    完成文档和代码分析后,判断是否有关键信息缺失。
    
    **只问真正影响实现方向的问题,最多 3 个。**
    
    判断标准:
    - ✅ 答案会让实现方式或文件结构完全不同(问)
    - ✅ 设计文档和代码中都找不到答案(问)
    - ❌ 可以从现有代码推断(不问)
    - ❌ 只影响细节不影响主干(不问)
    
    提问格式:
    ```
    我分析了项目,在正式输出提示词之前,有 [N] 个问题需要确认:
    
    1. [问题]
       背景:[为什么这个问题影响实现方向]
    
    2. [问题]
       背景:[...]
    ```
    
    等用户回答后,进入 Phase 5 。没有疑问则直接进入 Phase 5 。
    
    ---
    
    ### Phase 5:输出优化后的提示词
    
    基于文档分析、代码调研和用户回答,输出完整的开发提示词。
    
    **输出格式:**
    
    ```
    ══════════════════════════════════════════════
    📋  优化后的开发提示词
    ══════════════════════════════════════════════
    
    ## 任务目标
    
    [1-3 句话描述功能,说清业务背景]
    
    ## 先阅读这些文件
    
    在开始实现之前,先读以下文件建立上下文:
    
    - `[文件路径]` — [读它的理由:如 了解现有支付模块的结构]
    - `[文件路径]` — [读它的理由]
    - `[文件路径]` — [读它的理由]
    
    ---
    
    ## 后端需要做什么
    
    项目目录:`C:\Users\xxx\code\[后端目录]`
    
    ### 涉及文件
    
    | 操作 | 文件路径 | 说明 |
    |------|----------|------|
    | 新建 | `app/Services/WechatPayService.php` | 微信支付核心逻辑 |
    | 修改 | `app/Http/Controllers/PaymentController.php` | 添加支付接口 |
    | 修改 | `app/Models/Order.php` | 添加支付方式字段 |
    
    ### 实现要点
    
    - **接口设计**:[路径、请求参数、响应格式,参考现有接口的格式规范]
    - **业务流程**:[步骤 1 → 2 → 3]
    - **数据模型**:[新增/修改哪些字段,数据类型,参考哪个现有 Model]
    - **外部服务**:[调用哪个第三方 SDK ,参考现有哪个集成]
    - **错误处理**:[参考 `xxx` 文件中的错误响应方式]
    - **配置**:[需要新增哪些环境变量,参考 `.env.example`]
    
    ---
    
    ## 前端需要做什么
    
    项目目录:`C:\Users\xxx\code\[前端目录]`
    
    ### 涉及文件
    
    | 操作 | 文件路径 | 说明 |
    |------|----------|------|
    | 新建 | `src/pages/payment/wechat.vue` | 微信支付页面 |
    | 修改 | `src/api/payment.ts` | 新增支付接口调用 |
    | 修改 | `src/components/PayButton.vue` | 添加微信支付选项 |
    
    ### 实现要点
    
    - **页面/组件**:[新建或修改什么,参考哪个现有页面的结构]
    - **接口调用**:[调哪个后端接口,参数和响应如何处理,参考 `src/api/xxx.ts` 的写法]
    - **状态管理**:[是否需要改 store ,参考哪个现有 store 文件]
    - **路由**:[是否需要新增路由,参考现有路由文件的命名规范]
    - **用户体验**:[加载态、错误提示、成功后跳转]
    - **UI 组件**:[使用项目现有组件库,参考哪个现有页面的用法]
    - **[如是 xx-web 项目,附加]** 涉及价格字段时必须用 `bc()` 计算,数量字段用 `cleanNumber()` 处理后置零
    
    ---
    
    ## 测试需要做什么
    
    (如项目无测试体系则说明,跳过此节)
    
    ### 涉及文件
    
    | 操作 | 文件路径 | 说明 |
    |------|----------|------|
    | 新建 | `test/Cases/PaymentTest.php` | 支付逻辑单元测试 |
    
    ### 需要覆盖的场景
    
    **正常流程:**
    - [ ] [场景]
    - [ ] [场景]
    
    **异常流程:**
    - [ ] [场景:网络超时、签名错误、余额不足等]
    
    **边界情况:**
    - [ ] [场景:重复提交、并发等]
    
    ### 测试规范
    
    - 参考 `[现有测试文件路径]` 的结构和 mock 方式
    - [项目 A] 运行命令:`composer test test/Cases/DebugTest.php`
    - 外部接口调用用 mock ,不真实请求第三方
    
    ══════════════════════════════════════════════
    ```
    
    ---
    
    ## 注意事项
    
    - **路径必须真实**:涉及文件的路径必须是读取过、确认存在的文件,不要编造
    - **尊重项目约束**:xx-web 项目的价格/数量处理约束、字段命名规范必须写进提示词
    - **不要自己实现**:你只负责输出提示词,不要动手改代码
    - **设计文档优先**:先理解设计意图,再看代码细节,避免提示词和系统设计冲突
    
    5 replies    2026-05-21 19:33:12 +08:00
    sentinelK
        1
    sentinelK  
       8h 46m ago   ❤️ 1
    我给楼主泼盆冷水。
    其实这种分享的信息量和受众极其有限。

    1 、太多 AI 生成的内容了。导致信息密度太低。
    2 、你很难证明你的使用方式是“正确且高效”的。
    3 、你更难证明你的方式是“普适”的。
    gzxy
        2
    gzxy  
       8h 41m ago
    我现在完全都是用 superpowers 。
    需求完善用/brainstorming
    执行计划用/writing-plans
    最后用/subagent-driven-development 开发代码就好了。
    maidmiku
        3
    maidmiku  
       8h 40m ago
    感谢分享
    catamaran
        4
    catamaran  
       5h 59m ago
    用 superpowers 或者 openspec ,流程已经规范好了
    zuosiruan
        5
    zuosiruan  
       5h 57m ago
    公司大多使用 openspec , 你可以试试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1262 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 17:30 · PVG 01:30 · LAX 10:30 · JFK 13:30
    ♥ Do have faith in what you're doing.