| name | course-revise |
| version | 1.0.0 |
| description | Aplica cambio incremental a un curso existente: clasifica MAJOR/MINOR/PATCH, valida ID stability, bumpea version, append version_timeline, escribe CHANGELOG entry. Si MAJOR: impact analysis con grandfather clause option. Use when user asks to "revise course", "update course", "bump version", "edit syllabus", "actualizar curso", "iterar curso", "/course-revise".
|
Revisar Curso (Iteration)
Aplica un cambio al syllabus de un curso ya creado, respetando semantic versioning
y ID stability.
Inputs
course-slug (required): nombre del directorio en docs/instructional-design/courses/.
Flujo
Paso 1 — Load course
Verificar que docs/instructional-design/courses/{slug}/course.json existe.
Si no: ABORT con sugerencia de /new-course.
Paso 2 — Describe el cambio
"¿Qué querés cambiar? Describilo en lenguaje natural. Ejemplos:
- 'Subir el masteryScore del Módulo 3 de 0.75 a 0.80'
- 'Agregar una lección nueva en el Módulo 5 sobre testing'
- 'Reescribir el CONCEPT del Lesson 12 con mejor analogía'
- 'Quitar el Módulo 7 (deprecated)'
Detalles del cambio:"
Paso 3 — Aplicar el cambio en memoria
Construir el course.json propuesto (new_course_json) en memoria, no escribir aún.
Paso 4 — Classify via changelog-generator
Despachar ${CLAUDE_PLUGIN_ROOT}/agents/changelog-generator.md con:
- new_course_json (en memoria)
- old_course_json_path (current file en disk)
Recibir CLASSIFICATION (major/minor/patch) + impact analysis.
Paso 5 — Validate ID stability via cmi5-metadata-writer
Despachar ${CLAUDE_PLUGIN_ROOT}/agents/cmi5-metadata-writer.md en mode revise:
- new_course_json
- old_course_json_path
Si ABORT por ID stability violation: presentar el error al usuario, ofrecer:
- Revertir el cambio de ID (mantener slug/title nuevo, ID viejo)
- Cancelar la revisión completa
Paso 6 — Si MAJOR, presentar impact analysis + decisión
"Este cambio es MAJOR (breaking).
Razón: [del classifier]
Impact estimado: [N alumnos afectados o "depende del LRS"]
Opciones:
- Breaking change (bump 1.x.x → 2.0.0) — alumnos viejos requieren migration
- Grandfather clause (bump 1.x.x → 1.x+1.0) — el campo viejo se preserva en
legacy_*; nuevos enrollments usan el valor nuevo, alumnos enrolados mantienen
el viejo
- Cancelar la revisión"
PUERTA: confirmar opción.
Paso 7 — Apply + write
- Bump version según classification.
- Append entry a
meta.version_timeline.
- Update
meta.updated.
- Escribir
course.json.
- Append entry a
CHANGELOG.md (crear si no existe, formato Keep-a-Changelog).
Paso 8 — Report
"Revisión aplicada:
- Versión: {old} → {new}
- Type: {major|minor|patch}
- CHANGELOG.md actualizado
Próximos pasos:
- Tip:
/course-audit {slug} para validar que el cambio no introdujo gaps
- Si querés ver impacto en alumnos:
/course-retro {slug} con CSVs de la cohort
afectada"
Recursos
${CLAUDE_PLUGIN_ROOT}/agents/changelog-generator.md
${CLAUDE_PLUGIN_ROOT}/agents/cmi5-metadata-writer.md
${CLAUDE_PLUGIN_ROOT}/references/course-iteration-guide.md