OpenAI Skills
Código de OpenAI Skills: división de URL, prevalidación ZIP y marcas engañosas
Reproduce referencias con barra, controles de ruta antes de extraer y una búsqueda inversa que puede elegir “0 failures” como pista de fallo.
Qué aprenderás
- Sigue la entrada antes de explicar el algoritmo
- Valida todos los miembros antes de extraer
- Interpreta una heurística como tal
Antes de empezar
- Conceptos básicos de Git, Python y terminal
- Límites explícitos para inspeccionar y modificar repositorios
Explica el comportamiento del capítulo y aplica su lista sin confundir catálogo y anfitrión.
Conclusiones clave
- Separa ref y ruta cuando la URL no exprese claramente la rama.
- La prevalidación ZIP precede a la extracción, pero no audita el contenido ejecutable.
- Una coincidencia de texto es una pista, no una causa probada.
Sigue la entrada antes de explicar el algoritmo
El instalador divide una URL de GitHub en propietario, repositorio, ref y ruta. Para /tree/feature/demo/skills/example devuelve feature como ref y demo/skills/example como ruta; no deduce que feature/demo pueda ser una sola rama. La prueba Python verificada por hash reprodujo exactamente ese resultado. En ese caso conviene separar los argumentos ref y path.
La validación de ruta relativa rechaza rutas absolutas y cadenas normalizadas que empiezan por dos puntos consecutivos. Es una regla sencilla que también puede rechazar ..notes, no solo un salto al directorio padre. El nombre se valida aparte como un único segmento usando separadores de la plataforma. Describe estos controles sin convertirlos en un verificador universal entre sistemas.
Valida todos los miembros antes de extraer
El ayudante ZIP resuelve el destino de cada miembro con realpath y exige que coincida con la raíz o comience por ella seguida del separador. Solo llama a extractall después de completar todo el bucle. Un archivo simulado con un miembro normal y después ../escape.txt fue rechazado antes de ejecutar su método de extracción simulado.
La prueba confirma el orden y las ramas seleccionadas sin extraer archivos reales. No evalúa agotamiento de recursos, ejecución de cargas, cambios concurrentes del sistema de archivos ni todos los sistemas operativos. La contención de rutas es útil, pero una skill copiada dentro del destino todavía puede contener comandos que no deban ejecutarse.
Interpreta una heurística como tal
El ayudante de CI recorre las líneas desde el final buscando subcadenas como error, fail, traceback y timeout. Después recorta una ventana alrededor de la última coincidencia. “0 failures” contiene fail, de modo que el registro inventado situó allí la marca y no en el error real anterior. El fragmento resultante no demuestra por sí mismo la causa.
El JavaScript siguiente es una miniatura didáctica independiente, no el ayudante Python completo. Devuelve el índice 2 para la entrada mostrada y -1 cuando no encuentra coincidencias. El código real incluye más marcas y lógica de ventana. Se ejecutaron la miniatura en los tres idiomas y funciones Python aisladas, sin cuenta GitHub, instalación ni tarea real de agente.
Pasos de implementación
- 1
Predice la división de una URL con rama que contiene barra.
- 2
Comprueba que un miembro inválido tardío impide la extracción.
- 3
Compara un error real con un “0 failures” posterior.
- 4
Revisa el contexto completo antes de proponer cambios.
Ejemplo para copiar
function lastMarker(lines) {
for (let i = lines.length - 1; i >= 0; i--) {
if (["error", "fail", "timeout"].some(word => lines[i].toLowerCase().includes(word))) return i;
}
return -1;
}
console.log(lastMarker(["ERROR first", "work", "0 failures"]));Preguntas frecuentes
¿La prueba ZIP extrajo archivos?
No. Usó un objeto simulado que registraba extractall. El caso fuera del destino impidió esa llamada.
¿El ejemplo JavaScript procede del repositorio?
No. Es un modelo didáctico independiente. Las funciones Python reales se probaron aparte con hashes del código fijado.
Fuentes
- README.mdFuente verificada 2026-09-08
- skills/.system/skill-installer/SKILL.mdFuente verificada 2026-09-08
- skills/.system/skill-installer/LICENSE.txtFuente verificada 2026-09-08
- skills/.system/skill-installer/scripts/install-skill-from-github.pyFuente verificada 2026-09-08
- skills/.system/skill-installer/scripts/github_utils.pyFuente verificada 2026-09-08
- skills/.system/skill-installer/scripts/list-skills.pyFuente verificada 2026-09-08
- skills/.system/skill-creator/scripts/quick_validate.pyFuente verificada 2026-09-08
- skills/.system/skill-creator/references/openai_yaml.mdFuente verificada 2026-09-08
- skills/.curated/gh-fix-ci/SKILL.mdFuente verificada 2026-09-08
- skills/.curated/gh-fix-ci/scripts/inspect_pr_checks.pyFuente verificada 2026-09-08
- skills/.curated/gh-fix-ci/agents/openai.yamlFuente verificada 2026-09-08
- skills/.system/plugin-creator/SKILL.mdFuente verificada 2026-09-08
- Guía oficial actual de skillsFuente verificada 2026-09-08