joshcirre/instruckt-laravel
Laravel package that adds visual feedback for AI coding agents: browser annotations become structured markdown, with a backend API, MCP tools, JSON storage, and a Blade toolbar. Installs via Vite plugin or Blade component. Requires PHP 8.2+ and Laravel 11/12.
get_all_pending, get_screenshot, resolve) is a small, readable reference implementation of what "agent-readable application state" looks like. Useful as a pattern reference even if you never install it — particularly for teams deciding whether MCP tooling belongs in their own product architecture.APP_ENV=local; a customer-facing version is a different product with auth, multi-tenancy, and abuse concerns.vite.config.js, your JS entry point, and agent config files like .mcp.json) are acceptable in your repo — a governance question that will recur with every AI-tooling package you evaluate.Good fit when most of these are true:
apply: 'serve'); the Blade component is the fallback.SourceResolver (component name → PHP class + line, view name → file path) are where this package earns its keep over a generic annotation tool. Framework-agnostic annotation is a commodity; framework-aware source resolution is not.storage/app/_instruckt/), fully reversible via php artisan instruckt:uninstall.Look elsewhere or defer when:
vite.config.js and JS entry points. This is the single biggest friction point; budget a PR review of the installer's diff.http://*.test local domains: clipboard auto-copy silently degrades (secure-context requirement). Workable via the toolbar copy button, but expect a confusing first-run experience.For executives — one paragraph: This is a low-cost, fully reversible experiment in shortening the loop between "someone spots a UI problem" and "an AI agent fixes it." It's a dev-only Composer package: it installs with one command, is disabled outside APP_ENV=local at three independent layers, ships zero bytes to production, and uninstalls cleanly. The upside is measurable — fewer clarification round-trips per UI change and faster time-to-fix on small interface defects. The downside is bounded to a few hours of one engineer's time plus a code review of the installer's diff. Cost of trying it is near zero; cost of not trying it is continuing to pay the clarification tax on every UI iteration.
For engineering — the practical framing: Install as a --dev dependency, run php artisan instruckt:install, and review the diff before merging — it touches vite.config.*, your JS entry, and agent config files. Annotate a handful of real UI nits across a Livewire and a plain Blade page, hand them to your agent via MCP, and use instruckt.resolve so markers clear without a reload. Measure two things for two weeks: messages-per-UI-fix and wall-clock time-to-fix. If the numbers move, keep it; if not, instruckt:uninstall reverses everything including npm and agent configs.
Risks to state up front, not discover later:
api_middleware / mcp_middleware split, store, screenshot_disk, mcp_token). If you publish the config, re-publish or you'll silently run stale defaults.Recommendation: Treat as a two-week, single-team spike with defined success metrics. Do not standardize across the org until you have your own before/after data — the star count is not evidence, your cycle-time numbers will be.
How can I help you explore Laravel packages today?