¿Estás cansado de repetir las mismas instrucciones a Claude Code en cada sesión? Pasos de code review, procedimientos de testing, reglas de commit — tu proyecto tiene flujos establecidos, pero explicarlos desde cero cada vez es ineficiente. Con Claude Code Skills puedes codificar estos flujos en /comandos que se ejecutan con una sola invocación. Personalmente he creado y uso varios Skills a diario, y han acelerado drásticamente mis tareas repetitivas. También recomiendo distribuirlos entre los miembros del equipo para estandarizar flujos de trabajo — y si te atascas escribiendo uno, simplemente pídele ayuda a la IA. En esta guía vas a aprender qué son los Skills, cómo escribir tu propio SKILL.md, la mecánica de auto-invocación, 5 ejemplos prácticos listos para copiar y pegar, y cómo desplegarlos en equipos y organizaciones.

📑Índice
  1. ¿Qué son los Skills? — Comandos personalizados de Claude Code
  2. Cómo escribir SKILL.md — Frontmatter e instrucciones
  3. Auto-invocación — Cómo Claude carga Skills automáticamente
  4. 5 Skills prácticos que puedes usar hoy
  5. Despliegue en equipos y organizaciones
  6. Solución de problemas — Errores comunes y soluciones
  7. Preguntas frecuentes — Skills de Claude Code
  8. Conclusión — Haz de Claude Code tu herramienta personalizada
Tema Contenido clave
¿Qué son los Skills? Comandos personalizados definidos en carpetas con SKILL.md
Archivo SKILL.md Frontmatter TOML + instrucciones en Markdown
Auto-invocación Claude carga Skills automáticamente según la descripción
Divulgación progresiva Solo se inyectan las instrucciones cuando se invoca el Skill
Ejemplos prácticos Code Review, TDD, Commit, i18n, Convenciones
Despliegue en equipos Skills de proyecto compartidos vía Git
Provisión Enterprise Políticas organizacionales con Skills obligatorios
Solución de problemas Errores comunes, debugging y mejores prácticas



¿Qué son los Skills? — Comandos personalizados de Claude Code

Los Skills son la forma nativa de Claude Code para encapsular instrucciones reutilizables. En lugar de escribir un prompt largo cada vez que quieres hacer un code review o generar un mensaje de commit, creas una carpeta con un archivo SKILL.md y Claude lo ejecuta con un simple /nombre-del-skill.

Piensa en los Skills como “funciones” para tu asistente de código: definen un comportamiento específico, aceptan argumentos y producen resultados consistentes. La gran ventaja es que se integran directamente en el flujo de trabajo de Claude Code sin necesidad de herramientas externas.

Conceptos básicos — Carpetas con SKILL.md

Un Skill es, en esencia, una carpeta que contiene un archivo SKILL.md. Esta carpeta se ubica dentro del directorio .claude/skills/ de tu proyecto o de tu configuración global. La estructura mínima es:

.claude/
  skills/
    review/
      SKILL.md        # Instrucciones del Skill
    tdd/
      SKILL.md
    commit/
      SKILL.md

Cuando escribes /review en Claude Code, el sistema busca la carpeta review/ dentro de .claude/skills/, lee el SKILL.md e inyecta las instrucciones en el contexto de la conversación. Esto se conoce como divulgación progresiva: las instrucciones solo se cargan cuando realmente las necesitas, ahorrando tokens valiosos del contexto.

Skills vs Custom Commands — Tabla comparativa

