ASD

Pci Compliance

Implementa los requisitos de PCI DSS para el manejo seguro de datos de tarjetas y sistemas de pago. Úsalo al asegurar procesamiento de pagos o lograr el cumplimiento PCI.

Estrellas
38.8k

en todo el repo

Actividad
47

0–100, la ruta de este skill

Actualizado
hace 2 meses

último commit aquí

Commits
1

últimos 90 días

Contexto
1.9k tok

54 tok en reposo

Paquete
2 archivos

12 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill pci-compliance --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Guía la implementación de los 12 requisitos de PCI DSS para procesamiento de pagos
  • Define qué datos de tarjeta nunca deben almacenarse (CVV, PIN, track data)
  • Provee patrones de código para tokenización con Stripe y bóvedas de tokens personalizadas
  • Muestra cifrado de datos en reposo (AES-256-GCM) y en tránsito (TLS, cookies seguras)
  • Explica los niveles de cumplimiento PCI según volumen de transacciones

Úsalo cuando

  • Construir sistemas de procesamiento de pagos
  • Manejar información de tarjetas de crédito
  • Implementar flujos de pago seguros
  • Reducir el alcance de cumplimiento PCI o preparar auditorías/evaluaciones PCI

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Ayúdame a implementar tokenización de tarjetas con Stripe sin guardar datos sensibles
    • Necesito cumplir con PCI DSS para mi sistema de pagos
    • ¿Cómo cifro los datos de tarjeta en reposo correctamente?
    • Revisa qué datos de tarjeta no debo almacenar en mi base de datos

    SKILL.md

    En inglés

    PCI Compliance

    Master PCI DSS (Payment Card Industry Data Security Standard) compliance for secure payment processing and handling of cardholder data.

    When to Use This Skill

    • Building payment processing systems
    • Handling credit card information
    • Implementing secure payment flows
    • Conducting PCI compliance audits
    • Reducing PCI compliance scope
    • Implementing tokenization and encryption
    • Preparing for PCI DSS assessments

    PCI DSS Requirements (12 Core Requirements)

    Build and Maintain Secure Network

    1. Install and maintain firewall configuration
    2. Don't use vendor-supplied defaults for passwords

    Protect Cardholder Data

    1. Protect stored cardholder data
    2. Encrypt transmission of cardholder data across public networks

    Maintain Vulnerability Management

    1. Protect systems against malware
    2. Develop and maintain secure systems and applications

    Implement Strong Access Control

    1. Restrict access to cardholder data by business need-to-know
    2. Identify and authenticate access to system components
    3. Restrict physical access to cardholder data

    Monitor and Test Networks

    1. Track and monitor all access to network resources and cardholder data
    2. Regularly test security systems and processes

    Maintain Information Security Policy

    1. Maintain a policy that addresses information security

    Compliance Levels

    Level 1: > 6 million transactions/year (annual ROC required) Level 2: 1-6 million transactions/year (annual SAQ) Level 3: 20,000-1 million e-commerce transactions/year Level 4: < 20,000 e-commerce or < 1 million total transactions

    Data Minimization (Never Store)

    # NEVER STORE THESE
    PROHIBITED_DATA = {
        'full_track_data': 'Magnetic stripe data',
        'cvv': 'Card verification code/value',
        'pin': 'PIN or PIN block'
    }
    
    # CAN STORE (if encrypted)
    ALLOWED_DATA = {
        'pan': 'Primary Account Number (card number)',
        'cardholder_name': 'Name on card',
        'expiration_date': 'Card expiration',
        'service_code': 'Service code'
    }
    
    class PaymentData:
        """Safe payment data handling."""
    
        def __init__(self):
            self.prohibited_fields = ['cvv', 'cvv2', 'cvc', 'pin']
    
        def sanitize_log(self, data):
            """Remove sensitive data from logs."""
            sanitized = data.copy()
    
            # Mask PAN
            if 'card_number' in sanitized:
                card = sanitized['card_number']
                sanitized['card_number'] = f"{card[:6]}{'*' * (len(card) - 10)}{card[-4:]}"
    
            # Remove prohibited data
            for field in self.prohibited_fields:
                sanitized.pop(field, None)
    
            return sanitized
    
        def validate_no_prohibited_storage(self, data):
            """Ensure no prohibited data is being stored."""
            for field in self.prohibited_fields:
                if field in data:
                    raise SecurityError(f"Attempting to store prohibited field: {field}")
    

    Tokenization

    Using Payment Processor Tokens

    import stripe
    
    class TokenizedPayment:
        """Handle payments using tokens (no card data on server)."""
    
        @staticmethod
        def create_payment_method_token(card_details):
            """Create token from card details (client-side only)."""
            # THIS SHOULD ONLY BE DONE CLIENT-SIDE WITH STRIPE.JS
            # NEVER send card details to your server
    
            """
            // Frontend JavaScript
            const stripe = Stripe('pk_...');
    
            const {token, error} = await stripe.createToken({
                card: {
                    number: '4242424242424242',
                    exp_month: 12,
                    exp_year: 2024,
                    cvc: '123'
                }
            });
    
            // Send token.id to server (NOT card details)
            """
            pass
    
        @staticmethod
        def charge_with_token(token_id, amount):
            """Charge using token (server-side)."""
            # Your server only sees the token, never the card number
            stripe.api_key = "sk_..."
    
            charge = stripe.Charge.create(
                amount=amount,
                currency="usd",
                source=token_id,  # Token instead of card details
                description="Payment"
            )
    
            return charge
    
        @staticmethod
        def store_payment_method(customer_id, payment_method_token):
            """Store payment method as token for future use."""
            stripe.Customer.modify(
                customer_id,
                source=payment_method_token
            )
    
            # Store only customer_id and payment_method_id in your database
            # NEVER store actual card details
            return {
                'customer_id': customer_id,
                'has_payment_method': True
                # DO NOT store: card number, CVV, etc.
            }
    

    Custom Tokenization (Advanced)

    import secrets
    from cryptography.fernet import Fernet
    
    class TokenVault:
        """Secure token vault for card data (if you must store it)."""
    
        def __init__(self, encryption_key):
            self.cipher = Fernet(encryption_key)
            self.vault = {}  # In production: use encrypted database
    
        def tokenize(self, card_data):
            """Convert card data to token."""
            # Generate secure random token
            token = secrets.token_urlsafe(32)
    
            # Encrypt card data
            encrypted = self.cipher.encrypt(json.dumps(card_data).encode())
    
            # Store token -> encrypted data mapping
            self.vault[token] = encrypted
    
            return token
    
        def detokenize(self, token):
            """Retrieve card data from token."""
            encrypted = self.vault.get(token)
            if not encrypted:
                raise ValueError("Token not found")
    
            # Decrypt
            decrypted = self.cipher.decrypt(encrypted)
            return json.loads(decrypted.decode())
    
        def delete_token(self, token):
            """Remove token from vault."""
            self.vault.pop(token, None)
    

    Encryption

    Data at Rest

    from cryptography.hazmat.primitives.ciphers.aead import AESGCM
    import os
    
    class EncryptedStorage:
        """Encrypt data at rest using AES-256-GCM."""
    
        def __init__(self, encryption_key):
            """Initialize with 256-bit key."""
            self.key = encryption_key  # Must be 32 bytes
    
        def encrypt(self, plaintext):
            """Encrypt data."""
            # Generate random nonce
            nonce = os.urandom(12)
    
            # Encrypt
            aesgcm = AESGCM(self.key)
            ciphertext = aesgcm.encrypt(nonce, plaintext.encode(), None)
    
            # Return nonce + ciphertext
            return nonce + ciphertext
    
        def decrypt(self, encrypted_data):
            """Decrypt data."""
            # Extract nonce and ciphertext
            nonce = encrypted_data[:12]
            ciphertext = encrypted_data[12:]
    
            # Decrypt
            aesgcm = AESGCM(self.key)
            plaintext = aesgcm.decrypt(nonce, ciphertext, None)
    
            return plaintext.decode()
    
    # Usage
    storage = EncryptedStorage(os.urandom(32))
    encrypted_pan = storage.encrypt("4242424242424242")
    # Store encrypted_pan in database
    

    Data in Transit

    # Always use TLS 1.2 or higher
    # Flask/Django example
    app.config['SESSION_COOKIE_SECURE'] = True  # HTTPS only
    app.config['SESSION_COOKIE_HTTPONLY'] = True
    app.config['SESSION_COOKIE_SAMESITE'] = 'Strict'
    
    # Enforce HTTPS
    from flask_talisman import Talisman
    Talisman(app, force_https=True)
    

    Additional patterns and templates

    More detailed templates and worked examples live in references/details.md. Read that file for the full pattern library.

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    2 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Para más plantillas y ejemplos, consulta references/details.md.

    Detalles

    Creador
    wshobson
    Categoría
    Seguridad
    Licencia
    MIT
    Recursos incluidos
    referencias
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de wshobson/agents

    Este repo incluye 180 skills. Si instalas uno, normalmente ya tienes los demás.

    Úsalo al seleccionar y colocar iconos, imágenes, SVGs, diagramas o infografías de apoyo aprobados en un PPTX editable.

    Costo de contexto al activarse
    344 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    10 archivos
    Última actualización
    el mes pasado
    herramientas desarrollo

    Úsalo al redactar o reparar una especificación JSON con coordenadas explícitas para un PPTX editable.

    Costo de contexto al activarse
    489 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para validar o reparar un PPTX editable en cuanto a geometría, accesibilidad, editabilidad nativa, linaje de fuente e integridad del paquete OOXML.

    Costo de contexto al activarse
    409 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para analizar un PPTX de referencia en modo solo lectura: estructura, tema, tipografía, ritmo de layout, diagnósticos, catálogos de plantillas derivados o inspección segura del paquete OOXML.

    Costo de contexto al activarse
    689 tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo al preparar la narrativa, las fuentes y el contexto de diseño para un nuevo deck PPTX editable.

    Costo de contexto al activarse
    415 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Skills relacionados

    Domina las mejores prácticas de seguridad en smart contracts para prevenir vulnerabilidades comunes e implementar patrones seguros en Solidity.

    Costo de contexto al activarse
    891 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    seguridad

    Configura un gating humano para las acciones de revisión de agentes IA en Claude Code, con un rastro de aprobación auditable criptográficamente y gates aplicados con Cedar.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    seguridad

    Domina patrones de autenticación y autorización (JWT, OAuth2, sesiones, RBAC) para construir sistemas de control de acceso seguros y escalables.

    Costo de contexto al activarse
    669 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    seguridad