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.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: fullstack-implementation
description: |
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.
allowed-tools: Read, Edit, Bash, Grep, Glob, Write
---
# Fullstack Implementation
**Exclusive to:** `fullstack-developer` agent
## Validation Loop (MANDATORY)
Before completing ANY implementation, run this verification sequence:
```bash
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
```php
// 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
```php
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
```tsx
const { data, setData, post, processing, errors } = useForm({
title: '',
});
const submit = (e: FormEvent) => {
e.preventDefault();
post(route('posts.store'));
};
```
### TypeScript Types
```tsx
interface Post {
id: number;
title: string;
created_at: string;
}
interface Props {
posts: Post[];
}
```
## Verification
```bash
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"
No comments yet. Be the first to comment!