@loviusc/sa-spec 0.1.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/bin/sa-spec.js +3 -0
- package/package.json +24 -0
- package/readme.md +593 -0
- package/src/cli.js +362 -0
- package/templates/AGENTS.md +90 -0
- package/templates/project/index.md +4 -0
- package/templates/project/req/db-schema.md +9 -0
- package/templates/project/req/handoff.md +33 -0
- package/templates/project/req/history.md +4 -0
- package/templates/project/req/openapi.yaml +5 -0
- package/templates/project/req/srs.md +26 -0
- package/templates/project/req/uml.puml +14 -0
- package/templates/project/system-spec.md +15 -0
- package/templates/readme.md +593 -0
- package/templates/rules/db-table.md +82 -0
- package/templates/rules/estimation.md +58 -0
- package/templates/rules/file-style.md +49 -0
- package/templates/rules/history.md +34 -0
- package/templates/rules/review.md +42 -0
- package/templates/rules/spec.md +44 -0
- package/templates/rules/system-spec.md +53 -0
- package/templates/rules/uml-style.md +27 -0
- package/templates/rules/wireframe.md +81 -0
- package/templates/skills/system-analysis/SKILL.md +141 -0
package/bin/sa-spec.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@loviusc/sa-spec",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Personal system analysis documentation workspace CLI",
|
|
5
|
+
"bin": {
|
|
6
|
+
"sa-spec": "bin/sa-spec.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
"src/",
|
|
11
|
+
"templates/",
|
|
12
|
+
"readme.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"check": "node --check src/cli.js && node --check bin/sa-spec.js"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"system-analysis",
|
|
19
|
+
"requirements",
|
|
20
|
+
"srs",
|
|
21
|
+
"documentation"
|
|
22
|
+
],
|
|
23
|
+
"license": "MIT"
|
|
24
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
# 個人系統分析 AI 工作台
|
|
2
|
+
|
|
3
|
+
`sa-spec` 是一個輕量的系統分析文件工作台,用固定流程把需求想法整理成可確認、可歸檔、可檢查的文件。
|
|
4
|
+
|
|
5
|
+
AI 工作流只使用四個指令:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
spec:init
|
|
9
|
+
spec:propose
|
|
10
|
+
spec:analyze
|
|
11
|
+
spec:commit
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
每個需求歸檔後固定包含:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
project/
|
|
18
|
+
REQ-001-login/
|
|
19
|
+
srs.md
|
|
20
|
+
uml.puml
|
|
21
|
+
openapi.yaml
|
|
22
|
+
db-schema.md
|
|
23
|
+
handoff.md
|
|
24
|
+
history.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 設計理念
|
|
28
|
+
|
|
29
|
+
`sa-spec` 的定位不是單純的 AI 文件產生器,而是 AI 開發前的系統分析工作台。
|
|
30
|
+
|
|
31
|
+
它的核心價值,是在 OpenSpec、Codex、Claude、Gemini 等 AI 開發工具開始實作之前,先把需求、限制、衝突、權限、資料、API、DB 與驗收條件釐清,讓後續開發有明確邊界。
|
|
32
|
+
|
|
33
|
+
從資深系統分析師的角度看,最重要的是 `spec:analyze` 會強制進行影響評估,特別檢查新需求是否改變既有角色、權限或資料存取規則。這些區域通常是系統迭代中最高風險的地方,一旦被新需求無意間覆寫,可能造成資安漏洞、資料外洩或業務邏輯崩壞。
|
|
34
|
+
|
|
35
|
+
`sa-spec` 透過 `propose -> analyze -> commit` 的狀態機,避免 AI 為了產出完整答案而自行補上未確認的欄位、狀態、流程或商業規則。若發現衝突,AI 必須停止產出文件,只列出衝突與待釐清問題,等使用者確認後才能繼續。
|
|
36
|
+
|
|
37
|
+
每個需求都固定產出 SRS、UML、OpenAPI、DB Schema、handoff 與 history,讓需求從業務邏輯、流程狀態、系統介面、資料結構到開發交接都有跡可循。`handoff.md` 則作為 OpenSpec 或其他 AI 開發工具的入口文件,讓 AI 先讀已確認的限制與驗收條件,再開始開發。
|
|
38
|
+
|
|
39
|
+
換句話說:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
sa-spec 先把需求說清楚,OpenSpec 再把需求做出來。
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 安裝前準備
|
|
46
|
+
|
|
47
|
+
請先安裝:
|
|
48
|
+
|
|
49
|
+
- Node.js 18 或以上版本。
|
|
50
|
+
- npm。
|
|
51
|
+
- Git。
|
|
52
|
+
|
|
53
|
+
確認版本:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
node --version
|
|
57
|
+
npm --version
|
|
58
|
+
git --version
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## macOS 安裝
|
|
62
|
+
|
|
63
|
+
使用 npm 安裝:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm install -g @loviusc/sa-spec
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
使用 Git 下載專案:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git clone https://github.com/lovius215/ai_spec.git
|
|
73
|
+
cd ai_spec
|
|
74
|
+
npm install
|
|
75
|
+
npm link
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
確認 CLI 可用:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
sa-spec help
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
若 `sa-spec` 找不到,請確認 npm global 路徑是否在 `PATH`:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm prefix -g
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
macOS 常見執行檔路徑會是該目錄底下的 `bin` 資料夾。
|
|
91
|
+
|
|
92
|
+
## Linux 安裝
|
|
93
|
+
|
|
94
|
+
使用 npm 安裝:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm install -g @loviusc/sa-spec
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
使用 Git 下載專案:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
git clone https://github.com/lovius215/ai_spec.git
|
|
104
|
+
cd ai_spec
|
|
105
|
+
npm install
|
|
106
|
+
npm link
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
確認 CLI 可用:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
sa-spec help
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
若遇到權限問題,建議調整 npm global prefix,不建議直接使用 `sudo npm link`:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
mkdir -p ~/.npm-global
|
|
119
|
+
npm config set prefix ~/.npm-global
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
再把以下內容加入 shell 設定檔,例如 `~/.bashrc` 或 `~/.zshrc`:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
export PATH="$HOME/.npm-global/bin:$PATH"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
重新載入 shell 後再執行:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
npm link
|
|
132
|
+
sa-spec help
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Windows 安裝
|
|
136
|
+
|
|
137
|
+
請使用 PowerShell。
|
|
138
|
+
|
|
139
|
+
使用 Git 下載專案:
|
|
140
|
+
|
|
141
|
+
```powershell
|
|
142
|
+
npm install -g @loviusc/sa-spec
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
或使用 Git 下載專案:
|
|
146
|
+
|
|
147
|
+
```powershell
|
|
148
|
+
git clone https://github.com/lovius215/ai_spec.git
|
|
149
|
+
cd ai_spec
|
|
150
|
+
npm install
|
|
151
|
+
npm link
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
確認 CLI 可用:
|
|
155
|
+
|
|
156
|
+
```powershell
|
|
157
|
+
sa-spec help
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
若 PowerShell 找不到 `sa-spec`,請確認 npm global 路徑是否在 `Path` 環境變數:
|
|
161
|
+
|
|
162
|
+
```powershell
|
|
163
|
+
npm prefix -g
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
常見路徑類似:
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
C:\Users\你的使用者名稱\AppData\Roaming\npm
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
把該路徑加入 Windows 的使用者環境變數 `Path` 後,重新開啟 PowerShell,再執行:
|
|
173
|
+
|
|
174
|
+
```powershell
|
|
175
|
+
sa-spec help
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## 專案初始化
|
|
179
|
+
|
|
180
|
+
在你要管理需求文件的資料夾執行:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
sa-spec init
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
這會建立最小文件骨架:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
AGENTS.md
|
|
190
|
+
readme.md
|
|
191
|
+
skills/
|
|
192
|
+
system-analysis/
|
|
193
|
+
SKILL.md
|
|
194
|
+
project/
|
|
195
|
+
index.md
|
|
196
|
+
system-spec.md
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
若想同時建立完整規則文件:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
sa-spec init --full
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
`spec:init` 規則會檢查 Git 狀態;若目前資料夾還不是 Git repository,會自動執行 `git init`。
|
|
206
|
+
|
|
207
|
+
### `init` 與 `init --full` 差異
|
|
208
|
+
|
|
209
|
+
| 指令 | 會建立什麼 | 適合情境 |
|
|
210
|
+
|---|---|---|
|
|
211
|
+
| `sa-spec init` | 最小文件骨架:`AGENTS.md`、`readme.md`、`skills/system-analysis/SKILL.md`、`project/index.md`、`project/system-spec.md`。 | 想快速開始整理需求,先保持規則簡單。 |
|
|
212
|
+
| `sa-spec init --full` | 最小文件骨架,加上 `rules/` 內的 SRS、審核、UML、DB Table、估算、檔案格式等補充規則。 | 想讓 AI 產出的文件格式更一致,或團隊需要比較完整的檢查依據。 |
|
|
213
|
+
|
|
214
|
+
`rules/` 是補充規則,不是強制流程。即使使用 `sa-spec init --full` 建立完整規則,用戶也可以先不使用或之後自行刪除 `rules/`;基本流程仍會依 `AGENTS.md` 與 `skills/system-analysis/SKILL.md` 運作。
|
|
215
|
+
|
|
216
|
+
簡單範例:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
mkdir my-spec
|
|
220
|
+
cd my-spec
|
|
221
|
+
sa-spec init
|
|
222
|
+
sa-spec check
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
若後來發現需要更完整的審核與文件規則,可以在同一個資料夾補上:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
sa-spec init --full
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
既有檔案不會被覆蓋;已存在的檔案會顯示為 `SKIPPED`,缺少的規則檔才會被建立。
|
|
232
|
+
|
|
233
|
+
## CLI 指令
|
|
234
|
+
|
|
235
|
+
| 指令 | 用途 |
|
|
236
|
+
|---|---|
|
|
237
|
+
| `sa-spec init` | 建立最小文件骨架。 |
|
|
238
|
+
| `sa-spec init --full` | 建立文件骨架與完整規則文件。 |
|
|
239
|
+
| `sa-spec new --id REQ-001 --name login` | 建立需求資料夾與空白文件模板,包含 SRS、UML、OpenAPI、DB Schema、handoff 與 history。 |
|
|
240
|
+
| `sa-spec check` | 檢查基本文件是否存在。 |
|
|
241
|
+
| `sa-spec status` | 顯示系統規格與需求索引狀態。 |
|
|
242
|
+
| `sa-spec doctor` | 檢查必要檔案是否存在。 |
|
|
243
|
+
|
|
244
|
+
`sa-spec new` 是快速建空白模板的輔助工具。正式需求流程仍建議使用 `spec:init`、`spec:propose`、`spec:analyze`、`spec:commit`。
|
|
245
|
+
|
|
246
|
+
## CLI 與 VS Code 用法
|
|
247
|
+
|
|
248
|
+
`sa-spec ...` 是 CLI 指令,要在終端機執行,例如 macOS/Linux 的 Terminal、Windows 的 PowerShell,或 VS Code 內建 Terminal。
|
|
249
|
+
|
|
250
|
+
`spec:...` 是 AI 工作流程指令,要輸入在 VS Code 的 AI 對話側邊欄,例如 Codex、Claude Code、Gemini CLI,或其他已載入本專案規則的 AI 對話工具。
|
|
251
|
+
|
|
252
|
+
### 建議安裝的 VS Code 套件
|
|
253
|
+
|
|
254
|
+
至少需要安裝一個能和專案檔案協作的 AI 對話套件。不同使用者可以依自己的帳號與模型選擇其中一種:
|
|
255
|
+
|
|
256
|
+
| 類型 | 套件或工具 | 是否必要 | 用途 |
|
|
257
|
+
|---|---|---|---|
|
|
258
|
+
| AI 對話 | OpenAI Codex / ChatGPT 類型的 VS Code AI 套件 | 擇一 | 在側邊欄輸入 `spec:init`、`spec:propose`、`spec:analyze`、`spec:commit`。 |
|
|
259
|
+
| AI 對話 | Claude Code 類型的 VS Code AI 套件或 CLI 整合 | 擇一 | 用 Claude 讀取工作區規則並協作產出需求文件。 |
|
|
260
|
+
| AI 對話 | Gemini 類型的 VS Code AI 套件或 CLI 整合 | 擇一 | 用 Gemini 讀取工作區規則並協作產出需求文件。 |
|
|
261
|
+
| Markdown | Markdown 預覽或 Markdown All in One 類型套件 | 選用 | 預覽 `srs.md`、`history.md`、`system-spec.md`。 |
|
|
262
|
+
| UML | PlantUML 類型套件 | 選用 | 預覽 `uml.puml`。 |
|
|
263
|
+
| YAML | YAML 類型套件 | 選用 | 編輯與檢查 `openapi.yaml`。 |
|
|
264
|
+
| Git | GitLens 類型套件 | 選用 | 查看需求文件修改歷程。 |
|
|
265
|
+
|
|
266
|
+
最小可用組合:
|
|
267
|
+
|
|
268
|
+
```text
|
|
269
|
+
VS Code
|
|
270
|
+
+ 一個 AI 對話套件
|
|
271
|
+
+ VS Code 內建 Terminal
|
|
272
|
+
+ Git
|
|
273
|
+
+ sa-spec CLI
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Markdown、PlantUML、YAML、GitLens 這類套件可以提升閱讀與檢查體驗,但不是執行 `sa-spec` 或 `spec:*` 流程的必要條件。
|
|
277
|
+
|
|
278
|
+
| 類型 | 指令範例 | 使用位置 | 用途 |
|
|
279
|
+
|---|---|---|---|
|
|
280
|
+
| CLI | `sa-spec init --full` | 終端機或 VS Code Terminal | 建立文件骨架與規則檔。 |
|
|
281
|
+
| CLI | `sa-spec check` | 終端機或 VS Code Terminal | 檢查必要文件是否存在。 |
|
|
282
|
+
| CLI | `sa-spec status` | 終端機或 VS Code Terminal | 查看系統規格與需求索引狀態。 |
|
|
283
|
+
| AI 工作流程 | `spec:init` | VS Code AI 對話側邊欄 | 載入規則並確認工作區狀態。 |
|
|
284
|
+
| AI 工作流程 | `spec:propose` | VS Code AI 對話側邊欄 | 整理使用者提出的需求。 |
|
|
285
|
+
| AI 工作流程 | `spec:analyze` | VS Code AI 對話側邊欄 | 檢查衝突並產出待確認草稿。 |
|
|
286
|
+
| AI 工作流程 | `spec:commit` | VS Code AI 對話側邊欄 | 歸檔已確認版本並建立本機 Git commit。 |
|
|
287
|
+
|
|
288
|
+
建議操作順序:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
mkdir my-spec
|
|
292
|
+
cd my-spec
|
|
293
|
+
sa-spec init --full
|
|
294
|
+
code .
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
接著在 VS Code 的 AI 對話側邊欄輸入:
|
|
298
|
+
|
|
299
|
+
```text
|
|
300
|
+
spec:init
|
|
301
|
+
spec:propose
|
|
302
|
+
spec:analyze
|
|
303
|
+
spec:commit
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
如果你有安裝 prompts 或 slash commands,可以用對應的快捷指令;沒有安裝也可以直接手動輸入上面的文字指令。
|
|
307
|
+
|
|
308
|
+
## AI 工作流程
|
|
309
|
+
|
|
310
|
+
| 指令 | 用途 |
|
|
311
|
+
|---|---|
|
|
312
|
+
| `spec:init` | 初始化並載入 `AGENTS.md`、`skills/system-analysis/SKILL.md` 與必要規則。 |
|
|
313
|
+
| `spec:propose` | 使用者提出需求後,整理需求摘要、目標、初步流程與待確認事項。 |
|
|
314
|
+
| `spec:analyze` | 檢查是否與既有需求衝突;無衝突才產出 SRS、UML、OpenAPI、DB Schema 草稿。 |
|
|
315
|
+
| `spec:commit` | 使用者確認無衝突版本後,將版本歸檔到 `project/`,並建立本機 Git commit。 |
|
|
316
|
+
|
|
317
|
+
狀態機:
|
|
318
|
+
|
|
319
|
+
```text
|
|
320
|
+
init -> propose -> analyze
|
|
321
|
+
|
|
322
|
+
analyze 無衝突 -> 產出待確認版本 -> commit
|
|
323
|
+
analyze 有衝突 -> 釐清問題 -> analyze
|
|
324
|
+
|
|
325
|
+
commit -> 歸檔 -> 本機 Git commit
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
`spec:analyze` 若發現衝突,只會列出衝突與待釐清問題,不會修改任何需求文件,也不會產出最終文件。釐清後應再次執行 `spec:analyze`,重新檢查並產出草稿。
|
|
329
|
+
|
|
330
|
+
`handoff.md` 是給 OpenSpec 或其他 AI 開發工具的開發交接摘要。它會從已確認的 SRS、UML、OpenAPI、DB Schema 與限制整理出「要開發什麼」、「不要開發什麼」、「已確認規則」、「API 契約」、「DB 變更」、「驗收條件」與「開發限制」。它只能整理已確認內容,不得新增未確認的開發假設。
|
|
331
|
+
|
|
332
|
+
交給 OpenSpec 或其他 AI 開發工具時,應指定它先閱讀 `handoff.md`,並以 `handoff.md` 作為開發入口與限制摘要;其他規格文件作為詳細來源。可使用以下提示:
|
|
333
|
+
|
|
334
|
+
```text
|
|
335
|
+
請先閱讀 project/REQ-001-pomodoro-timer/handoff.md。
|
|
336
|
+
以 handoff.md 作為本次開發入口與限制摘要。
|
|
337
|
+
如需完整需求細節,再查閱同資料夾內的 srs.md、uml.puml、openapi.yaml、db-schema.md 與 history.md。
|
|
338
|
+
不得自行新增 handoff.md 未確認的角色、權限、流程、狀態、API 或 DB 欄位。
|
|
339
|
+
若發現 handoff.md 與既有程式或規格衝突,請停止開發並回報。
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
`spec:commit` 完成歸檔後會自動建立本機 Git commit。commit message 會以需求編號與需求名稱為主,並加上簡短需求說明:
|
|
343
|
+
|
|
344
|
+
```text
|
|
345
|
+
docs(REQ-001): 番茄時鐘 - 新增專注與休息計時需求
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
只有在使用者明確要求推送 remote,或專案設定啟用 auto-push 時,才會執行 `git push`。如果 push 失敗,只回報認證或網路問題,不會回滾已完成的文件歸檔與本機 commit。
|
|
349
|
+
|
|
350
|
+
## 完整範例:番茄時鐘
|
|
351
|
+
|
|
352
|
+
以下示範從空資料夾開始,建立一個「番茄時鐘」需求。
|
|
353
|
+
|
|
354
|
+
### 1. 建立工作資料夾
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
mkdir pomodoro-spec
|
|
358
|
+
cd pomodoro-spec
|
|
359
|
+
sa-spec init --full
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
確認狀態:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
sa-spec check
|
|
366
|
+
sa-spec status
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
預期會看到 `AGENTS.md`、`skills/system-analysis/SKILL.md`、`project/index.md`、`project/system-spec.md` 都存在。
|
|
370
|
+
|
|
371
|
+
### 2. 啟動 AI 流程
|
|
372
|
+
|
|
373
|
+
在支援此專案規則的 AI 對話中輸入:
|
|
374
|
+
|
|
375
|
+
```text
|
|
376
|
+
spec:init
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
AI 會讀取規則、確認 `project/` 結構,並回報 Git 狀態。
|
|
380
|
+
|
|
381
|
+
### 3. 提出需求
|
|
382
|
+
|
|
383
|
+
輸入:
|
|
384
|
+
|
|
385
|
+
```text
|
|
386
|
+
spec:propose
|
|
387
|
+
|
|
388
|
+
我想做一個番茄時鐘,使用者可以設定專注 25 分鐘、休息 5 分鐘。
|
|
389
|
+
可以開始、暫停、繼續、重設計時。
|
|
390
|
+
時間結束時要通知使用者。
|
|
391
|
+
先不用登入,也不用同步到雲端。
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
AI 應先整理,而不是直接歸檔:
|
|
395
|
+
|
|
396
|
+
```text
|
|
397
|
+
需求摘要:
|
|
398
|
+
- 建立番茄時鐘功能,支援專注與休息計時。
|
|
399
|
+
|
|
400
|
+
目標:
|
|
401
|
+
- 讓使用者可以用固定週期管理工作與休息時間。
|
|
402
|
+
|
|
403
|
+
初步流程:
|
|
404
|
+
1. 使用者設定專注時間與休息時間。
|
|
405
|
+
2. 使用者開始專注計時。
|
|
406
|
+
3. 使用者可暫停、繼續或重設。
|
|
407
|
+
4. 專注時間結束後,系統通知使用者並進入休息計時。
|
|
408
|
+
5. 休息時間結束後,系統通知使用者。
|
|
409
|
+
|
|
410
|
+
待確認事項:
|
|
411
|
+
1. 時間結束通知要用瀏覽器通知、音效,還是畫面提示?
|
|
412
|
+
2. 是否需要記錄完成幾輪番茄鐘?
|
|
413
|
+
3. 設定時間是否需要保存到下次開啟?
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
使用者補充確認:
|
|
417
|
+
|
|
418
|
+
```text
|
|
419
|
+
1. 通知先用畫面提示和音效。
|
|
420
|
+
2. 需要記錄本次開啟頁面後完成幾輪,不需要永久保存。
|
|
421
|
+
3. 設定時間只保留在本次頁面,不需要資料庫。
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### 4. 分析與起草
|
|
425
|
+
|
|
426
|
+
輸入:
|
|
427
|
+
|
|
428
|
+
```text
|
|
429
|
+
spec:analyze
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
AI 必須先檢查 `project/` 內所有既有需求,包括:
|
|
433
|
+
|
|
434
|
+
- 是否與既有需求目標或流程重疊。
|
|
435
|
+
- 是否改變既有角色、權限或資料存取規則。
|
|
436
|
+
- 是否影響既有 API。
|
|
437
|
+
- 是否影響既有 DB Table。
|
|
438
|
+
- 是否與既有驗收條件矛盾。
|
|
439
|
+
|
|
440
|
+
若沒有衝突,AI 會產出待確認草稿,包含:
|
|
441
|
+
|
|
442
|
+
```text
|
|
443
|
+
需求編號:REQ-001
|
|
444
|
+
需求名稱:番茄時鐘
|
|
445
|
+
狀態:待確認
|
|
446
|
+
|
|
447
|
+
SRS 草稿:
|
|
448
|
+
- 需求摘要
|
|
449
|
+
- 業務目標
|
|
450
|
+
- 使用者與角色
|
|
451
|
+
- 前置條件
|
|
452
|
+
- 主要流程
|
|
453
|
+
- 例外流程
|
|
454
|
+
- 功能需求
|
|
455
|
+
- 非功能需求
|
|
456
|
+
- 驗收條件
|
|
457
|
+
- 待確認事項
|
|
458
|
+
|
|
459
|
+
UML 草稿:
|
|
460
|
+
- 依需求選擇活動圖或狀態圖。
|
|
461
|
+
|
|
462
|
+
OpenAPI 草稿:
|
|
463
|
+
- 若本需求不需要後端 API,需明確標示「無 API 需求」。
|
|
464
|
+
|
|
465
|
+
DB Schema 草稿:
|
|
466
|
+
- 若本需求不需要資料庫,需明確標示「無 DB 需求」。
|
|
467
|
+
|
|
468
|
+
Handoff 交接摘要草稿:
|
|
469
|
+
- 整理給 OpenSpec 或 AI 開發工具使用的開發交接摘要。
|
|
470
|
+
- 明確列出要開發什麼、不要開發什麼、已確認規則、API 契約、DB 變更、驗收條件與開發限制。
|
|
471
|
+
|
|
472
|
+
project/system-spec.md 更新建議:
|
|
473
|
+
- 建議新增番茄時鐘模組摘要。
|
|
474
|
+
|
|
475
|
+
本次未修改其他需求。
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
番茄時鐘的 UML 可能選擇狀態圖,因為此需求重點是計時器狀態:
|
|
479
|
+
|
|
480
|
+
```plantuml
|
|
481
|
+
@startuml
|
|
482
|
+
title REQ-001 番茄時鐘狀態圖
|
|
483
|
+
|
|
484
|
+
[*] --> 閒置
|
|
485
|
+
閒置 --> 專注計時中 : 開始
|
|
486
|
+
專注計時中 --> 暫停 : 暫停
|
|
487
|
+
暫停 --> 專注計時中 : 繼續
|
|
488
|
+
專注計時中 --> 休息計時中 : 專注時間結束
|
|
489
|
+
休息計時中 --> 閒置 : 休息時間結束
|
|
490
|
+
專注計時中 --> 閒置 : 重設
|
|
491
|
+
休息計時中 --> 閒置 : 重設
|
|
492
|
+
暫停 --> 閒置 : 重設
|
|
493
|
+
|
|
494
|
+
@enduml
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### 5. 使用者確認
|
|
498
|
+
|
|
499
|
+
若草稿內容正確,輸入:
|
|
500
|
+
|
|
501
|
+
```text
|
|
502
|
+
我確認這版番茄時鐘需求,可以歸檔。
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
接著輸入:
|
|
506
|
+
|
|
507
|
+
```text
|
|
508
|
+
spec:commit
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
AI 才能把已確認版本寫入需求資料夾、更新索引與歷程,並建立本機 Git commit。
|
|
512
|
+
|
|
513
|
+
### 6. 歸檔後結構
|
|
514
|
+
|
|
515
|
+
完成後預期會有:
|
|
516
|
+
|
|
517
|
+
```text
|
|
518
|
+
project/
|
|
519
|
+
index.md
|
|
520
|
+
system-spec.md
|
|
521
|
+
REQ-001-pomodoro-timer/
|
|
522
|
+
srs.md
|
|
523
|
+
uml.puml
|
|
524
|
+
openapi.yaml
|
|
525
|
+
db-schema.md
|
|
526
|
+
handoff.md
|
|
527
|
+
history.md
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
`handoff.md` 會整理給 OpenSpec 或 AI 開發工具使用的交接內容,例如:
|
|
531
|
+
|
|
532
|
+
```text
|
|
533
|
+
要開發什麼:番茄時鐘前端計時功能。
|
|
534
|
+
不要開發什麼:登入、雲端同步、永久資料保存。
|
|
535
|
+
API 契約:無 API 需求。
|
|
536
|
+
DB 變更:無 DB 需求。
|
|
537
|
+
開發限制:不得自行新增未確認的角色、狀態、API 或 DB 欄位。
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
交給 OpenSpec 開發時,可以直接指定:
|
|
541
|
+
|
|
542
|
+
```text
|
|
543
|
+
請先閱讀 project/REQ-001-pomodoro-timer/handoff.md,並以 handoff.md 作為本次開發入口與限制摘要。
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
`project/index.md` 會新增一列:
|
|
547
|
+
|
|
548
|
+
```text
|
|
549
|
+
| REQ-001 | 番茄時鐘 | 使用者可進行專注與休息計時 | 待確認或已審核 | 建立時間 | 更新時間 |
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
`history.md` 會記錄本次歸檔,例如:
|
|
553
|
+
|
|
554
|
+
```text
|
|
555
|
+
| 時間 | 版本 | 類型 | 說明 | 來源 | 影響範圍 | 風險 | 狀態 |
|
|
556
|
+
|---|---|---|---|---|---|---|---|
|
|
557
|
+
| 2026-05-29 21:30 | v0.1 | 新增 | 建立番茄時鐘需求草稿 | 使用者確認 | SRS、UML、OpenAPI、DB Schema、Handoff | 低 | 待確認 |
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
### 7. Git commit 與 remote push
|
|
561
|
+
|
|
562
|
+
`spec:commit` 完成後,AI 會自動建立本機 Git commit,例如:
|
|
563
|
+
|
|
564
|
+
```text
|
|
565
|
+
docs(REQ-001): 番茄時鐘 - 新增專注與休息計時需求
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
可以用以下指令確認:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
git status
|
|
572
|
+
git log -1 --oneline
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
若要推送到 remote,需要明確要求 AI 執行 push,或自行執行:
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
git push origin main
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
若分支是 `master`:
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
git push origin master
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
## 注意事項
|
|
588
|
+
|
|
589
|
+
- 未經使用者確認,不得標示為 `已審核`。
|
|
590
|
+
- `spec:analyze` 發現衝突時不得產出最終文件,也不得修改既有需求文件。
|
|
591
|
+
- `project/system-spec.md` 只能在 `spec:commit` 依使用者確認內容更新。
|
|
592
|
+
- `spec:commit` 會自動建立本機 Git commit;remote push 需使用者明確要求或啟用 auto-push。
|
|
593
|
+
- 一次最多問 3 個待確認問題,優先詢問會影響範圍、資料、權限、API、DB 或驗收的問題。
|