@seanmars/tospec 0.22.0 → 0.23.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/CHANGELOG.md CHANGED
@@ -6,6 +6,19 @@
6
6
 
7
7
  tospec 是一套 spec-driven development CLI: 以 schema 定義文件結構與工作流程, 進度由檔案系統狀態推算, 開發方法則封裝於 Skill 之中, 使 AI 工具 (Claude Code / Codex) 得以循序完成需求釐清、規格撰寫、設計、任務拆解、實作到歸檔的完整流程.
8
8
 
9
+ ## [0.23.0] - 2026-09-30
10
+
11
+ 本版本修正 code review 找到的**文件與 prompt 跟實際行為不一致**的地方: schema 交給 apply 的指示和預設 apply skill 對測試的要求互相矛盾, README 與 `docs/custom-schema.md` 列出的 artifact 狀態和原始碼不符, decision schema 註解寫的 ADR 檔名格式也和 CLI 實際寫出的不同.
12
+
13
+ ### 修正
14
+
15
+ - **sdd / issue schema 的 `apply.instruction` 不再規定測試順序**: 使用預設 `tospec-apply` 時, agent 從 `tospec instructions apply` 拿到的 `instruction` 寫著 sdd 要 "Execute tasks.md with TDD", issue 要 "write a regression test that goes red first", skill 本身卻說測試是選配. 同一份 briefing 裡兩個指令互相矛盾. 根本原因是 `apply.instruction` 會原封不動交給兩個 apply 變體, 但 schema 在裡面規定了只屬於 `tospec-apply-with-tdd` 的做法. 0.22.0 只處理了 skill 這一側 (釐清 `tasks.md` 的測試步驟屬於 slice), 沒有處理 schema 這一側. 現在 schema 只說明要照 `tasks.md` 與 `task.md` 執行, 測試是否必須先 red 交給使用中的 apply skill 決定. 沒有採用為每個 schema 再做一份不含 TDD 的版本, 或放寬 TDD skill 的要求: 前者讓兩份 schema 的內容日後會分歧, 後者會拿掉使用者刻意選擇 TDD 變體時要的保證.
16
+
17
+ ### 其他
18
+
19
+ - **README 與 `docs/custom-schema.md` 的 artifact 狀態更正為六種**: README 寫「文件狀態只有四種」, 但 `ArtifactStatusValue` 另外還有 `stub` (檔案存在但是空白或與 template 相同) 與 `optional`. README 把 `skipped` 解釋成「選配文件沒建」, 那其實是 `optional` 的意思; `skipped` 只會出現在 change 宣告 `skip_specs: true` 的情況. `docs/custom-schema.md` 的 `optional:` 欄位註解也寫成未建立時顯示 `skipped`. 兩者在 CLI 共用 `[~]` 標記, 很容易被當成同一件事.
20
+ - **decision schema 註解的 ADR 檔名格式**: 註解寫 `<yyyy-MM-dd>-<topic>.md`, `tospec decision` 實際寫出的是 `<yyyyMMdd_HHmmss>-<topic>.md`.
21
+
9
22
  ## [0.22.0] - 2026-09-24
10
23
 
11
24
  本版本的主題是**減少 agent 每次 request 要讀的重複與過度強調的 prompt**. workflow 改為只以 Skill 提供, 不再同時產生內容會分歧的 `/tosx:<name>` slash command; 所有 skill 依 prompt audit 調整針對舊模型寫的全大寫強調與重複限制. audit 過程中也找出幾處 prompt 彼此矛盾或與 CLI 行為不符的地方, 一併修正.
@@ -471,6 +484,7 @@ Dashboard 進化為可背景常駐、多專案並存的服務, 並補上 TDD 導
471
484
 
472
485
  - 新增 `prepack` script 與 npm publish 的準備設定, 完備套件發行流程.
473
486
 
487
+ [0.23.0]: https://github.com/seanmars/tospec/compare/v0.22.0...v0.23.0
474
488
  [0.22.0]: https://github.com/seanmars/tospec/compare/v0.21.0...v0.22.0
475
489
  [0.21.0]: https://github.com/seanmars/tospec/compare/v0.20.0...v0.21.0
476
490
  [0.20.0]: https://github.com/seanmars/tospec/compare/v0.18.0...v0.20.0
package/README.md CHANGED
@@ -51,12 +51,14 @@ tospec archive add-dark-mode
51
51
 
52
52
  兩者都在 **apply** 階段實作, 最後由 **archive** 判斷要不要先 **sync** 再歸檔. apply 的完成標準是測試與 `tospec validate` 通過; 雙軸審查 (verify) 是 opt-in, 使用者開口才做.
53
53
 
54
- 文件狀態只有四種:
54
+ 文件狀態有六種:
55
55
 
56
- - `done`: 檔案已存在
56
+ - `done`: 檔案已存在且有內容
57
+ - `stub`: 檔案存在但是空白或與 template 相同, 不算完成, 也不解鎖後續文件
57
58
  - `ready`: 前置文件都齊了, 這份還沒寫, 可以開始
58
59
  - `blocked`: 至少一份前置文件還沒建立
59
- - `skipped`: 選配文件沒建, 不擋流程
60
+ - `optional`: 選配文件沒建, 不擋流程, 需要時再寫
61
+ - `skipped`: change 以 `skip_specs: true` 宣告不需要 `specs`, 不擋流程
60
62
 
61
63
  ## Skill
62
64
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanmars/tospec",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Spec-driven development CLI for structured requirements and issue workflows",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.npmjs.com/package/@seanmars/tospec",
@@ -3,7 +3,7 @@ version: 1
3
3
  description: Architecture Decision Record (ADR) workflow
4
4
  artifacts:
5
5
  # decision is created by the dedicated `tospec decision` command at
6
- # tospec/decisions/<yyyy-MM-dd>-<topic>.md; it does not go through the change
6
+ # tospec/decisions/<yyyyMMdd_HHmmss>-<topic>.md; it does not go through the change
7
7
  # directory. This artifact only serves as the template and section-validation
8
8
  # data contract.
9
9
  - id: decision
@@ -44,7 +44,7 @@ apply:
44
44
  requires: [task]
45
45
  tracks: task.md
46
46
  instruction: |
47
- Fix per task.md: first check whether a related test exists —
48
- exists and fails → find out why it fails; exists and passes → check for missing
49
- edge cases and add tests; none → write a regression test that goes red first.
50
- Fix until everything is green, and verify it matches task.md.
47
+ Fix the root cause per task.md and confirm it with task.md's feedback loop,
48
+ keeping the existing suite green. Whether a new regression test is required,
49
+ and whether it must go red first, is set by the apply skill in use
50
+ (tospec-apply-with-tdd mandates it), not here. Verify the fix matches task.md.
@@ -106,6 +106,7 @@ apply:
106
106
  requires: [tasks]
107
107
  tracks: tasks.md
108
108
  instruction: |
109
- Execute tasks.md with TDD: each slice writes a failing test first (red), then
110
- implements until it passes (green), testing only the seam design.md chose.
111
- When done, verify behavior against the specs.
109
+ Execute tasks.md slice by slice, including the test tasks it lists; test only
110
+ the seam design.md chose. Whether each test must go red before its
111
+ implementation is set by the apply skill in use (tospec-apply-with-tdd
112
+ mandates it), not here. When done, verify behavior against the specs.