pmflow-cli 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/.gitignore +3 -0
  2. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/PKG-INFO +2 -2
  3. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/pyproject.toml +2 -2
  4. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/skills/plan-task/SKILL.md +12 -2
  5. pmflow_cli-0.1.1/skills/prd/SKILL.md +236 -0
  6. {pmflow_cli-0.1.0/src/pmflow_cli → pmflow_cli-0.1.1}/skills/prdfix/SKILL.md +14 -4
  7. pmflow_cli-0.1.1/skills/snapshot-space/SKILL.md +211 -0
  8. pmflow_cli-0.1.1/src/pmflow_cli/commands/context.py +271 -0
  9. pmflow_cli-0.1.1/src/pmflow_cli/commands/issue.py +113 -0
  10. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/commands/skills.py +30 -15
  11. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/commands/workspace.py +2 -7
  12. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/main.py +5 -3
  13. pmflow_cli-0.1.1/src/pmflow_cli/output.py +43 -0
  14. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/skills/plan-task/SKILL.md +12 -2
  15. pmflow_cli-0.1.1/src/pmflow_cli/skills/prd/SKILL.md +236 -0
  16. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1/src/pmflow_cli}/skills/prdfix/SKILL.md +14 -4
  17. pmflow_cli-0.1.1/src/pmflow_cli/skills/snapshot-space/SKILL.md +211 -0
  18. pmflow_cli-0.1.1/src/pmflow_cli/utils.py +38 -0
  19. pmflow_cli-0.1.0/src/pmflow_cli/commands/context.py +0 -271
  20. pmflow_cli-0.1.0/src/pmflow_cli/commands/issue.py +0 -48
  21. pmflow_cli-0.1.0/src/pmflow_cli/output.py +0 -15
  22. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/.claude-plugin/plugin.json +0 -0
  23. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/README.md +0 -0
  24. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/skills/plan-space/SKILL.md +0 -0
  25. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/__init__.py +0 -0
  26. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/client.py +0 -0
  27. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/commands/__init__.py +0 -0
  28. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/commands/ai.py +0 -0
  29. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/commands/auth.py +0 -0
  30. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/config.py +0 -0
  31. {pmflow_cli-0.1.0 → pmflow_cli-0.1.1}/src/pmflow_cli/skills/plan-space/SKILL.md +0 -0
@@ -24,5 +24,8 @@ out/
24
24
  # OS
25
25
  .DS_Store
26
26
 
27
+ # Claude Code (installed via `pmflow skill install`)
28
+ .claude/commands/
29
+
27
30
  # uv
28
31
  uv.lock
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pmflow-cli
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: CLI for pmflow — project management for AI-assisted development
5
5
  Project-URL: Repository, https://github.com/zhanglaixian/pmflow
6
6
  Author-email: zhanglaixian <zhanglaixian@zhuanzhuan.com>
@@ -11,7 +11,7 @@ Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.12
13
13
  Requires-Dist: httpx>=0.27
14
- Requires-Dist: pmflow-shared>=0.1.0
14
+ Requires-Dist: pmflow-shared>=0.1.1
15
15
  Requires-Dist: rich>=13.0
16
16
  Requires-Dist: tomli-w>=1.0
17
17
  Requires-Dist: tomli>=2.0; python_version < '3.11'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pmflow-cli"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "CLI for pmflow — project management for AI-assisted development"
5
5
  requires-python = ">=3.12"
6
6
  readme = "README.md"
@@ -13,7 +13,7 @@ classifiers = [
13
13
  "Environment :: Console",
14
14
  ]
15
15
  dependencies = [
16
- "pmflow-shared>=0.1.0",
16
+ "pmflow-shared>=0.1.1",
17
17
  "typer>=0.12",
18
18
  "httpx>=0.27",
19
19
  "rich>=13.0",
@@ -8,7 +8,17 @@ user-invocable: true
8
8
 
9
9
  执行以下步骤:
10
10
 
11
- ## 1. 获取 Issue 的所有上下文内容
11
+ ## 1. Issue 状态更新为 DOING
12
+
13
+ 运行命令:
14
+
15
+ ```
16
+ pmflow issue status {seq_num} doing --workspace {slug}
17
+ ```
18
+
19
+ 如果命令失败,将错误信息告知用户但继续执行后续步骤(状态变更失败不应阻塞工作流)。
20
+
21
+ ## 2. 获取 Issue 的所有上下文内容
12
22
 
13
23
  运行命令:
14
24
 
@@ -18,7 +28,7 @@ pmflow ctx dump {seq_num} --workspace {slug}
18
28
 
19
29
  如果命令失败,将错误信息告知用户并停止。
20
30
 
21
- ## 2. 进入 Plan 模式
31
+ ## 3. 进入 Plan 模式
22
32
 
23
33
  成功获取上下文内容后,进入 plan 模式。基于上下文中的需求文档(PRD、设计文档等),制定详细的技术实现方案:
24
34
 
@@ -0,0 +1,236 @@
1
+ ---
2
+ name: pmflow:prd
3
+ description: 为新功能生成产品需求文档(PRD),梳理用户痛点和产品价值。用法:/pmflow:prd 功能描述
4
+ user-invocable: true
5
+ ---
6
+
7
+ # PRD 生成器
8
+
9
+ 为产品功能创建清晰、可执行的产品需求文档,聚焦用户痛点与产品价值。
10
+
11
+ **重要:** 不要涉及任何技术实现细节或代码,这是一份面向产品的文档。
12
+
13
+ ---
14
+
15
+ ## 工作流程
16
+
17
+ 1. 接收用户的功能描述(来自 `$ARGUMENTS`)
18
+ 2. 提出 3-5 个关键澄清问题(带字母选项)
19
+ 3. 根据回答生成结构化 PRD
20
+ 4. 保存至 `tasks/prd-[功能名].md`
21
+
22
+ ---
23
+
24
+ ## 第一步:澄清问题
25
+
26
+ 仅在初始描述有歧义时提问,聚焦以下方面:
27
+
28
+ - **问题/目标:** 解决什么用户痛点?
29
+ - **目标用户:** 谁会使用这个功能?
30
+ - **核心场景:** 用户的关键操作流程是什么?
31
+ - **范围边界:** 这个功能不做什么?
32
+ - **成功标准:** 怎样算做好了?
33
+
34
+ ### 问题格式示例:
35
+
36
+ ```
37
+ 1. 这个功能主要解决什么问题?
38
+ A. 新用户上手困难
39
+ B. 老用户留存下降
40
+ C. 客服工单量过高
41
+ D. 其他:[请说明]
42
+
43
+ 2. 目标用户是谁?
44
+ A. 仅新用户
45
+ B. 仅现有用户
46
+ C. 所有用户
47
+ D. 管理员
48
+
49
+ 3. 期望的功能范围?
50
+ A. 最小可用版本(MVP)
51
+ B. 完整功能
52
+ C. 先做核心流程,后续迭代
53
+ ```
54
+
55
+ 用户可以用 "1A, 2C, 3B" 快速回复。选项要缩进对齐。
56
+
57
+ ---
58
+
59
+ ## 第二步:PRD 结构
60
+
61
+ 生成包含以下章节的 PRD:
62
+
63
+ ### 1. 概述
64
+ 简要描述功能及其解决的用户问题。用 1-2 段话说清楚:现状是什么、痛点在哪、这个功能如何改善。
65
+
66
+ ### 2. 目标
67
+ 具体、可衡量的产品目标(项目符号列表)。
68
+
69
+ ### 3. 目标用户与场景
70
+ - 明确目标用户画像
71
+ - 描述典型使用场景
72
+
73
+ ### 4. 用户故事
74
+ 每个故事包含:
75
+ - **标题:** 简短描述
76
+ - **描述:** "作为[角色],我希望[功能],以便[价值]"
77
+ - **验收标准:** 可验证的完成清单
78
+
79
+ 每个故事应足够小,可在一个迭代周期内完成。
80
+
81
+ **格式:**
82
+ ```markdown
83
+ ### US-001: [标题]
84
+ **描述:** 作为[角色],我希望[功能],以便[价值]。
85
+
86
+ **验收标准:**
87
+ - [ ] 具体可验证的标准
88
+ - [ ] 另一个标准
89
+ ```
90
+
91
+ **要求:**
92
+ - 验收标准必须可验证,不能模糊。"功能正常"是坏的。"点击删除按钮后弹出确认对话框"是好的。
93
+ - 从用户视角描述,避免技术术语。
94
+
95
+ ### 5. 功能需求
96
+ 编号列表,描述具体功能行为:
97
+ - "FR-1: 用户可以..."
98
+ - "FR-2: 当用户执行X操作时,系统应..."
99
+
100
+ 要明确、无歧义,但用产品语言而非技术语言。
101
+
102
+ ### 6. 非目标(不在范围内)
103
+ 明确列出本次不做的事情。这对控制范围至关重要。
104
+
105
+ ### 7. 交互与体验设计
106
+ - 关键页面/流程的交互说明
107
+ - 信息架构与导航
108
+ - 异常状态的用户提示(空状态、错误提示等)
109
+ - 如有原型或设计稿,附上链接
110
+
111
+ ### 8. 成功指标
112
+ 如何衡量功能是否成功?
113
+ - "用户完成X操作的时间减少 50%"
114
+ - "转化率提升 10%"
115
+ - "相关客服工单减少 30%"
116
+
117
+ ### 9. 待定问题
118
+ 仍需讨论或澄清的问题。
119
+
120
+ ---
121
+
122
+ ## 写作原则
123
+
124
+ PRD 的读者可能是设计师、开发者或其他产品经理,因此:
125
+
126
+ - 用产品语言,避免技术术语
127
+ - 聚焦用户痛点和价值,不涉及实现方式
128
+ - 明确具体,避免模糊表述
129
+ - 需求编号方便引用和讨论
130
+ - 适当举例帮助理解
131
+
132
+ ---
133
+
134
+ ## 输出
135
+
136
+ - **格式:** Markdown(`.md`)
137
+ - **位置:** `tasks/`
138
+ - **文件名:** `prd-[功能名].md`(kebab-case,英文命名)
139
+
140
+ ---
141
+
142
+ ## 示例 PRD
143
+
144
+ ```markdown
145
+ # PRD: 任务优先级
146
+
147
+ ## 概述
148
+
149
+ 当前任务列表中所有任务平铺展示,用户无法快速识别哪些事情更紧急、更重要。随着任务数量增长,用户经常遗漏高优任务,导致关键工作延误。
150
+
151
+ 本功能为任务增加优先级标记(高/中/低),通过视觉区分和筛选能力,帮助用户聚焦重要事项,提升工作效率。
152
+
153
+ ## 目标
154
+
155
+ - 用户可以为任何任务标记优先级(高/中/低)
156
+ - 不同优先级有清晰的视觉区分
157
+ - 支持按优先级筛选和排序
158
+ - 新任务默认为中优先级
159
+
160
+ ## 目标用户与场景
161
+
162
+ **目标用户:** 日常使用任务管理功能的所有用户,特别是同时管理 10+ 任务的用户。
163
+
164
+ **典型场景:**
165
+ - 用户在周一早上打开任务列表,快速筛选出高优先级任务,规划本周工作重点
166
+ - 用户创建新任务时,标记为高优先级以确保团队关注
167
+ - 用户在任务回顾时,将已降低紧迫性的任务调整为低优先级
168
+
169
+ ## 用户故事
170
+
171
+ ### US-001: 查看任务优先级
172
+ **描述:** 作为用户,我希望在任务列表中一眼看出每个任务的优先级,以便快速判断哪些事情需要优先处理。
173
+
174
+ **验收标准:**
175
+ - [ ] 每个任务卡片显示彩色优先级标签(红色=高、黄色=中、灰色=低)
176
+ - [ ] 无需悬停或点击即可看到优先级
177
+
178
+ ### US-002: 修改任务优先级
179
+ **描述:** 作为用户,我希望在编辑任务时能修改其优先级,以便根据实际情况灵活调整。
180
+
181
+ **验收标准:**
182
+ - [ ] 任务编辑界面包含优先级选择器
183
+ - [ ] 显示当前优先级为已选状态
184
+ - [ ] 选择后立即保存
185
+
186
+ ### US-003: 按优先级筛选任务
187
+ **描述:** 作为用户,我希望按优先级筛选任务列表,以便在专注工作时只看高优先级事项。
188
+
189
+ **验收标准:**
190
+ - [ ] 提供筛选项:全部 | 高 | 中 | 低
191
+ - [ ] 筛选结果为空时显示友好提示
192
+ - [ ] 刷新页面后筛选条件保持不变
193
+
194
+ ## 功能需求
195
+
196
+ - FR-1: 每个任务支持设置优先级,可选值为高、中、低,默认中
197
+ - FR-2: 任务卡片上显示彩色优先级标签
198
+ - FR-3: 任务编辑界面包含优先级选择器
199
+ - FR-4: 任务列表头部提供优先级筛选下拉框
200
+ - FR-5: 同一状态列内,任务按优先级从高到低排序
201
+
202
+ ## 非目标
203
+
204
+ - 不做基于优先级的通知或提醒
205
+ - 不做根据截止日期自动调整优先级
206
+ - 不做子任务的优先级继承
207
+
208
+ ## 交互与体验设计
209
+
210
+ - 优先级标签使用语义化颜色(红/黄/灰),色弱用户可通过文字辅助区分
211
+ - 优先级选择器使用下拉菜单,操作不超过 2 次点击
212
+ - 筛选状态通过 URL 参数保持,支持分享链接
213
+
214
+ ## 成功指标
215
+
216
+ - 用户修改优先级操作不超过 2 次点击
217
+ - 高优先级任务在列表顶部,用户无需翻滚即可看到
218
+ - 功能上线后,任务延误率下降
219
+
220
+ ## 待定问题
221
+
222
+ - 优先级是否影响看板列内的排序?
223
+ - 是否需要支持键盘快捷键修改优先级?
224
+ ```
225
+
226
+ ---
227
+
228
+ ## 保存前检查
229
+
230
+ - [ ] 已提出带选项的澄清问题
231
+ - [ ] 已将用户回答融入文档
232
+ - [ ] 用户故事小而具体,从用户视角描述
233
+ - [ ] 功能需求有编号且无歧义
234
+ - [ ] 非目标章节明确划定了范围边界
235
+ - [ ] 全文不包含技术实现细节或代码
236
+ - [ ] 已保存至 `tasks/prd-[功能名].md`
@@ -24,14 +24,24 @@ user-invocable: true
24
24
 
25
25
  ## 2. 创建飞书文档并关联 Issue
26
26
 
27
- 将上述总结内容写入临时文件 `/tmp/prdfix-summary.md`,然后运行命令:
27
+ 将上述总结内容用 Bash `cat <<'EOF'` 写入临时文件 `/tmp/prdfix-{slug}-{seq_num}.md`(不要先读取任何已有文件),然后运行命令:
28
28
 
29
29
  ```
30
- pmflow ctx add-doc {seq_num} --workspace {slug} --title "PRD 实现总结 - {slug上大写}-{seq_num}" --content-file /tmp/prdfix-summary.md
30
+ pmflow ctx add-doc {seq_num} --workspace {slug} --title "[{slug上大写}-{seq_num}] 实现总结" --content-file /tmp/prdfix-{slug}-{seq_num}.md
31
31
  ```
32
32
 
33
33
  如果命令失败,将错误信息告知用户并停止。
34
34
 
35
- ## 3. 确认完成
35
+ ## 3. 将 Issue 状态更新为 DONE
36
36
 
37
- 命令成功后,将飞书文档链接展示给用户,确认总结已保存到对应 Issue 的上下文中。
37
+ 运行命令:
38
+
39
+ ```
40
+ pmflow issue status {seq_num} done --workspace {slug}
41
+ ```
42
+
43
+ 如果命令失败,将错误信息告知用户但继续执行后续步骤(状态变更失败不应阻塞工作流)。
44
+
45
+ ## 4. 确认完成
46
+
47
+ 命令成功后,将飞书文档链接展示给用户,确认总结已保存到对应 Issue 的上下文中,并告知 Issue 状态已更新为 DONE。
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: pmflow:snapshot-space
3
+ description: 收集 Space 基本信息、原始 PRD 和 Issue 列表,结合代码库骨架信息生成 Space 快照文档并同步到飞书。用法:/pmflow:snapshot-space {slug}
4
+ user-invocable: true
5
+ ---
6
+
7
+ 从参数 `$ARGUMENTS` 中获取 workspace slug。
8
+
9
+ 执行以下步骤:
10
+
11
+ ## 1. 获取 Space 服务端上下文
12
+
13
+ 运行命令:
14
+
15
+ ```
16
+ pmflow ctx dump-space {slug} --exclude "Space 快照"
17
+ ```
18
+
19
+ 如果命令失败,将错误信息告知用户但继续执行后续步骤。将获取到的内容保存为变量,供后续写入文档使用。这里面包含 Space 的原始 PRD 和关联的上下文文档。
20
+
21
+ ## 2. 获取产品规划数据
22
+
23
+ 运行命令获取 workspace 中的所有 Issue:
24
+
25
+ ```
26
+ pmflow issue list --workspace {slug} --format json
27
+ ```
28
+
29
+ 如果命令失败,将错误信息告知用户但继续后续步骤(注明"产品规划数据不可用")。
30
+
31
+ 成功获取后,按以下规则处理(**仅使用 JSON 中的字段,不要再调用 `ctx dump` 读取飞书文档**):
32
+
33
+ 1. **解析 Issue 层级**:从 JSON 中提取所有 Issue,按 `type` 分组(feature / task / bug)。通过 `parent_id` 字段匹配 Feature 的 `id`,构建 Feature → 子任务层级关系。
34
+ 2. **提取摘要**:每个 Issue 的摘要直接使用其 `description` 字段(截取前 1-2 句),无需读取 PRD 文档。如果 `description` 为空,标注"无描述"。
35
+ 3. **区分独立任务与子任务**:`parent_id` 为空的 Task/Bug 为独立 Issue,有 `parent_id` 的为某个 Feature 的子任务。独立 Issue 需要在快照中单独列出(含序号、标题、状态、描述),子任务只在所属 Feature 行中统计数量。
36
+ 4. **统计汇总**:按 type(feature / task / bug)× status(todo / doing / done / blocked)分别统计数量。
37
+
38
+ ## 3. 从记忆中提取项目关键信息
39
+
40
+ 检查你的 memory 文件(如果有),提取以下类型的信息供写入快照:
41
+
42
+ - **项目进展与里程碑**:开发阶段、关键时间节点
43
+ - **设计决策与理念**:架构选型的原因、UI/UX 风格偏好、核心设计原则
44
+ - **踩过的坑与经验**:开发中遇到的关键技术问题和解决方式
45
+
46
+ 这些"软信息"是代码扫描无法获取的,但对 PRD 生成至关重要——它们帮助 AI 理解项目的风格和决策偏好。
47
+
48
+ ## 4. 深度理解代码库
49
+
50
+ 不要只读声明层,而是要**理解项目的设计体系和产品语言**。分三层逐步深入:
51
+
52
+ ### 4.1 项目骨架(快速扫描)
53
+
54
+ 1. **项目描述文件**: 读取 `CLAUDE.md`、`README.md`(如存在),提取项目概述和技术栈
55
+ 2. **依赖与元数据**: 读取根目录的 `pyproject.toml`、`package.json` 等,提取依赖列表
56
+ 3. **目录结构**: 列出根目录及核心目录的文件树(2-3 层深度即可)
57
+
58
+ ### 4.2 功能梳理(端点 + 页面)
59
+
60
+ - **后端路由文件**: 找到 routers 目录,读取每个路由文件的端点定义(装饰器 + 函数签名 + docstring),归纳出系统提供的 API 能力
61
+ - **前端页面文件**: 找到 App Router 的页面目录,根据 `page.tsx` 的路径和页面组件名,归纳出用户可见的功能页面
62
+ - 只读端点/页面的声明层(装饰器、路径、函数名、docstring),不读函数实现体
63
+
64
+ ### 4.3 设计体系与产品语言(深度理解)
65
+
66
+ 这一步是区别于简单罗列的关键——你需要**主动探索**以下内容,理解产品的"气质":
67
+
68
+ 1. **视觉设计体系**:
69
+ - 读取 `globals.css` 或 Tailwind 配置,提取主题色系(主色、强调色、语义色)、圆角体系、阴影层次
70
+ - 识别是否有自定义设计系统(如 Glass UI、Neumorphism 等特殊效果类名)
71
+ - 记录明/暗主题配置
72
+
73
+ 2. **UI 组件库风格**:
74
+ - 读取 `components.json` 或等效配置,了解组件库风格(如 shadcn 的 style/theme)
75
+ - 快速浏览 `components/ui/` 目录,了解已安装的基础组件集合
76
+ - 注意组件底层依赖(如 Radix、Base UI、Headless UI),这影响交互风格
77
+
78
+ 3. **产品表述风格**:
79
+ - 读取 1-2 个关键页面(如登录页、帮助页、首页),提取产品 slogan、描述文案、按钮文字的语气风格(正式/轻松/技术向)
80
+ - 注意中英文混用的习惯(如"AI Coding"而非"人工智能编码")
81
+
82
+ 4. **品牌元素**:
83
+ - 检查 logo 文件和 favicon,了解品牌形象(如 logo 是吉祥物还是文字 logo)
84
+ - 记录字体选择(display font vs body font)
85
+
86
+ **注意**:不要深入阅读业务逻辑代码,这一步的目标是提取"产品长什么样、说什么话"的信息。
87
+
88
+ ## 5. 提炼与总结
89
+
90
+ 这是最重要的一步。不要简单罗列信息,而是像产品经理一样**提炼**:
91
+
92
+ - **功能描述**要从用户视角出发,说明"解决什么问题",而不只是"有什么 API"。例如:不写"Issue CRUD + 三种类型 + 状态流转",而写"Issue 全生命周期管理:支持 Feature/Task/Bug 三种类型,workspace 内自增序号,状态从 TODO 到 DONE 清晰流转"
93
+ - **按产品模块分组**功能,而不是按代码分层(不要分"认证路由""Issue 路由",而是分"认证与用户""项目管理""AI 能力"等)
94
+ - **设计语言章节**要用文字描述产品的视觉印象,不只是列出 CSS 变量值
95
+
96
+ ## 6. 生成快照文档
97
+
98
+ 将分析结果综合写入 `docs/SPACE_SNAPSHOT.md` 文件(如 `docs/` 目录不存在则先创建)。如果该文件已存在则覆盖。
99
+
100
+ 文档必须包含以下章节,使用中文撰写:
101
+
102
+ ```markdown
103
+ # {项目名称} — Space 快照
104
+
105
+ > 生成时间:{通过 `date '+%Y-%m-%d %H:%M'` 获取的本地时间}
106
+
107
+ ## 项目概述
108
+
109
+ 这个项目是什么、解决什么问题、目标用户是谁。(来自 CLAUDE.md / README.md / Space PRD)
110
+
111
+ ## 设计理念与关键决策
112
+
113
+ 项目的核心设计原则、架构选型理由等。(来自记忆和项目文档)
114
+ 这些信息帮助后续 PRD 保持与项目整体风格一致。
115
+
116
+ ## 技术栈
117
+
118
+ 使用的语言、框架、核心库、部署模式。简要列表即可。
119
+
120
+ ## 设计语言
121
+
122
+ 产品的视觉风格和交互特征。包括:
123
+ - 色彩体系(主色调、明/暗主题风格)
124
+ - UI 框架与组件风格(如 shadcn base-nova + Liquid Glass)
125
+ - 字体与排版
126
+ - 品牌元素(logo 形象、吉祥物等)
127
+ - 产品文案风格(语气、中英混用习惯等)
128
+
129
+ 这个章节帮助后续设计和开发保持视觉一致性。
130
+
131
+ ## 主要功能
132
+
133
+ 基于后端 API 端点和前端页面梳理出的功能模块。按产品模块分组,每个模块用一句话概括其产品价值,下面列出具体能力。
134
+ 这是快照中最重要的章节之一,它为后续 PRD 生成提供"系统已有什么"的上下文。
135
+
136
+ ## 产品规划与进展
137
+
138
+ 来自步骤 2 获取的产品规划数据。包含以下子章节:
139
+
140
+ ### Feature 概览
141
+
142
+ 表格形式列出所有 Feature,每行包含序号、标题、状态、描述摘要(取 description 前 1-2 句)、子任务统计。示例:
143
+
144
+ | # | Feature | 状态 | 描述 | 子任务 |
145
+ |---|---------|------|------|--------|
146
+ | 28 | 创建 Issue 时自动创建 PRD 模版 | done | 创建 Feature/Issue 时自动创建一个 PRD 模版文档 | 2个任务(2完成) |
147
+
148
+ ### 独立任务
149
+
150
+ 表格形式列出所有 `parent_id` 为空的 Task(即不属于任何 Feature 的独立任务)。示例:
151
+
152
+ | # | 任务 | 状态 | 描述 |
153
+ |---|------|------|------|
154
+ | 53 | Space 全局快照 cli/skill | doing | 为 Agent 提供 Space 全局信息感知 |
155
+
156
+ ### Bug 列表
157
+
158
+ 表格形式列出所有 Bug(如果有)。格式同独立任务。如果没有 Bug,注明"暂无 Bug"。
159
+
160
+ ### 统计汇总
161
+
162
+ 按类型和状态汇总数量:
163
+ - Feature: X个待办 / X个进行中 / X个已完成
164
+ - Task: X个待办 / X个进行中 / X个已完成(含子任务)
165
+ - Bug: X个待办 / X个进行中 / X个已完成
166
+
167
+ 如果步骤 2 获取失败,整个章节注明"产品规划数据不可用"。
168
+
169
+ ## 目录结构
170
+
171
+ 项目关键目录的注释树,帮助快速定位代码。
172
+
173
+ ## 外部依赖
174
+
175
+ 主要第三方服务、API、SDK 依赖列表。
176
+
177
+ ## 开发命令
178
+
179
+ 如何构建、运行、测试本项目。
180
+
181
+ ## Space 上下文文档
182
+
183
+ 来自 pmflow 服务端的 PRD、设计文档等上下文内容(完整保留原文)。
184
+ 如果步骤 1 获取失败,注明"服务端上下文不可用"。
185
+ ```
186
+
187
+ 写作要求:
188
+ - **只描述事实**,不写愿景、规划或改进建议
189
+ - **概括总结**,不要粘贴大段代码
190
+ - 每个章节保持简洁(几段话或要点列表)
191
+ - Space 上下文文档章节保留完整原文,不做删减
192
+ - **功能描述用产品语言**,不用技术术语堆砌
193
+
194
+ ## 7. 同步到飞书并关联 Space
195
+
196
+ 将生成的快照文档同步为飞书文档,关联到 Space 的 contexts 中。
197
+
198
+ 用 Bash `cp docs/SPACE_SNAPSHOT.md /tmp/snapshot-{slug}.md` 将文件复制到临时位置,然后运行命令:
199
+
200
+ ```
201
+ pmflow ctx add-space-doc {slug} --title "[{slug大写}] Space 快照" --content-file /tmp/snapshot-{slug}.md
202
+ ```
203
+
204
+ 如果命令失败,将错误信息告知用户但不影响整体流程(本地文档已生成)。
205
+
206
+ ## 8. 确认完成
207
+
208
+ 告知用户:
209
+ 1. `docs/SPACE_SNAPSHOT.md` 已生成
210
+ 2. 飞书文档已创建/更新并关联到 Space(附上文档链接)
211
+ 3. 简要列出文档涵盖的关键信息摘要