Antes de los Skills, la forma habitual de reutilizar instrucciones era a través de Custom Commands (archivos .claude/commands/*.md). Los Skills representan una evolución significativa:

Característica Custom Commands Skills
Ubicación .claude/commands/*.md .claude/skills/*/SKILL.md
Auto-invocación No — solo manual Sí — Claude puede detectar cuándo aplicar el Skill
Frontmatter No soportado TOML con description, auto_invoke, arguments, etc.
Argumentos tipados Solo $ARGUMENTS como texto libre Argumentos con nombre, tipo y valor por defecto
Divulgación progresiva No — se carga siempre Sí — solo se inyecta al invocar
Compatibilidad Claude Code v1.0+ Claude Code v1.5+

Los Custom Commands siguen funcionando y son perfectamente válidos para tareas simples. Sin embargo, si necesitas auto-invocación, argumentos estructurados o control granular sobre cuándo se cargan las instrucciones, los Skills son la opción recomendada.

Ubicación y prioridad

Los Skills pueden existir en tres niveles, y Claude los busca en este orden de prioridad:

Nivel Ruta Uso típico
Proyecto .claude/skills/ Skills compartidos con el equipo vía Git
Global (usuario) ~/.claude/skills/ Skills personales disponibles en todos los proyectos
Enterprise Provisionado por administrador Políticas y estándares de la organización

Si un Skill con el mismo nombre existe en varios niveles, el de proyecto tiene prioridad sobre el global, y el de Enterprise siempre se aplica (no puede ser anulado por el usuario).



Cómo escribir SKILL.md — Frontmatter e instrucciones

El archivo SKILL.md tiene dos secciones: un frontmatter en formato TOML (delimitado por +++) y las instrucciones en Markdown. El frontmatter define los metadatos del Skill, y las instrucciones son lo que Claude recibe cuando se invoca.

Estructura básica — Ejemplo de código

Veamos un ejemplo completo de un Skill para code review:

+++
description = "Realiza un code review siguiendo las convenciones del proyecto"
auto_invoke = "when the user asks to review code or a PR"

[arguments.target]
description = "Archivo o directorio a revisar"
required = true

[arguments.severity]
description = "Nivel de exigencia: strict | normal | lenient"
required = false
default = "normal"
+++

# Code Review Skill

Cuando se invoque este Skill, sigue estos pasos:

1. **Lee los archivos** indicados en `$target`
2. **Analiza** el código buscando:
   - Errores lógicos y bugs potenciales
   - Violaciones de estilo del proyecto (ver CLAUDE.md)
   - Problemas de rendimiento
   - Vulnerabilidades de seguridad
3. **Genera un informe** con el formato:
   - Resumen general (1-2 líneas)
   - Lista de hallazgos ordenada por severidad
   - Sugerencias de mejora con código corregido
4. **Ajusta la exigencia** según `$severity`:
   - `strict`: Reporta todo, incluyendo estilo y naming
   - `normal`: Solo errores, rendimiento y seguridad
   - `lenient`: Solo errores críticos y seguridad

Cuando escribes /review src/auth.ts --severity strict, Claude carga estas instrucciones, sustituye $target por src/auth.ts y $severity por strict, y ejecuta el flujo paso a paso.

Referencia completa del frontmatter

Estos son todos los campos disponibles en el frontmatter TOML:

Campo Tipo Requerido Descripción
description string Describe qué hace el Skill. Se muestra en la lista y se usa para auto-invocación.
auto_invoke string No Condición bajo la cual Claude invoca el Skill automáticamente.
allowed_tools array No Lista de herramientas que el Skill puede usar (por defecto: todas las disponibles).
disallowed_tools array No Herramientas que el Skill NO puede usar.
[arguments.nombre] tabla No Define un argumento con nombre que el usuario puede pasar al invocar.
arguments.*.description string Sí* Descripción del argumento (requerido si defines el argumento).
arguments.*.required bool No Si es true, Claude pedirá el valor si no se proporciona.
arguments.*.default string No Valor por defecto si el usuario no lo especifica.
intercept_tool string No Intercepta llamadas a una herramienta específica para aplicar reglas adicionales.

Consejos para instrucciones efectivas

Las instrucciones dentro del SKILL.md son lo que realmente define el comportamiento del Skill. Aquí van las mejores prácticas:

🎯 Regla de oro — Máximo 500 tokens

Las instrucciones de un Skill deben ser concisas. El límite recomendado es de 500 tokens (aproximadamente 375 palabras). Si necesitas más, considera dividir el Skill en varios Skills más pequeños que se complementen entre sí. Recuerda que cada token consumido por las instrucciones del Skill reduce el contexto disponible para la conversación.

  • Usa listas numeradas — Los pasos secuenciales son más fáciles de seguir para Claude que los párrafos largos.
  • Sé específico con los formatos de salida — Si quieres que el resultado tenga un formato determinado (tabla, lista, código), indícalo explícitamente.
  • Referencia archivos del proyecto — Puedes decir “Lee las reglas de estilo en CLAUDE.md” para que Claude consulte configuraciones existentes.
  • Define criterios de éxito — “El review está completo cuando has verificado los 5 puntos” es mejor que “revisa bien el código”.
  • Incluye ejemplos — Si el formato de salida es complejo, incluye un ejemplo concreto en las instrucciones.



Auto-invocación — Cómo Claude carga Skills automáticamente

Una de las características más potentes de los Skills es la auto-invocación. En lugar de que tú escribas /nombre-del-skill, Claude detecta automáticamente cuándo una tarea coincide con la descripción de un Skill y lo carga sin que se lo pidas.

Divulgación progresiva

La divulgación progresiva es el mecanismo que hace posible la auto-invocación eficiente. Funciona así:

  1. Inicio de sesión: Claude recibe solo la lista de Skills disponibles con sus description (pocos tokens).
  2. Detección: Cuando el usuario hace una petición, Claude compara con las descripciones disponibles.
  3. Carga: Si hay coincidencia, Claude carga las instrucciones completas del Skill (inyección en contexto).
  4. Ejecución: Claude sigue las instrucciones del Skill para completar la tarea.

Esto significa que puedes tener 50 Skills definidos sin que consuman tokens hasta que realmente se necesiten. Solo las descripciones breves están siempre en contexto.

Control de auto-invocación

El campo auto_invoke en el frontmatter controla cuándo Claude activa el Skill automáticamente. Hay tres patrones principales:

Patrón Valor de auto_invoke Comportamiento
Solo manual Omitido o "never" El Skill solo se ejecuta cuando el usuario escribe /nombre explícitamente.
Condicional "when the user asks to..." Claude carga el Skill cuando la petición del usuario coincide con la condición descrita.
Siempre "always" El Skill se carga en cada mensaje. Útil para convenciones de fondo que siempre aplican.

Presupuesto de description y problemas comunes

La description es crítica para la auto-invocación: es lo que Claude lee para decidir si debe cargar el Skill. Ten en cuenta estos puntos:

  • Mantenla breve pero descriptiva — Ideal: 1-2 oraciones. Las descripciones muy largas desperdician tokens que siempre están en contexto.
  • Usa palabras clave claras — Si el Skill es para “code review”, incluye exactamente esas palabras en la descripción.
  • Evita solapamiento — Si dos Skills tienen descripciones similares, Claude puede confundirse sobre cuál cargar. Diferencia claramente el alcance de cada uno.
  • Problema común: Skill no se auto-invoca — Generalmente es porque la description no coincide con las palabras que usa el usuario. Revisa que el lenguaje sea natural y coincida con cómo la gente realmente pide esa tarea.
  • Problema común: Skill se invoca cuando no debería — La description es demasiado genérica. Añade restricciones específicas en auto_invoke.



5 Skills prácticos que puedes usar hoy

A continuación te presento cinco Skills listos para copiar, adaptar y usar en tus proyectos. Cada uno resuelve un problema real de flujo de trabajo.

① /review — Code Review automático

Revisa código buscando bugs, problemas de rendimiento, vulnerabilidades de seguridad y violaciones de estilo. Genera un informe estructurado con severidad y sugerencias de corrección. Acepta un argumento de exigencia (strict/normal/lenient) para ajustar el nivel de detalle.

② /tdd — Flujo de Test-Driven Development

Implementa el ciclo Red-Green-Refactor: primero escribe tests que fallen, luego el código mínimo para pasarlos, y finalmente refactoriza. Soporta Jest, Vitest, pytest y Go testing. El Skill verifica que los tests realmente fallen antes de escribir implementación.

③ /commit — Mensajes de commit estandarizados

Analiza los cambios en staging, genera un mensaje de commit siguiendo Conventional Commits (feat/fix/refactor/docs/test), incluye el scope automáticamente según los archivos modificados y añade un cuerpo descriptivo cuando los cambios son complejos.

④ /translate — Traducción i18n con contexto

Extrae strings del código, genera archivos de traducción (JSON/YAML) para los idiomas especificados y reemplaza los strings originales por claves i18n. Respeta el contexto para traducciones naturales, no literales. Soporta pluralización e interpolación de variables.

⑤ Convenciones de fondo — Auto-aplicado

Un Skill con auto_invoke = "always" que aplica las convenciones del proyecto en todo momento: naming, estructura de archivos, manejo de errores y patrones de logging. No necesita invocación manual — está siempre activo como guardia de estilo.

Veamos el código completo de cada uno:

① /review — Code Review

+++
description = "Realiza code review buscando bugs, rendimiento y seguridad"
auto_invoke = "when the user asks to review code, a PR, or a diff"

[arguments.target]
description = "Archivo, directorio o rango de diff a revisar"
required = true

[arguments.severity]
description = "strict | normal | lenient"
required = false
default = "normal"
+++

# Code Review

1. Lee los archivos o diff en `$target`
2. Revisa según nivel `$severity`:
   - **strict**: bugs, rendimiento, seguridad, estilo, naming, docs
   - **normal**: bugs, rendimiento, seguridad
   - **lenient**: solo bugs críticos y seguridad
3. Para cada hallazgo reporta:
   - Archivo y línea
   - Severidad: CRITICAL / WARNING / INFO
   - Descripción del problema
   - Código corregido (si aplica)
4. Genera un resumen final con métricas

② /tdd — Test-Driven Development

+++
description = "Implementa funcionalidad usando TDD: Red-Green-Refactor"
auto_invoke = "when the user asks to implement something with TDD or test-first"

[arguments.feature]
description = "Descripción de la funcionalidad a implementar"
required = true

[arguments.framework]
description = "jest | vitest | pytest | go"
required = false
default = "jest"
+++

# TDD Workflow

1. **RED** — Escribe tests que fallen:
   - Crea el archivo de test siguiendo convenciones del proyecto
   - Escribe tests que cubran el caso normal, edge cases y errores
   - Ejecuta los tests y verifica que FALLEN

2. **GREEN** — Implementación mínima:
   - Escribe el código mínimo para pasar los tests
   - NO añadas funcionalidad extra
   - Ejecuta los tests y verifica que PASEN

3. **REFACTOR** — Mejora el código:
   - Elimina duplicación, mejora naming, simplifica lógica
   - Ejecuta los tests después de cada cambio
   - Los tests deben seguir pasando

③ /commit — Mensajes de commit

+++
description = "Genera un mensaje de commit siguiendo Conventional Commits"
auto_invoke = "when the user asks to commit or create a commit message"
+++

# Commit Message Generator

1. Ejecuta `git diff --cached` para ver cambios en staging
2. Si no hay cambios en staging, ejecuta `git diff` y pregunta qué archivos incluir
3. Analiza los cambios y determina:
   - **Tipo**: feat / fix / refactor / docs / test / chore / perf
   - **Scope**: basado en los directorios/módulos modificados
   - **Breaking change**: si hay cambios incompatibles
4. Genera el mensaje con formato:
   ```
   tipo(scope): descripción concisa (imperativo, <72 chars)

   Cuerpo explicativo si los cambios son complejos.

   BREAKING CHANGE: si aplica
   ```
5. Muestra el mensaje al usuario para confirmación antes de ejecutar `git commit`

④ /translate — Traducción i18n

+++
description = "Extrae strings y genera archivos de traducción i18n"
auto_invoke = "when the user asks to translate, internationalize, or add i18n"

[arguments.target]
description = "Archivo o directorio con strings a extraer"
required = true

[arguments.langs]
description = "Idiomas destino separados por coma (ej: en,es,fr)"
required = true
+++

# i18n Translation

1. Lee los archivos en `$target`
2. Identifica strings visibles al usuario (UI, mensajes, errores)
3. Genera claves i18n descriptivas (ej: `auth.login.button_label`)
4. Crea/actualiza archivos de traducción para cada idioma en `$langs`:
   - Traducciones naturales, NO literales
   - Respeta pluralización del idioma destino
   - Mantiene interpolación de variables ({name}, {{count}}, etc.)
5. Reemplaza strings originales por llamadas a t() / i18n()
6. Muestra resumen de strings extraídos y archivos modificados

⑤ Convenciones de fondo — Auto-aplicado

+++
description = "Aplica las convenciones del proyecto a todo el código generado"
auto_invoke = "always"
+++

# Convenciones del Proyecto

Al generar o modificar código, aplica SIEMPRE estas reglas:

- **Naming**: camelCase para variables/funciones, PascalCase para clases/tipos
- **Errores**: Nunca silenciar errores. Usa Result/Either para errores esperados, throw para inesperados
- **Imports**: Orden: stdlib > terceros > internos. Sin imports circulares
- **Logging**: Usa el logger del proyecto (no console.log). Niveles: debug/info/warn/error
- **Archivos**: Máx 300 líneas por archivo. Si excede, proponer separación
- **Tests**: Todo código nuevo debe tener tests. Mínimo: caso feliz + caso de error



Despliegue en equipos y organizaciones

Los Skills son especialmente valiosos cuando se comparten con todo un equipo. En lugar de que cada desarrollador configure sus propias instrucciones, puedes estandarizar los flujos de trabajo de todo el equipo con Skills en el repositorio.

Skills de proyecto — Compartidos vía Git

La forma más sencilla de compartir Skills es incluir la carpeta .claude/skills/ en el repositorio del proyecto:

# Estructura recomendada para equipos
.claude/
  CLAUDE.md              # Instrucciones generales del proyecto
  skills/
    review/
      SKILL.md           # Code review con estándares del equipo
    commit/
      SKILL.md           # Formato de commits del equipo
    deploy-check/
      SKILL.md           # Checklist pre-despliegue
    onboarding/
      SKILL.md           # Guía para nuevos miembros

Ventajas de este enfoque:

  • Los Skills se versionan junto con el código
  • Los cambios se revisan en PR como cualquier otro código
  • Nuevos miembros del equipo obtienen los Skills automáticamente al clonar
  • Puedes tener Skills distintos por rama (ej: rama de release con Skills de verificación)

Provisión Enterprise

Para organizaciones grandes, la provisión Enterprise permite distribuir Skills obligatorios a todos los desarrolladores. Estos Skills se aplican automáticamente y no pueden ser desactivados por los usuarios individuales.

Casos de uso típicos de Skills Enterprise:

  • Políticas de seguridad — Verificar que no se incluyan secretos en el código
  • Cumplimiento regulatorio — Asegurar que el código cumple normativas (GDPR, HIPAA, etc.)
  • Estándares de arquitectura — Forzar patrones aprobados por el equipo de arquitectura
  • Logging y observabilidad — Asegurar que todo código incluye instrumentación adecuada

Consideraciones de seguridad

⚠️ Seguridad al compartir Skills

  • Revisa los Skills de terceros antes de usarlos — Un Skill malicioso podría instruir a Claude a ejecutar comandos dañinos o exfiltrar código.
  • No incluyas secretos en SKILL.md — Los Skills se almacenan en texto plano. Usa variables de entorno o gestores de secretos.
  • Limita las herramientas disponibles — Usa allowed_tools o disallowed_tools para restringir lo que un Skill puede hacer.
  • Audita los Skills Enterprise periódicamente — Asegúrate de que siguen siendo relevantes y no tienen instrucciones obsoletas.
  • Cuidado con auto_invoke = "always" — Los Skills siempre activos consumen tokens en cada mensaje. Úsalos solo cuando realmente sea necesario.



Solución de problemas — Errores comunes y soluciones

Estos son los tres problemas más frecuentes al trabajar con Skills y cómo resolverlos:

🛠️ Problema 1 — El Skill no aparece en la lista

Síntomas: Escribes /nombre y Claude no lo reconoce, o no aparece al escribir /.

Causas comunes:

  • El archivo se llama skill.md en minúsculas — debe ser SKILL.md (mayúsculas).
  • La carpeta no está dentro de .claude/skills/.
  • El frontmatter tiene errores de sintaxis TOML (falta cerrar comillas, coma extra, etc.).
  • Falta el campo description obligatorio.

Solución: Verifica el nombre del archivo, la ubicación y valida el TOML con un linter online.

🛠️ Problema 2 — Auto-invocación no funciona

Síntomas: Pides “revisa este código” pero Claude no carga el Skill de review.

Causas comunes:

  • La description no contiene las palabras clave que el usuario usa naturalmente.
  • El campo auto_invoke no está definido o está configurado como "never".
  • Otro Skill con descripción similar está compitiendo y ganando prioridad.

Solución: Ajusta la description para que coincida con el lenguaje natural que usa tu equipo. Añade sinónimos si es necesario.

🛠️ Problema 3 — El Skill produce resultados inconsistentes

Síntomas: A veces el Skill funciona bien, pero otras veces produce salidas inesperadas o se salta pasos.

Causas comunes:

  • Las instrucciones son ambiguas — Claude las interpreta de forma diferente según el contexto.
  • Las instrucciones son demasiado largas y se truncan o pierden peso en el contexto.
  • Faltan criterios de éxito claros — Claude no sabe cuándo ha terminado.

Solución: Usa listas numeradas explícitas, define el formato de salida esperado y añade una condición de finalización (“El review está completo cuando…”).



Preguntas frecuentes — Skills de Claude Code

&iquest;Cu&aacute;ntos Skills puedo tener en un proyecto?
No hay un límite estricto en el número de Skills. Sin embargo, ten en cuenta que las descripciones de todos los Skills siempre están en contexto. Con más de 20-30 Skills, el consumo de tokens de las descripciones puede ser significativo. La recomendación práctica es mantener entre 5 y 15 Skills bien enfocados.
&iquest;Puedo usar un Skill dentro de otro Skill?
Sí, puedes referenciar otros Skills en las instrucciones. Por ejemplo, tu Skill de /deploy puede incluir “Primero ejecuta /review y luego /commit”. Claude cargará cada Skill cuando lo necesite gracias a la divulgación progresiva.
&iquest;Qu&eacute; pasa si un Skill de proyecto y uno global tienen el mismo nombre?
El Skill de proyecto tiene prioridad. Claude usará el que está en .claude/skills/ del repositorio actual en lugar del de ~/.claude/skills/. Esto te permite personalizar Skills globales para proyectos específicos.
&iquest;Puedo pasar archivos como argumentos a un Skill?
Sí. Los argumentos son texto libre, así que puedes pasar rutas de archivos, URLs o cualquier string. El Skill recibe el valor y puede usarlo con las herramientas de Claude Code (Read, Grep, Bash, etc.) para operar sobre esos archivos.
&iquest;Los Skills funcionan en Claude Code en modo headless / CI?
Sí. Los Skills se cargan de la misma forma en modo interactivo y en modo headless (claude -p "mensaje"). Esto los hace ideales para pipelines de CI/CD donde puedes invocar Skills de verificación automáticamente.
&iquest;Cu&aacute;l es la diferencia entre allowed_tools y disallowed_tools?
allowed_tools es una lista blanca: solo las herramientas listadas estarán disponibles. disallowed_tools es una lista negra: todas las herramientas están disponibles excepto las listadas. No debes usar ambos campos a la vez. Usa allowed_tools cuando quieras un Skill restringido (ej: solo lectura) y disallowed_tools cuando quieras bloquear algo específico (ej: no Bash).
&iquest;C&oacute;mo depuro un Skill que no funciona como espero?
Tres técnicas de depuración:

Conclusión — Haz de Claude Code tu herramienta personalizada

Los Skills transforman a Claude Code de un asistente genérico a una herramienta adaptada a tu forma de trabajar. Cada vez que te descubras repitiendo las mismas instrucciones, es una señal de que necesitas un Skill.

Empieza con algo sencillo: un Skill de commit o de review que siga las convenciones de tu equipo. Una vez que veas el impacto en tu productividad, irás naturalmente ampliando tu colección. La divulgación progresiva garantiza que no pagarás un precio en tokens por Skills que no estés usando en ese momento.

Y recuerda: los Skills se versionan con Git. Comparte los que funcionan con tu equipo, itera sobre ellos en PR, y construye un repositorio de conocimiento operativo que mejora con cada iteración.

Yo empecé con un solo Skill y ahora uso varios a diario. Deja de repetir instrucciones, crea un Skill y deja que Claude trabaje por ti.

El primer paso es crear .claude/skills/ en tu proyecto y escribir tu primer SKILL.md. En 5 minutos tendrás un flujo de trabajo codificado que puedes invocar para siempre.

Artículos relacionados que te pueden interesar:

krona23

Autor

krona23

Más de 20 años en la industria IT, ocupando cargos de Director de División y CTO en múltiples empresas con servicios web a gran escala en Japón. Experiencia en desarrollo Windows, iOS, Android y web. Actualmente enfocado en la transformación AI-native. En DevGENT, comparte guías prácticas sobre editores de código con IA, herramientas de automatización y LLMs en tres idiomas.

DevGENT sobre nosotros →

Deja un comentario

Trending

Descubre más desde DevGENT

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo