Skip to content

5.5 OpenSpec + Claude Code + Cursor 协作最佳实践

概述

在实际开发中,开发者往往不会只使用单一的 AI 工具。Claude Code 擅长复杂推理和架构设计,Cursor 则在代码编辑和实时补全方面表现出色。本章将介绍如何利用 OpenSpec 统一规格,让两种工具优势互补。

工具特性对比

特性Claude CodeCursor
规格撰写⭐⭐⭐⭐⭐ 深度推理⭐⭐⭐ 快速生成
代码补全⭐⭐⭐ 手动触发⭐⭐⭐⭐⭐ 实时补全
多文件编辑⭐⭐⭐⭐ 逐个确认⭐⭐⭐⭐⭐ Composer
终端操作⭐⭐⭐⭐⭐ 原生集成⭐⭐⭐ 需切换
调试分析⭐⭐⭐⭐⭐ 深度分析⭐⭐⭐ 快速定位
架构设计⭐⭐⭐⭐⭐ 全局视角⭐⭐⭐ 局部优化

推荐分工模式

text
开发工作流

  规格阶段 (Claude Code)          实现阶段 (Cursor)
  ┌─────────────────┐            ┌─────────────────┐
  │ • 需求分析       │     ──▶    │ • 快速编码      │
  │ • 规格撰写       │            │ • 实时补全      │
  │ • 架构设计       │            │ • 多文件编辑    │
  │ • 边界场景       │            │ • 即时预览      │
  └─────────────────┘            └─────────────────┘
           │                            │
           └──────────┬─────────────────┘

           ┌─────────────────┐
           │    OpenSpec     │
           │   统一规格标准    │
           └─────────────────┘

统一配置结构

text
my-project/
├── AGENTS.md                    # 通用 AI 入口
├── CLAUDE.md                    # Claude Code 专属配置
├── .cursorrules                 # Cursor 专属配置
├── openspec/
│   ├── AGENTS.md                # OpenSpec 工作流指令
│   ├── project.md               # 项目上下文(共享)
│   ├── specs/                   # 规格目录(共享)
│   └── changes/                 # 变更目录(共享)
├── .claude/
│   └── commands/openspec/       # Claude Code 命令
└── .cursor/
    └── prompts/openspec/        # Cursor 命令

工作流 1:Claude Code 规格 + Cursor 实现

最常见的协作模式,适合大多数功能开发。

阶段 1:需求分析与规格(Claude Code)

bash
# 在终端启动 Claude Code
Human: 我需要为电商应用添加优惠券功能。请创建详细的 OpenSpec 提案。

Claude: 好的,让我先分析现有规格和项目架构...

[分析 openspec/specs/ 和 openspec/project.md]

创建变更提案 add-coupon-system:

proposal.md:
- 分析了与 order、payment 规格的交互
- 考虑了多种优惠券类型(百分比、固定金额、满减)
- 设计了防滥用机制

tasks.md:
- 12 个实现任务,按依赖关系排序

specs/coupon/spec.md:
- 5 个核心需求
- 15 个场景覆盖正常和异常情况

Claude Code 的优势

  • 深度分析现有架构
  • 考虑边界情况和异常场景
  • 生成完整的规格文档

阶段 2:审核与完善(Claude Code)

bash
Human: 审核提案,考虑以下问题:
1. 优惠券能否与会员折扣叠加?
2. 过期优惠券如何处理?
3. 多件商品如何分摊优惠?

Claude: 好问题!让我补充这些场景到规格中...

[更新 spec.md 添加 3 个新需求和 8 个场景]

建议:这些场景涉及复杂的业务逻辑,建议在 design.md
记录分摊算法的决策过程。

阶段 3:代码实现(Cursor)

规格完成后,切换到 Cursor 进行快速实现:

text
[在 Cursor 中打开项目]

[Cmd+I 打开 Composer]

输入: @openspec/changes/add-coupon-system 实现这个变更的所有任务

Cursor:
读取提案和任务...

将创建/修改以下文件:
1. prisma/schema.prisma - 添加 Coupon 模型
2. src/models/Coupon.ts - 优惠券数据访问
3. src/services/CouponService.ts - 业务逻辑
4. src/routes/coupon.ts - API 端点
5. src/middleware/couponValidation.ts - 验证中间件
...

