Skip to content

Add milo new + milo verify and ship agent-native affordances#57

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

Add milo new + milo verify and ship agent-native affordances#57
lbliii merged 2 commits intomainfrom
lbliii/vibe-eval-2

Conversation

@lbliii
Copy link
Copy Markdown
Owner

@lbliii lbliii commented Apr 20, 2026

Summary

  • milo new <name> scaffolds a runnable CLI (app.py + tests + conftest + README) and milo verify <path> self-diagnoses via 6 checks (imports, CLI located, commands registered, schemas generate, in-process MCP list, subprocess MCP transport) — used as a regression gate over every CLI example.
  • function_to_schema(..., warn_missing_docs=True) surfaces typed-but-undocumented params; milo verify wires this in so agents see coverage gaps.
  • Python 3.14+ preflight in the milo entry point prints a uv python install 3.14 hint instead of failing with ImportError on older interpreters.
  • README "Examples Index" maps use cases → examples → key APIs (with a drift lint that fails CI when an example is added without a row); agent-quickstart gets Step 0 (scaffold) and Step 6 (verify); AGENTS.md Stakes adds scaffold/verify as same-severity-class as schema-generation bugs.

Test plan

  • uv run pytest — 1422 passing, 1 skipped, no regressions (+35 tests across the epic)
  • uv run milo new my_cli && uv run milo verify my_cli/app.py — 6 checks pass
  • Mock-add examples/_drifttest/ and confirm the README drift lint fails with an actionable message
  • Monkeypatched sys.version_info to 3.12 — preflight exits 2 with the install hint

🤖 Generated with Claude Code

Six-sprint epic to make milo agent-native, not just agent-friendly:

- `milo new <name>` scaffolds a runnable CLI with tests, conftest, and README
- `milo verify <path>` self-diagnoses via 6 checks (imports, CLI located,
  commands registered, schemas generate, in-process MCP list, subprocess MCP
  transport); used as a regression gate over every CLI example
- `function_to_schema(..., warn_missing_docs=True)` surfaces typed but
  undocumented params; verify wires this in for agents to see
- Python 3.14+ preflight in `milo` prints a `uv python install 3.14` hint
  instead of failing with ImportError on older interpreters
- README "Examples Index" maps use cases → examples → key APIs (with a
  drift lint that fails CI when an example is added without a row)
- agent-quickstart adds Step 0 (scaffold) and Step 6 (verify); AGENTS.md
  Stakes section adds scaffold/verify as same-severity-class as schema gen

+35 tests; full suite 1422 passing, no regressions.

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

github-actions Bot commented Apr 20, 2026

Coverage Report

87.4% 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/\_scaffold/\_\_init\_\_.py 100.0%
src/milo/\_types.py 100.0%
src/milo/app.py 58.0%
src/milo/cli.py 86.1%
src/milo/commands.py 88.0%
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 93.2%
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/verify.py 84.8%
src/milo/version\_check.py 60.6%

Hoist _ICONS to module scope, use list.extend for details, drop
unused `# noqa: S603` directive, and replace try/except/pass with
contextlib.suppress. Also apply ruff format across files touched
by the epic.
@lbliii lbliii merged commit 148baff into main Apr 20, 2026
7 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