I think it could be useful to have a small set of AI agent skills focused on Laminas and Mezzio development.
For example, one skill could help with migrating existing Laminas MVC modules to Mezzio. It could first analyze the existing module, understand its structure and dependencies, and then create a migration plan before making any changes. This would make migrations more predictable and reduce the risk of breaking existing functionality.
Other skills could focus on common Mezzio development tasks, such as:
Creating a new Mezzio module with the recommended structure
Creating handlers, middleware, factories, and routes
Analyzing and improving an existing Mezzio module
Generating tests
Refactoring and modernizing existing code
Checking PSR-7/15/17 usage and Mezzio conventions
I think having these as reusable skills would make AI coding agents much more useful for developers working with Laminas and Mezzio, especially for existing projects that need to be migrated or modernized.
I would be interested to know if the community is already working on something similar, or if there would be interest in creating a small collection of these skills.
I’ve started work on a MCP server that should cover several of the listed points. No promises on when it will be finished though. The goal is to back the MCP server using mezzio-tooling for common task. Module creation etc which should force the prompt to the agent to be deterministic rather than a “poke and hope” scenario. It should also allow expanding the functionality of the MCP server via custom cli tools provided by your components as well as those exposed by mezzio-tooling.
This is very good and exciting news. What language are you writing the MCP in? PHP?
Part of our platform is built with the Laminas framework. The team was able to migrate it to Mezzio in less than a day, and we’ve also added many features using agents. I’m still not completely satisfied with the code quality, but the output is acceptable. If we can have tools and skills that ensure a standardized development process, the results could be excellent.
For example, I personally migrated several Laminas modules to Mezzio in less than a day in a test project. I completely changed the module architecture and replaced laminas-db with Doctrine. I did this using FreeBuff and the DeepSeek V4 Flash model. However, I had to audit the work more than 10 times and repeatedly ask the agent to make corrections.
Yep, it will be in PHP using the MCP SDK. I’ve already built an internal MCP for use with PhpDb so I know its viable. You might want to look into building a custom MCP server targeting your specific application since it will be able to provide information to the agent that is much more focused for your application needs than the MCP I will provide. The one I provide will have to be generalized, but yours on the other hand can be very specific.
Another tool you might want to check into is SpecKit from Github. At some point I hope to have time to build extensions for both vscode and phpstorm that will install the MCP server and a generalized component “spec” for Mezzio components.
I’ve had great results from DeepSeek V4 Pro. The trick there is constraining it with a good test suite with mutation testing via Infection and an insanely strict ruleset for Mago leveraging all 4 tools, formatter, linter, analysis (integrates with infection) and guard.
Vscode has an extension for DeepSeek that will proxy images, such as when using the embedded browser via playwright, to another model such as Kimi K2.7 to provide image support to the primary agent model (DeepSeek v4 Pro) so that it can use that to handle the image processing. Of course, this is when using the copilot agent harness.
I generally use Sonnet 5 for planning but since the update DeepSeek v4 Pro has proven to be pretty good there as well. But, I always provide a good spec by reviewing any planning documents before turning the LLM loose on the code.
@voltan this is a working example of what I am setting up to migrate a bunch of my projects to Mago along with setting up codecov and infection in the process. It uses SpecKit as I suggested above.
Of course, the Preset, spec, task etc could be setup to do nearly anything. I imagine it could do a lot of heavy lifting for the mechanical parts of your component migrations. I provide this here as example simply because it works and gives you an idea of one way you could possibly handle it.