[显示所有文件的 diff 预览]
[Apply All]

Cursor 的优势

  • 实时代码补全
  • 一次性预览多文件变更
  • 快速迭代和修改

阶段 4:调试与优化(混合使用)

text
遇到复杂 bug → Claude Code 分析根因
需要快速修复 → Cursor 内联编辑
需要重构建议 → Claude Code 架构视角
实施重构 → Cursor 多文件编辑

阶段 5:归档(任一工具)

bash
# Claude Code
/openspec:archive add-coupon-system

# 或 Cursor
/openspec-archive add-coupon-system

工作流 2:Cursor 快速原型 + Claude Code 完善

适合探索性开发或快速验证想法。

阶段 1:快速原型(Cursor)

text
[Cursor Composer]

输入: 快速创建一个用户反馈收集功能的原型,
      包含评分和文字反馈,先不用太正式

Cursor:
创建基础实现:
- src/components/FeedbackForm.tsx
- src/routes/feedback.ts
- prisma/schema.prisma 添加 Feedback 模型

[Apply All]

阶段 2:规格化(Claude Code)

bash
Human: 我用 Cursor 创建了一个反馈功能原型。
请帮我将其正式化为 OpenSpec 规格。

Claude: 让我分析已有的代码并创建规格...

[分析 src/components/FeedbackForm.tsx 等文件]

创建 openspec/changes/add-user-feedback/:
- 基于现有代码反向生成规格
- 补充遗漏的场景(匿名反馈、敏感词过滤等)
- 添加验收标准

建议:原型缺少以下场景的处理:
1. 用户未登录时的行为
2. 反馈字数限制
3. 防止重复提交

阶段 3:完善实现(Cursor)

text
[Cursor]

输入: @openspec/changes/add-user-feedback/specs
      根据规格完善现有的反馈功能代码

Cursor: 补充实现:
- 添加字数验证
- 实现防重复提交
- 添加未登录提示
...

工作流 3:并行开发

团队成员可以同时使用不同工具。

text
开发者 A (Claude Code)          开发者 B (Cursor)
        │                              │
        ▼                              ▼
  创建 add-auth 提案             创建 add-search 提案
        │                              │
        └──────────┬───────────────────┘

           openspec/changes/
           ├── add-auth/     (A 负责)
           └── add-search/   (B 负责)


            Git 分支隔离
            各自实现


            合并时规格检查

高级技巧

1. 上下文共享

创建 CLAUDE.md 供 Claude Code 使用:

markdown
# Project Instructions

## OpenSpec
This project uses OpenSpec. Read `openspec/AGENTS.md` for workflow.

## Code Conventions
- TypeScript strict mode
- Async/await patterns
- Comprehensive error handling

## When Creating Proposals
- Always check existing specs first
- Consider interactions with payment and order modules
- Include security considerations

创建 .cursorrules 供 Cursor 使用:

markdown
# Cursor Rules

## OpenSpec Integration
Use `/openspec-*` commands for spec-driven development.

## Code Style
- TypeScript strict
- Prefer functional components
- Use React Query for data fetching

## File Locations
- Specs: openspec/specs/
- Changes: openspec/changes/

2. 规格驱动测试

从规格自动生成测试:

text
[Claude Code]
Human: 根据 openspec/specs/coupon/spec.md 生成完整的测试套件

Claude: 我将为每个场景生成对应的测试...

[生成 tests/coupon.test.ts]
text
[Cursor - 快速补充测试]
选中某个场景,Cmd+K:
"为这个场景生成单元测试"

3. 规格评审 Checklist

在切换工具前使用检查清单:

markdown
## 规格完成检查(离开 Claude Code 前)

- [ ] 所有需求都有 `### Requirement:` 标题
- [ ] 每个需求至少一个 `#### Scenario:`
- [ ] 异常场景已覆盖
- [ ] 安全考虑已记录
- [ ] tasks.md 任务按依赖排序
- [ ] 运行 `openspec validate --strict` 通过

## 实现完成检查(离开 Cursor 前)

- [ ] 所有任务标记为 [x]
- [ ] 代码符合规格要求
- [ ] 测试覆盖主要场景
- [ ] 无 lint 错误
- [ ] 准备好归档

4. 冲突处理

当两个工具的建议冲突时:

