edev 0.0.1

MCP launcher, fixture runner, and smoketest harness for eguidev apps
Documentation

eguidev

Discord Crates.io Documentation License: MIT

AI-assisted development tooling for egui. Coding agents drive your app through Luau scripts while edev manages lifecycle and hosts the MCP tool surface.

Join the Discord server for discussion and release updates.

How It Works

eguidev instruments your app from inside the process. It captures widget state at frame boundaries and injects input through egui's raw_input_hook before events are consumed. Automation stays aligned with the real event loop -- no pixel guessing, no sleeps.

The agent-facing surface is Luau, not fine-grained RPC. script_eval runs inside the app process against the latest captured frame, so one script can inspect widgets, queue input, wait for state changes, and return structured results in a single round trip.

Structure

  • eguidev crate -- instrument your egui app. Tag widgets with dev_* helpers, wrap frames with FrameGuard, forward raw input. In default builds the instrumentation compiles but stays inert.
  • edev binary -- the MCP launcher. Starts and stops the app, proxies script_eval, serves the Luau API definition. Run it with edev mcp -- <cargo args>.
  • devtools feature -- gates the embedded runtime (tokio, MCP server, Luau VM). Enable it in one app-local feature; keep widget code unconditional.

Configuration

edev reads .edev.toml from the current directory upward, stopping at the nearest git root. All subcommands share this config; CLI flags override file values. See examples/edev.toml for a commented reference with all options.

The only required field is app.command -- the full argv to launch the app with DevMCP enabled. edev does not synthesize cargo flags. The command can also be passed after -- on any subcommand.

Fixtures

List registered fixtures or launch the app from a known baseline for manual testing:

edev fixtures                  # start app, print fixtures, exit
edev fixture basic.default     # start app, apply fixture, keep running

edev fixture applies the named fixture and blocks until ctrl-c. Use it to get the app into a repeatable state for interactive work.

Smoketests

eguidev includes a built-in smoketest runner. A smoketest suite is a directory of self-contained .luau scripts. The configured suite is discovered recursively and executed in lexicographic order by relative path. Explicit script arguments to edev smoke run in the order provided. Every script establishes its own state via fixture(), exercises the UI, and asserts outcomes.

edev smoke
edev smoke --verbose
edev smoke smoketest/*.luau
edev smoke smoketest/10_basic.luau tmp/ad_hoc_probe.luau

Smoketests run against the live app through the same script_eval path agents use. They double as regression tests and as executable documentation for your scripting surface.

API Reference

The canonical scripting reference is eguidev.d.luau -- a strict Luau type definition covering viewports, widgets, actions, waits, fixtures, and assertions. Fetch it at any time with script_api or edev --script-docs.

For the Rust API, run ruskel eguidev or see the crate-level doc comments.

The repo also ships a ready-to-use agent skill at skills/SKILL.md. For Codex-style setups, install it by copying or symlinking it into your local skills directory as ~/.codex/skills/eguidev/SKILL.md, then invoke the eguidev skill in your agent workflow.

License

MIT