AI agents are pattern machines
An AI coding agent like Claude Code reads how a codebase does something once, then does it the same way elsewhere. The more consistent the code, the better the agent works.
DOCman runs on the Joomlatools Framework, which follows the same conventions throughout:
- Identifiers: the documents model is
com://admin/docman.model.documentsand the download controller iscom://site/docman.controller.download. Once you know the scheme, you can find any object. - Controllers: every controller has the same actions (browse, read, edit, add and delete) and the same flow.
- Events: every controller action fires an event, and the event names follow one rule:
onBeforeDocmanDocumentControllerAdd,onAfterDocmanDocumentControllerEdit, and so on. We wrote about the Event API in 2016. - Behaviors: features like document expiry and custom fields are small behaviors attached to models, controllers and tables. A plugin attaches its own behaviors the same way.
- JSON: add
?format=jsonto any DOCman page to get structured data back. - Templates: you can override any template from your site template.
DOCman also uses Joomla's own access levels, plugin system and custom fields, including custom field types you build yourself.
We designed the framework so developers could learn one pattern and use it everywhere, and flexibility has been a DOCman goal since 2010. An AI agent learns DOCman the same way, and every DOCman site already works like this.
Two features from two prompts
We tried this on a Joomla 6 site running DOCman 6.2 by giving Claude Code two requests:
- A new field type: we asked for a Creative Commons license field on documents. Claude Code worked out that DOCman's custom fields are standard Joomla fields and wrote a small field plugin of six files and about 100 lines.
- A feature across every layer: we asked for a "review by" date with an Overdue badge, a filter, reminder emails, and a date that moves forward whenever a document is updated. Claude Code built it as one plugin and a small template override, using a model behavior, an event subscriber and a scheduled job. DOCman uses the same parts for its own expiry notifications.
Each feature lives in its own plugin, and DOCman updates install cleanly alongside it.
DOCman and MCP
DOCman is ready for MCP today. Its JSON API already gives an MCP server everything it needs to list and search documents, filter them by category, owner or status, and create new ones. We published guides for the API in 2016. Wrapping the API in an MCP server is a small project. Every request goes through Joomla's access levels, so an assistant sees and does exactly what its user can.
Your agent can also use the API directly, which is simpler and gives it more to work with. An MCP server offers only the tools its author chose to build. Claude Code can read our API documentation and use all of the API. When a task needs more than the API offers, it moves on to the PHP API or writes a plugin, as it did above.
We build DOCman this way too
Our own DOCman development runs on a spec-first workflow with Claude Code. Larger changes start as a design document in the repository. Claude Code works through it phase by phase, and one of us reviews each step before it ships. The document and category picker fields and the faster category folder search in DOCman 6.2 were both built this way.
In 2014, email notifications, download limiting and license support returned to DOCman as plugins, and they're still built that way today. Developers outside Joomlatools have built entire applications on the same framework.
Get started
Every DOCman installation is AI-ready today. Point your favourite coding agent at your site, describe what you need, and let it build on the patterns DOCman already provides. Our developer documentation and the plugin guide are a good starting point for you and your agent.
Try the latest DOCman on our demo, or download it from your Joomlatools Dashboard. Not yet a member? Get a subscription and start building today!
