From llms-txt-aware
Antes de fetchear, scrapear o llamar cualquier endpoint de un dominio web, buscá su archivo `/llms.txt` y, si existe, leelo COMPLETO (no solo la sección `## Skills`). Usalo como manual operativo del sitio: endpoints, parámetros, límites, ejemplos canónicos, notas para agentes y skills publicadas. Activá esta skill en cualquier `web_fetch`, llamada a API REST/GraphQL pública sin docs locales, scraping, o cuando vayas a construir una URL del sitio. No la actives para búsquedas web genéricas ni para recursos binarios.
How this skill is triggered — by the user, by Claude, or both
Slash command
/llms-txt-aware:llms-txt-awareThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Esta skill te obliga, antes de interactuar con cualquier dominio web, a buscar su archivo `llms.txt` y usarlo como fuente de verdad. El archivo entero es contexto operativo, no solo la sección `## Skills`.
Esta skill te obliga, antes de interactuar con cualquier dominio web, a buscar su archivo llms.txt y usarlo como fuente de verdad. El archivo entero es contexto operativo, no solo la sección ## Skills.
Activá esta skill cada vez que vayas a:
web_fetch o request HTTP a un dominio que todavía no chequeaste en esta conversación.No la actives para:
web_search).Dado una URL objetivo como https://demo.ejemplo.com/api/x/y?z=1, el origen es https://demo.ejemplo.com. Trabajá siempre a nivel de origen, no de path.
/llms.txtHacé GET {origen}/llms.txt con timeout corto (5 a 10 segundos).
Estados posibles y qué hacer con cada uno:
200 OK con Content-Type: text/markdown, text/plain o body que empieza con # : seguir al paso 3.200 OK pero el body es HTML (la SPA devuelve el index): tratarlo como 404, no existe llms.txt real.404, 403, 5xx, timeout, o redirect que termina en HTML: cachear "no llms.txt" para este origen y seguir tu flujo normal.Fallback opcional: si el principal devuelve 404, probá una sola vez {origen}/.well-known/llms.txt. Si tampoco está, cortás ahí.
Esto es lo crítico. NO te limites a la sección ## Skills. El archivo entero es manual del sitio. Tenés que extraer y usar:
# Título y > tagline: identidad y propósito del sitio.## Notes for agents, ## For LLMs, ## Agent guidance).## Skills si está, para descubrir skills publicadas (ver paso 5).Reemplazá tus suposiciones por lo que dice el archivo. Reglas duras:
width max 4000), respetalos al construir el request.Cache-Control: immutable, asumí idempotencia: la misma URL siempre devuelve lo mismo, podés llamarla en loop sin miedo.Cuando el llms.txt contradice tu intuición, gana el llms.txt. Es el dueño del sitio diciéndote cómo usarlo.
## Skills si existeFormato esperado por entrada (RFC v0.5):
- [title](URL): description <!-- skill: {"version":"...","license":"...","sha256":"..."} -->
Procedimiento:
GET a su URL.sha256): si el metadata inline o el index.json trae hash, calculá el hash del contenido descargado y compará. Si no coincide, descartá la skill y avisale al usuario./.well-known/agent-skills/index.json declara signing_key y la skill trae signature, verificá la firma ed25519 sobre el contenido con esa clave pública. Si no valida, descartá la skill.signing_key de un origen, fijala. Si en una sesión futura la clave del mismo origen cambió, NO cargues automáticamente: avisale al usuario y pedí re-confirmación explícita (posible compromiso o rotación de clave).Nota de modelo de confianza: el sha256 solo prueba integridad (que el contenido no cambió en tránsito), no autenticidad, porque lo asevera el mismo documento que apunta a la skill. La firma sobre una clave offline + el key-pinning son los que defienden contra un publisher comprometido (RFC §4.6).
Cacheá el resultado por origen durante toda la conversación:
No vuelvas a fetchear el mismo origen en el mismo turn. Si el usuario aclara que el sitio cambió, invalidás y reintentás.
Markdown plano siguiendo el estándar de llmstxt.org. Estructura mínima:
# Nombre del sitio o API
> Tagline breve, una línea.
## Sección con info útil
... contenido en prosa, listas, tablas o bloques de código ...
## Otra sección
... más contenido ...
## Skills (opcional, según RFC v0.5)
- [skill-id](/skills/skill-id/SKILL.md): cuándo usar esta skill. <!-- skill: {"version":"1.0.0","license":"MIT"} -->
El parser de referencia que respeta este formato está en scripts/parse_llms_txt_skills.py del repo de la spec.
sha256 si está; si hay signing_key + signature, verificá la firma y aplicá key-pinning. No cargues una skill con firma inválida o con clave de origen cambiada sin re-confirmación./llms.txt.## Skills e ignorar el resto del archivo.Cuando encontrás un llms.txt útil, decilo de forma corta antes de seguir con la tarea:
Encontré
/llms.txten{origen}. Lo voy a usar como referencia para los endpoints, parámetros y constraints. TieneNskills publicadas:{lista}. ¿Querés que cargue alguna?
Si no existe, no hace falta anunciarlo. Seguí silenciosamente con el flujo normal.
scripts/parse_llms_txt_skills.py del repo de la spec.scripts/validate.py del repo de la spec.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mauricioperera/llms-txt-skills --plugin llms-txt-aware