applying-brand-guidelines
This skill applies consistent corporate branding and styling to all generated documents including colors, fonts, layouts, and messaging
laravel-cashier-stripe
Laravel Cashier (Stripe) - Subscription billing and payment processing
Full skill instructions
Comprehensive assistance with Laravel Cashier (Stripe) development for subscription billing, payment processing, and Stripe integration in Laravel applications.
This skill should be triggered when:
# Install Cashier
composer require laravel/cashier
# Publish migrations and migrate
php artisan vendor:publish --tag="cashier-migrations"
php artisan migrate
# Publish config (optional)
php artisan vendor:publish --tag="cashier-config"
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
}
// Basic subscription with trial and checkout
$user->newSubscription('default', 'price_monthly')
->trialDays(5)
->allowPromotionCodes()
->checkout([
'success_url' => route('checkout.success'),
'cancel_url' => route('checkout.cancel'),
]);
// Check if user has active subscription
if ($user->subscribed('default')) {
// User is subscribed to "default" plan
}
// Check specific product subscription
if ($user->subscribedToProduct('prod_premium', 'default')) {
// User is subscribed to premium product
}
// Check trial status
if ($user->subscription('default')->onTrial()) {
// User is still in trial period
}
// Store payment method (in view with Stripe.js)
$intent = $user->createSetupIntent();
// Retrieve payment methods
$paymentMethods = $user->paymentMethods();
$defaultMethod = $user->defaultPaymentMethod();
// Add and update payment methods
$user->addPaymentMethod($paymentMethodId);
$user->updateDefaultPaymentMethod($paymentMethodId);
// Swap to different price/plan
$user->subscription('default')->swap('price_yearly');
// Swap and skip trial
$user->subscription('default')->skipTrial()->swap('price_yearly');
// One-time charge
$user->charge(1000, $paymentMethodId, [
'description' => 'One-time charge',
]);
// Create invoice for service
$user->invoiceFor('Premium Support', 5000, [
'description' => '3 months of premium support',
]);
// Refund a charge
$user->refund($chargeId);
// Cancel immediately
$user->subscription('default')->cancel();
// Cancel at end of billing period
$user->subscription('default')->cancelAtEndOfBillingPeriod();
// Resume canceled subscription
if ($user->subscription('default')->onGracePeriod()) {
$user->subscription('default')->resume();
}
// Get all invoices
$invoices = $user->invoices();
// Get upcoming invoice
$upcomingInvoice = $user->upcomingInvoice('default');
// Download invoice PDF
return $user->invoices()->first()->download();
// Redirect to Stripe billing portal
Route::get('/billing', function (Request $request) {
return $request->user()
->redirectToBillingPortal(route('dashboard'));
})->middleware(['auth']);
// Create/get Stripe customer
$stripeCustomer = $user->createOrGetStripeCustomer();
// Update customer details
$user->updateStripeCustomer([
'name' => 'Updated Name',
'email' => '[email protected]',
]);
// Manage tax IDs
$taxId = $user->createTaxId('eu_vat', 'BE0123456789');
$user->deleteTaxId('txi_belgium');
The Billable trait adds subscription and payment functionality to your Eloquent models (typically User). It provides methods for creating subscriptions, processing charges, managing payment methods, and accessing invoices.
Cashier manages recurring billing through subscriptions. Each subscription has:
Stripe payment methods represent stored payment credentials (cards, bank accounts). Cashier provides helpers to:
Stripe sends webhook events for subscription changes, payment failures, invoice updates, etc. Cashier automatically handles common webhooks, but you can extend functionality by listening to specific events.
Stripe Checkout provides a pre-built payment page. Cashier simplifies creating checkout sessions for subscriptions and one-time products, handling the complete payment flow with minimal code.
Cashier provides access to Stripe invoices for both subscriptions and one-time charges. You can retrieve, preview, and download invoices as PDFs.
This skill includes comprehensive documentation in references/:
Use view to read the reference file when you need detailed information about specific features.
Start by:
Billable trait to your User modelnewSubscription()Basic workflow:
// 1. Configure model
use Laravel\Cashier\Billable;
class User extends Authenticatable { use Billable; }
// 2. Create subscription
$user->newSubscription('default', 'price_monthly')->create();
// 3. Check status
if ($user->subscribed('default')) {
// Grant access
}
Focus on:
Explore:
references/other.md for complete implementation detailsRequired environment variables in .env:
STRIPE_KEY=pk_test_your_stripe_publishable_key
STRIPE_SECRET=sk_test_your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_signing_secret
CASHIER_CURRENCY=usd
Important: Use test mode keys (pk_test_, sk_test_) during development and switch to live keys (pk_live_, sk_live_) for production.
// 1. Create checkout session
public function subscribe(Request $request)
{
return $request->user()
->newSubscription('default', 'price_monthly')
->trialDays(14)
->allowPromotionCodes()
->checkout([
'success_url' => route('checkout.success') . '?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => route('checkout.cancel'),
]);
}
// 2. Handle success
public function success(Request $request)
{
$sessionId = $request->get('session_id');
if ($request->user()->subscribed('default')) {
return redirect()->route('dashboard')
->with('success', 'Subscription activated!');
}
}
// Upgrade to annual plan with prorated credit
public function upgrade(Request $request)
{
$subscription = $request->user()->subscription('default');
if ($subscription->active()) {
$subscription->swap('price_yearly');
return back()->with('success', 'Upgraded to annual plan!');
}
}
// Controller: Generate setup intent
public function paymentMethods(Request $request)
{
return view('billing.payment-methods', [
'intent' => $request->user()->createSetupIntent(),
'paymentMethods' => $request->user()->paymentMethods(),
]);
}
// View: Stripe.js integration (Blade)
<form id="payment-form" method="POST" action="{{ route('payment-method.add') }}">
@csrf
<div id="card-element"></div>
<button type="submit">Add Payment Method</button>
</form>
// Controller: Store payment method
public function addPaymentMethod(Request $request)
{
$request->user()->addPaymentMethod($request->payment_method);
return back()->with('success', 'Payment method added!');
}
Use Stripe test card numbers for development:
4242 4242 4242 42424000 0000 0000 00024000 0025 0000 3155Always use test mode API keys during development and testing.
This skill is based on Laravel Cashier for Laravel 12.x. For the latest information, refer to the official documentation at https://laravel.com/docs/billing.
This skill applies consistent corporate branding and styling to all generated documents including colors, fonts, layouts, and messaging
Electronic lab notebook API integration. Access notebooks, manage entries/attachments, backup notebooks, integrate with Protocols.io/Jupyter/REDCap, for programmatic ELN workflows.
Expert in React Native environment setup and configuration. Helps with Node.js, Xcode, Android Studio, watchman installation, CocoaPods, simulators, emulators, and troubleshooting setup issues. Activates for environment setup, installation issues, xcode setup, android studio, simulators, emulator...
Run Nx generators with prioritization for workspace-plugin generators. Use this when generating code, scaffolding new features, or automating repetitive tasks in the monorepo.
Implement persistent memory patterns for AI agents using AgentDB. Includes session memory, long-term storage, pattern learning, and context management. Use when building stateful agents, chat systems, or intelligent assistants.
Intelligent pattern selection for Fabric CLI. Automatically selects the right pattern from 242+ specialized prompts based on your intent - threat modeling, analysis, summarization, content creation, extraction, and more. USE WHEN processing content, analyzing data, creating summaries, threat mode...
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
This skill should be used when reviewing or editing copy to ensure adherence to Every's style guide. It provides a systematic line-by-line review process for grammar, punctuation, mechanics, and style guide compliance.
专业的比特币钱包连接技能,支持btc-connect core、react、vue包在React、Vue、Next.js、Nuxt 3项目中的完整集成,包含UniSat和OKX钱包适配、网络切换功能、SSR环境配置、统一Hook API和v0.5.0最新特性
Use when managing multiple initiatives across time horizons (now/next/later, H1/H2/H3), balancing risk vs return across portfolio, sizing and sequencing bets with dependencies, setting exit/scale criteria for experiments, allocating resources across innovation types (core/adjacent/transformationa...
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident ...
This skill should be used when working with single-cell omics data analysis using scvi-tools, including scRNA-seq, scATAC-seq, CITE-seq, spatial transcriptomics, and other single-cell modalities. Use this skill for probabilistic modeling, batch correction, dimensionality reduction, differential e...
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience