Ir al contenido

Agent Skills con Claude Code SKILL.md

Un archivo SKILL.md es la forma en que Claude Code entiende y ejecuta un skill. Vive en .claude/skills/<nombre-skill>/ y combina metadatos YAML en el frontmatter con instrucciones procedimentales en markdown.

  • Directorio.claude/
    • Directorioskills/
      • Directoriodns-management/
        • SKILL.md
        • Directorioreferences/
          • cloudflare-api-guide.md
        • Directorioscripts/
          • validate_record.py
  • SKILL.md — definición del skill: frontmatter + instrucciones
  • references/ — documentación de apoyo que Claude lee como contexto
  • scripts/ — scripts auxiliares que Claude puede ejecutar con Bash
---
name: dns-management
description: "Gestiona registros DNS via Cloudflare API para el dominio configurado"
allowed-tools: Bash(curl *) Bash(python *) Read
---
CampoDescripción
nameIdentificador único del skill
descriptionQué hace — Claude lo usa para decidir cuándo invocar el skill
allowed-toolsTools de Claude Code que el skill puede usar

allowed-tools restringe qué puede ejecutar Claude cuando está usando este skill. En este caso solo puede hacer curl o correr scripts Python — no puede hacer Write, Edit ni otras operaciones de filesystem.

El cuerpo del archivo son instrucciones procedimentales en markdown:

## Variables de entorno requeridas
- CLOUDFLARE_API_TOKEN
- CLOUDFLARE_ZONE_ID
- CLOUDFLARE_DOMAIN
## Flujo recomendado
Antes de crear o modificar un registro, siempre:
1. Lista los registros existentes para verificar duplicados
2. Ejecuta la operación
3. Valida que el registro resuelve correctamente
## Tipos de registro permitidos
Solo: A, CNAME, MX, TXT
No crear: NS, SOA, SRV — pueden romper la zona DNS
## Operaciones disponibles
- **Listar:** GET /zones/{zone_id}/dns_records
- **Crear:** POST /zones/{zone_id}/dns_records
- **Buscar:** GET con filtro ?name=&type=
- **Actualizar:** PUT /zones/{zone_id}/dns_records/{record_id}
- **Validar:** python scripts/validate_record.py <dominio> <ip_esperada>

Valida que un registro DNS resuelve al valor esperado. Claude lo invoca con Bash:

#!/usr/bin/env python3
"""Valida que un registro DNS resuelve al valor esperado."""
def validate(domain: str, expected_ip: str) -> bool:
import socket
resolved = socket.gethostbyname(domain)
return resolved == expected_ip
# Claude ejecuta esto internamente
python .claude/skills/dns-management/scripts/validate_record.py \
api.tudominio.com 203.0.113.50

Referencia rápida de los endpoints de Cloudflare que Claude lee como contexto cuando trabaja con el skill:

## Autenticación
Authorization: Bearer {CLOUDFLARE_API_TOKEN}
## Endpoints principales
GET /zones/{zone_id}/dns_records
POST /zones/{zone_id}/dns_records
PUT /zones/{zone_id}/dns_records/{record_id}
## Formato de respuesta
{ "result": [{ "id": "...", "type": "A", "name": "api", "content": "1.2.3.4" }] }
  1. Copia la carpeta al proyecto donde quieras usarlo:

    cp -r .claude/ /tu/proyecto/.claude/
  2. Abre Claude Code en ese directorio. Claude detectará automáticamente los skills en .claude/skills/.

  3. Invoca el skill con lenguaje natural:

    > Crea el subdominio staging.tudominio.com apuntando a 10.0.0.5
    > Lista todos los registros DNS actuales
    > Migra mail.tudominio.com a la IP 5.6.7.8
Python / ADKClaude Code (SKILL.md)
Tipo de restricciónCapa 2 — arquitectónicaCapa 1 — instrucciones
delete imposible?Sí — la función no existeNo — Claude podría hacer curl DELETE si quisiera
Requiere código PythonNo — Claude ejecuta curl directamente
Mejor paraProducción, sistemas críticosDesarrollo, tareas de infraestructura con supervisión