Study Pack

Convierte material de curso de Notion o archivos subidos en un paquete de estudio enlazado (Sílabo, Resumo, Revisión, Plan opcional), o actualiza un paquete existente, con un formulario de preguntas fijo y un kit de páginas fijo para que todos los cursos se vean y funcionen igual.

¿Qué es Study Pack?

Esta habilidad estandariza la creación de materiales de estudio a partir de diversas fuentes (Notion, archivos PDF, DOCX, diapositivas, imágenes, texto pegado) y los organiza en un paquete de cuatro páginas web interconectadas: **Sílabo** (temario numerado y conciso), **Resumo** (explicaciones completas con al menos 3 ejemplos resueltos por tema), **Revisão** (lección corta + ejercicios con corrección y tutor), y un **Plan** opcional de estudio cronogramado. Utiliza un kit predefinido (`kit/`) que dicta completamente la apariencia y las herramientas de cada página, asegurando consistencia visual y funcional entre diferentes cursos. El usuario solo debe proporcionar el contenido en formato JSON específico, y la habilidad se encarga de construir, verificar y publicar las páginas. Es compatible con plataformas como Claude (Artifacts) y entornos donde se puedan ejecutar scripts de Python y comandos de shell. El proceso incluye la extracción de material, la presentación de un formulario de preguntas fijo (a través de un visualizador interactivo o en modo texto), la escritura del contenido JSON con agentes paralelos para eficiencia, la construcción y verificación automática (incluyendo pruebas de responsive design y KaTeX) y la publicación o actualización de los artefactos correspondientes. La habilidad maneja modos de actualización, preservando el progreso del usuario y los IDs de ejercicios existentes.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CAFEERON21br18/claude-skills/tree/HEAD/study-pack

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Study Pack?

Cuatro páginas enlazadas para un curso, siempre construidas con el kit (kit/ en github.com/CAFEERON21br18/claude-skills, carpeta study-pack/kit):

  1. Sílabo: temas numerados, lo esencial.
  2. Resumo: el curso completo, explicaciones detalladas, ≥ 3 ejemplos resueltos por tema.
  3. Revisão: lección corta + ejercicios (tuyos / del usuario), calificación, historial, notas, tutor.
  4. Plano (opcional): plan con fechas hasta el examen, gráficos, marcas.

Regla cero: el kit decide el aspecto, tú solo escribes el contenido

  • Cada página se genera desde kit/build.py. Nunca escribas ni modifiques a mano el HTML, CSS o JS de una página, nunca "mejores" el diseño, nunca añadas un estilo específico de página. Mismas opciones ⇒ mismas páginas, sea cual sea el curso (CDI, AL, LP…).
  • Escribes solo el JSON descrito en kit/SCHEMA.md (con json.dump de Python), luego construyes, verificas y publicas.
  • Las preguntas son siempre el formulario de kit/questions.py, en su orden, en su formato. Nunca reformules, reordenes, dividas ni preguntes de otra manera. Nunca enumeres nombres de temas sin sus colores.
  • Si algo no se puede hacer con el kit, dilo en una línea en el mensaje final. No lo resuelvas en HTML.

Lo que el kit fija por ti (no lo reimplementes): el encabezado (diseño CDI: línea del curso + título a la izquierda, las 4 pestañas del paquete a la derecha, herramientas en la segunda fila: cuenta atrás · herramientas de página · As minhas notas · botón claro/oscuro con el icono de sol/luna de ruben-bonanni-ribeiro.dev), el carril de temas, KaTeX con fuentes incrustadas, ajuste de matemáticas anchas, notas, chat del tutor, calculadora gráfica, modo de enfoque, cuenta atrás en días naturales, enlaces en la misma pestaña, diseño para móvil, almacenamiento.

Herramientas por página (orden fijo, una opción desactivada simplemente no aparece):

PáginaHerramientas del encabezadoFranja debajo del encabezado
Sílabocuenta atrás · Foco · As minhas notas · ☾/☀—
Resumocuenta atrás · Calculadora · Foco · As minhas notas · ☾/☀—
Revisãocuenta atrás · Calculadora · Foco · Só erradas · Histórico · As minhas notas · ☾/☀hecho / correcto / para revisar + guardado
Planocuenta atrás · Hoje · Esconder feitas · ☾/☀sesiones hechas + horas

