specflow-cc 1.14.1 → 1.15.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
@@ -5,6 +5,16 @@ All notable changes to SpecFlow will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.15.0] - 2026-03-11
9
+
10
+ ### Fixed
11
+
12
+ - **TODO lifecycle cleanup** — TODOs now reliably removed when converted to specs via `/sf:plan` and completed via `/sf:done`
13
+ - `spec-creator` agent writes `source: TODO-XXX` in spec frontmatter when created from a todo
14
+ - `/sf:plan` Step 7 marked as CRITICAL with mandatory verification (re-reads TODO.md after removal)
15
+ - `/sf:done` adds Step 7.5 safety net: checks spec `source:` field and cleans up any remaining TODO
16
+ - Spec template updated with optional `source:` frontmatter field
17
+
8
18
  ## [1.14.1] - 2026-03-05
9
19
 
10
20
  ### Added
@@ -139,7 +139,7 @@ If no specs exist in either directory, start with SPEC-001.
139
139
 
140
140
  Write to `.specflow/specs/SPEC-XXX.md` using the template structure:
141
141
 
142
- 1. **Frontmatter:** id, type, status (draft), priority, complexity, created
142
+ 1. **Frontmatter:** id, type, status (draft), priority, complexity, created, source (if `<todo_context>` provided — set to the TODO ID, e.g., `source: TODO-006`)
143
143
  2. **Title:** Clear, action-oriented
144
144
  3. **Context:** Why this is needed
145
145
  - **If `<prior_discussion>` provided:** Add "Prior Discussion" subsection linking to PRE-XXX or DISC-XXX with key decisions
@@ -219,6 +219,20 @@ If significant decisions found, add to STATE.md Decisions table:
219
219
  | {date} | SPEC-XXX | {decision description} |
220
220
  ```
221
221
 
222
+ ## Step 7.5: Clean Up Source TODO (safety net)
223
+
224
+ Check if the spec frontmatter contains a `source:` field (e.g., `source: TODO-006`).
225
+
226
+ **If `source:` field exists:**
227
+
228
+ 1. Read `.specflow/todos/TODO.md`
229
+ 2. Check if the referenced TODO-XXX entry still exists in the file
230
+ 3. **If it exists** — remove it (the entire block from `## TODO-XXX` heading through the next `---` separator, inclusive)
231
+ 4. Update `*Last updated:` timestamp with note: `TODO-XXX cleaned up (completed via SPEC-YYY)`
232
+ 5. Write the updated TODO.md
233
+
234
+ **If no `source:` field or TODO already removed:** Skip — no action needed.
235
+
222
236
  ## Step 8: Archive Specification
223
237
 
224
238
  Move spec to archive:
@@ -364,6 +378,7 @@ git commit -m "docs(sf): complete SPEC-XXX"
364
378
  - [ ] Spec status updated to "done"
365
379
  - [ ] Completion section added
366
380
  - [ ] Decisions extracted (if any)
381
+ - [ ] Source TODO cleaned up (if `source:` field exists in spec)
367
382
  - [ ] Spec moved to archive
368
383
  - [ ] STATE.md updated (cleared active, removed from queue)
369
384
  - [ ] Final commit created
@@ -147,11 +147,15 @@ Use the priority from the todo as the spec's initial priority.
147
147
  ", subagent_type="sf-spec-creator", model="{profile_model}", description="Create specification from todo")
148
148
  ```
149
149
 
150
- ## Step 7: Remove Todo from List
150
+ ## Step 7: Remove Todo from List — CRITICAL
151
151
 
152
- After spec is successfully created, remove the todo entry from TODO.md.
152
+ **This step is MANDATORY. Do NOT skip it after the agent returns.**
153
153
 
154
- Update `*Last updated:` timestamp.
154
+ 1. Read `.specflow/todos/TODO.md`
155
+ 2. Remove the entire todo block (from `## TODO-XXX` heading through the next `---` separator, inclusive)
156
+ 3. Update `*Last updated:` timestamp with note: `TODO-XXX converted to SPEC-YYY`
157
+ 4. Write the updated TODO.md
158
+ 5. **Verify** by reading TODO.md again — the converted todo MUST NOT appear
155
159
 
156
160
  **Important:** Only remove after confirmed spec creation.
157
161
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specflow-cc",
3
- "version": "1.14.1",
3
+ "version": "1.15.0",
4
4
  "description": "Spec-driven development system for Claude Code — quality-first workflow with explicit audit cycles",
5
5
  "bin": {
6
6
  "specflow-cc": "bin/install.js"
package/templates/spec.md CHANGED
@@ -5,6 +5,7 @@ status: draft | auditing | revision_requested | audited | running | review | don
5
5
  priority: high | medium | low
6
6
  complexity: small | medium | large
7
7
  created: YYYY-MM-DD
8
+ source: TODO-XXX (optional — set when spec is created from a todo via /sf:plan)
8
9
  ---
9
10
 
10
11
  # [Task Title]