Files
antigravity-skills-reference/docs/EXAMPLES.md
2026-01-20 05:34:07 +05:30

19 KiB

💡 Real-World Examples - See Skills in Action

Learn by example! This guide shows you real conversations using different skills.


Example 1: Designing a Feature with @brainstorming

The Scenario

You want to add a "dark mode" feature to your app, but you're not sure how to approach it.

The Conversation

You: @brainstorming I want to add dark mode to my React app

AI: Great! Let me help you think through this. First, let me check your 
    current project structure...
    
    [AI examines your files]
    
    I see you're using React with Tailwind CSS. Now, let's understand 
    your requirements:
    
    What's your primary goal for dark mode?
    a) User preference (toggle in settings)
    b) System preference (follow OS setting)
    c) Both (with manual override)

You: c) Both

AI: Perfect! That's the best user experience. Next question:
    
    Where should the dark mode toggle be located?
    a) In the main navigation
    b) In a settings page
    c) In a dropdown menu
    d) Multiple locations

You: a) In the main navigation

AI: Good choice for accessibility. One more question:
    
    Should dark mode preference persist across sessions?
    a) Yes, save to localStorage
    b) Yes, save to user account (requires backend)
    c) No, reset each session

You: a) Yes, save to localStorage

AI: Excellent! Now I have a clear picture. Let me present the design...
    
    ## Dark Mode Implementation Design
    
    ### Architecture Overview
    We'll use React Context for state management, Tailwind's dark mode
    utilities, and localStorage for persistence. The system will:
    1. Check OS preference on first visit
    2. Allow manual override via toggle
    3. Persist preference in localStorage
    
    Does this approach look good so far?

You: Yes, continue

AI: [Continues with detailed design sections...]
    
    [After design is complete]
    
    I've saved the design to docs/plans/2026-01-20-dark-mode-design.md
    
    Ready to set up for implementation?

You: Yes

AI: I'll create an isolated workspace using git worktrees and write an
    implementation plan. One moment...

What Happened

  • AI asked focused questions one at a time
  • Explored your specific context
  • Presented design in sections
  • Saved documentation
  • Prepared for implementation

Example 2: Debugging with @systematic-debugging

The Scenario

Your tests are failing, but you're not sure why.

The Conversation

You: @systematic-debugging My tests are failing with "Cannot read property 
     'map' of undefined"

AI: Let me help you debug this systematically. First, I'll gather information:
    
    1. Running the failing test to see the full error...
    
    [AI runs: npm test]
    
    I see the error occurs in UserList.test.tsx at line 45. Let me examine
    the test file and the component...
    
    [AI reads both files]
    
    ## Hypothesis
    The test is failing because `users` prop is undefined when the component
    renders. This suggests the mock data isn't being passed correctly.
    
    ## Verification
    Let me check the test setup...
    
    [AI examines test]
    
    Found it! The test is calling:
    ```typescript
    render(<UserList />)
    ```
    
    But UserList requires a `users` prop. The component expects:
    ```typescript
    interface UserListProps {
      users: User[];
    }
    ```
    
    ## Solution
    The test should pass the users prop:
    ```typescript
    const mockUsers = [
      { id: 1, name: 'Alice' },
      { id: 2, name: 'Bob' }
    ];
    
    render(<UserList users={mockUsers} />)
    ```
    
    Should I apply this fix?

You: Yes

AI: [Applies fix and runs tests]
    
    ✅ All tests passing!
    
    ## Root Cause
    The test was missing required props. This is a common issue when
    components are refactored to require props that were previously optional.
    
    ## Prevention
    Consider adding TypeScript strict mode to catch these at compile time:
    ```json
    "strict": true,
    "strictNullChecks": true
    ```
    
    Would you like me to add this to your tsconfig.json?

What Happened

  • Systematic investigation
  • Clear hypothesis
  • Verification before fixing
  • Root cause analysis
  • Prevention suggestions

Example 3: Adding Payments with @stripe-integration

The Scenario

You need to add subscription billing to your SaaS app.

The Conversation

You: @stripe-integration I need to add monthly subscription billing

AI: I'll help you implement Stripe subscriptions. Let me understand your
    requirements:
    
    Current stack detected:
    - Next.js 14 (App Router)
    - TypeScript
    - Prisma with PostgreSQL
    
    For subscription billing, we'll need:
    
    1. **Stripe Setup**
       - Stripe account and API keys
       - Webhook endpoint for events
       - Product and price IDs
    
    2. **Backend Implementation**
       - API routes for checkout
       - Webhook handler
       - Database schema for subscriptions
    
    3. **Frontend Implementation**
       - Pricing page
       - Checkout flow
       - Subscription management
    
    Let's start with the backend. First, install dependencies:
    
    ```bash
    npm install stripe @stripe/stripe-js
    ```
    
    Now, let's create the database schema...
    
    [AI provides Prisma schema]
    
    ```prisma
    model User {
      id                 String    @id @default(cuid())
      email              String    @unique
      stripeCustomerId   String?   @unique
      subscriptions      Subscription[]
    }
    
    model Subscription {
      id                 String    @id @default(cuid())
      userId             String
      user               User      @relation(fields: [userId], references: [id])
      stripeSubscriptionId String  @unique
      status             String
      priceId            String
      currentPeriodEnd   DateTime
      createdAt          DateTime  @default(now())
      updatedAt          DateTime  @updatedAt
    }
    ```
    
    Next, let's create the checkout API route...
    
    [AI provides complete implementation with:]
    - API route for creating checkout sessions
    - Webhook handler for subscription events
    - Helper functions for Stripe operations
    - Error handling and logging
    - TypeScript types
    
    Now for the frontend...
    
    [AI provides:]
    - Pricing page component
    - Checkout button component
    - Subscription status display
    - Tailwind styling
    
    Finally, let's set up the webhook:
    
    1. In Stripe Dashboard, add webhook endpoint:
       `https://yourdomain.com/api/webhooks/stripe`
    
    2. Select these events:
       - customer.subscription.created
       - customer.subscription.updated
       - customer.subscription.deleted
       - invoice.payment_succeeded
       - invoice.payment_failed
    
    3. Copy the webhook secret to your .env:
       ```
       STRIPE_WEBHOOK_SECRET=whsec_...
       ```
    
    ## Testing
    
    Test locally with Stripe CLI:
    ```bash
    stripe listen --forward-to localhost:3000/api/webhooks/stripe
    stripe trigger customer.subscription.created
    ```
    
    ## Security Checklist
    - ✅ API keys in environment variables
    - ✅ Webhook signature verification
    - ✅ Server-side price validation
    - ✅ Idempotency keys for operations
    
    Ready to test the implementation?

What Happened

  • Detected existing stack
  • Provided complete implementation
  • Included database schema
  • Added security best practices
  • Included testing instructions

Example 4: Writing Copy with @copywriting

The Scenario

You need compelling copy for your SaaS landing page.

The Conversation

You: @copywriting Write homepage copy for my project management tool

AI: I'll help you create compelling homepage copy. First, let me understand
    your product:
    
    What makes your project management tool different from competitors
    like Asana, Trello, or Monday.com?

You: It's specifically built for remote teams with built-in video standups
     and async communication features

AI: Excellent differentiator! Who is your primary target audience?
    a) Startups and small teams (2-20 people)
    b) Mid-size companies (20-200 people)
    c) Enterprise (200+ people)
    d) Freelancers and agencies

You: a) Startups and small teams

AI: Perfect. What's the main pain point you solve?

You: Remote teams waste time in unnecessary meetings and lose context
     in async communication

