Skip to content
Back to skills

Dotkernel Dot Maker

ASecurity

Use before hand-writing any new scaffolding in a Dotkernel project — a module, entity, repository, service, service interface, handler, collection, form, input, input filter, middleware or CLI command. dot-maker (dotkernel/dot-maker, "composer make …") generates these to the Dotkernel file structure and naming pattern. Also use when asked how to create a new module, what "composer make" can do, or why generated boilerplate looks a certain way.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
developmentphpbashapifrontenddocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add dotkernel/dotboost --skill dotkernel-dot-maker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dotkernel Dot Maker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dotkernel Dot Maker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dotkernel-dotkernel-dot-maker/badge)](https://www.skillsdirectory.com/skills/dotkernel-dotkernel-dot-maker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dotkernel-dot-maker
description: >
  Use before hand-writing any new scaffolding in a Dotkernel project — a module, entity,
  repository, service, service interface, handler, collection, form, input, input filter,
  middleware or CLI command. dot-maker (dotkernel/dot-maker, "composer make …") generates these
  to the Dotkernel file structure and naming pattern. Also use when asked how to create a new
  module, what "composer make" can do, or why generated boilerplate looks a certain way.
---

# dot-maker: generate, then customise

```text
Applies to
  Projects:  - Dotkernel API
             - Dotkernel Admin
  Packages:  - none
```

`dotkernel/dot-maker` generates files matching the Dotkernel/Mezzio layout and the handler
naming pattern. It is comparable to the Symfony Maker Bundle, and more opinionated than Mezzio's
own CLI tooling because it targets Dotkernel conventions specifically.

**Always propose the `composer make …` command before hand-writing boilerplate.** Manual file
creation is where registrations get missed.

Availability varies: the stock API and Admin have it in `require-dev` with a `make` script alias;
the stock Frontend, Light and Queue do not. Check `composer.json`. If the project does not have
it, say so and fall back to copying the nearest existing module by hand.

## Running it

`composer make <thing>` or `./vendor/bin/dot-maker <thing>` — the `composer make` form needs the
script alias present in `composer.json`.

It is **interactive** and prompts through a series of choices. In an agent session, do not try to
pipe answers blindly: give the user the exact command and the answers to give, then continue from
the generated files. Treat generation like an install — the user's call.

## Commands

| Command | Generates |
| --- | --- |
| `module` | a full module: entity, repository, service, handler(s), ConfigProvider, RoutesDelegator, and documentation stub |
| `entity` | `Entity/X.php` + `Repository/XRepository.php` (skips whichever exists) |
| `repository` | the same pair, from the repository side |
| `service` | `Service/XService.php` + `Service/XServiceInterface.php` |
| `service-interface` | the same pair, from the interface side |
| `handler` | a handler in an existing module |
| `collection` | a `…Collection` (API-style projects) |
| `form` | a Form (Admin — not used in the API) |
| `input` | a single `Input/…Input.php` |
| `input-filter` | an InputFilter — prompts for `create` / `edit` / `replace` |
| `middleware` | a PSR-15 middleware |
| `command` | a CLI command |

**dot-maker detects which Dotkernel project it is running in** and generates accordingly —
collections in an API, forms and templates in Admin. That detection is also a useful
confirmation of the variant you think you are in.

## What it does *not* do — your job afterwards

1. **Register the module.** It creates the `ConfigProvider` and prints what to add, but you still
   add the entry to `config/config.php` and the PSR-4 entries to `composer.json` (which needs
   user approval).
2. **Configure authorization.** Add every new route name to this project's authorization
   config. API: `authorization.global.php`, where a missed entry denies the route. Admin:
   `authorization-guards.global.php`, where a missed entry leaves the route open to everyone.
3. **Migrations.** It tells you the command; you run
   `php ./vendor/bin/doctrine-migrations diff` (it prompts for approval), then give the user the
   `migrate` command to run — the `guard-bash.sh` hook refuses `migrate` for Claude, approval or
   not. Never hand-write a migration.
4. **Real logic.** Generated services and handlers are skeletons. Fill in validation, ownership
   checks, presentation metadata, documentation detail.
5. **Tests.** Nothing is generated under `test/`.
6. **QA.** Run the repo's `cs-fix` then `check` — generated code still has to pass phpcs and
   phpstan.

## Post-generation checklist

- [ ] `composer dump-autoload` after any new PSR-4 namespace.
- [ ] Both `ConfigProvider`s (application module and `Core`) registered in `config/config.php`.
- [ ] Handlers present under `factories` — and under `delegators` too in the API.
- [ ] Service interface aliased to the concrete service.
- [ ] Routes named per this project's dialect (`dotkernel-handler-naming`); authorization entries
      added.
- [ ] Presentation registered — HAL metadata or template path.
- [ ] Documentation completed with real request/response detail, where the project publishes it.
- [ ] Migration generated, reviewed, applied.
- [ ] QA suite green.
- [ ] Generated files are UTF-8 without BOM and LF.

## When not to use it

Editing an existing class, adding a method, or any single-file change. dot-maker creates; it does
not refactor.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.