PHPackages                             simaocurado/axiom - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. simaocurado/axiom

ActiveLibrary[Framework](/categories/framework)

simaocurado/axiom
=================

Opinionated Laravel defaults for action-oriented architecture, strict typing, code quality, and team consistency.

1.0.2(2mo ago)3125↓89.1%[2 PRs](https://github.com/SimaoNevesCurado/Axiom/pulls)MITPHPPHP ^8.3CI passing

Since Mar 31Pushed 2mo agoCompare

[ Source](https://github.com/SimaoNevesCurado/Axiom)[ Packagist](https://packagist.org/packages/simaocurado/axiom)[ Docs](https://github.com/simaocurado/axiom)[ GitHub Sponsors]()[ RSS](/packages/simaocurado-axiom/feed)WikiDiscussions main Synced 4w ago

READMEChangelogDependencies (26)Versions (52)Used By (0)

Axiom
=====

[](#axiom)

[![Latest Version on Packagist](https://camo.githubusercontent.com/cee44bb5dcce2aef0ca9a697bfa2f3ddb7821f7fc043c261286b90dbeb1db876/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73696d616f63757261646f2f6178696f6d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/simaocurado/axiom)[![GitHub Tests Action Status](https://camo.githubusercontent.com/0845748e9b405d54c09c73a63df00d7e89502a492e17b9a02e732e6b34b05e03/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f73696d616f63757261646f2f6178696f6d2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/simaocurado/axiom/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/c2618e204585eec9dfc02585d3e74679a2d00ec3f4fab552e374daacf172bb59/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f73696d616f63757261646f2f6178696f6d2f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/simaocurado/axiom/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/e1ca300c847e7fe47129240f72e7b421dc0ba866e1fe8c74547e91e1abf3ecdc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73696d616f63757261646f2f6178696f6d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/simaocurado/axiom)

`axiom` is an opinionated package for Laravel projects that want stronger defaults from day one. It works best on freshly created Laravel projects, where conventions can be applied early with minimal friction.

It brings the same direction used in my starter kits into an existing Laravel app: actions, DTOs, enums, stricter quality tooling, AI guidelines, and a more disciplined baseline for code generation and project setup.

Current target support: Laravel 11, 12, and 13.

What It Brings
--------------

[](#what-it-brings)

- Action-oriented architecture
- DTO-first boundaries
- Final and readonly by default
- CRUD-oriented generators
- AI guidelines and modular AI skills
- Strict Laravel defaults
- Real quality presets for PHPStan, Rector, Pint, and Arch tests
- Optional project scripts and dependency presets

Installation
------------

[](#installation)

Install the package:

```
composer require simaocurado/axiom
```

Run the installer:

```
php artisan axiom:install
```

You can also run it non-interactively:

```
php artisan axiom:install \
  --ai=boost \
  --skills \
  --auth-routes=app \
  --install-auth \
  --ssr \
  --actions \
  --quality \
  --strict \
  --scripts \
  --phpstan \
  --rector \
  --pint \
  --type-coverage \
  --debug-tool=debugbar \
  --oxlint \
  --prettier \
  --concurrently \
  --ncu
```

Installer Options
-----------------

[](#installer-options)

The installer can:

- publish `AGENTS.md` or `CLAUDE.md`
- publish `.ai/skills/*.md`
- if auth scaffold already exists in the starter kit, leave auth untouched
- when no auth scaffold exists, ask whether auth scaffold should be installed
- support non-interactive auth scaffold installation with `--install-auth`
- when Fortify is installed, ask whether auth should use Fortify-managed routes or app-managed routes
- when auth scaffold is installed in app-managed mode, publish the React/Vue starter-kit backend auth stubs, routes, and matching Inertia auth pages without duplicating existing settings pages or adding frontend auth dependencies
- when Fortify-managed mode is selected, leave existing Fortify files untouched
- ask whether the project should use SSR and wire that into `composer dev`
- create `app/Actions`, `app/Dto`, and `app/Enums`
- publish `phpstan.neon`, `rector.php`, `pint.json`, and `tests/Unit/ArchTest.php`
- publish a host `App\Providers\AxiomServiceProvider`
- register that provider in `bootstrap/providers.php` when available
- add opinionated `composer` scripts
- add optional PHP tooling dependencies like PHPStan, Rector, Pint, Pest type coverage, Debugbar, and Telescope
- add optional frontend tooling dependencies like Oxlint, Prettier, concurrently, and npm-check-updates

Generated Structure
-------------------

[](#generated-structure)

When you enable architecture-related options, the installer prepares the host project with:

- `app/Actions`
- `app/Dto`
- `app/Enums`
- `.ai/architecture.md`
- `.ai/quality.md`
- `.ai/skills/actions.md`
- `.ai/skills/dto.md`
- `.ai/skills/enum.md`
- `.ai/skills/crud.md`
- `.ai/skills/quality.md`

Commands
--------

[](#commands)

- `php artisan axiom:install`
- `php artisan make:action Name`
- `php artisan make:dto Name`
- `php artisan make:enum Name`
- `php artisan make:request Name`
- `php artisan make:crud-action Model --operation=create`Creates a CRUD-oriented action for a model workflow.

### Composer Scripts

[](#composer-scripts)

- `composer setup`Prepares the project for local development.
- `composer dev`Starts the local development workflow.
- `composer lint`Runs auto-fix quality tools like Rector and Pint.
- `composer fix:rector`Applies Rector refactors.
- `composer test`Runs the full project quality and test suite.
- `composer test:type-coverage`Runs Pest type coverage.
- `composer test:unit`Runs the test suite.
- `composer test:lint`Runs lint checks without changing files.
- `composer test:rector`Runs Rector in dry-run mode.
- `composer test:types`Runs static analysis.
- `composer update:requirements`Updates project dependency constraints.
- `composer configure:app-url`Sets the local `APP_URL` based on the project directory name.

Quality Presets
---------------

[](#quality-presets)

When enabled, Axiom can publish:

- `phpstan.neon`
- `rector.php`
- `pint.json`
- `tests/Unit/ArchTest.php`

And it can prepare the host project with optional dependencies for:

- Larastan
- PHPStan
- Rector
- Pint
- Pest type coverage
- Oxlint
- Prettier
- frontend quality scripts

Published composer scripts include dedicated Rector commands:

- `composer fix:rector`
- `composer test:rector`

Strict Defaults
---------------

[](#strict-defaults)

When strict defaults are enabled, the published host provider configures:

- immutable dates with `CarbonImmutable`
- `Model::shouldBeStrict(...)`
- `Model::automaticallyEagerLoadRelationships()`

AI Guidelines And Skills
------------------------

[](#ai-guidelines-and-skills)

Axiom separates global guidance from task-focused workflows:

- guidelines: `AGENTS.md` / `CLAUDE.md`
- skills: `.ai/skills/*.md`

This makes it easier to keep project rules stable while still giving AI tools focused instructions for actions, DTOs, enums, CRUD, and quality work.

Current Scope
-------------

[](#current-scope)

This package is especially useful for fresh Laravel projects or projects that are still early enough to adopt stronger conventions without a painful migration.

It is not trying to replace Laravel. It is trying to make a Laravel app feel closer to my preferred defaults:

- reusable actions
- explicit DTOs
- thin controllers
- strict static analysis
- fail-fast feedback
- cleaner code generation

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Credits
-------

[](#credits)

- [Simão Curado](https://github.com/SimaoNevesCurado)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance87

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

47

Last Release

62d ago

Major Versions

v0.3.23 → 1.0.02026-04-29

PHP version history (2 changes)v0.1.0PHP ^8.4

1.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/b4079ea66696ee870a6a658543a157157218aca3dbf495f50c903cc36169c5b0?d=identicon)[simaocurado](/maintainers/simaocurado)

---

Top Contributors

[![SimaoNevesCurado](https://avatars.githubusercontent.com/u/111795948?v=4)](https://github.com/SimaoNevesCurado "SimaoNevesCurado (57 commits)")

---

Tags

PHPStanlaraveldtoactionsbunrectoraxiomstrict typessimaocurado

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/simaocurado-axiom/health.svg)

```
[![Health](https://phpackages.com/badges/simaocurado-axiom/health.svg)](https://phpackages.com/packages/simaocurado-axiom)
```

###  Alternatives

[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.3M43](/packages/spatie-laravel-pdf)[dedoc/scramble

Automatic generation of API documentation for Laravel applications.

2.1k9.9M94](/packages/dedoc-scramble)[spatie/laravel-health

Monitor the health of a Laravel application

87511.3M154](/packages/spatie-laravel-health)[lunarstorm/laravel-ddd

A Laravel toolkit for Domain Driven Design patterns

18676.4k](/packages/lunarstorm-laravel-ddd)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17758.9k2](/packages/stephenjude-filament-jetstream)[spatie/laravel-passkeys

Use passkeys in your Laravel app

471755.5k32](/packages/spatie-laravel-passkeys)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