Paso 0 — Kit, ¿y ya existe un paquete?

  1. Obtén el kit, cada vez (puede haber cambiado): git clone --depth 1 https://github.com/CAFEERON21br18/claude-skills /tmp/sp && cp -r /tmp/sp/study-pack/kit ./kit Lee kit/SCHEMA.md.
  2. Lista los artefactos del usuario (lista de Artifact, ámbito "all", límite 200) y busca "Sílabo/Syllabus/Programa — ", "Resumo — ", "Revisão/Revision — ", "Plano — " o nombres similares.
  3. Encontrado → pregunta una vez, directamente: "Já existe um pacote de . Atualizo esse ou crio um novo?" (Actualizar el existente (recomendado) · Crear uno nuevo). Si es actualización: "O que muda?" (Añadir material nuevo · Cambiar opciones · Añadir una página que falta · Rehacer los ejercicios). Nombre ambiguo → pregunta una vez cuál, con las coincidencias más cercanas y "Ninguno, empezar desde cero". No encontrado → continúa en silencio.

Modo de actualización

  • Lee cada página existente completa con Artifact action:"read" sin path ahora, en el Paso 0. La publicación será rechazada a menos que se haya leído la versión completa en vivo. Una página grande se devuelve como un archivo guardado: lee ese archivo en fragmentos de ~150–200 líneas hasta el final. Luego también guarda el HTML de cada página (read con path:"index.html") para extract.py.
  • python3 kit/extract.py pack <páginas guardadas…> reconstruye pack/ (pack.json, topics, plan.json) a partir de las páginas del kit. Mantén slug, storage, urls, números de temas e ids de ejercicios tal como están.
  • Paquete antiguo (sin datos del kit): deduce la configuración de la página (tema, fuente, idioma, características, recuento) y escribe pack.json. Copia sus claves de almacenamiento en "storage" para que el progreso sobreviva: la clave de localStorage (ej. cdi-revisao-v1, lp-revision-v2) en storage.ls.revisao, el nombre del documento de la base de datos (ej. revisao, lp-revision-v2) en storage.docs.revisao, y lo mismo para plano y el prefijo del tema.
  • Ejercicios: el mismo ejercicio (misma hoja + número) mantiene su id; los nuevos toman los siguientes números. Los intentos en ejercicios eliminados se muestran como "Ejercicio de la versión anterior": dilo al final.
  • Plan conservado: nunca muevas sesiones con fecha (las marcas están vinculadas por fecha + índice); solo actualiza textos, recuentos y enlaces. Un plan reconstruido desde cero pierde las marcas antiguas: dilo al final.
  • Solo haz las preguntas que el usuario quiere cambiar, más las que plantea el material nuevo (ej. fuente si ahora subió ejercicios). Reutiliza todo lo demás de pack.json.
  • Publica en la url existente de cada página. Termina con lo que cambió, por página.

Paso 1 — Recopilar el material (antes de cualquier pregunta)

  • Fuentes: páginas de Notion nombradas o enlazadas (obtén cada una, sigue las páginas hijas del curso), archivos subidos (PDF, docx, diapositivas, imágenes, léelos completos), texto pegado. Curso nombrado pero sin fuente → busca en Notion, confirma la página en una línea.
  • Busca en Notion una página con nombre similar a "lesson-style" (el formato de ejercicio propio del usuario). Si se encuentra, léela: se convierte en la primera opción de formato de ejercicio.
  • Recopila cada tema, definición, teorema, método, trampa, ejemplo resuelto, ejercicio con su fuente (hoja + número), fecha de examen, y para los ejercicios propios del usuario: tema, dificultad, métodos, resolución (completa / parcial / solo respuesta / ninguna).
  • Enunciados faltantes (una hoja con solo respuestas): dilo en una línea ahora mismo, antes de las preguntas, y pide el PDF. Nunca inventes un enunciado. Un enunciado reconstruido a partir de otra página del usuario o de la tabla de respuestas obtiene "reconstructed": true ("enunciado reconstituído").
  • Libro de texto en Notion: extráelo con un subagente por bloque de temas (ej. 1–3, 4–8, 9–11), en paralelo. Cada uno devuelve JSON por tema: definiciones y teoremas con la numeración del libro, trampas, ≥ 4 ejemplos resueltos con pasos (qué + por qué) y respuesta final; cada uno recalcula cada número con sympy y marca los errores del libro en lugar de corregirlos silenciosamente → bloques bookerr ("Gralha no livro").
  • Lista maestra de temas: numerados 1, 2, 3… en orden del curso, nunca letras. Nunca renumerados después.
  • Curso con muchos cálculos (matemáticas, física, estadística, ingeniería, finanzas) → se muestra la pregunta de la calculadora.
  • Fuente ilegible → di cuál, continúa.

