laravel:using-examples-in-prompts

📁 jpcaparas/superpowers-laravel 📅 Jan 21, 2026
24
总安装量
13
周安装量
#15189
全站排名
安装命令
npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:using-examples-in-prompts

Agent 安装分布

claude-code 11
gemini-cli 7
opencode 6
antigravity 5
windsurf 5

Skill 文档

Using Examples in Prompts

Examples clarify intent better than descriptions. Show the AI what you want, don’t just tell it.

Reference Existing Code

Abstract

“Create a service similar to the payment service”

Concrete

“Create OrderService following the pattern in app/Services/PaymentService.php:

class PaymentService
{
    public function __construct(
        private PaymentGateway $gateway,
        private PaymentRepository $repository
    ) {}
    
    public function charge(Order $order): Payment
    {
        // Implementation
    }
}

Use constructor injection, return domain objects, keep methods focused.”

Why it works: Shows structure, naming, and patterns to follow.

Show Desired Style

Vague

“Use consistent naming”

Specific

“Follow our naming conventions from app/Models/Product.php:

// Relationships: camelCase, descriptive
public function orderItems(): HasMany
public function primaryCategory(): BelongsTo

// Scopes: scope prefix, descriptive
public function scopeActive(Builder $query): void
public function scopePublishedAfter(Builder $query, Carbon $date): void

// Accessors: get prefix, Attribute suffix
public function getFormattedPriceAttribute(): string

Apply same patterns to the new Subscription model.”

Why it works: Concrete examples of the conventions in action.

Input/Output Examples

Unclear

“Transform the product data”

Clear

“Transform product data for the API:

Input (from database):

[
    'id' => 1,
    'name' => 'Widget',
    'price_cents' => 2999,
    'created_at' => '2024-01-15 10:30:00',
    'category' => ['id' => 5, 'name' => 'Tools']
]

Expected output:

{
    "id": 1,
    "name": "Widget",
    "price": "29.99",
    "category": "Tools",
    "created_at": "2024-01-15T10:30:00Z"
}

Use ProductResource to handle this transformation.”

Why it works: Shows exact input and expected output format.

Concrete vs Abstract

Abstract

“Handle errors properly”

Concrete

“Handle errors like we do in app/Services/PaymentService.php:

try {
    $charge = $this->gateway->charge($amount);
} catch (PaymentGatewayException $e) {
    Log::error('Payment failed', [
        'order_id' => $order->id,
        'amount' => $amount,
        'error' => $e->getMessage(),
    ]);
    
    throw new PaymentFailedException(
        'Unable to process payment: ' . $e->getMessage(),
        previous: $e
    );
}

Use specific exceptions, log context, preserve original exception.”

Why it works: Shows the exact error handling pattern to replicate.

Abstract

“Add tests”

Concrete

“Add tests following our pattern in tests/Feature/ProductTest.php:

test('user can create product with valid data', function () {
    $user = User::factory()->create();
    $category = Category::factory()->create();
    
    $response = $this->actingAs($user)
        ->postJson('/api/products', [
            'name' => 'New Product',
            'price' => 29.99,
            'category_id' => $category->id,
        ]);
    
    $response->assertCreated()
        ->assertJsonStructure(['data' => ['id', 'name', 'price']]);
    
    $this->assertDatabaseHas('products', [
        'name' => 'New Product',
    ]);
});

Use factories, test happy path and validation failures, check database state.”

Why it works: Shows test structure, assertions, and patterns to follow.

Document Examples

When establishing new patterns, document them:

“Create a new service pattern for external API integrations. Here’s the template:

// app/Services/External/BaseApiClient.php
abstract class BaseApiClient
{
    protected string $baseUrl;
    protected int $timeout = 30;
    protected int $retries = 3;
    
    abstract protected function authenticate(): array;
    
    protected function request(string $method, string $endpoint, array $data = []): array
    {
        // Retry logic, error handling, logging
    }
}

// app/Services/External/StripeClient.php
class StripeClient extends BaseApiClient
{
    protected string $baseUrl = 'https://api.stripe.com/v1';
    
    protected function authenticate(): array
    {
        return ['Authorization' => 'Bearer ' . config('services.stripe.secret')];
    }
    
    public function createCharge(int $amount): array
    {
        return $this->request('POST', '/charges', ['amount' => $amount]);
    }
}

Use this pattern for all external API clients. Document in docs/patterns/external-apis.md.”

Why it works: Creates a reusable pattern with documentation for future reference.

Quick Reference

Make examples work for you:

  • Show existing code – Reference actual files from your project
  • Demonstrate style – Show naming, structure, patterns in action
  • Provide input/output – Clarify transformations with concrete data
  • Use real code – Snippets from your codebase, not generic examples
  • Document patterns – Turn good examples into reusable templates

Examples > explanations. Show, don’t just tell.