Skip to content

feat: zero-friction natural-language interface + Claude spec handoff - #13

Merged
dcondrey merged 5 commits into
mainfrom
roadmap/tier-run
Jul 27, 2026
Merged

feat: zero-friction natural-language interface + Claude spec handoff#13
dcondrey merged 5 commits into
mainfrom
roadmap/tier-run

Conversation

@dcondrey

Copy link
Copy Markdown
Owner

Summary

Eliminates the devplan prerequisite so misterdev works as a natural-language-first tool and as Claude's execution backend via MCP.

Zero-friction CLI

  • misterdev "add rate limiting to the API" — routes directly to build, no subcommand, no confirm prompt, no LLM call overhead
  • misterdev build "goal" — fixed; first positional arg now treated as the goal when it isn't a directory
  • misterdev run "goal" — redirects to build via nl_cli when project_path isn't a real directory
  • misterdev run with no planned tasks — prints a hint to use build [goal] instead of silently doing nothing
  • Destructive verbs (delete, remove, drop, destroy, wipe, erase, purge) still prompt for confirmation even on the fast path
  • Redundant "→ I'll run:" echo suppressed for unambiguous fast-routed requests

Animated build progress

  • Both build subcommand and natural-language path show an animated Rich spinner that updates with live task progress (executing [3/7]) and replaces itself with a final green/red Panel

Claude spec handoff (spec_text)

  • MCP build tool gains spec_text — when Claude has already written an implementation spec, misterdev skips analysis + spec-generation and goes straight to decompose → execute → verify
  • spec_text also skips _analyze() entirely; a zero-cost ProjectAssessment() stub replaces the full analysis run

Registry persistence

  • Projects without project.yaml are auto-assigned a minimal one on first registration so they survive restarts

Test plan

  • python -m pytest tests/ -q — 1480+ tests, zero failures
  • misterdev "add a hello endpoint" — runs immediately with spinner, no confirm
  • misterdev build "add caching" — detects non-path arg, routes correctly
  • misterdev run "add feature" — redirects to build
  • misterdev run in empty project — shows build hint
  • MCP build(path, goal="", spec_text="# My Spec\n...") — skips analysis phase

dcondrey added 5 commits July 27, 2026 14:14
Four changes that eliminate the devplan-first requirement:

1. cli.py: if `project_path` in `build` isn't a directory, treat it as the
   start of the goal and use `.` — `misterdev build "add caching"` now works.

2. nl_cli.py: fast-path skips the LLM for obvious build requests (first word
   not a management or query word), saving a round-trip for the common case.
   Query-word requests still fall through to the LLM for correct routing.

3. agent.py + mcp_server.py: `build()` accepts `spec_text` — when a caller
   (e.g. Claude via MCP) has already written the implementation spec, misterdev
   skips analysis+spec-generation and goes straight to decompose→execute→verify.
   This is the "Claude on steroids" handoff: Claude thinks, misterdev executes.

4. registry.py: auto-writes a minimal `project.yaml` when registering a
   directory that lacks one, so the project persists across restarts instead
   of being pruned from the registry on next launch.
- nl_cli: fast-routed requests skip the "proceed? [Y/n]" prompt — user
  was already explicit; confirm only fires when the LLM had to disambiguate
- cli: `misterdev run "add feature X"` redirects to build when project_path
  isn't a real directory, matching the fix already applied to build
- nl_cli: build result rendered in Rich Panel with pass/fail colour, matching
  the build subcommand's output instead of printing raw text
- nl_cli: show "Building…" spinner during autonomous build so users know
  it's running (builds can take minutes; silent=hung from user perspective)
- nl_cli: fast-routed requests with destructive verbs (delete/remove/drop/
  destroy/wipe/erase/purge) still prompt for confirmation — removes a
  footgun introduced when we cut the confirm for obvious build requests
- cli: `misterdev run` with no planned tasks prints a hint to use
  `misterdev build [goal]` instead of silently doing nothing
…y preview

- nl_cli: replace static Text with animated rich.Spinner and pass progress_cb
  to build() so the spinner text updates as tasks complete ("wave 2 [3/7]")
- nl_cli: suppress the "→ I'll run:" preview line for fast-routed requests —
  user was already explicit; the echo adds noise with no disambiguation value
  (still shown when LLM had to interpret an ambiguous query)
…mand

- agent.py: when spec_text is supplied (Claude handoff path), substitute a
  zero-cost ProjectAssessment() stub for _analyze() — saves the full
  analysis phase (LLM calls + build/test runs) when Claude already has
  the context; health-baseline warnings also skipped (no health data)
- cli.py: add animated Rich spinner + progress_cb to the `build` subcommand
  so `misterdev build "goal"` shows live task progress, matching the UX of
  the natural-language path added in the previous commits
@dcondrey
dcondrey merged commit e561b09 into main Jul 27, 2026
9 checks passed
@dcondrey
dcondrey deleted the roadmap/tier-run branch July 27, 2026 22:19
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