AI: Great! Now I have what I need. Here's your homepage copy:
    
    ---
    
    ## Hero Section
    
    **Headline:**
    Run Your Remote Team Without the Meeting Overload
    
    **Subheadline:**
    The project management tool built for distributed teams. Replace 
    status meetings with async video standups and keep everyone in sync
    without the Zoom fatigue.
    
    **CTA:**
    Start Free Trial → (No credit card required)
    
    ---
    
    ## Problem Section
    
    **Headline:**
    Remote Work Shouldn't Mean More Meetings
    
    **Body:**
    Your team is distributed across time zones. You're spending hours in
    status meetings just to stay aligned. Async updates get lost in Slack.
    Context disappears. Productivity suffers.
    
    Sound familiar?
    
    ---
    
    ## Solution Section
    
    **Headline:**
    Stay Aligned Without the Meeting Marathon
    
    **Features:**
    
    📹 **Async Video Standups**
    Record quick video updates on your schedule. Your team watches when
    it works for them. No more 9am calls for your teammate in Tokyo.
    
    💬 **Context-Rich Communication**
    Every task, comment, and decision stays connected. No more hunting
    through Slack threads or email chains.
    
    📊 **Visual Progress Tracking**
    See what's happening at a glance. Kanban boards, timelines, and
    dashboards that actually make sense.
    
    🔔 **Smart Notifications**
    Get notified about what matters. Ignore the rest. Your focus time
    is sacred.
    
    ---
    
    ## Social Proof Section
    
    **Headline:**
    Trusted by Remote Teams Worldwide
    
    [Testimonial placeholders with structure]
    
    ---
    
    ## CTA Section
    
    **Headline:**
    Ready to Reclaim Your Calendar?
    
    **Body:**
    Join 500+ remote teams who've cut meeting time by 60% while staying
    more aligned than ever.
    
    **CTA:**
    Start Your Free 14-Day Trial →
    
    No credit card required. Cancel anytime.
    
    ---
    
    ## Copy Notes
    
    **Tone:** Professional but conversational
    **Focus:** Pain point (too many meetings) → Solution (async video)
    **Differentiation:** Built specifically for remote teams
    **Social proof:** Quantified benefit (60% fewer meetings)
    
    Would you like me to:
    1. Write alternative versions for A/B testing?
    2. Create copy for specific feature pages?
    3. Write email sequences for onboarding?

What Happened

  • Asked clarifying questions
  • Identified unique value proposition
  • Created benefit-focused copy
  • Included clear CTAs
  • Provided copy notes for consistency

Example 5: Test-Driven Development with @test-driven-development

The Scenario

You need to implement a new feature: user authentication.

The Conversation

You: @test-driven-development I need to implement user login functionality