Paso 2 — Las preguntas (un formulario fijo)

  1. python3 kit/questions.py --lang <pt|fr|en> [--mine] [--calc] [--lesson-style] [--exam YYYY-MM-DD] (--mine si el usuario subió sus propios ejercicios, --calc si requiere muchos cálculos, --lesson-style si esa página de Notion existe, --exam si se encontró una fecha).
  2. Llama al Visualizador read_me (módulo elicitation), luego show_widget con exactamente el HTML impreso, título study_pack_details. Nada más en el widget, sin preguntas extra.
  3. La respuesta vuelve como una línea (Tema: … · Fuente: … · Funciones: … · Formato de ejercicio: … · Fuente del ejercicio: … · Por tema: … · Idioma: … · Calc. gráfica: … · Tutor: … · Plan: … · Fecha límite: … · Horas: …). Mapea a pack.json.
  4. No hay Visualizador en esta sesión → envía la salida de questions.py … --text textualmente (muestra cada tema con sus colores hex) y espera las respuestas numeradas. Ningún otro formato, nunca.
  5. Saltado o sin respuesta (ejecución desatendida) → valores predeterminados: Tema Focus, Atkinson Hyperlegible, barra lateral + enfoque + historial + progreso + cuenta atrás, lesson-style si se encontró si no opción múltiple + respuesta libre, 50/50 si el usuario tiene ejercicios si no tuyos, 5 por tema, idioma de la conversación, calculadora sí si requiere muchos cálculos, tutor sí, sin plan. Di qué valores predeterminados se usaron.

Luego, antes de construir:

  • Fuente = solo mía y algunos temas no tienen ejercicios del usuario → di qué temas ahora, y pregunta una vez: dejarlos sin ejercicios (con el aviso) o rellenar esos temas solo con ejercicios del curso / de Claude.
  • Tema "Otro" → copia el preajuste más cercano en kit/themes.json, cambia solo los colores, ejecuta python3 kit/check_contrast.py <archivo> hasta que pase, coloca el objeto en pack.json theme.
  • Formatos → tipos de ejercicio: lesson-style = sus reglas (abajo); Como en la fuente = mantener la forma de la hoja (pregunta abierta → free; MCQ / V/F solo donde la hoja los tenga); Opción múltiple = mcq; Respuesta libre = free; V/F = tf. (Rellenar espacios en blanco no está en el kit.)

Paso 3 — Escribir el contenido (solo JSON)

Divide los temas en grupos y escríbelos con hasta 4 subagentes en paralelo (ej. 1–3, 4–6, 7–9, 10–11). Dale a cada uno: kit/SCHEMA.md, el material de sus temas, las respuestas del Paso 2 y estas reglas. Cada uno escribe pack/topics/<n>.json con un script de Python (json.dump, nunca a mano) y verifica cada cálculo con sympy. Luego lee sus archivos y comprueba que siguen las reglas.

Sílabo (syllabus): 2–6 viñetas por tema, ≤ 12 palabras, frases nominales / reglas / fórmulas, sin oraciones, sin relleno. Cada regla relevante para el examen, nada inventado.

Resumo (resumo + examples): cada definición, teorema, regla y método del tema, explicado completamente (intuición → enunciado formal → cuándo y cómo usarlo), notación del curso; bloques def / thm / formula / method / trap. ≥ 3 ejemplos resueltos por tema, simple → nivel de examen, métodos diferentes: los ejercicios del usuario con resoluciones primero, luego ejemplos del curso, luego nuevos. Cada paso tiene do + why (+ trap donde los estudiantes se equivocan). Etiqueta de origen: la fuente real, o "new" → "Novo". Nunca etiquetes un ejemplo inventado con una fuente del curso. Cuando un MCQ se reutiliza como ejemplo, mantén solo los pasos de la solución: omite las frases sobre las opciones ("La opción A…", "La opción B…", "C y D…").

