Skip to content

fix: close SDD workflow handoff gaps across 5 plugins#38

Merged
devstefancho merged 6 commits into
mainfrom
fix/sdd-workflow-handoffs
Apr 26, 2026
Merged

fix: close SDD workflow handoff gaps across 5 plugins#38
devstefancho merged 6 commits into
mainfrom
fix/sdd-workflow-handoffs

Conversation

@devstefancho
Copy link
Copy Markdown
Owner

Summary

End-to-end validation of the SDD workflow (brain-storm → writing-specs → writing-tasks → split-work → implement-with-test) on a temporary project surfaced 6 handoff gaps that quietly broke the pipeline. This PR closes all of them and re-validates against 3 cold-path projects.

The five plugins individually worked, but the handoffs between them were undocumented or mismatched. Auto-mode and headless runs hit them hardest because the gaps lived in user-decision sites that silently asked off-screen.

Fixes

# Plugin Severity What
1 writing-specs (+ brain-storm) Block Add Phase 0 Argument Resolution: brain-storm path, any markdown path, bare title, freestyle description. Carry over Summary→Purpose, Approach→Requirements/Approach.
2 writing-specs Block Default file format is now specs/phase-N/NN-name.md — the convention writing-tasks consumes. Auto-numbering rules added.
3 implement-with-test + writing-tasks Block Status enum aligned: done/review/blocked (was completed/partial/failed). Schema documents completed_at. Non-schema status values normalize for dashboard with a warning.
4 brain-storm, writing-specs, writing-tasks, implement-with-test Friction Add a "Non-interactive defaults" table to each skill so auto-mode and headless runs no longer hang on AskUserQuestion.
5 split-work Bug git rev-parse --git-common-dir returns .git in the main repo cwd, collapsing the project slug to .-.. Pass --path-format=absolute.
6 brain-storm Cosmetic wireframe-guide gets a Project Type Branch up top: GUI uses box-drawing, CLI/library uses terminal-session or data-flow sketch. Small flow-chart rectangles allowed; GUI layouts not.

Cold-path verification (3 rounds, fresh projects)

Round Project Stack Tests Result
1 sdd-workflow-test Python CLI (pytest) 14 passed (9+5) #1, #2, #3 verified
2 sdd-verify-node Node.js CLI (vitest) 9 passed (4+5) 6/6 fixes verified
3 sdd-verify-pylib Python lib (pytest) 5 passed (2+3) 5/6 + #6 wording tightened in follow-up commit

In every round the workflow produced a status: done task, a phase-1/01-*.md spec, a tasks/phase-1-slug/01-*.md task graph, and zero AskUserQuestion calls.

Test plan

  • Reinstall the 5 plugins from this branch (/plugin uninstall ... + /plugin install ...@devstefancho-claude-plugins)
  • Run brain-storm on any small repo, confirm a brain-storm/*.md is written with the right wireframe branch (CLI vs GUI)
  • Run /writing-specs brain-storm/{file}.md and confirm the spec lands at specs/phase-1/01-*.md
  • Run /writing-tasks and confirm tasks land at tasks/phase-1-slug/NN-*.md
  • Run /implement-with-test tasks/phase-1-slug/01-*.md and confirm the task frontmatter ends up status: done with completed_at
  • Re-run /writing-tasks and confirm the dashboard shows the completed task

Versions

  • brain-storm-plugin: 1.2.0 → 1.2.4
  • implement-with-test-plugin: 1.0.0 → 1.0.2
  • split-work-plugin: 1.0.0 → 1.0.1
  • writing-specs-plugin: 1.0.0 → 1.0.3
  • writing-tasks-plugin: 1.0.0 → 1.0.2

🤖 Generated with Claude Code

In the main repo cwd, `git rev-parse --git-common-dir` returns the
relative `.git`, which made the project slug collapse to `.-.`. Pass
`--path-format=absolute` so the snippet works identically in main repo
and worktrees.

Bumps split-work-plugin to 1.0.1.
…non-interactive defaults

Phase 7 used to write `status: completed | partial | failed`, but the
writing-tasks schema only accepts `todo | in_progress | review | done |
blocked`. The mismatch broke the spec→task→code→dashboard loop because
writing-tasks could not normalize the post-implementation status. Map:
- all tests pass → done
- partial pass → review
- all fail → blocked

Also add a "Non-interactive defaults" section with table-form fallbacks
for each AskUserQuestion site (conversation-inferred task confirmation,
no-task refusal, framework auto-detect order, ambiguous-task tie-break),
so the skill stays usable in auto mode and scheduled runs.

Bumps implement-with-test-plugin to 1.0.2.
…alues + non-interactive defaults

- Add `completed_at` (optional) to the frontmatter schema. The field is
  set automatically by implement-with-test when a task transitions to
  `done`, but the schema previously did not list it.
- Add a non-blocking validation rule: if a task carries a non-schema
  status value (e.g. legacy `completed`/`partial`/`failed` written by
  pre-fix implement-with-test), normalize for dashboard purposes
  (completed→done, failed→blocked, partial→review) and warn instead of
  silently miscounting progress. Do not auto-rewrite the file.
- Add a "Non-interactive defaults" section covering each
  AskUserQuestion site: decomposition proposal proceeds, manual
  /writing-tasks new is refused, modified-spec resync is skipped,
  brand-new phase slug derives deterministically from spec filename.

Bumps writing-tasks-plugin to 1.0.2.
…ks + non-interactive defaults

Three SDD-workflow plumbing fixes that were silently broken:

1. Phase 0 (Argument Resolution) — the skill now formally resolves four
   argument shapes: brain-storm/{name}.md path, any markdown path, bare
   title (matched against brain-storm/), or freestyle description. When
   a brain-storm idea is the source, Summary→Purpose, Approach→
   Requirements/Approach are explicitly carried over and Wireframe/
   Open Questions are dropped (template has no slot, dropped items
   listed in the report).

2. Default file format is now `specs/phase-N/NN-name.md` — the
   convention writing-tasks consumes. Auto-numbering rules added: glob
   existing phase-* dirs, pick the active phase, append NN+1. Other
   formats remain allowed but flagged as no-writing-tasks-integration.

3. Non-interactive defaults table for every AskUserQuestion site
   (multiple title matches, no input source, exact match, related
   specs, outdated specs, ambiguous milestone), so the skill works in
   auto mode without silently asking off-screen.

Bumps writing-specs-plugin to 1.0.3.
…aults + CLI wireframe branch

- Next Steps now recommends passing the brain-storm file path
  directly to writing-specs (`/writing-specs brain-storm/{name}.md`)
  instead of just the idea title — matches the new Phase 0 in
  writing-specs and removes the "title not found" failure mode.
- Add a Non-interactive defaults table covering Brainstorm Step 1
  (save 2 ideas, diverse pair, prefer Low/Medium), Step 2 (skip on
  duplicate, never overwrite), and Cleanup Step 2 (refuse deletion;
  report only). Echoes defaulted decisions in the final report.
- Wireframe guide gets a Project Type Branch up top: GUI projects
  use the existing box-drawing rules; CLI tools / libraries / backend
  services use a terminal-session transcript or data-flow sketch
  instead. Two CLI examples added at the bottom (session and flow).

Bumps brain-storm-plugin to 1.2.3.
…low-chart rectangles)

Round 3 cold-path verification on a Python library project flagged a
soft regression: the agent applied the CLI/library branch correctly to
one wireframe (terminal session + arrow flow) but added a small boxed
rectangle around a process step in the second one. The previous "skip
box-drawing" wording read as absolute, even though a flow-chart-style
rectangle wrapping pseudo-code is exactly what a library wireframe
needs.

Tighten the guidance: skip the GUI layout style (toolbars, button rows,
modals, multi-column dashboards) — small rectangles around a process
step are fine. The 10-line minimum and the spirit ("make implementation
direction visible") are unchanged.

Bumps brain-storm-plugin to 1.2.4.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
claude-plugins Ready Ready Preview, Comment Apr 26, 2026 7:00am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant