specflow-cc 1.14.2 → 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 +10 -0
- package/agents/spec-creator.md +1 -1
- package/commands/sf/done.md +15 -0
- package/commands/sf/plan.md +7 -3
- package/package.json +1 -1
- package/templates/spec.md +1 -0
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
|
package/agents/spec-creator.md
CHANGED
|
@@ -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
|
package/commands/sf/done.md
CHANGED
|
@@ -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
|
package/commands/sf/plan.md
CHANGED
|
@@ -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
|
-
|
|
152
|
+
**This step is MANDATORY. Do NOT skip it after the agent returns.**
|
|
153
153
|
|
|
154
|
-
|
|
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
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]
|