Kalimera — ASCII sunrise logo

$

Kalimera ☀️ — good morning, fresh Laravel.

One guided CLI flow from laravel new to a fully configured, quality-checked, Sail-running app.

Not a boilerplate — an installer: your stack, standardized, in minutes.

$ composer global require labrodev/kalimera
[ view on GitHub ↗ ]

THE IDEA

A boilerplate is a frozen copy — stale in a month, locked to someone else's choices. kalimera automates the initialization step instead: it prepares a fresh, current Laravel application exactly the way you want it, the same way every time.

Apply your skills with Laravel Boost? done.

Postmark set up? done.

Nightwatch pre-configured from day 1? done.

A ready-to-build project in minutes. No manual work each time — answer the questions and start developing.

WHAT IT DOES

$ kalimera new my-app

1/8

Answer everything upfront

App name, starter kit (React / Vue / Livewire / Svelte), packages, services — then one final confirm. No mid-install surprises.

2/8

Fresh Laravel app

laravel new with Pest and git, zero interaction.

3/8

Sail up with your services

Busy host ports auto-remapped, so parallel projects never clash.

4/8

Quality tools wired in

Pint, PHPStan level 8 (Larastan + IDE Helper), Rector — plus a composer quality script.

5/8

Additional packages, your catalog

Your own composer catalog, installed and published in bulk. The built-in set is the Spatie collection — swap in yours via kalimera.config.json.

6/8

Laravel Boost for your AI agents

Claude Code, Cursor, Codex, Copilot — fully unattended, your skills pulled from GitHub.

7/8

Optional extras

Postmark SDK + Core structure scaffold (Domain / Shared / Support / Feature / Infrastructure).

8/8

Finish green, commit

Migrates, npm install, formats the skeleton, baselines PHPStan so composer quality starts green — and commits.

Kalimera, my-app! ☀️ Next steps:
  $ cd my-app
  $ ./vendor/bin/sail up -d
  $ ./vendor/bin/sail composer quality

YOUR STACK, YOUR CONFIG

Every preselected answer and the whole additional-packages catalog live in one file — kalimera.config.json, auto-discovered next to where you run kalimera (or passed with --config=path). The built-in catalog is the Spatie collection; replace it with any composer packages and mark them "preselected": true so --defaults installs your stack unattended.

{
    "preselected": {
        "starterKit": "vue",
        "sailServices": ["mysql", "redis"]
    },
    "additionalPackages": [
        { "package": "spatie/laravel-data", "preselected": true },
        { "package": "your-vendor/your-package", "preselected": true }
    ]
}

One file is the team standard — every developer and every agent scaffolds the same application. Full reference in the README.

AGENT SKILL

kalimera ships an Agent Skills file — skills/laravel-kalimera/ in the repo — that turns your AI coding agent into the prompt layer: the agent asks kalimera's questions in chat, writes a config JSON, and runs the installer unattended. Its non-TTY shell never sees a prompt — and every scaffold comes out the same predictable way, whether you run kalimera yourself or your agent does.

$ ln -s ~/.composer/vendor/labrodev/kalimera/skills/laravel-kalimera ~/.claude/skills/laravel-kalimera
> /laravel-kalimera

 New Laravel app — a few choices first: name? starter kit?
  Sail services? Spatie packages? Postmark?

> crm · vue · mysql + mailpit · laravel-data, laravel-permission

 Writing crm.kalimera.json → rehearsing with --dry-run → plan looks right
  $ kalimera new crm --defaults --config=crm.kalimera.json --log

Kalimera, crm! ☀️ — Sail up, migrated, quality green, committed.

One symlink, once — the skill then applies to every session. Claude Code shown; Cursor, Codex and any skills-aware tool consume the same folder.

OPTIONS

--dry-run
print every command, execute nothing
--defaults
skip all prompts, accept the preselected answers
--continue
resume a failed run — answers replayed from .kalimera.json
--config=path
preselected answers + package catalog from a JSON config — kalimera.config.json in the CWD is picked up automatically
--log[=path]
append-only transcript of every step and command

REQUIREMENTS

PHP 8.4+ · Composer · Laravel installer · Docker · git

SEE ALSO

README TROUBLESHOOTING CHANGELOG