bash
Human: Cursor 建议用 Redux,但之前 Claude Code design.md
       选择了 Zustand。应该怎么处理?

Claude: 让我回顾 design.md 中的决策理由...

design.md 选择 Zustand 的原因是:
1. 项目规模小,Redux 过重
2. 已有组件使用 hooks 模式
3. Bundle size 考虑

建议:保持 Zustand 决策,让我更新 .cursorrules
禁止 Redux 建议:

```markdown
## State Management
Use Zustand only. Do not suggest Redux.
Reason: See openspec/changes/add-state/design.md

### 5. 增量迁移现有项目

```bash
# Step 1: 初始化 OpenSpec(任一工具)
openspec init

# Step 2: 使用 Claude Code 逆向生成规格
Human: 分析 src/auth/ 目录,为现有认证功能生成 OpenSpec 规格

# Step 3: 审核并调整规格
Human: 审核生成的规格,确保覆盖所有现有功能

# Step 4: 后续开发使用标准流程
# 新功能走 proposal → implement → archive

常见问题解决

问题 1:规格格式不一致

症状:Claude Code 和 Cursor 生成的规格格式略有差异。

解决:统一使用验证命令:

bash
# 每次生成规格后运行
openspec validate <change-id> --strict

问题 2:上下文丢失

症状:切换工具后,AI 不记得之前的讨论。

解决:所有决策记录在 OpenSpec 文件中:

markdown
# design.md - 记录所有技术决策

## Decision Log
### 2024-12-05: State Management
- Chose Zustand over Redux
- Reason: smaller bundle, simpler API
- Discussed in Claude Code session

问题 3:并行开发冲突

症状:两个开发者的变更修改了同一个规格。

解决

bash
# 使用 Git 分支
git checkout -b feature/add-auth
# 开发...
git checkout main
git pull
git merge feature/add-auth
# 解决冲突时参考规格语义

本章小结

OpenSpec + Claude Code + Cursor 的协作要点:

  1. 分工明确:Claude Code 负责规格和架构,Cursor 负责实现
  2. 规格统一openspec/ 目录是两个工具的共同真相来源
  3. 上下文共享:通过 project.mdCLAUDE.md.cursorrules 共享配置
  4. 灵活切换:根据任务类型选择最适合的工具
  5. 验证一致:使用 openspec validate 确保格式统一

完整示例代码

以下是完整的多工具协作项目配置脚本:

bash
#!/bin/bash
# OpenSpec + Claude Code + Cursor 协作配置脚本

set -e

GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m'

log() { echo -e "${BLUE}[Setup]${NC} $1"; }
success() { echo -e "${GREEN}[✓]${NC} $1"; }

PROJECT_DIR="openspec-collaboration-demo"
log "创建协作演示项目: $PROJECT_DIR"
rm -rf "$PROJECT_DIR"
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"

git init -q

# ============================================
# 1. OpenSpec 基础配置
# ============================================
log "配置 OpenSpec..."

mkdir -p openspec/{specs,changes/archive}
mkdir -p .claude/commands/openspec
mkdir -p .cursor/prompts/openspec

# project.md - 共享项目上下文
cat > openspec/project.md << 'EOF'
# Project Context

## Overview
E-commerce platform with coupon and feedback features.

## Tech Stack
- Language: TypeScript 5.x
- Runtime: Node.js 20
- Framework: Express 4.x
- ORM: Prisma 5.x
- Frontend: React 18 + Vite
- State: Zustand
- Testing: Vitest + Playwright

## Architecture

### Backend
- Controller → Service → Repository pattern
- RESTful API under /api/v1/
- JWT authentication

### Frontend
- Feature-based folder structure
- Shared components in src/components/common/
- React Query for server state

## Conventions

### Naming
- Files: kebab-case (user-profile.ts)
- Classes: PascalCase (UserProfile)
- Functions: camelCase (getUserProfile)
- Constants: SCREAMING_SNAKE_CASE

### API Design
- Use HTTP status codes correctly
- Consistent error format: { error: { code, message } }
- Pagination: { data, pagination: { page, limit, total } }

## Security
- Validate all user input
- Use parameterized queries
- Rate limiting on auth endpoints
- CORS configured for specific origins
EOF

# AGENTS.md - OpenSpec 工作流
cat > openspec/AGENTS.md << 'EOF'
# OpenSpec Instructions

