Install
$ agentstack add skill-nasrulhazim-agent-skills-project-laravel ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Laravel Project Conventions
Enforce Kickoff's opinionated Laravel conventions and scaffold production-ready code that follows all project standards — models, enums, actions, routes, helpers, permissions, and architecture rules.
Command Reference
| Command | Description | |---|---| | /project scaffold | Scaffold a new module (model + migration + factory + seeder + policy + controller + routes + tests) | | /project model | Generate a model extending Base with correct traits and conventions | | /project enum | Generate an enum implementing Contract with InteractsWithEnum | | /project action | Generate an action class with Builder pattern | | /project helper | Generate a helper function file in support/ | | /project route | Add a modular route file in routes/web/ or routes/api/ | | /project check | Audit existing code against Kickoff conventions |
1. /project scaffold — Full Module Scaffold
Step 1: Gather Module Info
Ask the user:
- Module name (singular, e.g.,
Invoice) - Fields (name:type pairs, e.g.,
title:string,amount:decimal,status:enum) - Relationships (belongsTo, hasMany, belongsToMany)
- Needs API routes? (yes/no)
- Needs web routes? (yes/no — default yes)
Step 2: Generate Files
Create the following files in order:
- Migration — UUID PK, uuid column, timestamps, soft deletes (see
references/database-conventions.md) - Model — Extends
App\Models\Base, uses correct traits (seereferences/model-conventions.md) - Factory — Matches model fields with appropriate Faker methods (see
references/database-conventions.md) - Seeder — Uses factory with reasonable count (see
references/database-conventions.md) - Policy — Standard CRUD methods with Spatie permission checks (see
references/access-control.md) - Controller — Resource controller with policy authorization (suffix "Controller")
- Form Request — Store and Update request classes with validation rules
- Route file — Modular route in
routes/web/orroutes/api/(seereferences/route-conventions.md) - Pest tests — Feature tests for all CRUD operations (delegate to pest-testing skill patterns)
- Permission config — Add entries to
config/access-control.php(seereferences/access-control.md)
Step 3: Register
- Add seeder call to
DatabaseSeeder.php - Verify route file is in the correct directory (auto-loaded via
require_all_in()) - Add permission entries to access-control config
Output
Display a checklist of all created files with paths.
2. /project model — Model Generation
Step 1: Gather Info
Ask:
- Model name (singular PascalCase)
- Fields (for fillable array)
- Relationships (belongsTo, hasMany, morphTo, etc.)
- Traits needed (HasHashId, SoftDeletes, HasFactory, etc.)
Step 2: Generate
Follow all conventions from references/model-conventions.md:
- Extend
App\Models\Base(NEVERIlluminate\Database\Eloquent\Model) - Include
HasFactorytrait - Define
$fillablearray - Define
$castsarray for dates, enums, booleans - Add relationship methods with return types
- Add query scopes if applicable
Step 3: Generate Migration
Follow references/database-conventions.md:
$table->id()+$table->uuid('uuid')->index()- All fields from model
$table->timestamps()+$table->softDeletes()(if model uses SoftDeletes)
3. /project enum — Enum Generation
Step 1: Gather Info
Ask:
- Enum name (PascalCase, e.g.,
InvoiceStatus) - Cases (list of cases with values)
- Backing type (string or int — default string)
Step 2: Generate
Follow all conventions from references/enum-conventions.md:
- Implement
CleaniqueCoders\Traitify\Contracts\Enum - Use
CleaniqueCoders\Traitify\Concerns\InteractsWithEnumtrait - Define
label(): stringmethod - Define
description(): stringmethod - Place in
app/Enums/directory
4. /project action — Action Class Generation
Step 1: Gather Info
Ask:
- Action name (PascalCase, e.g.,
CreateInvoice) - Input parameters (what data the action needs)
- Return type (Model, bool, void, etc.)
Step 2: Generate
Follow all conventions from references/action-conventions.md:
- Place in
app/Actions/directory - Use Builder pattern with fluent setters
- Single
execute()method - Return typed result
5. /project helper — Helper Function Generation
Step 1: Gather Info
Ask:
- Function name(s)
- Purpose / description
- Parameters and return types
Step 2: Generate
Follow all conventions from references/helper-conventions.md:
- Place in
support/directory - Guard EVERY function with
if (! function_exists('name'))check - Add PHPDoc blocks
- Keep functions pure where possible
6. /project route — Modular Route File
Step 1: Gather Info
Ask:
- Route type — web or api
- Resource name (plural kebab-case)
- Controller class
- Middleware (auth, role, permission, etc.)
Step 2: Generate
Follow all conventions from references/route-conventions.md:
- Create file in
routes/web/orroutes/api/ - Use
Route::resource()or explicit route definitions - Apply middleware via
->middleware() - Follow naming conventions
7. /project check — Convention Audit
What to Check
Scan the project and report violations against all conventions:
- Models — Must extend
App\Models\Base(seereferences/model-conventions.md) - Enums — Must implement Contract, use InteractsWithEnum (see
references/enum-conventions.md) - Migrations — Must have uuid column (see
references/database-conventions.md) - Routes — Must be in modular files (see
references/route-conventions.md) - Helpers — Must have
function_exists()guard (seereferences/helper-conventions.md) - Architecture — No banned functions (see
references/architecture-rules.md) - Naming — Controllers end in "Controller", Policies end in "Policy" (see
references/architecture-rules.md) - Directory structure — Files in correct locations (see
references/project-structure.md)
Output Format
## Convention Audit Report
### ✅ Passing
- Models: 12/12 extend Base
- Enums: 5/5 implement Contract
### ❌ Violations
- app/Models/Legacy.php — extends Eloquent Model instead of Base
- app/Helpers/utils.php — missing function_exists() guard on format_currency()
### 💡 Suggestions
- Consider adding uuid column to legacy_table migration
Key Conventions Summary
These conventions MUST be followed in ALL generated code:
- Models — Always extend
App\Models\Base, neverIlluminate\Database\Eloquent\Model - Enums — Implement
CleaniqueCoders\Traitify\Contracts\Enum, useInteractsWithEnum - UUID PKs —
$table->id()+$table->uuid('uuid')->index()in every migration - Routes — Modular files in
routes/web/*.php, loaded viarequire_all_in() - Helpers — In
support/directory, guarded withfunction_exists()check - Permissions —
module.action.targetformat, config-driven viaaccess-control.php - Architecture — No
dd/dump/ray, nourl(), no rawDB::queries,env()only in config - Concerns — Traits in
app/Concerns/, must be traits - Contracts — Interfaces in
app/Contracts/, must be interfaces - Policies — In
app/Policies/, suffix "Policy", standard CRUD methods - Controllers — Suffix "Controller"
- Composer scripts —
composer test,composer format,composer analyse,composer rector - Docker — MySQL, Redis, Mailpit, Meilisearch, MinIO
Reference Files
| File | Description | |---|---| | references/model-conventions.md | Base model, UUID, traits, relationships, casts | | references/enum-conventions.md | Enum contract, InteractsWithEnum, label/description methods | | references/action-conventions.md | Builder pattern, Actions directory, execute() method | | references/route-conventions.md | Modular routes, requireallin, naming conventions | | references/helper-conventions.md | support/ directory, function_exists guard, helper patterns | | references/access-control.md | Roles, permissions, policies, middleware, config | | references/database-conventions.md | UUID PKs, migrations, seeders, factories | | references/architecture-rules.md | Banned functions, naming suffixes, strict rules | | references/project-structure.md | Directory layout, config files, Docker, stubs | | references/frontend-conventions.md | TailwindCSS v4, Alpine, Tippy, Vite |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: nasrulhazim
- Source: nasrulhazim/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.