Revisão (lesson, worked, exercises): bloques de lección cortos, un ejemplo worked, luego los ejercicios.

Selección de ejercicios:

  • Solo míos, Todos: cada ejercicio del usuario bajo su tema, nada añadido; un tema sin ninguno recibe el aviso. Solo míos, N: los mejores N por tema — los más relevantes para el examen primero, luego variedad (cada método una vez, fácil → nivel de examen, no dos que prueben lo mismo de la misma manera); menos de N → todos ellos + aviso de shortage.
  • 50/50, Todos: cada ejercicio del usuario + tantos de Claude, dirigidos a lo que los suyos cubren menos. 50/50, N: la mitad de los del usuario (elegidos como arriba, redondeando hacia arriba), la mitad de Claude en el mismo estilo.
  • Tuyos: ejercicios del curso primero, luego nuevos en el mismo estilo.

Resoluciones dadas por el usuario: son la clave de respuestas — mantén sus pasos y notación, explica cada paso (qué, por qué, trampa). Pasos faltantes: complétalos, by_claude: true. Verifica cada resolución (recalcula con sympy); un paso incorrecto nunca se corrige en silencio: flag con el texto y la corrección. Sin resolución: escribe una y verifícala.

Reglas de lesson-style (cuando se elige; la página de Notion gana si dice más): mcq con exactamente 4 opciones A–D; preguntas de cálculo gate: true ("Resuelve en papel primero" + "Ya lo resolví — mostrar opciones") y free_too: true (pegar trabajo o una foto, Claude lo califica); opciones matemáticas una por línea (diseño predeterminado), cada una en una sola línea; cada opción incorrecta es un error típico y su why lo nombra; la letra correcta varía (nunca la misma letra más de dos veces seguidas).

Texto: **negrita**, nunca cursiva; matemáticas en $…$ / $$…$$; enlaces de recuerdo [[n]] cuando Recuerdo está activo.

Paso 4 — Plan (solo si Plan = sí)

Coloca la configuración en pack.json → plan (inicio = hoy, hours: "auto" o el número, días busy con otros exámenes y sus notas, weights para temas pesados, hours_note en el idioma del paquete), luego python3 kit/plan.py pack. Imprime lo que tuvo que ser cortado cuando el tiempo es escaso: dilo en el mensaje final.

Paso 5 — Construir, verificar, publicar

  1. python3 kit/build.py pack --out pack/out (se detiene ante cualquier error de esquema: corrige el JSON, nunca el HTML).
  2. python3 kit/check.py pack/out --shots debe imprimir TODAS LAS VERIFICACIONES PASARON (sin desbordamiento de página a 400 / 1440 px claro y oscuro, nada recortado, 0 errores de KaTeX, sin $ sin procesar, sin error de JS, encabezado fijo y orden de herramientas, sin enlaces de nueva pestaña, las interacciones funcionan). Luego mira pack/out/shots/* (encabezado, bloques de matemáticas densos, móvil oscuro). Corrige el JSON, reconstruye, verifica una vez más.
  3. Carga artifact-capabilities y declara lo que usan las páginas: almacenamiento de cuenta (db) e identidad del visor (user) para notas, historial y marcas; preguntar a Claude (sample) para el tutor y la calificación (Sílabo, Resumo, Revisão). Plano: solo db + user.
  4. Paquete nuevo: publica los 4 archivos (los títulos provienen de las páginas, icono "book"), coloca las 4 URL en pack.json → urls, reconstruye, verifica, republica cada uno en su URL (las pestañas y los enlaces cruzados necesitan las URL). Actualización: las URL ya están en pack.json; publica cada página en su url.

Finalizar

Solo unas pocas líneas: qué se construyó o actualizó (las tarjetas llevan los enlaces), cualquier cosa que falte del material, ejercicios del usuario / del curso / escritos por Claude, la lista de resoluciones del usuario marcadas como incorrectas (ejercicio + paso), lo que el plan tuvo que cortar, y cualquier cosa que no se pudo activar (tutor, almacenamiento de cuenta). Di una vez que las fórmulas se copian como LaTeX (seleccionar + copiar, o doble clic en una fórmula). Sin resumen de los pasos.

Skills relacionados