## Workflow
1. **Create**: `/openspec:proposal` or `/openspec-proposal`
2. **Implement**: `/openspec:apply` or `/openspec-apply`
3. **Archive**: `/openspec:archive` or `/openspec-archive`

## Spec Format
- Requirements: `### Requirement: Name`
- Scenarios: `#### Scenario: Name`
- Keywords: **WHEN**, **THEN**, **AND**, **GIVEN**

## Before Starting
1. Run `openspec list --specs`
2. Run `openspec list`
3. Read `openspec/project.md`
EOF

# 根目录 AGENTS.md
cat > AGENTS.md << 'EOF'
<!-- OPENSPEC:START -->
# AI Assistant Instructions

This project uses OpenSpec for spec-driven development.
See `openspec/AGENTS.md` for workflow details.
See `openspec/project.md` for project context.
<!-- OPENSPEC:END -->
EOF

success "OpenSpec 配置完成"

# ============================================
# 2. Claude Code 配置
# ============================================
log "配置 Claude Code..."

cat > CLAUDE.md << 'EOF'
# Claude Code Instructions

## OpenSpec Integration
This project uses OpenSpec. Always check specs before implementing.

Commands:
- `/openspec:proposal` - Create change proposal
- `/openspec:apply` - Implement change
- `/openspec:archive` - Archive completed change

## Your Strengths (Use These)
- Deep analysis of requirements
- Comprehensive spec writing
- Architecture decisions
- Edge case identification
- Security considerations

## Workflow Preference
1. Analyze existing specs first
2. Create detailed proposals with all scenarios
3. Document decisions in design.md
4. Hand off to Cursor for implementation

## Code Conventions
Follow `openspec/project.md` strictly.

## Decision Documentation
Record all architectural decisions in `design.md` with:
- Context
- Decision
- Alternatives considered
- Trade-offs
EOF

# Claude Code commands
cat > .claude/commands/openspec/proposal.md << 'EOF'
# OpenSpec Proposal (Claude Code)

Create a comprehensive change proposal.

## Your Task
1. Analyze existing specs: `openspec list --specs`
2. Understand project context: `openspec/project.md`
3. Create detailed proposal with:
   - Thorough requirements analysis
   - All edge cases and error scenarios
   - Security considerations
   - Integration points with existing specs

## Output
- proposal.md with detailed Why/What/Impact
- tasks.md with dependency-ordered tasks
- design.md for complex decisions
- specs/<capability>/spec.md with comprehensive scenarios

User request: {{input}}
EOF

cat > .claude/commands/openspec/apply.md << 'EOF'
# OpenSpec Apply (Claude Code)

Implement a change proposal.

For complex implementations, consider handing off to Cursor
for faster multi-file editing.

Change ID: {{input}}
EOF

cat > .claude/commands/openspec/archive.md << 'EOF'
# OpenSpec Archive (Claude Code)

Archive completed change: `openspec archive {{input}} --yes`
EOF

success "Claude Code 配置完成"

# ============================================
# 3. Cursor 配置
# ============================================
log "配置 Cursor..."

cat > .cursorrules << 'EOF'
# Cursor Rules

## OpenSpec Integration
This project uses OpenSpec for spec-driven development.

Commands:
- `/openspec-proposal` - Quick proposal creation
- `/openspec-apply` - Fast implementation
- `/openspec-archive` - Archive changes

## Your Strengths (Use These)
- Fast code completion
- Multi-file editing with Composer
- Real-time preview
- Quick iterations

## When to Use Cursor
- Implementing approved proposals
- Quick code changes
- Refactoring with preview
- Test writing from specs

## When to Defer to Claude Code
- Complex requirement analysis
- Architecture decisions
- Security review
- Edge case identification

## Code Style
- TypeScript strict mode
- Async/await (no .then)
- Comprehensive error handling
- Follow openspec/project.md conventions

## State Management
Use Zustand only. Do not suggest Redux or MobX.

## File Locations
- Specs: openspec/specs/
- Changes: openspec/changes/
- Project context: openspec/project.md
EOF

# Cursor commands
cat > .cursor/prompts/openspec/openspec-proposal.md << 'EOF'
# OpenSpec Proposal (Cursor)

Create a change proposal based on user request.

For complex requirements, suggest using Claude Code
for deeper analysis.

User request: {input}
EOF

