Alpha018/alpha-skills

Automatización de homelab empaquetada como habilidades de agente para skills.sh, más los servidores MCP construidos sobre ellas.

¿Qué es alpha-skills?

Este conjunto de habilidades proporciona acceso automatizado a la API REST de NextDNS, permitiendo a un agente de IA (como Claude Code, Cursor o Codex) gestionar perfiles DNS, listas de bloqueo y permitidos, ajustes de seguridad y privacidad, y analíticas. Está diseñado para automatizar tareas comunes de homelab como aprovisionamiento como código, gestión masiva de listas, conmutaciones programadas, monitoreo y alertas. La habilidad incluye referencias detalladas de la API, esquemas JSON y una especificación OpenAPI 3.0 para garantizar que las llamadas sean precisas. Soporta operaciones CRUD sobre perfiles, denylist/allowlist, seguridad, privacidad, control parental, ajustes y analíticas, así como la transmisión y descarga de registros de consultas DNS. Es útil para administradores de redes que quieran versionar la configuración de NextDNS, auditar cambios o gestionar múltiples perfiles desde un solo punto.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add Alpha018/alpha-skills

Installed? Explore more Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

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

Documentación

API de NextDNS

Resumen

NextDNS expone una API REST para todo lo configurable en su panel de control: conmutadores de seguridad/privacidad/control parental por perfil, listas de denegación/permitidos, ajustes de registro, analíticas y registros de consultas DNS sin procesar. No existe un SDK oficial — todo es HTTPS + JSON plano, por lo que esto es territorio natural de curl/script/cliente HTTP en cualquier lenguaje o herramienta que esté utilizando el llamante.

  • URL base: https://api.nextdns.io
  • Autenticación: cabecera X-Api-Key: <clave> (clave en https://my.nextdns.io/account)
  • Todos los recursos están limitados a un perfil: /profiles/:profile/...
  • Éxito: {"data": ..., "meta": {...}}. Errores: {"errors": [{"code", "detail", "source"}]}

Qué puedes construir con esta API

Todo lo que el panel de control de NextDNS puede hacer es accesible aquí, lo que abre algunas categorías recurrentes de tareas:

  • Aprovisionamiento/configuración como código — crea un perfil y envía su configuración completa de seguridad/privacidad/controlParental/ajustes desde un archivo JSON/YAML, de modo que un perfil DNS pueda tener control de versiones y reproducirse en lugar de configurarse manualmente.
  • Gestión masiva de listas — sincroniza una lista de denegación o permitidos desde una fuente externa (una lista de bloqueo mantenida, un CSV, la exportación de otro sistema) a través de los endpoints PUT de reemplazo completo o POST/PATCH/DELETE por entrada.
  • Conmutaciones programadas/condicionales — activa o desactiva ajustes según un horario o desencadenante, por ejemplo, habilitar categorías de parentalControl más estrictas durante ciertas horas, o alternar indicadores de settings.web3/security.* basados en eventos externos.
  • Monitoreo y alertas — consulta analytics/* (estado, dominios/dispositivos bloqueados principales, razones) para construir paneles o alertas, por ejemplo, notificar cuando el volumen de consultas bloqueadas aumenta o un nuevo dispositivo comienza a generar tráfico. Las variantes de series temporales ;series facilitan la representación gráfica.
  • Seguimiento y exportación de registros — usa /logs/stream (SSE) para una cola de consultas en vivo en un terminal o canalización de registros, o /logs/download para extraer una exportación completa para análisis/archivado sin conexión.
  • Auditorías/verificaciones de cumplimiento — periódicamente haz GET de la configuración completa de un perfil y compárala con una línea base esperada para detectar desviaciones (por ejemplo, un conmutador de seguridad que alguien desactivó en el panel de control).
  • Flotas multiperfil — las mismas operaciones contra muchos ID de :profile, para cualquier persona que gestione NextDNS para varias redes/hogares/sitios desde un solo lugar.

Cuándo usar

  • Leer o escribir entradas de listas de denegación/permitidos, conmutadores de seguridad/privacidad, servicios/categorías de control parental o ajustes de todo el perfil.
  • Extraer analíticas (dominios principales, dispositivos, protocolos, razones de bloqueo, geo) o registros de consultas sin procesar/transmitidos, incluyendo desgloses de series temporales.
  • Construir o depurar cualquier script/automatización que hable con api.nextdns.io: curl, una herramienta de gestión de configuración, un trabajo cron, un panel, un bot de chat/CLI.
  • Verificar que la referencia incluida en esta habilidad sigue siendo precisa según la documentación en vivo antes de confiar en ella para algo importante.

Referencia rápida

ÁreaRuta baseOperaciones clave
Perfil/profiles/:profileGET, PATCH (parcial), DELETE; POST /profiles para crear
Seguridad/profiles/:profile/securityconmutadores + lista de tlds
Privacidad/profiles/:profile/privacyblocklists, natives, conmutadores
Control Parental/profiles/:profile/parentalControlservices, categories (admite PUT de reemplazo completo), conmutadores de búsqueda segura
Lista de denegación / Permitidos/profiles/:profile/denylist | /allowlistGET/PUT/POST/PATCH/DELETE, entradas {id, active}
Ajustes/profiles/:profile/settingslogs, blockPage, performance, web3
Analíticas/profiles/:profile/analytics/<dimensión>estado, dominios, razones, ips, dispositivos, protocolos, tiposDe Consulta, ipVersions, dnssec, encryption, destinations; agrega ;series para intervalos de tiempo
Registros/profiles/:profile/logslistar, /stream (SSE), /download, DELETE para limpiar

Las tablas de parámetros completas, cada esquema JSON y cada respuesta de ejemplo están en references/api-reference.md — léelo antes de escribir cualquier llamada no trivial (cualquier cosa más allá de un solo GET) para acertar con los nombres de campos, enumeraciones y valores predeterminados en el primer intento, en lugar de adivinar y hacer viajes de ida y vuelta contra la API en vivo.

Un archivo references/openapi.yaml legible por máquina (OpenAPI 3.0, con ejemplos de respuesta extraídos de api-reference.md) refleja los mismos endpoints — úsalo si estás generando un cliente, alimentándolo a una herramienta de generación de código o deseas una superficie de diff estructurada. Para una versión navegable por humanos, abre references/openapi.html (una página Redoc estática prerenderizada a partir de la especificación — agrupada por etiqueta, con búsqueda y los ejemplos en línea) en lugar de leer el YAML sin procesar.

Patrones comunes

Ejemplo con curl (listar lista de denegación):

curl -sH "X-Api-Key: $NEXTDNS_API_KEY" \
  "https://api.nextdns.io/profiles/$PROFILE_ID/denylist"

Añadir un dominio a la lista de denegación:

curl -sH "X-Api-Key: $NEXTDNS_API_KEY" -H "Content-Type: application/json" \
  -X POST "https://api.nextdns.io/profiles/$PROFILE_ID/denylist" \
  -d '{"id": "badsite.com", "active": true}'

Activar un ajuste de seguridad:

curl -sH "X-Api-Key: $NEXTDNS_API_KEY" -H "Content-Type: application/json" \
  -X PATCH "https://api.nextdns.io/profiles/$PROFILE_ID/security" \
  -d '{"cryptojacking": true}'

Prefiere PATCH en un sub-recurso limitado (por ejemplo, /security, /settings/logs) sobre PATCH en todo el perfil cuando solo cambia un área; es más difícil sobrescribir accidentalmente campos no relacionados.

Para paginación (analytics/*, logs), extrae meta.pagination.cursor de la respuesta y pásalo de vuelta como ?cursor=... en la siguiente solicitud; un cursor null/ausente significa la última página. Las reglas completas de formato de fecha y series temporales (;series, interval, alignment, timezone) están en references/api-reference.md#time-series.

Manteniendo la referencia actualizada

No hay un archivo OpenAPI ascendente con el que comparar — la documentación de NextDNS en https://nextdns.github.io/api/ es HTML escrito a mano. Si se te pide verificar actualizaciones de la API, o antes de depender de esta habilidad para algo de alto riesgo, obtén esa página y compárala con references/api-reference.md y references/openapi.yaml; actualiza ambos si algo ha cambiado (las nuevas dimensiones de analíticas y los nuevos conmutadores de ajustes/seguridad/privacidad son los campos que han cambiado históricamente). Consulta la sección "Manteniendo esto actualizado" al final de references/api-reference.md para el procedimiento completo.

Después de editar references/openapi.yaml, ejecuta scripts/render-docs.sh — que verifica la especificación (detecta errores de YAML/esquema antes de que lleguen al lector) y regenera references/openapi.html a partir de ella. Confirma el HTML regenerado junto con la edición YAML para que nunca diverjan.

Skills relacionados