feat: zero-friction natural-language interface + Claude spec handoff - #13
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 overheadmisterdev build "goal"— fixed; first positional arg now treated as the goal when it isn't a directorymisterdev run "goal"— redirects to build via nl_cli when project_path isn't a real directorymisterdev runwith no planned tasks — prints a hint to usebuild [goal]instead of silently doing nothingdelete,remove,drop,destroy,wipe,erase,purge) still prompt for confirmation even on the fast pathAnimated build progress
buildsubcommand 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 PanelClaude spec handoff (
spec_text)buildtool gainsspec_text— when Claude has already written an implementation spec, misterdev skips analysis + spec-generation and goes straight to decompose → execute → verifyspec_textalso skips_analyze()entirely; a zero-costProjectAssessment()stub replaces the full analysis runRegistry persistence
project.yamlare auto-assigned a minimal one on first registration so they survive restartsTest plan
python -m pytest tests/ -q— 1480+ tests, zero failuresmisterdev "add a hello endpoint"— runs immediately with spinner, no confirmmisterdev build "add caching"— detects non-path arg, routes correctlymisterdev run "add feature"— redirects to buildmisterdev runin empty project — shows build hintbuild(path, goal="", spec_text="# My Spec\n...")— skips analysis phase