@lusipad/pmspec 1.0.0
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.
- package/README.md +306 -0
- package/README.zh.md +304 -0
- package/bin/pmspec.js +5 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +39 -0
- package/dist/commands/analyze.d.ts +4 -0
- package/dist/commands/analyze.js +240 -0
- package/dist/commands/breakdown.d.ts +4 -0
- package/dist/commands/breakdown.js +194 -0
- package/dist/commands/create.d.ts +4 -0
- package/dist/commands/create.js +529 -0
- package/dist/commands/history.d.ts +4 -0
- package/dist/commands/history.js +213 -0
- package/dist/commands/import.d.ts +4 -0
- package/dist/commands/import.js +196 -0
- package/dist/commands/index-legacy.d.ts +4 -0
- package/dist/commands/index-legacy.js +27 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.js +60 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.js +127 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.js +183 -0
- package/dist/commands/serve.d.ts +3 -0
- package/dist/commands/serve.js +68 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.js +152 -0
- package/dist/commands/simple.d.ts +7 -0
- package/dist/commands/simple.js +360 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.js +247 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.js +74 -0
- package/dist/core/changelog-service.d.ts +88 -0
- package/dist/core/changelog-service.js +208 -0
- package/dist/core/changelog.d.ts +113 -0
- package/dist/core/changelog.js +147 -0
- package/dist/core/importers.d.ts +343 -0
- package/dist/core/importers.js +715 -0
- package/dist/core/parser.d.ts +50 -0
- package/dist/core/parser.js +246 -0
- package/dist/core/project.d.ts +155 -0
- package/dist/core/project.js +138 -0
- package/dist/core/search.d.ts +119 -0
- package/dist/core/search.js +299 -0
- package/dist/core/simple-model.d.ts +54 -0
- package/dist/core/simple-model.js +20 -0
- package/dist/core/team.d.ts +41 -0
- package/dist/core/team.js +57 -0
- package/dist/core/workload.d.ts +49 -0
- package/dist/core/workload.js +116 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +11 -0
- package/dist/utils/csv-handler.d.ts +15 -0
- package/dist/utils/csv-handler.js +224 -0
- package/dist/utils/markdown.d.ts +43 -0
- package/dist/utils/markdown.js +202 -0
- package/dist/utils/validation.d.ts +35 -0
- package/dist/utils/validation.js +178 -0
- package/package.json +71 -0
package/README.md
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# PMSpec
|
|
2
|
+
|
|
3
|
+
**AI-driven project management with Markdown-based storage**
|
|
4
|
+
|
|
5
|
+
PMSpec 是一个轻量级的项目管理工具,受 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 启发,让管理者专注于高层次的需求变更,将 Epic/Feature/UserStory 的细分、工时估算和人员分配等工作交给 AI 自动处理。
|
|
6
|
+
|
|
7
|
+
## ✨ 特性
|
|
8
|
+
|
|
9
|
+
- 📝 **Markdown 存储**: 所有数据以 Markdown 格式存储,便于版本控制和人工审查
|
|
10
|
+
- 🤖 **AI 驱动**: 通过 Claude Code 集成,手动执行 slash 命令分解需求并估算工时
|
|
11
|
+
- 📊 **工作负载分析**: 基于技能匹配和负载平衡的智能人员分配建议
|
|
12
|
+
- 🎯 **三层层次结构**: Epic → Feature → UserStory,符合敏捷最佳实践
|
|
13
|
+
- 🛠️ **CLI 工具**: 类似 Git 的命令行界面,简洁高效
|
|
14
|
+
|
|
15
|
+
## 📦 安装
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @lusipad/pmspec
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
或者本地开发:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/pmspec/pmspec.git
|
|
25
|
+
cd pmspec
|
|
26
|
+
npm install
|
|
27
|
+
npm run build
|
|
28
|
+
npm link
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 🚀 快速开始
|
|
32
|
+
|
|
33
|
+
### 1. 初始化项目
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pmspec init
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
这会在当前目录创建 `pmspace/` 结构:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
pmspace/
|
|
43
|
+
├── project.md # 项目概览
|
|
44
|
+
├── team.md # 团队成员和技能
|
|
45
|
+
├── epics/ # Epic 文件夹
|
|
46
|
+
└── features/ # Feature 文件夹
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. 配置团队
|
|
50
|
+
|
|
51
|
+
编辑 `pmspace/team.md`:
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
# Team
|
|
55
|
+
|
|
56
|
+
## Members
|
|
57
|
+
|
|
58
|
+
### Alice
|
|
59
|
+
- **Skills**: React, TypeScript, Node.js
|
|
60
|
+
- **Capacity**: 40 hours/week
|
|
61
|
+
- **Current Load**: 0 hours/week
|
|
62
|
+
|
|
63
|
+
### Bob
|
|
64
|
+
- **Skills**: Python, Django, PostgreSQL
|
|
65
|
+
- **Capacity**: 30 hours/week
|
|
66
|
+
- **Current Load**: 0 hours/week
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3. 创建 Epic
|
|
70
|
+
|
|
71
|
+
在 `pmspace/epics/` 创建 `epic-001.md`:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
# Epic: User Authentication System
|
|
75
|
+
|
|
76
|
+
- **ID**: EPIC-001
|
|
77
|
+
- **Status**: planning
|
|
78
|
+
- **Owner**: Alice
|
|
79
|
+
- **Estimate**: 80 hours
|
|
80
|
+
- **Actual**: 0 hours
|
|
81
|
+
|
|
82
|
+
## Description
|
|
83
|
+
Build a complete user authentication system with login, signup, and password reset.
|
|
84
|
+
|
|
85
|
+
## Features
|
|
86
|
+
- [ ] FEAT-001: Login form
|
|
87
|
+
- [ ] FEAT-002: Signup form
|
|
88
|
+
- [ ] FEAT-003: Password reset flow
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 4. 创建 Feature
|
|
92
|
+
|
|
93
|
+
在 `pmspace/features/` 创建 `feat-001.md`:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Feature: Login Form
|
|
97
|
+
|
|
98
|
+
- **ID**: FEAT-001
|
|
99
|
+
- **Epic**: EPIC-001
|
|
100
|
+
- **Status**: todo
|
|
101
|
+
- **Assignee**: Alice
|
|
102
|
+
- **Estimate**: 16 hours
|
|
103
|
+
- **Actual**: 0 hours
|
|
104
|
+
- **Skills Required**: React, TypeScript
|
|
105
|
+
|
|
106
|
+
## Description
|
|
107
|
+
Responsive login form with email and password fields.
|
|
108
|
+
|
|
109
|
+
## User Stories
|
|
110
|
+
- [ ] STORY-001: As a user, I want to enter credentials (4h)
|
|
111
|
+
- [ ] STORY-002: As a user, I want to see validation errors (3h)
|
|
112
|
+
- [ ] STORY-003: As a user, I want to reset password link (2h)
|
|
113
|
+
|
|
114
|
+
## Acceptance Criteria
|
|
115
|
+
- [ ] Form validates email format
|
|
116
|
+
- [ ] Password is masked
|
|
117
|
+
- [ ] Shows error messages for invalid input
|
|
118
|
+
- [ ] Redirects to dashboard on success
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 5. 查看项目状态
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 列出所有 Epics
|
|
125
|
+
pmspec list epics
|
|
126
|
+
|
|
127
|
+
# 列出所有 Features
|
|
128
|
+
pmspec list features
|
|
129
|
+
|
|
130
|
+
# 按状态过滤
|
|
131
|
+
pmspec list features --status in-progress
|
|
132
|
+
|
|
133
|
+
# 按负责人过滤
|
|
134
|
+
pmspec list features --assignee Alice
|
|
135
|
+
|
|
136
|
+
# 查看详情
|
|
137
|
+
pmspec show EPIC-001
|
|
138
|
+
pmspec show FEAT-001
|
|
139
|
+
|
|
140
|
+
# 验证项目数据
|
|
141
|
+
pmspec validate
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 🤖 AI 助手(Web UI 手动流程)
|
|
145
|
+
|
|
146
|
+
Web 前端提供“AI 助手”页面,用于安全地手动驱动 Claude Code:
|
|
147
|
+
|
|
148
|
+
1. **录入需求**:在左侧输入原始需求描述,确认 prompt 预览中带有 `/pmspec-breakdown`。
|
|
149
|
+
2. **手动调用**:将 prompt 复制到 Claude Code(或任意支持 slash command 的 IDE)中运行。
|
|
150
|
+
3. **粘贴输出**:把 Claude 返回的 Markdown 原文粘贴到页面“AI 输出”文本框。
|
|
151
|
+
4. **校验解析**:点击“解析 AI 输出”,界面会在本地解析为 Epic/Feature/User Story 结构,可直接复制 JSON 结果。
|
|
152
|
+
|
|
153
|
+
⚠️ 该流程不会调用任何在线 AI API,密钥管理完全掌握在使用者手中。
|
|
154
|
+
|
|
155
|
+
## 📚 CLI 命令
|
|
156
|
+
|
|
157
|
+
### `pmspec init`
|
|
158
|
+
|
|
159
|
+
初始化新的 PMSpec 项目。
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
pmspec init # 创建 pmspace/ 目录结构
|
|
163
|
+
pmspec init --force # 强制重新初始化(覆盖现有文件)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### `pmspec list`
|
|
167
|
+
|
|
168
|
+
列出 Epics 或 Features。
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
pmspec list epics # 列出所有 Epics
|
|
172
|
+
pmspec list features # 列出所有 Features
|
|
173
|
+
pmspec list features --status todo # 过滤状态
|
|
174
|
+
pmspec list features --assignee Alice # 过滤负责人
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### `pmspec show`
|
|
178
|
+
|
|
179
|
+
显示 Epic 或 Feature 的详细信息。
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
pmspec show EPIC-001 # 显示 Epic 详情和进度
|
|
183
|
+
pmspec show FEAT-001 # 显示 Feature 详情
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### `pmspec validate`
|
|
187
|
+
|
|
188
|
+
验证项目数据完整性。
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
pmspec validate # 验证整个项目
|
|
192
|
+
pmspec validate EPIC-001 # 验证特定 Epic
|
|
193
|
+
pmspec validate FEAT-001 # 验证特定 Feature
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
验证检查:
|
|
197
|
+
- ✅ ID 唯一性
|
|
198
|
+
- ✅ 引用完整性(Feature 引用的 Epic 存在)
|
|
199
|
+
- ✅ 状态有效性
|
|
200
|
+
- ✅ 工时合理性(估算 > 0,实际 >= 0)
|
|
201
|
+
- ⚠️ 技能一致性(警告:所需技能不在团队中)
|
|
202
|
+
|
|
203
|
+
## 🗂️ 数据模型
|
|
204
|
+
|
|
205
|
+
### Epic
|
|
206
|
+
|
|
207
|
+
- **ID**: EPIC-XXX
|
|
208
|
+
- **Status**: `planning` | `in-progress` | `completed`
|
|
209
|
+
- **Owner**: 负责人姓名
|
|
210
|
+
- **Estimate**: 估算工时(小时)
|
|
211
|
+
- **Actual**: 实际工时(小时)
|
|
212
|
+
- **Features**: 关联的 Feature ID 列表
|
|
213
|
+
|
|
214
|
+
### Feature
|
|
215
|
+
|
|
216
|
+
- **ID**: FEAT-XXX
|
|
217
|
+
- **Epic**: 父级 Epic ID
|
|
218
|
+
- **Status**: `todo` | `in-progress` | `done`
|
|
219
|
+
- **Assignee**: 分配给谁
|
|
220
|
+
- **Estimate**: 估算工时(小时)
|
|
221
|
+
- **Actual**: 实际工时(小时)
|
|
222
|
+
- **Skills Required**: 所需技能列表
|
|
223
|
+
- **User Stories**: 用户故事列表
|
|
224
|
+
- **Acceptance Criteria**: 验收标准
|
|
225
|
+
|
|
226
|
+
### UserStory
|
|
227
|
+
|
|
228
|
+
- **ID**: STORY-XXX
|
|
229
|
+
- **Title**: 故事描述
|
|
230
|
+
- **Estimate**: 估算工时(小时)
|
|
231
|
+
- **Status**: `todo` | `in-progress` | `done`
|
|
232
|
+
- **Feature ID**: 父级 Feature ID
|
|
233
|
+
|
|
234
|
+
## 🎯 设计理念
|
|
235
|
+
|
|
236
|
+
PMSpec 遵循以下设计原则:
|
|
237
|
+
|
|
238
|
+
1. **简单优先**: 默认 <100 行代码的实现,避免过度工程化
|
|
239
|
+
2. **Markdown 至上**: 所有数据都是人类可读的 Markdown 文件
|
|
240
|
+
3. **Git 友好**: 每个 Epic/Feature 独立文件,减少合并冲突
|
|
241
|
+
4. **AI 辅助**: 通过 Prompt 文件集成 Claude Code,无需 API 调用
|
|
242
|
+
5. **命令行优先**: 类似 Git 的 CLI 体验,适合开发者工作流
|
|
243
|
+
|
|
244
|
+
## 🛠️ 开发
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# 安装依赖
|
|
248
|
+
npm install
|
|
249
|
+
|
|
250
|
+
# 开发模式(监听文件变化)
|
|
251
|
+
npm run dev
|
|
252
|
+
|
|
253
|
+
# 构建
|
|
254
|
+
npm run build
|
|
255
|
+
|
|
256
|
+
# 运行测试
|
|
257
|
+
npm test
|
|
258
|
+
|
|
259
|
+
# 测试覆盖率
|
|
260
|
+
npm run test:coverage
|
|
261
|
+
|
|
262
|
+
# 本地测试 CLI
|
|
263
|
+
npm run dev:cli -- init
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## 📚 文档
|
|
267
|
+
|
|
268
|
+
- **[快速入门指南 (QUICKSTART.md)](./QUICKSTART.md)** - 5 分钟上手 PMSpec
|
|
269
|
+
- **[AI 使用指南 (AI_GUIDE.md)](./AI_GUIDE.md)** - Claude Code AI 辅助功能详解
|
|
270
|
+
- **[示例项目 (examples/)](./examples/)** - 真实项目示例和最佳实践
|
|
271
|
+
|
|
272
|
+
## 📊 项目状态
|
|
273
|
+
|
|
274
|
+
**当前版本**: 1.0.0 (MVP 已完成)
|
|
275
|
+
|
|
276
|
+
已实现功能:
|
|
277
|
+
- ✅ 核心数据模型 (Epic, Feature, UserStory, Team)
|
|
278
|
+
- ✅ Markdown 解析器和生成器
|
|
279
|
+
- ✅ CLI 框架 (init, list, show, validate, create, update)
|
|
280
|
+
- ✅ 工作负载分析算法 (analyze 命令)
|
|
281
|
+
- ✅ 数据验证
|
|
282
|
+
- ✅ AI 任务分解集成 (Claude Code slash commands)
|
|
283
|
+
- ✅ 完整文档和示例
|
|
284
|
+
|
|
285
|
+
计划功能 (Post-MVP):
|
|
286
|
+
- ⏳ 历史性能追踪
|
|
287
|
+
- ⏳ 依赖管理
|
|
288
|
+
- ⏳ 时间线可视化
|
|
289
|
+
- ⏳ 外部工具集成 (Jira, Linear)
|
|
290
|
+
|
|
291
|
+
## 🤝 贡献
|
|
292
|
+
|
|
293
|
+
欢迎贡献!请查看 [CONTRIBUTING.md](./CONTRIBUTING.md)(待添加)。
|
|
294
|
+
|
|
295
|
+
## 📝 许可
|
|
296
|
+
|
|
297
|
+
MIT License - 详见 [LICENSE](./LICENSE)
|
|
298
|
+
|
|
299
|
+
## 🙏 鸣谢
|
|
300
|
+
|
|
301
|
+
PMSpec 受到 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 的启发。感谢 OpenSpec 团队提供了优秀的规范驱动开发模式。
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
**Made with ❤️ for better project management**
|
|
306
|
+
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# PMSpec
|
|
2
|
+
|
|
3
|
+
[English](./README.md)
|
|
4
|
+
|
|
5
|
+
**AI-driven project management with Markdown-based storage**
|
|
6
|
+
|
|
7
|
+
PMSpec 是一个轻量级的项目管理工具,受 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 启发,让管理者专注于高层次的需求变更,将 Epic/Feature/UserStory 的细分、工时估算和人员分配等工作交给 AI 自动处理。
|
|
8
|
+
|
|
9
|
+
## ✨ 特性
|
|
10
|
+
|
|
11
|
+
- 📝 **Markdown 存储**: 所有数据以 Markdown 格式存储,便于版本控制和人工审查
|
|
12
|
+
- 🤖 **AI 驱动**: 通过 Claude Code 集成,自动分解需求和估算工时
|
|
13
|
+
- 📊 **工作负载分析**: 基于技能匹配和负载平衡的智能人员分配建议
|
|
14
|
+
- 🎯 **三层层次结构**: Epic → Feature → UserStory,符合敏捷最佳实践
|
|
15
|
+
- 🛠️ **CLI 工具**: 类似 Git 的命令行界面,简洁高效
|
|
16
|
+
|
|
17
|
+
## 📦 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g @lusipad/pmspec
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
或使用 npx(无需安装):
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx @lusipad/pmspec init
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
或者本地开发:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git clone https://github.com/pmspec/pmspec.git
|
|
33
|
+
cd pmspec
|
|
34
|
+
npm install
|
|
35
|
+
npm run build
|
|
36
|
+
npm link
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 🚀 快速开始
|
|
40
|
+
|
|
41
|
+
### 1. 初始化项目
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pmspec init
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
这会在当前目录创建 `pmspace/` 结构:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
pmspace/
|
|
51
|
+
├── project.md # 项目概览
|
|
52
|
+
├── team.md # 团队成员和技能
|
|
53
|
+
├── epics/ # Epic 文件夹
|
|
54
|
+
└── features/ # Feature 文件夹
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. 配置团队
|
|
58
|
+
|
|
59
|
+
编辑 `pmspace/team.md`:
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# Team
|
|
63
|
+
|
|
64
|
+
## Members
|
|
65
|
+
|
|
66
|
+
### Alice
|
|
67
|
+
- **Skills**: React, TypeScript, Node.js
|
|
68
|
+
- **Capacity**: 40 hours/week
|
|
69
|
+
- **Current Load**: 0 hours/week
|
|
70
|
+
|
|
71
|
+
### Bob
|
|
72
|
+
- **Skills**: Python, Django, PostgreSQL
|
|
73
|
+
- **Capacity**: 30 hours/week
|
|
74
|
+
- **Current Load**: 0 hours/week
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 3. 创建 Epic
|
|
78
|
+
|
|
79
|
+
在 `pmspace/epics/` 创建 `epic-001.md`:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
# Epic: User Authentication System
|
|
83
|
+
|
|
84
|
+
- **ID**: EPIC-001
|
|
85
|
+
- **Status**: planning
|
|
86
|
+
- **Owner**: Alice
|
|
87
|
+
- **Estimate**: 80 hours
|
|
88
|
+
- **Actual**: 0 hours
|
|
89
|
+
|
|
90
|
+
## Description
|
|
91
|
+
Build a complete user authentication system with login, signup, and password reset.
|
|
92
|
+
|
|
93
|
+
## Features
|
|
94
|
+
- [ ] FEAT-001: Login form
|
|
95
|
+
- [ ] FEAT-002: Signup form
|
|
96
|
+
- [ ] FEAT-003: Password reset flow
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 4. 创建 Feature
|
|
100
|
+
|
|
101
|
+
在 `pmspace/features/` 创建 `feat-001.md`:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
# Feature: Login Form
|
|
105
|
+
|
|
106
|
+
- **ID**: FEAT-001
|
|
107
|
+
- **Epic**: EPIC-001
|
|
108
|
+
- **Status**: todo
|
|
109
|
+
- **Assignee**: Alice
|
|
110
|
+
- **Estimate**: 16 hours
|
|
111
|
+
- **Actual**: 0 hours
|
|
112
|
+
- **Skills Required**: React, TypeScript
|
|
113
|
+
|
|
114
|
+
## Description
|
|
115
|
+
Responsive login form with email and password fields.
|
|
116
|
+
|
|
117
|
+
## User Stories
|
|
118
|
+
- [ ] STORY-001: As a user, I want to enter credentials (4h)
|
|
119
|
+
- [ ] STORY-002: As a user, I want to see validation errors (3h)
|
|
120
|
+
- [ ] STORY-003: As a user, I want to reset password link (2h)
|
|
121
|
+
|
|
122
|
+
## Acceptance Criteria
|
|
123
|
+
- [ ] Form validates email format
|
|
124
|
+
- [ ] Password is masked
|
|
125
|
+
- [ ] Shows error messages for invalid input
|
|
126
|
+
- [ ] Redirects to dashboard on success
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 5. 查看项目状态
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 列出所有 Epics
|
|
133
|
+
pmspec list epics
|
|
134
|
+
|
|
135
|
+
# 列出所有 Features
|
|
136
|
+
pmspec list features
|
|
137
|
+
|
|
138
|
+
# 按状态过滤
|
|
139
|
+
pmspec list features --status in-progress
|
|
140
|
+
|
|
141
|
+
# 按负责人过滤
|
|
142
|
+
pmspec list features --assignee Alice
|
|
143
|
+
|
|
144
|
+
# 查看详情
|
|
145
|
+
pmspec show EPIC-001
|
|
146
|
+
pmspec show FEAT-001
|
|
147
|
+
|
|
148
|
+
# 验证项目数据
|
|
149
|
+
pmspec validate
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 📚 CLI 命令
|
|
153
|
+
|
|
154
|
+
### `pmspec init`
|
|
155
|
+
|
|
156
|
+
初始化新的 PMSpec 项目。
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
pmspec init # 创建 pmspace/ 目录结构
|
|
160
|
+
pmspec init --force # 强制重新初始化(覆盖现有文件)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### `pmspec list`
|
|
164
|
+
|
|
165
|
+
列出 Epics 或 Features。
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
pmspec list epics # 列出所有 Epics
|
|
169
|
+
pmspec list features # 列出所有 Features
|
|
170
|
+
pmspec list features --status todo # 过滤状态
|
|
171
|
+
pmspec list features --assignee Alice # 过滤负责人
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### `pmspec show`
|
|
175
|
+
|
|
176
|
+
显示 Epic 或 Feature 的详细信息。
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
pmspec show EPIC-001 # 显示 Epic 详情和进度
|
|
180
|
+
pmspec show FEAT-001 # 显示 Feature 详情
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### `pmspec validate`
|
|
184
|
+
|
|
185
|
+
验证项目数据完整性。
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
pmspec validate # 验证整个项目
|
|
189
|
+
pmspec validate EPIC-001 # 验证特定 Epic
|
|
190
|
+
pmspec validate FEAT-001 # 验证特定 Feature
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
验证检查:
|
|
194
|
+
- ✅ ID 唯一性
|
|
195
|
+
- ✅ 引用完整性(Feature 引用的 Epic 存在)
|
|
196
|
+
- ✅ 状态有效性
|
|
197
|
+
- ✅ 工时合理性(估算 > 0,实际 >= 0)
|
|
198
|
+
- ⚠️ 技能一致性(警告:所需技能不在团队中)
|
|
199
|
+
|
|
200
|
+
## 🗂️ 数据模型
|
|
201
|
+
|
|
202
|
+
### Epic
|
|
203
|
+
|
|
204
|
+
- **ID**: EPIC-XXX
|
|
205
|
+
- **Status**: `planning` | `in-progress` | `completed`
|
|
206
|
+
- **Owner**: 负责人姓名
|
|
207
|
+
- **Estimate**: 估算工时(小时)
|
|
208
|
+
- **Actual**: 实际工时(小时)
|
|
209
|
+
- **Features**: 关联的 Feature ID 列表
|
|
210
|
+
|
|
211
|
+
### Feature
|
|
212
|
+
|
|
213
|
+
- **ID**: FEAT-XXX
|
|
214
|
+
- **Epic**: 父级 Epic ID
|
|
215
|
+
- **Status**: `todo` | `in-progress` | `done`
|
|
216
|
+
- **Assignee**: 分配给谁
|
|
217
|
+
- **Estimate**: 估算工时(小时)
|
|
218
|
+
- **Actual**: 实际工时(小时)
|
|
219
|
+
- **Skills Required**: 所需技能列表
|
|
220
|
+
- **User Stories**: 用户故事列表
|
|
221
|
+
- **Acceptance Criteria**: 验收标准
|
|
222
|
+
|
|
223
|
+
### UserStory
|
|
224
|
+
|
|
225
|
+
- **ID**: STORY-XXX
|
|
226
|
+
- **Title**: 故事描述
|
|
227
|
+
- **Estimate**: 估算工时(小时)
|
|
228
|
+
- **Status**: `todo` | `in-progress` | `done`
|
|
229
|
+
- **Feature ID**: 父级 Feature ID
|
|
230
|
+
|
|
231
|
+
## 🎯 设计理念
|
|
232
|
+
|
|
233
|
+
PMSpec 遵循以下设计原则:
|
|
234
|
+
|
|
235
|
+
1. **简单优先**: 默认 <100 行代码的实现,避免过度工程化
|
|
236
|
+
2. **Markdown 至上**: 所有数据都是人类可读的 Markdown 文件
|
|
237
|
+
3. **Git 友好**: 每个 Epic/Feature 独立文件,减少合并冲突
|
|
238
|
+
4. **AI 辅助**: 通过 Prompt 文件集成 Claude Code,无需 API 调用
|
|
239
|
+
5. **命令行优先**: 类似 Git 的 CLI 体验,适合开发者工作流
|
|
240
|
+
|
|
241
|
+
## 🛠️ 开发
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# 安装依赖
|
|
245
|
+
npm install
|
|
246
|
+
|
|
247
|
+
# 开发模式(监听文件变化)
|
|
248
|
+
npm run dev
|
|
249
|
+
|
|
250
|
+
# 构建
|
|
251
|
+
npm run build
|
|
252
|
+
|
|
253
|
+
# 运行测试
|
|
254
|
+
npm test
|
|
255
|
+
|
|
256
|
+
# 测试覆盖率
|
|
257
|
+
npm run test:coverage
|
|
258
|
+
|
|
259
|
+
# 本地测试 CLI
|
|
260
|
+
npm run dev:cli -- init
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## 📚 文档
|
|
264
|
+
|
|
265
|
+
- **[快速入门指南 (QUICKSTART.md)](./QUICKSTART.md)** - 5 分钟上手 PMSpec
|
|
266
|
+
- **[AI 使用指南 (AI_GUIDE.md)](./AI_GUIDE.md)** - Claude Code AI 辅助功能详解
|
|
267
|
+
- **[发布指南 (PUBLISHING.md)](./PUBLISHING.md)** - 如何发布包到 npm
|
|
268
|
+
- **[示例项目 (examples/)](./examples/)** - 真实项目示例和最佳实践
|
|
269
|
+
|
|
270
|
+
## 📊 项目状态
|
|
271
|
+
|
|
272
|
+
**当前版本**: 1.0.0 (MVP 已完成)
|
|
273
|
+
|
|
274
|
+
已实现功能:
|
|
275
|
+
- ✅ 核心数据模型 (Epic, Feature, UserStory, Team)
|
|
276
|
+
- ✅ Markdown 解析器和生成器
|
|
277
|
+
- ✅ CLI 框架 (init, list, show, validate, create, update)
|
|
278
|
+
- ✅ 工作负载分析算法 (analyze 命令)
|
|
279
|
+
- ✅ 数据验证
|
|
280
|
+
- ✅ AI 任务分解集成 (Claude Code slash commands)
|
|
281
|
+
- ✅ 完整文档和示例
|
|
282
|
+
|
|
283
|
+
计划功能 (Post-MVP):
|
|
284
|
+
- ⏳ 历史性能追踪
|
|
285
|
+
- ⏳ 依赖管理
|
|
286
|
+
- ⏳ 时间线可视化
|
|
287
|
+
- ⏳ 外部工具集成 (Jira, Linear)
|
|
288
|
+
|
|
289
|
+
## 🤝 贡献
|
|
290
|
+
|
|
291
|
+
欢迎贡献!请查看 [CONTRIBUTING.md](./CONTRIBUTING.md)(待添加)。
|
|
292
|
+
|
|
293
|
+
## 📝 许可
|
|
294
|
+
|
|
295
|
+
MIT License - 详见 [LICENSE](./LICENSE)
|
|
296
|
+
|
|
297
|
+
## 🙏 鸣谢
|
|
298
|
+
|
|
299
|
+
PMSpec 受到 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 的启发。感谢 OpenSpec 团队提供了优秀的规范驱动开发模式。
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
**Made with ❤️ for better project management**
|
|
304
|
+
|
package/bin/pmspec.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
// Import only simple mode commands
|
|
5
|
+
import { simpleCommand, generateCommand as simpleGenerateCommand, listCommand as simpleListCommand, statsCommand } from '../commands/simple.js';
|
|
6
|
+
import { serveCommand } from '../commands/serve.js';
|
|
7
|
+
import { historyCommand } from '../commands/history.js';
|
|
8
|
+
import { searchCommand } from '../commands/search.js';
|
|
9
|
+
import { importCommand } from '../commands/import.js';
|
|
10
|
+
const program = new Command();
|
|
11
|
+
program
|
|
12
|
+
.name('pmspec')
|
|
13
|
+
.description('简化的项目管理工具 - 只需维护一个功能表')
|
|
14
|
+
.version('1.0.0');
|
|
15
|
+
// Add simple commands to main program
|
|
16
|
+
program.addCommand(simpleCommand);
|
|
17
|
+
simpleCommand.addCommand(simpleGenerateCommand);
|
|
18
|
+
simpleCommand.addCommand(simpleListCommand);
|
|
19
|
+
simpleCommand.addCommand(statsCommand);
|
|
20
|
+
// Add serve command (Web UI)
|
|
21
|
+
program.addCommand(serveCommand);
|
|
22
|
+
// Add history command (changelog)
|
|
23
|
+
program.addCommand(historyCommand);
|
|
24
|
+
// Add search command
|
|
25
|
+
program.addCommand(searchCommand);
|
|
26
|
+
// Add import command
|
|
27
|
+
program.addCommand(importCommand);
|
|
28
|
+
// Error handling
|
|
29
|
+
program.exitOverride();
|
|
30
|
+
try {
|
|
31
|
+
await program.parseAsync(process.argv);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error.code !== 'commander.help' && error.code !== 'commander.version') {
|
|
35
|
+
console.error(chalk.red('Error:'), error.message);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=index.js.map
|