Dotkernel is a set of open-source PHP applications - REST API, admin, and queue - that ship assembled on Mezzio and Laminas, over one shared Doctrine domain layer called Core. OAuth2, RBAC, HAL, and a generated OpenAPI spec are wired together on install, not left for you to choose.
- built on top of Mezzio microframework using Laminas components
- with both backend management and frontend-agnostic capabilities
- built entirely on PSR-15 middleware
- follows the middleware pipeline pattern offered by Laminas and the PSR standards
- adhering strictly to PSR-3 (logging), PSR-7 (HTTP messages), PSR-11 (containers), PSR-15 (middleware)
dotboost is drop-in Claude Code configuration for any Dotkernel application - API, Admin, Frontend, Light, Queue, or a project derived from one of them. The payload is a .claude/ directory you copy into your project root; every skill detects the variant first and applies the matching dialect, so the assistant follows this platform's conventions instead of generic PHP habits.
What it brings to a session:
/dk-*commands for the work that recurs - bootstrapping a fresh clone, planning a module, wiring a route end to end, tracing a request through the pipeline, running the QA gate, and a pre-PR convention review.- Skills covering the platform - module structure and Core layering, handler naming, Doctrine entities and migrations, input filters, HAL responses, OpenAPI attributes, the evolution pattern, testing, and the PSR standards as they are actually applied here.
- A dependency ladder instead of guesswork - installed packages, then
dotkernel/*, then Laminas and Mezzio, then vetted community packages, and only then hand-rolled code. Package names are verified againstcomposer.lockor Packagist, never recalled from memory. - Guardrails that hold -
*.local.phpanddata/oauth/are unreadable, so database credentials and OAuth signing keys never reach the transcript. Dependency manifests,vendor/, and migrations cannot be written; installs, destructive git, and DB-mutating commands are blocked, including inside compound commands.
A headless platform has no UI to explain itself, so the contract has to be machine-readable. That is the same property agents need, and we treat it as a first-class concern rather than an add-on:
- A generated OpenAPI spec on every install - your endpoints, schemas, and auth flows are described in a format LLM-based tooling and agent frameworks read directly, with no hand-written docs to drift out of date.
- Predictable, standards-based responses - HAL representations and PSR-7 messages mean an agent can traverse an API it has never seen before from the payload alone.
- Agent-readable documentation - our content is published as markdown alongside the HTML, with an
llms.txtindex, so assistants and crawlers ingest the source text instead of scraping a rendered page.
Documentation is available at: https://docs.dotkernel.org
Open discussions are available at: https://github.com/orgs/dotkernel/discussions
- Request Lifecycle for a Mezzio-Based Application
- Implementing Time-based One-Time Password (TOTP) in Dotkernel
- API Client Migration: From Postman to Bruno
- Version 7 adds PostgreSQL, Native UUID and PHP 8.5
- Evolution Pattern versus API Versioning
- If you need support with the project, read the support documentation.
- For open discussions, please use github discussion
- For reporting security issues, please review our security policy.
- If you wish to contribute to the project, read the contributing guidelines
- Learn about git attributes