diff --git a/docs/superpowers/specs/2026-06-22-merge-generate-buttons-design.md b/docs/superpowers/specs/2026-06-22-merge-generate-buttons-design.md
new file mode 100644
index 0000000..0cda13a
--- /dev/null
+++ b/docs/superpowers/specs/2026-06-22-merge-generate-buttons-design.md
@@ -0,0 +1,76 @@
+# 合并「批量生成」与「生成一篇」按钮设计
+
+## 背景
+
+`WorkspaceToolbar.vue` 当前并排放置两个独立按钮:
+
+```vue
+
+
+```
+
+需求:把这两个按钮合并成一个按钮,点击后通过下拉菜单选择具体执行哪种生成方式。
+
+## 交互
+
+- 合并后的主按钮文案为「生成教案 ▾」。
+- 点击主按钮**只**展开/收起下拉菜单,本身不直接触发任何生成动作。
+- 下拉菜单包含两个选项:「生成一篇」「批量生成」。点击任意一项后:
+ 1. 触发对应事件(`generate` / `batchGenerate`)。
+ 2. 自动收起菜单。
+- 点击组件外部区域、或按下 `Escape` 键,菜单自动收起。
+
+## 组件设计
+
+### 新增 `src/components/GenerateMenuButton.vue`
+
+负责封装下拉菜单的全部状态与交互,对外接口与现状保持一致:
+
+```ts
+defineEmits<{
+ generate: []
+ batchGenerate: []
+}>()
+```
+
+行为:
+- 内部 `open = ref(false)` 控制展开状态。
+- 根元素绑定 `ref`,`onMounted` 时在 `document` 上注册 `click` 监听,点击目标不在根元素内时关闭菜单;`onUnmounted` 时移除监听。
+- 监听 `keydown` 的 `Escape` 关闭菜单。
+- 菜单项按钮保留 `data-testid="generate"` 与 `data-testid="batch-generate"`,点击后 `emit` 对应事件并将 `open` 置为 `false`。
+- 主按钮 `data-testid="generate-menu-toggle"`,点击切换 `open`,并设置 `aria-expanded` 反映状态;下拉 `
` 设置 `role="menu"`,菜单项 `role="menuitem"`,提升可访问性。
+
+### `WorkspaceToolbar.vue` 改动
+
+将原来两个 `