PHPackages                             edstevo/standards - 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. [PSR &amp; Standards](/categories/psr-standards)
4. /
5. edstevo/standards

ActiveLibrary[PSR &amp; Standards](/categories/psr-standards)

edstevo/standards
=================

Coding standards, conventions, and best practices for EdStevo Laravel projects with AI Boost integration

v1.0.52(1mo ago)0823MITBladePHP ^8.4CI failing

Since Feb 11Pushed 1mo agoCompare

[ Source](https://github.com/edstevo/standards)[ Packagist](https://packagist.org/packages/edstevo/standards)[ Docs](https://github.com/edstevo/standards)[ RSS](/packages/edstevo-standards/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (10)Dependencies (5)Versions (54)Used By (0)

EdStevo Standards
=================

[](#edstevo-standards)

A Laravel package that provides opinionated coding standards, conventions, and best practices with seamless Laravel Boost integration. This package delivers AI-powered guidelines to help maintain consistency across all EdStevo Laravel projects.

Why EdStevo Standards?
----------------------

[](#why-edstevo-standards)

When working with AI coding agents like GPT-5.5, Codex, Claude Code, or Cursor, having a consistent set of coding standards is crucial. EdStevo Standards packages these standards into a reusable Laravel package that automatically integrates with [Laravel Boost](https://github.com/laravel/boost), ensuring every project follows the same conventions.

Features
--------

[](#features)

- 🤖 **Laravel Boost Integration** - Automatically discovered by Laravel Boost
- 📐 **Project Structure Guidelines** - Domain-based organization and naming conventions
- ✨ **Code Quality Standards** - Actions, DTOs, factories, managers, specifications, services, and best practices
- 🧪 **Testing Standards** - Pest PHP patterns and coverage guidelines
- 📦 **Zero Configuration** - Install and forget
- 🔄 **Auto-updating** - Stay in sync with your coding standards
- 🧠 **GPT-5.5-aligned prompts** - Outcome-first agent guidance with explicit validation and stopping rules

Requirements
------------

[](#requirements)

- PHP 8.4+
- Laravel 11.x or 12.x
- Laravel Boost

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

[](#installation)

Install via Composer in your Laravel project:

```
composer require edstevo/protocol --dev
```

That's it! If you have Laravel Boost installed, the guidelines will be automatically discovered.

Usage with Laravel Boost
------------------------

[](#usage-with-laravel-boost)

### First Time Setup

[](#first-time-setup)

If Laravel Boost is installed in your project, run:

```
php artisan boost:install
```

The EdStevo Standards guidelines will be automatically included when Boost generates your AI configuration files. Your AI agent will now understand and follow your coding standards.

### Keeping Guidelines Updated

[](#keeping-guidelines-updated)

After updating dependencies, refresh your AI guidelines:

```
php artisan boost:update
```

Or automate it by adding to your `composer.json`:

```
{
  "scripts": {
    "post-update-cmd": [
      "@php artisan boost:update --ansi"
    ]
  }
}
```

What's Included
---------------

[](#whats-included)

EdStevo Standards provides comprehensive guidelines covering:

### Project Structure Conventions

[](#project-structure-conventions)

- **Directory Organization**: Actions, Jobs, Data/DTOs, Factories, Managers, Specifications, Enums, Services, ValueObjects
- **Naming Conventions**: Controllers, Models, Actions, Factories, Managers, Specifications, Services, Traits
- **Domain-Based Structure**: Organize by feature/domain, not by layer

Example structure the AI will understand:

```
app/
├── Actions/User/
│   ├── CreateUser.php
│   └── UpdateUserProfile.php
├── Jobs/User/
│   └── SendWelcomeEmail.php
├── Data/User/
│   └── CreateUserData.php
├── Factories/Integrations/
│   └── AccountingClientFactory.php
├── Managers/
│   └── AccountingManager.php
├── Specifications/Sales/
│   └── CanDispatchSpecification.php
├── Services/
│   └── UserService.php
└── Http/Controllers/User/
    └── UserController.php

```

### Code Style &amp; Best Practices

[](#code-style--best-practices)

- **Action Classes**: Use `lorisleiva/laravel-actions` only for synchronous one-class-one-task business actions, called via `::run()`; never use action-package dispatch helpers for queued work
- **DTOs**: Use `spatie/laravel-data` data objects with explicit typed properties for structured request, action, job, integration, import/export, and AI-readable payloads instead of raw associative arrays
- **Builder APIs**: Fluent, domain-language builders as the default for complex object, report, import, command, filter, and workflow construction
- **Factories and Managers**: Use factories for centralized object construction and managers for Laravel-style driver, provider, connection, adapter, or strategy selection
- **Specification Pattern**: Reusable side-effect-free boolean business rule and eligibility checks such as `CanDispatchSpecification`, `EligibleForRefundSpecification`, and `CanAllocateStockSpecification`
- **Strategy Pattern**: Contract-backed interchangeable algorithms selected through resolvers, factories, config maps, or container bindings for pricing, VAT, shipping, supplier selection, routing, and integration-specific flows
- **State Pattern**: Use expressive model methods backed by `spatie/laravel-model-states` for complex lifecycle workflows where valid transitions, state-specific behaviour, context, and multiple state dimensions matter
- **Service Classes**: Use only for cohesive collaborators, integration boundaries, or domain concepts; prefer explicit verb-led actions for single business operations
- **Jobs and Queues**: Use native Laravel jobs and queues for asynchronous work pushed to the Laravel queue and operated by Horizon; pass Eloquent models directly when they are the payload, avoid `Job` suffixes, and put executable work in `handle()`; if queued work needs action logic, dispatch a job that calls the action
- **Native Enums**: Type-safe backed enums for fixed values
- **Thin Controllers**: Delegate business operations to actions and use services only for cohesive collaborators
- **Query Optimization**: Eager loading, indexes, select only needed columns
- **Security**: Input validation, mass assignment protection, XSS prevention

### Testing Standards

[](#testing-standards)

- **Pest PHP**: Modern testing syntax with descriptive names
- **Test Organization**: Scenario-focused files with descriptive names, organized under the appropriate test tree
- **Coverage Guidelines**: High coverage of critical business logic
- **Database Testing**: In-memory SQLite, proper seeding, RefreshDatabase trait

Examples
--------

[](#examples)

When you ask your AI to create a new feature, it will follow these patterns:

Without Laravel Boost
---------------------

[](#without-laravel-boost)

You can manually reference the guidelines in your AI configuration:

**Claude Code (`CLAUDE.md`):**

```
@include('vendor/edstevo/protocol/resources/boost/guidelines/core.blade.php')
```

**Cursor (`.cursorrules`):**

```
Include guidelines from vendor/edstevo/protocol/resources/boost/guidelines/core.blade.php
```

Verifying Installation
----------------------

[](#verifying-installation)

Check that the protocol is active:

```
php artisan protocol:info
```

You should see:

```
EdStevo Standards is active!
AI Boost guidelines are available for this project.

```

### Overriding

[](#overriding)

To override a specific guideline, create a file with the same path structure in your project's `.ai/guidelines/` directory. Your custom version takes precedence.

Configuration
-------------

[](#configuration)

Publish the config file if you need to customize behavior:

```
php artisan vendor:publish --tag="standards-config"
```

Development
-----------

[](#development)

### Running Tests

[](#running-tests)

```
composer test
```

### Code Style

[](#code-style)

```
composer format
```

How It Works
------------

[](#how-it-works)

1. **Discovery**: Laravel Boost scans installed packages for `resources/boost/guidelines/` directories
2. **Loading**: Found guidelines are automatically included when running `boost:install` or `boost:update`
3. **Context**: AI agents receive these guidelines in their system prompts
4. **Consistency**: All code generated follows the same patterns across projects

Philosophy
----------

[](#philosophy)

This package embodies the principle that **consistency is more valuable than perfection**. By standardizing patterns across all EdStevo projects:

- **Onboarding is faster** - New team members see familiar patterns
- **AI assistance is better** - Coding agents know exactly how to structure code
- **Maintenance is easier** - Predictable structure across all projects
- **Code reviews are quicker** - Everyone follows the same conventions

Roadmap
-------

[](#roadmap)

- Add Agent Skills for specific domains
- Include Blade component patterns
- Add API documentation standards
- Database design conventions
- Queue job patterns

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for recent changes.

License
-------

[](#license)

The MIT License (MIT). See [LICENSE.md](LICENSE.md) for details.

---

Built with ❤️ by [EdStevo](https://github.com/edstevo) for consistent Laravel development.

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance90

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 54.4% 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 ~2 days

Total

53

Last Release

45d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/9676607?v=4)[Ed Stephenson](/maintainers/edstevo)[@edstevo](https://github.com/edstevo)

---

Top Contributors

[![freekmurze](https://avatars.githubusercontent.com/u/483853?v=4)](https://github.com/freekmurze "freekmurze (378 commits)")[![edstevo](https://avatars.githubusercontent.com/u/9676607?v=4)](https://github.com/edstevo "edstevo (67 commits)")[![mvdnbrk](https://avatars.githubusercontent.com/u/802681?v=4)](https://github.com/mvdnbrk "mvdnbrk (46 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (31 commits)")[![Nielsvanpach](https://avatars.githubusercontent.com/u/10651054?v=4)](https://github.com/Nielsvanpach "Nielsvanpach (23 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (20 commits)")[![pforret](https://avatars.githubusercontent.com/u/474312?v=4)](https://github.com/pforret "pforret (16 commits)")[![sebastiandedeyne](https://avatars.githubusercontent.com/u/1561079?v=4)](https://github.com/sebastiandedeyne "sebastiandedeyne (14 commits)")[![AlexVanderbist](https://avatars.githubusercontent.com/u/6287961?v=4)](https://github.com/AlexVanderbist "AlexVanderbist (12 commits)")[![riasvdv](https://avatars.githubusercontent.com/u/3626559?v=4)](https://github.com/riasvdv "riasvdv (10 commits)")[![patinthehat](https://avatars.githubusercontent.com/u/5508707?v=4)](https://github.com/patinthehat "patinthehat (10 commits)")[![crynobone](https://avatars.githubusercontent.com/u/172966?v=4)](https://github.com/crynobone "crynobone (8 commits)")[![AdrianMrn](https://avatars.githubusercontent.com/u/12762044?v=4)](https://github.com/AdrianMrn "AdrianMrn (8 commits)")[![irfanm96](https://avatars.githubusercontent.com/u/42065936?v=4)](https://github.com/irfanm96 "irfanm96 (5 commits)")[![thecaliskan](https://avatars.githubusercontent.com/u/13554944?v=4)](https://github.com/thecaliskan "thecaliskan (5 commits)")[![IGedeon](https://avatars.githubusercontent.com/u/694313?v=4)](https://github.com/IGedeon "IGedeon (4 commits)")[![abenerd](https://avatars.githubusercontent.com/u/7523903?v=4)](https://github.com/abenerd "abenerd (3 commits)")[![jessarcher](https://avatars.githubusercontent.com/u/4977161?v=4)](https://github.com/jessarcher "jessarcher (3 commits)")[![koossaayy](https://avatars.githubusercontent.com/u/6431084?v=4)](https://github.com/koossaayy "koossaayy (3 commits)")[![lloricode](https://avatars.githubusercontent.com/u/8251344?v=4)](https://github.com/lloricode "lloricode (3 commits)")

---

Tags

laravelprotocolcoding-standardsboostedstevoai-guidelines

###  Code Quality

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/edstevo-standards/health.svg)

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

###  Alternatives

[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k102.4M1.4k](/packages/spatie-laravel-permission)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.8M47](/packages/spatie-laravel-pdf)[dedoc/scramble

Automatic generation of API documentation for Laravel applications.

2.1k11.2M100](/packages/dedoc-scramble)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.3k3](/packages/defstudio-telegraph)[spatie/laravel-passkeys

Use passkeys in your Laravel app

471890.7k39](/packages/spatie-laravel-passkeys)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)

PHPackages © 2026

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