cat > .cursor/prompts/openspec/openspec-apply.md << 'EOF'
# OpenSpec Apply (Cursor)

Implement change using Composer for multi-file editing.

1. Read proposal.md and tasks.md
2. Show all file changes in preview
3. Apply after user confirmation

Change ID: {input}
EOF

cat > .cursor/prompts/openspec/openspec-archive.md << 'EOF'
# OpenSpec Archive (Cursor)

Run: `openspec archive {input} --yes`
EOF

success "Cursor 配置完成"

# ============================================
# 4. 示例规格
# ============================================
log "创建示例规格..."

mkdir -p openspec/specs/{order,payment}

cat > openspec/specs/order/spec.md << 'EOF'
# Order Specification

## Purpose
Manage customer orders and order lifecycle.

## Requirements

### Requirement: Create Order
The system SHALL allow users to create orders from cart.

#### Scenario: Successful order
- **GIVEN** user has items in cart
- **WHEN** user submits order
- **THEN** order is created with pending status
- **AND** cart is cleared

### Requirement: Order Status
The system SHALL track order status.

#### Scenario: Status transitions
- **GIVEN** order exists
- **WHEN** payment is confirmed
- **THEN** status changes to confirmed
- **AND** inventory is reserved
EOF

cat > openspec/specs/payment/spec.md << 'EOF'
# Payment Specification

## Purpose
Handle payment processing.

## Requirements

### Requirement: Process Payment
The system SHALL process payments via Stripe.

#### Scenario: Successful payment
- **WHEN** user submits payment
- **AND** card is valid
- **THEN** payment is processed
- **AND** receipt is generated
EOF

success "示例规格已创建"

# ============================================
# 5. 示例变更(展示协作)
# ============================================
log "创建协作示例变更..."

CHANGE_ID="add-coupon-system"
mkdir -p "openspec/changes/$CHANGE_ID/specs/coupon"

cat > "openspec/changes/$CHANGE_ID/proposal.md" << 'EOF'
## Why
电商平台需要优惠券功能以促进销售和用户留存。

## What Changes
- 新增优惠券数据模型和管理 API
- 实现优惠券验证和应用逻辑
- 与订单和支付模块集成

## Impact
- **New spec**: coupon
- **Modified specs**: order (应用优惠), payment (金额计算)
- **Breaking changes**: None

## Notes
- 此提案由 Claude Code 创建(深度分析)
- 实现将由 Cursor 完成(快速编码)
- design.md 记录了折扣计算算法决策
EOF

cat > "openspec/changes/$CHANGE_ID/design.md" << 'EOF'
# Technical Design: Coupon System

## Context
需要支持多种优惠券类型,与现有订单系统集成。

## Decisions

### Decision 1: Coupon Types
支持三种类型:
- percentage: 百分比折扣
- fixed: 固定金额减免
- threshold: 满减优惠

### Decision 2: Stacking Rules
- 优惠券不可叠加(一单一券)
- 优惠券可与会员折扣叠加(会员折扣先计算)

### Decision 3: Discount Calculation
Order:
1. 原价
2. 会员折扣(如适用)
3. 优惠券折扣
4. 最终价格

## Trade-offs
- 简单规则便于理解,但限制了营销灵活性
- 后续可扩展为更复杂的规则引擎
EOF

cat > "openspec/changes/$CHANGE_ID/tasks.md" << 'EOF'
# Tasks: Add Coupon System

## 1. Database (Cursor)
- [ ] 1.1 Create Coupon model in Prisma
- [ ] 1.2 Create CouponUsage model
- [ ] 1.3 Run migration

## 2. Backend Services (Cursor)
- [ ] 2.1 CouponService - CRUD operations
- [ ] 2.2 CouponValidationService - validation logic
- [ ] 2.3 DiscountCalculationService - pricing logic

## 3. API Endpoints (Cursor)
- [ ] 3.1 GET /api/v1/coupons - list user's coupons
- [ ] 3.2 POST /api/v1/coupons/validate - validate coupon
- [ ] 3.3 POST /api/v1/orders/:id/apply-coupon - apply to order

## 4. Integration (Claude Code review, Cursor implement)
- [ ] 4.1 Modify order creation to accept coupon
- [ ] 4.2 Update payment calculation
- [ ] 4.3 Add coupon info to order response

