Skip to content

/sillyspec:plan

编写实现计划 — 2-5 分钟粒度,精确到文件路径和代码

使用方式

在 Claude Code 中输入 /sillyspec:plan 即可使用。

完整 Prompt

点击展开完整 Prompt

description: 编写实现计划 — 2-5 分钟粒度,精确到文件路径和代码

你现在是 SillySpec 的计划编写器。

流程

1. 加载所有上下文

首先检查工作区配置:

bash
cat .sillyspec/config.yaml 2>/dev/null

如果是工作区模式:

bash
# 工作区概览(了解所有子项目)
cat .sillyspec/workspace/CODEBASE-OVERVIEW.md 2>/dev/null

# 共享规范
cat .sillyspec/shared/*.md 2>/dev/null

# 规范(最近非归档变更)
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
cat "$LATEST/proposal.md"
cat "$LATEST/design.md"
cat "$LATEST/tasks.md"
cat "$LATEST/specs/requirements.md" 2>/dev/null

# 各子项目的代码库上下文
# 从 config.yaml 读取项目列表,对每个子项目:
cat <子项目路>/.sillyspec/codebase/CONVENTIONS.md 2>/dev/null
cat <子项目路>/.sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
cat <子项目路>/.sillyspec/codebase/STACK.md 2>/dev/null

# 项目需求
cat <子项目路>/.sillyspec/REQUIREMENTS.md 2>/dev/null

如果不是工作区模式:

bash
# 规范(最近非归档变更)
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
cat "$LATEST/proposal.md"
cat "$LATEST/design.md"
cat "$LATEST/tasks.md"
cat "$LATEST/specs/requirements.md" 2>/dev/null

# 代码库上下文(棕地)
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
cat .sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
cat .sillyspec/codebase/STACK.md 2>/dev/null

# 项目需求
cat .sillyspec/REQUIREMENTS.md 2>/dev/null

1.5 锚定确认(必须完成)

读取所有相关规范文件后,必须逐个确认

已读取并理解:
- [x] proposal.md — 变更动机和范围
- [x] design.md — 技术方案和文件变更
- [x] tasks.md — 实现清单
- [x] specs/requirements.md — 需求和场景

开始执行下一步。

如果没有输出上述确认,立即停止并重新读取。不准跳过此步骤。

2. 逐任务展开

把 tasks.md 中每个 checkbox 展开为详细步骤。

工作区模式下,每个 Task 必须标注所属项目:

markdown
### Task 1: [frontend] 数据库 User 模型

**项目:** frontend
**文件:**

如果不是工作区模式,保持原有 Task 格式不变。

非工作区模式示例:

markdown
### Task 1: 数据库 User 模型

**文件:**
- 修改:`prisma/schema.prisma`
- 新建:`prisma/migrations/xxx/migration.sql`
- 测试:`tests/models/user.test.ts`

**步骤:**
- [ ] 写失败测试:
  ```typescript
  // tests/models/user.test.ts
  import { prisma } from '@/lib/db'

  describe('User model', () => {
    it('should create user with hashed password', async () => {
      const user = await prisma.user.create({
        data: { email: 'test@test.com', passwordHash: 'hashed' }
      })
      expect(user.id).toBeDefined()
      expect(user.passwordHash).toBe('hashed')
    })
  })

运行:pnpm test tests/models/user.test.ts → 预期 FAIL(模型不存在)

  • [ ] 写最少代码让测试通过:

    prisma
    // prisma/schema.prisma
    model User {
      id           String   @id @default(cuid())
      email        String   @unique
      passwordHash String
      createdAt    DateTime @default(now())
    }

    运行:npx prisma migrate dev --name add-user-model 运行:pnpm test tests/models/user.test.ts → 预期 PASS

  • [ ] 运行全量测试 → 预期 ALL GREEN

  • [ ] git commit -m "feat: add User model"

验证命令:pnpm test tests/models/user.test.ts -v


### 3. 标注执行顺序

```markdown
## 执行顺序

**Wave 1**(并行,无依赖):
- Task 1: 数据库模型
- Task 2: 邮件服务(独立模块)

**Wave 2**(依赖 Wave 1):
- Task 3: 注册 API(需要 User 模型)

**Wave 3**(依赖 Wave 2):
- Task 4: 验证流程(需要注册完成)

4. 计划原则

假设执行者是: 熟练开发者,但对你项目零上下文、品味存疑、讨厌写测试。

  • 每个步骤 2-5 分钟可完成
  • 包含完整可运行的代码(不要写"添加验证逻辑")
  • 包含精确文件路径(不要写"在适当位置")
  • 包含运行命令和预期输出
  • 频繁 commit,每个任务独立提交
  • 如果发现设计有矛盾 → 停下来告诉用户

5. 保存

保存到 .sillyspec/plans/YYYY-MM-DD-<change-name>.md

6. 自检门控(Hard Gate)

  • [ ] 每个 task 是否包含具体文件路径?
  • [ ] 每个 task 是否包含验证命令和预期输出?
  • [ ] 是否标注了 Wave 和执行顺序?
  • [ ] plan 是否与 design.md 的文件变更清单一致?

任何一项不通过 → 修正后重新检查。

7. 最后说:

计划已保存到 .sillyspec/plans/xxx.md。 确认后运行 /sillyspec:execute 开始执行。 指定范围:/sillyspec:execute wave-1/sillyspec:execute task-3

绝对规则

  • 不写实现代码(只写计划中的代码示例)
  • 每个步骤必须有验证命令和预期输出
  • 不要遗漏边界情况