laravel-tdd · iserter — скилл для Claude Code: TDD на Pest PHP
Скилл ведёт агента по циклу red-green-refactor в Laravel: сначала падающий тест на Pest, потом минимальный код, потом рефакторинг.
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a claude-codeЧто делает laravel-tdd
Скилл задаёт порядок работы над любой фичей или багфиксом в Laravel: тест пишется первым, запускается и должен упасть, только после этого появляется код, достаточный для прохождения. Цикл выглядит так: RED, проверка RED, GREEN, проверка GREEN, REFACTOR. Проверка идёт через php artisan test, отдельный тест можно прогнать фильтром по имени.
Внутри — готовые шаблоны тестов под Laravel: фабрики и RefreshDatabase для работы с базой, actingAs для авторизации, assertForbidden для политик, postJson с sanctum для API. Есть чек-лист проверки: миграции, связи моделей, действия контроллеров, правила валидации, состояние базы. Рефакторинг разрешён только после зелёного теста — вынос сервисов, политики, query scopes, события.
Исключения скилл оставляет на усмотрение человека: одноразовые прототипы, конфиги, изменения только во вьюхах без логики. Для работы нужен проект на Laravel с Pest PHP.
Какие задачи решает
- написать падающий тест до кода фичи
- проверить авторизацию через политики Laravel
- протестировать API-эндпоинт с токеном sanctum
- убедиться, что миграция и модель согласованы
- вынести сложную логику в сервис после зелёного теста
Примеры запросов агенту
- напиши тест на создание поста авторизованным пользователем, потом реализуй
- добавь проверку, что пользователь не может удалить чужой пост
- покрой тестами API-эндпоинт создания поста
Как установить laravel-tdd
1Через Skills CLI (Vercel)
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a claude-code2Вручную: положить файлы
~/.claude/skills/laravel-tdd/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/laravel-tdd/
1Через Skills CLI (Vercel)
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a codex2Вручную: положить файлы
.agents/skills/laravel-tdd/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a cursor2Вручную: положить файлы
.cursor/skills/laravel-tdd/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install iSerter/laravel-claude-agents laravel-tdd2Вручную: положить файлы
.github/skills/laravel-tdd/SKILL.md1Через Skills CLI (Vercel)
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a gemini-cli2Командой платформы
gemini skills install https://github.com/iSerter/laravel-claude-agents --path skills/laravel-tddВручную: положить файлы
.devin/skills/laravel-tdd/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о laravel-tdd
Как установить laravel-tdd в Claude?
Выполните npx skills add iSerter/laravel-claude-agents --skill laravel-tdd -a claude-code. Скилл окажется в ~/.claude/skills/laravel-tdd/SKILL.md.
Что делает laravel-tdd?
Заставляет агента писать тест на Pest PHP до кода, проверять его падение, затем писать минимальную реализацию и только потом рефакторить.
Для каких платформ подходит скилл?
Кроме Claude есть установка для Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode — команда та же, меняется флаг -a.
Исходный текст
SKILL.md · MIT
---
name: laravel-tdd
description: Test-Driven Development specifically for Laravel applications using Pest PHP. Use when implementing any Laravel feature or bugfix - write the test first, watch it fail, write minimal code to pass.
---
# Test-Driven Development for Laravel
## Overview
Write the test first. Watch it fail. Write minimal code to pass.
This skill adapts TDD principles specifically for Laravel applications using Pest PHP, Laravel's testing features, and framework-specific patterns.
## When to Use
**Always for Laravel:**
- New features (controllers, models, services)
- Bug fixes
- API endpoints
- Database migrations and models
- Form validation
- Authorization policies
- Queue jobs
- Artisan commands
- Middleware
**Exceptions (ask your human partner):**
- Throwaway prototypes
- Configuration files
- View-only changes (no logic)
## The Laravel TDD Cycle
```
RED → Verify RED → GREEN → Verify GREEN → REFACTOR → Repeat
```
### RED - Write Failing Test
Write one minimal test showing what the Laravel feature should do.
**Feature Test Example:**
```php
<?php
use App\Models\User;
use App\Models\Post;
test('authenticated user can create post', function () {
$user = User::factory()->create();
$this->actingAs($user)
->post('/posts', [
'title' => 'My First Post',
'content' => 'Post content here',
])
->assertRedirect('/posts');
expect(Post::where('title', 'My First Post')->exists())->toBeTrue();
expect(Post::first()->user_id)->toBe($user->id);
});
```
### Verify RED - Watch It Fail
```bash
php artisan test --filter=authenticated_user_can_create_post
```
### GREEN - Minimal Laravel Code
Write simplest Laravel code to pass the test.
### Verify GREEN - Watch It Pass
```bash
php artisan test
```
### REFACTOR - Clean Up Laravel Code
After green only:
- Extract services for complex logic
- Create policies for authorization
- Add query scopes for reusability
- Use events for side effects
## Laravel-Specific Test Patterns
### Database Testing
```php
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
test('creates post in database', function () {
$user = User::factory()->create();
$this->actingAs($user)
->post('/posts', ['title' => 'Test', 'content' => 'Content']);
$this->assertDatabaseHas('posts', ['title' => 'Test']);
});
```
### Authorization Testing
```php
test('user cannot delete others posts', function () {
$user = User::factory()->create();
$post = Post::factory()->create();
$this->actingAs($user)
->delete("/posts/{$post->id}")
->assertForbidden();
});
```
### API Testing
```php
test('creates post via API', function () {
$user = User::factory()->create();
$this->actingAs($user, 'sanctum')
->postJson('/api/posts', ['title' => 'API Post', 'content' => 'Content'])
->assertCreated();
});
```
## Verification Checklist
- [ ] Migration test passes
- [ ] Model relationships tested
- [ ] Controller actions tested
- [ ] Validation rules tested
- [ ] Authorization tested
- [ ] Database state verified
- [ ] All tests passing
- [ ] Used RefreshDatabase
- [ ] Used factories
## Remember
```
Every Laravel feature → Test exists and failed first
Otherwise → Not TDD
```
© iSerter · MIT · iSerter/laravel-claude-agents
Похожие скиллы
Всё по теме «Тесты и QA» →Сначала — laravel-tdd от других авторов.