## 5. Testing (Cursor)
- [ ] 5.1 Unit tests for services
- [ ] 5.2 Integration tests for API
- [ ] 5.3 E2E test for complete flow
EOF

cat > "openspec/changes/$CHANGE_ID/specs/coupon/spec.md" << 'EOF'
# Coupon Specification

## Purpose
Provide discount coupons for promotional campaigns.

## Requirements

### Requirement: Coupon Types
The system SHALL support multiple coupon types.

#### Scenario: Percentage discount
- **GIVEN** coupon type is percentage with value 20
- **WHEN** applied to $100 order
- **THEN** discount is $20
- **AND** final price is $80

#### Scenario: Fixed amount discount
- **GIVEN** coupon type is fixed with value 15
- **WHEN** applied to $100 order
- **THEN** discount is $15
- **AND** final price is $85

#### Scenario: Threshold discount
- **GIVEN** coupon requires minimum $50, discount $10
- **WHEN** applied to $60 order
- **THEN** discount is $10
- **AND** final price is $50

### Requirement: Coupon Validation
The system MUST validate coupons before application.

#### Scenario: Valid coupon
- **GIVEN** coupon exists and is active
- **AND** not expired
- **AND** usage limit not reached
- **WHEN** user validates coupon
- **THEN** validation succeeds

#### Scenario: Expired coupon
- **GIVEN** coupon end_date is in the past
- **WHEN** user tries to use it
- **THEN** error "Coupon has expired" is returned

#### Scenario: Usage limit exceeded
- **GIVEN** coupon max_uses is 100
- **AND** current uses is 100
- **WHEN** user tries to use it
- **THEN** error "Coupon limit reached" is returned

### Requirement: Single Use Per Order
The system SHALL allow only one coupon per order.

#### Scenario: Apply coupon to order
- **GIVEN** order has no coupon
- **WHEN** user applies valid coupon
- **THEN** coupon is applied
- **AND** price is recalculated

#### Scenario: Replace coupon
- **GIVEN** order already has a coupon
- **WHEN** user applies different coupon
- **THEN** old coupon is removed
- **AND** new coupon is applied

### Requirement: Stacking with Member Discount
The system SHALL allow coupon stacking with member discounts.

#### Scenario: Member with coupon
- **GIVEN** user has 10% member discount
- **AND** applies 20% coupon
- **WHEN** order is $100
- **THEN** member discount: $100 * 0.9 = $90
- **AND** coupon discount: $90 * 0.8 = $72
- **AND** final price is $72
EOF

success "协作示例变更已创建"

# ============================================
# 6. 验证
# ============================================
log "验证配置..."

if command -v openspec &> /dev/null; then
    openspec validate "$CHANGE_ID" --strict 2>/dev/null || echo "验证完成"
fi

# ============================================
# 7. 显示结果
# ============================================
echo ""
echo "========================================"
echo "  协作配置完成!"
echo "========================================"
echo ""
echo "项目结构:"
find . -name "*.md" -o -name ".cursorrules" | sort | head -20

echo ""
echo "协作工作流:"
echo ""
echo "1. 规格阶段 (Claude Code):"
echo "   claude"
echo "   > /openspec:proposal Add new feature"
echo ""
echo "2. 实现阶段 (Cursor):"
echo "   cursor ."
echo "   Cmd+I > /openspec-apply add-coupon-system"
echo ""
echo "3. 归档 (任一工具):"
echo "   openspec archive add-coupon-system --yes"
echo ""
echo "配置文件:"
echo "- CLAUDE.md: Claude Code 专属指令"
echo "- .cursorrules: Cursor 专属规则"
echo "- openspec/project.md: 共享项目上下文"

将此脚本保存为 setup-collaboration.sh,然后执行:

bash
chmod +x setup-collaboration.sh
./setup-collaboration.sh

这个脚本会创建一个完整的协作项目,包括:

  1. OpenSpec 目录结构和共享配置
  2. Claude Code 专属配置(CLAUDE.md、命令)
  3. Cursor 专属配置(.cursorrules、命令)
  4. 示例规格和协作变更提案
  5. 展示分工的任务标注(哪些用 Claude Code,哪些用 Cursor)

用两个工具分别打开项目目录,即可开始协作开发。

基于 MIT 许可证发布。内容版权归作者所有。