---
title: "Lashyn Petro (@labrodev) skills · skilld"
canonical_url: "https://skilld.dev/gh/labrodev"
meta:
  description: "16 agent skills written by Lashyn Petro on skilld."
  "og:description": "16 agent skills written by Lashyn Petro."
  "og:title": "Lashyn Petro on skilld"
---

`

![Avatar for Lashyn Petro](https://skilld.dev/_img/avatar?url=https%3A%2F%2Fgithub.com%2Flabrodev.png)

# **Lashyn Petro**

[@labrodev](https://github.com/labrodev)person

Laravel Developer. Software Engineer. CTO at Well Digit.

16 skills Synced 30 days ago

[GitHub](https://github.com/labrodev) [Website](https://lshnpt.dev)

## Skills

### [labrodev/laravel-playbook](https://skilld.dev/gh/labrodev/laravel-playbook)

16 skills

`npx skilld add labrodev/laravel-playbook`

- [

  **/labrodev-action**

  Use when creating, reviewing, or refactoring write-side domain classes in a Labrodev Laravel project: Actions (e.g. BookingCreate, BookingUpdate, BookingRemove), domain Services, or {Model}Rule classes — including guard ordering, domain exceptions on failed gates, DB::transaction wrapping, and UUID assignment. Staged multi-step workflows live in labrodev-pipeline. /labrodev-action by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-action)
- [

  **/labrodev-authorization**

  Use when creating or reviewing authorization in a Labrodev Laravel project: writing a {Model}Policy class, defining permission constants, wiring #\[UsePolicy\] on a model, adding #\[Authorize\] to an invokable controller, or deciding how any endpoint checks who may view/create/update/remove a resource. /labrodev-authorization by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-authorization)
- [

  **/labrodev-controller**

  Use when creating, reviewing, or wiring HTTP controllers or routes in a Labrodev Laravel project — invokable Inertia controllers (BookingIndexController, BookingStoreController), JsonControllers under a json/ prefix, API controllers, or route files (explicit routes, {model:uuid} binding, POST /remove). /labrodev-controller by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-controller)
- [

  **/labrodev-core**

  Use when writing or reviewing ANY PHP code in a Labrodev Laravel project (Laravel 13+, PHP 8.5): creating a class of any kind, deciding which folder/namespace code belongs in, checking dependency direction between App/Layer and Core, applying final/readonly rules, or auditing code for architectural anti-patterns. This is the always-on foundation every other labrodev-\* skill assumes. /labrodev-core by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-core)
- [

  **/labrodev-data**

  Use when creating, reviewing, or naming Spatie Data classes (\*Data), UUID/collection casters (\*UuidCaster, \*CollectionCaster), or any write-side input validation in a Labrodev Laravel project — including rules(), attributes(), prepareForPipeline(), relation-via-UUID mapping, and nested Data. Also use when someone reaches for a FormRequest: Data classes are the only validation layer. /labrodev-data by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-data)
- [

  **/labrodev-enum**

  Use when creating, reviewing, or naming PHP enums in a Labrodev Laravel project (BookingStatus, ProductType, OrderState — any status/type/mode field with a finite value set), or when wiring an enum across a boundary: label() presentation helpers, Rule::enum validation in Data classes, enum casts in a model's casts(), value + \*\_label emission in Resources, or EnumMapper select/filter options in ViewModels. /labrodev-enum by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-enum)
- [

  **/labrodev-exception**

  Use when creating or reviewing any custom Exception class in a Labrodev Laravel project — deciding which folder an exception belongs in (Domain, Shared, Infrastructure, Feature, or a delivery Layer/App), naming it, or wiring the \`::make()\` static-constructor throw contract. /labrodev-exception by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-exception)
- [

  **/labrodev-inertia-react**

  Use when creating or reviewing React/Inertia frontend code in a Labrodev Laravel project — Inertia page components under resources/js/pages, typed Props interfaces, useForm form submissions, Wayfinder route usage, t()/lang/\*.json i18n wiring, flash/toast consumption, destructive-action confirmation dialogs, or in-page JSON API calls via @/lib/http. /labrodev-inertia-react by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-inertia-react)
- [

  **/labrodev-infrastructure**

  Use when integrating any external system in a Labrodev Laravel project — payment gateways, email/SMS/messenger providers, ERP or CRM APIs, webhooks, file storage, third-party SDKs — or when creating/reviewing anything under Core/Infrastructure: contracts, per-vendor adapters, resolvers, and external-data mapping. /labrodev-infrastructure by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-infrastructure)
- [

  **/labrodev-model**

  Use when creating, reviewing, or modifying Eloquent models, model Collections, Observers, or migrations in a Labrodev Laravel project — including declaring casts()/relations/$visible, wiring #\[Table\]/#\[ObservedBy\]/#\[CollectedBy\]/#\[UsePolicy\]/#\[UseFactory\] attributes, or deciding what logic belongs (or does not belong) in a model. /labrodev-model by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-model)
- [

  **/labrodev-naming**

  Use when naming anything in a Labrodev Laravel project — domains, classes (Actions, Services, Controllers, Data, Queries, Policies, Enums, ...), methods, variables — and whenever invoking an Action/Service or declaring typed parameters. Governs the class-suffix pattern table, the named-arguments callable invocation contract, and the typed-parameter mirror rule (BookingData $bookingData, never $data). /labrodev-naming by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-naming)
- [

  **/labrodev-pipeline**

  Use when a business use case is a staged workflow rather than one atomic mutation — e.g. booking creation that also creates a customer, sends mails, writes logs, and pushes data to an external CRM. Covers Pipeline step classes, the Payload flow-state object, the orchestrating Service that drives them, and where the trio lives (Core/Domain/{Domain} vs Core/Feature for cross-domain workflows). /labrodev-pipeline by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-pipeline)
- [

  **/labrodev-query**

  Use when creating, reviewing, or extending read-side query classes in a Labrodev Laravel project: Core Domain Query classes (e.g. BookingQuery) and Layer IndexQuery classes (e.g. BookingIndexQuery), or when deciding where any data-fetching code (listing, filtering, sorting, existence checks) belongs. /labrodev-query by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-query)
- [

  **/labrodev-static-analysis**

  Use when configuring, running, or fixing findings from the code-quality toolchain in a Labrodev Laravel project — Pint (pint.json, code style), PHPStan/Larastan (phpstan.neon, levels, baselines, generics errors), or Rector (rector.php, automated refactoring) — or when deciding whether a tool error may be suppressed. /labrodev-static-analysis by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-static-analysis)
- [

  **/labrodev-testing**

  Use when writing or reviewing Pest tests in a Labrodev Laravel project: Unit tests mirroring the code tree (Actions, Rules, Services, Data validation), end-to-end Feature tests through controllers, domain-state helpers in tests/Pest.php, or the mandatory Pest architecture test suite that mechanically enforces the playbook. /labrodev-testing by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-testing)
- [

  **/labrodev-viewmodel-resource**

  Use when creating, reviewing, or naming ViewModels (App/Layer/\*/ViewModels, e.g. BookingIndexViewModel, BookingShowViewModel) or Resources (App/Layer/\*/Resources, e.g. BookingIndexResource) — i.e. whenever data is shaped for an Inertia page, Blade template, or JSON payload, or when deciding which fields a model may expose to the browser. /labrodev-viewmodel-resource by labrodev](https://skilld.dev/gh/labrodev/laravel-playbook/labrodev-viewmodel-resource)

Curated skills from @labrodev. Checked GitHub just now