Communitygithub.com

YepAPI/skills

Estado del carrito con Zustand + persistencia, variantes de producto, checkout con Stripe, gestión de inventario y ciclo de vida de pedidos.

¿Qué es skills?

Este skill para agentes de IA (como Claude Code, Cursor, Codex) proporciona una implementación completa de comercio electrónico. Maneja el estado del carrito con Zustand y persistencia en localStorage, modela variantes de producto como SKUs independientes con un producto padre compartido, integra Stripe Checkout Sessions del lado del servidor, gestiona inventario con transacciones de base de datos y define un ciclo de vida de pedidos (pendiente → pagado → enviado → entregado) actualizado mediante webhooks de Stripe. Es útil para desarrolladores que construyen tiendas online robustas y quieren evitar vulnerabilidades de seguridad (como enviar precios desde el cliente) y pérdida de datos (carrito que sobrevive al refresco). Soporta plataformas Node.js/TypeScript con React, Zustand, Stripe SDK y cualquier base de datos relacional con soporte de transacciones. Funciona proporcionando reglas claras, patrones de código y advertencias sobre prácticas a evitar, lo que permite al agente implementar rápidamente funcionalidades clave de e-commerce de forma segura y escalable.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/e-commerce

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Comercio Electrónico

Reglas

  • Estado del carrito: store de Zustand con persistencia en localStorage — sobrevive al refresco de página y al cierre de pestaña
  • Variantes de producto: modelar como SKUs separados con un producto padre compartido — cada variante tiene su propio precio, inventario e imagen
  • Checkout: Sesiones de Checkout de Stripe (del lado del servidor) — nunca enviar precios desde el cliente
  • Inventario: verificar stock del lado del servidor antes de crear la sesión de checkout — protección contra condiciones de carrera con transacciones de base de datos
  • Ciclo de vida del pedido: pending → paid → shipped → delivered — actualizar mediante eventos webhook, no mediante acciones del cliente
  • Listado de productos: filtrado/ordenamiento/paginación del lado del servidor — parámetros de búsqueda en la URL para vistas filtradas compartibles
  • Precios: almacenar en céntimos (enteros) — mostrar con Intl.NumberFormat y código de moneda
  • Operaciones del carrito: añadir, eliminar, actualizar cantidad, vaciar — validar stock en cada acción del carrito

Patrones

// Store de carrito con Zustand y persistencia
import { create } from "zustand";
import { persist } from "zustand/middleware";

interface CartItem { productId: string; variantId: string; quantity: number; price: number; }
interface CartStore {
  items: CartItem[];
  addItem: (item: CartItem) => void;
  removeItem: (variantId: string) => void;
  updateQuantity: (variantId: string, quantity: number) => void;
  clear: () => void;
  total: () => number;
}

export const useCart = create<CartStore>()(
  persist(
    (set, get) => ({
      items: [],
      addItem: (item) => set((state) => {
        const existing = state.items.find((i) => i.variantId === item.variantId);
        if (existing) {
          return { items: state.items.map((i) =>
            i.variantId === item.variantId ? { ...i, quantity: i.quantity + item.quantity } : i
          )};
        }
        return { items: [...state.items, item] };
      }),
      removeItem: (variantId) => set((s) => ({ items: s.items.filter((i) => i.variantId !== variantId) })),
      updateQuantity: (variantId, quantity) => set((s) => ({
        items: quantity <= 0
          ? s.items.filter((i) => i.variantId !== variantId)
          : s.items.map((i) => (i.variantId === variantId ? { ...i, quantity } : i)),
      })),
      clear: () => set({ items: [] }),
      total: () => get().items.reduce((sum, i) => sum + i.price * i.quantity, 0),
    }),
    { name: "cart-storage" }
  )
);

Evitar

  • Enviar precios desde el cliente para crear el checkout — resolver siempre los precios del lado del servidor desde tu base de datos
  • Almacenar el carrito solo en el estado de React — usar Zustand persistido o localStorage para que el carrito sobreviva al refresco
  • Deducir inventario al "añadir al carrito" — solo reservar stock en el checkout, liberar al expirar la sesión
  • Actualizar el estado del pedido desde el cliente — usar webhooks de Stripe para checkout.session.completed
  • Punto flotante para dinero — almacenar como enteros (céntimos), formatear solo para mostrar

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills relacionados