Skip to content
fullstack-implementation logo

Fullstack Implementation

fullstack-implementation

Implement features end-to-end in Laravel 12 + Inertia.js + React 19 + TypeScript. Use when building new features, wiring controllers to pages, or implementing CRUD operations. EXCLUSIVE to fullstack-developer agent.

SKILL.md

Full skill instructions

Fullstack Implementation

Exclusive to: fullstack-developer agent

Validation Loop (MANDATORY)

Before completing ANY implementation, run this verification sequence:

composer test           # All PHP tests pass
npm run types          # No TypeScript errors
npm run lint           # No linting errors
./​vendor/​bin/​pint      # PHP code styled

Do NOT report completion until all checks pass.

Instructions

  1. Review docs/​code-standards.md for naming conventions
  2. Check docs/​codebase-summary.md for current structure
  3. Follow patterns in docs/​system-architecture.md
  4. Implement backend first, then frontend
  5. Run verification commands before committing

Implementation Order

Backend First

  1. Route → routes/​web.php or routes/​api.php
  2. Controller → app/​Http/​Controllers/
  3. FormRequest → app/​Http/​Requests/
  4. Model → app/​Models/
  5. Policy → app/​Policies/

Frontend Second

  1. Types → resources/​js/​types/
  2. Page → resources/​js/​pages/
  3. Components → resources/​js/​components/
  4. Hooks → resources/​js/​hooks/

Laravel 12 Patterns

Controllers

// Invokable for single action
class ShowDashboardController
{
    public function __invoke(): Response
    {
        return Inertia::render('Dashboard', [...]);
    }
}

// Resource for CRUD
class PostController extends Controller
{
    public function store(StorePostRequest $request) { ... }
}

Form Requests

class StorePostRequest extends FormRequest
{
    public function authorize(): bool
    {
        return $this->user()->can('create', Post::class);
    }

    public function rules(): array
    {
        return [
            'title' => ['required', 'string', 'max:255'],
        ];
    }
}

React 19 Patterns

Inertia Form

const { data, setData, post, processing, errors } = useForm({
    title: '',
});

const submit = (e: FormEvent) => {
    e.preventDefault();
    post(route('posts.store'));
};

TypeScript Types

interface Post {
    id: number;
    title: string;
    created_at: string;
}

interface Props {
    posts: Post[];
}

Verification

composer test            # PHP tests
npm run types           # TypeScript
npm run lint            # ESLint
./​vendor/​bin/​pint       # PHP style

Instructions

  1. Read project docs for context and conventions
  2. Identify entry points (routes/​controllers/​pages)
  3. Follow patterns in docs/​code-standards.md
  4. Keep changes minimal and cohesive
  5. Add or update tests when behavior changes
  6. Update docs/​codebase-summary.md if adding new files

Examples

  • "Add a new CRUD page with validation and tests"
  • "Wire a form to a controller endpoint and handle errors"