AI: Perfect! Let's use TDD to build this. Following the Red-Green-Refactor
    cycle, we'll write tests first, then implement.
    
    ## Step 1: Write the First Test (RED)
    
    Let's start with the simplest case - successful login:
    
    ```typescript
    // auth.test.ts
    import { login } from './auth';
    
    describe('login', () => {
      it('should return user data for valid credentials', async () => {
        const result = await login({
          email: 'user@example.com',
          password: 'correct-password'
        });
        
        expect(result.success).toBe(true);
        expect(result.user).toHaveProperty('id');
        expect(result.user).toHaveProperty('email');
        expect(result.token).toBeDefined();
      });
    });
    ```
    
    Let's run this test to see it fail:
    
    [AI runs: npm test]
    
    ✅ Test fails as expected (auth.ts doesn't exist yet)
    
    ## Step 2: Write Minimal Implementation (GREEN)
    
    Now let's write just enough code to make this test pass:
    
    ```typescript
    // auth.ts
    interface LoginCredentials {
      email: string;
      password: string;
    }
    
    interface LoginResult {
      success: boolean;
      user?: {
        id: string;
        email: string;
      };
      token?: string;
    }
    
    export async function login(
      credentials: LoginCredentials
    ): Promise<LoginResult> {
      // Minimal implementation to pass the test
      return {
        success: true,
        user: {
          id: '1',
          email: credentials.email
        },
        token: 'fake-token'
      };
    }
    ```
    
    [AI runs: npm test]
    
    ✅ Test passes!
    
    ## Step 3: Add Next Test (RED)
    
    Now let's test the failure case:
    
    ```typescript
    it('should return error for invalid credentials', async () => {
      const result = await login({
        email: 'user@example.com',
        password: 'wrong-password'
      });
      
      expect(result.success).toBe(false);
      expect(result.error).toBe('Invalid credentials');
      expect(result.user).toBeUndefined();
      expect(result.token).toBeUndefined();
    });
    ```
    
    [AI runs: npm test]
    
    ❌ Test fails (always returns success)
    
    ## Step 4: Implement Real Logic (GREEN)
    
    Now let's add actual authentication:
    
    ```typescript
    import bcrypt from 'bcrypt';
    import jwt from 'jsonwebtoken';
    import { db } from './db';
    
    export async function login(
      credentials: LoginCredentials
    ): Promise<LoginResult> {
      // Find user
      const user = await db.user.findUnique({
        where: { email: credentials.email }
      });
      
      if (!user) {
        return {
          success: false,
          error: 'Invalid credentials'
        };
      }
      
      // Verify password
      const validPassword = await bcrypt.compare(
        credentials.password,
        user.passwordHash
      );
      
      if (!validPassword) {
        return {
          success: false,
          error: 'Invalid credentials'
        };
      }
      
      // Generate token
      const token = jwt.sign(
        { userId: user.id },
        process.env.JWT_SECRET!,
        { expiresIn: '7d' }
      );
      
      return {
        success: true,
        user: {
          id: user.id,
          email: user.email
        },
        token
      };
    }
    ```
    
    [AI runs: npm test]
    
    ✅ All tests pass!
    
    ## Step 5: Add Edge Cases
    
    Let's add more tests for edge cases:
    
    ```typescript
    it('should handle missing email', async () => {
      const result = await login({
        email: '',
        password: 'password'
      });
      
      expect(result.success).toBe(false);
      expect(result.error).toBe('Email is required');
    });
    
    it('should handle missing password', async () => {
      const result = await login({
        email: 'user@example.com',
        password: ''
      });
      
      expect(result.success).toBe(false);
      expect(result.error).toBe('Password is required');
    });
    
    it('should handle database errors gracefully', async () => {
      // Mock database error
      jest.spyOn(db.user, 'findUnique').mockRejectedValue(
        new Error('Database connection failed')
      );
      
      const result = await login({
        email: 'user@example.com',
        password: 'password'
      });
      
      expect(result.success).toBe(false);
      expect(result.error).toBe('An error occurred');
    });
    ```
    
    [AI implements validation and error handling]
    
    ## Step 6: Refactor (REFACTOR)
    
    Now that all tests pass, let's refactor for better code quality:
    
    ```typescript
    // Extract validation
    function validateCredentials(credentials: LoginCredentials): string | null {
      if (!credentials.email) return 'Email is required';
      if (!credentials.password) return 'Password is required';
      return null;
    }
    
    // Extract user verification
    async function verifyUser(
      email: string,
      password: string
    ): Promise<User | null> {
      const user = await db.user.findUnique({ where: { email } });
      if (!user) return null;
      
      const valid = await bcrypt.compare(password, user.passwordHash);
      return valid ? user : null;
    }
    
    // Main function is now cleaner
    export async function login(
      credentials: LoginCredentials
    ): Promise<LoginResult> {
      try {
        const validationError = validateCredentials(credentials);
        if (validationError) {
          return { success: false, error: validationError };
        }
        
        const user = await verifyUser(
          credentials.email,
          credentials.password
        );
        
        if (!user) {
          return { success: false, error: 'Invalid credentials' };
        }
        
        const token = generateToken(user.id);
        
        return {
          success: true,
          user: { id: user.id, email: user.email },
          token
        };
      } catch (error) {
        console.error('Login error:', error);
        return { success: false, error: 'An error occurred' };
      }
    }
    ```
    
    [AI runs: npm test]
    
    ✅ All tests still pass after refactoring!
    
    ## Summary
    
    We've implemented login functionality using TDD:
    - ✅ 5 tests covering happy path, errors, and edge cases
    - ✅ Clean, testable code
    - ✅ Proper error handling
    - ✅ Type safety with TypeScript
    
    Next steps:
    1. Add rate limiting tests
    2. Add session management tests
    3. Add logout functionality
    
    Should I continue with these?

What Happened

  • Followed Red-Green-Refactor cycle
  • Wrote tests before implementation
  • Covered edge cases
  • Refactored with confidence
  • Maintained test coverage

Key Takeaways

What Makes These Examples Effective?

  1. Skills ask clarifying questions before jumping to solutions
  2. Skills provide context-aware help based on your project
  3. Skills follow best practices for their domain
  4. Skills include complete examples not just snippets
  5. Skills explain the "why" not just the "how"

How to Get Similar Results

  1. Be specific in your requests
  2. Provide context about your project
  3. Answer questions the skill asks
  4. Review suggestions before applying
  5. Iterate based on results

Try These Yourself!

Pick a skill and try it with your own project:

  • Planning: @brainstorming or @writing-plans
  • Development: @test-driven-development or @react-best-practices
  • Debugging: @systematic-debugging or @test-fixing
  • Integration: @stripe-integration or @firebase
  • Marketing: @copywriting or @seo-audit

Want more examples? Check individual skill folders for additional examples and use cases!