Repository navigation
create-spec: derive feature count from atomic features and MECE buckets - #335
zwanski-start wants to merge 1 commit into
Conversation
… MECE buckets Phase 4L of create-spec.md (and Phase 3 of expand-project.md) counted features via CRUD/UI interaction/validation/visual categories, which overlap and are not exhaustive. Define an atomic feature (single Given/When/Then), seven MECE buckets with boundary questions, required per-feature fields, per-bucket counting rules and atomicity checks. Closes AutoForgeAI#54 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔍 QA report: ✅ PassedTester: Ken (cubefarm agent, in a fresh session) · Round: 1 · Author: Barbara This PR changes only two prompt files. It replaces the overlapping CRUD / UI interaction / validation / visual rules in create-spec.md (Phase 4L) and expand-project.md (Phase 3) with the issue's model: atomic Given/When/Then features, seven buckets with hard boundary questions, required fields, counting rules and atomicity checks. A tie-break rule (the most specific bucket wins) keeps the buckets from overlapping. Both prompts still load and are written out as UTF-8 by the spec and expand chat sessions. Lint, build and security tests pass, and the mypy and pytest failures are identical on master.
🧪 Commands run
No browser screenshots were taken in this round. Posted by cubefarm · merges automatically once GitHub's checks pass |
What changed
.claude/commands/create-spec.md, Phase 4L (Derive Feature Count)Replaced the overlapping "Each CRUD operation / UI interaction / validation / visual requirement = 1 feature" heuristic with the structure proposed in the issue:
.claude/commands/expand-project.md, Phase 3 (Derive Features)This had the same four overlapping rules. I replaced them with a shorter version of the same model so both flows count features the same way.
Assumptions
<core_features>) is unchanged. The buckets only guide counting and presentation.Verification
server/services/spec_chat_session.pyandexpand_chat_session.pyload these files whole (read_text), so no code parses the section contents. I reviewed the rendered markdown (table, lists).Closes #54
🤖 Generated with Claude Code