Skip to content

Close agent-UX gaps to make milo the ultimate vibe-coding CLI framework#56

Merged
lbliii merged 2 commits intomainfrom
lbliii/vibe-eval
Apr 20, 2026
Merged

Close agent-UX gaps to make milo the ultimate vibe-coding CLI framework#56
lbliii merged 2 commits intomainfrom
lbliii/vibe-eval

Conversation

@lbliii
Copy link
Copy Markdown
Owner

@lbliii lbliii commented Apr 20, 2026

Summary

Six independently-reviewable sprints that close the seams between milo's
excellent core and coding agents who need to use it without reading source.

  • docs/agent-quickstart.md — 5-step walkthrough from @cli.command to a
    verified Claude MCP tool call, plus an error-data contract agents can parse.
  • examples/greet/ — minimal CLI template with tests/ covering the three
    test layers (schema, direct dispatch, MCP dispatch). docs/testing.md points
    at it as the copy-paste template.
  • Structured MCP errorsMiloError gains argument / constraint
    kwargs; _call_tool now returns errorData with argument, reason,
    suggestion, and schema on TypeError (missing/unexpected kwargs) and on
    MiloError paths, so agents can repair calls without guessing.
  • form_schema(*specs) — new JSON Schema introspection helper so agents
    can inspect interactive forms without running the TUI.
  • llms.txt clarity — params render as required / optional, default: "latest" with inline defaults.
  • Schema docstringfunction_to_schema now explains why Context-typed
    params are intentionally skipped from generated schemas.

Ruff clean, 1374 pytest + 8 greet-template tests passing, 85% coverage.

Test plan

  • uv run pytest — 1374 passed, 1 skipped
  • uv run pytest examples/greet/tests/ — 8 passed
  • uv run ruff check — clean
  • Coverage 85% (floor 80%)
  • End-to-end: uv run python examples/greet/app.py greet --name AliceHello, Alice!
  • End-to-end: --llms-txt output shows (string, **required**) / (boolean, optional, default: False)

🤖 Generated with Claude Code

Six shipped sprints, each independently reviewable, closing the seams
between milo's excellent core and agents who need to use it without
reading source:

- docs/agent-quickstart.md: 5-step walkthrough from @cli.command to a
  verified Claude MCP tool call, plus error-data contract reference.
- examples/greet/: minimal CLI template with tests/ covering schema,
  direct dispatch, and MCP dispatch layers. docs/testing.md points at it.
- MiloError: new argument/constraint kwargs; _call_tool returns
  structured errorData with argument name, reason, suggestion, and tool
  schema on TypeError (missing/unexpected kwargs) and MiloError paths.
- llms.txt: params render as required/optional with inline defaults.
- form_schema(*specs): JSON Schema introspection helper so agents can
  inspect interactive forms without running the TUI.
- function_to_schema docstring now explains Context-param skip.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage Report

87.6% overall coverage

File Coverage
src/milo/\_\_init\_\_.py 100.0%
src/milo/\_child.py 92.7%
src/milo/\_cli\_help.py 90.5%
src/milo/\_command\_defs.py 99.2%
src/milo/\_compat.py 63.3%
src/milo/\_errors.py 92.8%
src/milo/\_jsonrpc.py 95.7%
src/milo/\_mcp\_router.py 100.0%
src/milo/\_protocols.py 100.0%
src/milo/\_types.py 100.0%
src/milo/app.py 58.0%
src/milo/cli.py 98.6%
src/milo/commands.py 87.9%
src/milo/completions.py 96.0%
src/milo/config.py 87.3%
src/milo/context.py 86.6%
src/milo/dev.py 91.9%
src/milo/doctor.py 89.9%
src/milo/flow.py 96.2%
src/milo/form.py 89.7%
src/milo/gateway.py 68.9%
src/milo/groups.py 92.5%
src/milo/help.py 100.0%
src/milo/input/\_\_init\_\_.py 100.0%
src/milo/input/\_platform.py 77.8%
src/milo/input/\_reader.py 96.2%
src/milo/input/\_sequences.py 100.0%
src/milo/llms.py 78.6%
src/milo/mcp.py 84.4%
src/milo/middleware.py 100.0%
src/milo/observability.py 100.0%
src/milo/output.py 77.8%
src/milo/pipeline.py 90.1%
src/milo/plugins.py 100.0%
src/milo/reducers.py 100.0%
src/milo/registry.py 81.5%
src/milo/schema.py 92.9%
src/milo/state.py 91.1%
src/milo/streaming.py 100.0%
src/milo/templates/\_\_init\_\_.py 100.0%
src/milo/testing/\_\_init\_\_.py 100.0%
src/milo/testing/\_mcp.py 100.0%
src/milo/testing/\_record.py 86.7%
src/milo/testing/\_replay.py 87.1%
src/milo/testing/\_snapshot.py 100.0%
src/milo/theme.py 100.0%
src/milo/version\_check.py 60.6%

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@lbliii lbliii merged commit 3e0203e into main Apr 20, 2026
11 of 12 checks passed
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