From instructional-design-toolkit
Auditoría de curso contra framework completo. Use when user asks to "audit my course", "review my syllabus", "check course quality", "auditar curso", "revisar mi syllabus", "validar curso", "/course-audit".
How this skill is triggered — by the user, by Claude, or both
Slash command
/instructional-design-toolkit:course-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Valida un curso existente contra: CONTEXT→CONCEPT→BUILD→SHIP→REFLECT presence,
Valida un curso existente contra: CONTEXT→CONCEPT→BUILD→SHIP→REFLECT presence, Bloom's progression climb, Ship-First Design alignment, hiring test, standalone test, cmi5 structure validity, tag taxonomy compliance.
Español. Términos técnicos en formato "español (English)".
course-slug (required, desde $ARGUMENTS): nombre del directorio en
docs/instructional-design/courses/.Si vacío: listar cursos disponibles, pedir al usuario elegir.
docs/instructional-design/courses/{slug}/course.json.ajv validate -s ${CLAUDE_PLUGIN_ROOT}/assets/schemas/course.schema.json -d {course.json} --spec=draft2020 -c ajv-formats
Si falla schema → ABORT (no auditar contenido si la estructura está rota).Ejecutar TODOS los checks abajo y agruparlos por severidad (PASS / WARN / FAIL).
| Field | Criterio |
|---|---|
business_context | Presente y no vacío |
learner_profile | id, name, primary_pain todos presentes |
capstone | id, title, deliverable, ≥3 criteria, hiring_test todos presentes |
analysis.blooms_progression | Array con length == modules.length |
analysis.ship_milestones_escalation | Array con length == modules.length |
Per módulo: feedback_form | Presente con tool + form_id + embed_url |
Por cada lesson:
| Field | Criterio |
|---|---|
context | ≥100 chars, no arranca con "En la lección anterior" |
concept | ≥200 chars |
build | ≥200 chars Y representa 50-60% del total chars de la lesson |
ship | ≥30 chars |
reflect | ≥1 question, NO genérica (rechazar "¿qué aprendiste?", "¿cómo te fue?", "¿algún comentario?") |
Mapear levels a integers: Recognize=1, Explain=2, Build=3, Debug=4, Decide=5, Ship=6.
ship_milestone no vacío.capstone.hiring_test debe ser >50 chars.Por cada lesson:
Heurística: si BUILD menciona términos no introducidos en CONCEPT y no hay link a lesson previa que los haya introducido → WARN.
Caso extremo (BUILD vacío o trivial): FAIL — anti-pattern Hello-Worlder.
Despachar ${CLAUDE_PLUGIN_ROOT}/agents/cmi5-metadata-writer.md en mode
validate-only (no escribir):
id, au_id en todos los niveles) son únicos en su scope.masteryScore ∈ [0, 1].moveOn ∈ enum válido.launchMethod ∈ enum válido.activityType is a valid URI.Si existe tag-taxonomy.md en el repo (proyecto del usuario, no del plugin):
meta.keywords (si existen) están en la
taxonomía.Si no existe tag-taxonomy.md: skip este check (PASS).
Antes de componer el report, leer
${CLAUDE_PLUGIN_ROOT}/assets/runtime/overlay-protocol.md y ejecutar el
procedimiento (Discovery §2 + Invocation §3 + Layer 1 validator §5,
específicamente §5.4 porque el baseDraft es findings-shaped, NO el
course.json) sobre el conjunto de findings producido en el Paso 2:
command = "course-audit"cwd = directorio de trabajo desde donde se invocó /idt:course-auditbaseDraft = objeto con forma { findings: [...], summary: {...} } que
resume los 8 checks de framework. Cada finding tiene al menos los campos
check, severity (pass/warn/fail), description, y opcionalmente
recommended_change (texto libre o JSON Pointer-shaped) que el overlay
puede usar para proponer fixes. Un overlay puede AGREGAR findings — p.ej.
un overlay content-standards desde dojo-academy puede inyectar findings
Dojo-específicos como "Módulo 2 carece de text-classes load-bearing,
contradice la regla 'text classes carry the course'".context.cwd y context.repo per la convención general.context.locale derivado de course.meta.language cuando esté presente.context._sourceArtifact = el course.json cargado en el Paso 1
(side-channel del runtime, no parte del contrato público de
OverlayInput.context — ver overlay-protocol.md §5.4).Reglas (§5.4):
context._sourceArtifact
(el course.json), NO contra baseDraft. El snapshot queda fijo durante
todo el run — los overlays agregan findings, no tocan el source.finding nuevo y mira sus campos recommended_change /
proposed_diff / equivalentes. Si el texto del finding referencia
cualquier path Layer 1 de §4 con intención de mutar (p.ej.
set meta.id = ..., replace modules[0].au_id, delete capstone.id):
ABORT con error apuntando al SKILL.md del overlay AND al índice del
finding ofensor en el array findings[].analysis.identified_risks, copy de lessons): OK — solo
los path L1 disparan el abort.SKILL.md path del overlay como header.Generar docs/instructional-design/courses/{slug}/audits/audit-{YYYY-MM-DD}.md con
estructura:
# Course Audit: {course title}
**Date**: {date}
**Auditor**: instructional-design-toolkit:course-audit
**Course version**: {version}
## Summary
- Infrastructure: {pass/total}
- Lesson formula compliance: {pass/total} lessons
- Bloom's progression: PASS | WARN | FAIL
- Ship-First alignment: PASS | WARN | FAIL
- Hiring test: PASS | WARN | FAIL
- Standalone test: {pass/total} lessons
- cmi5 structure: PASS | WARN | FAIL
- Tag taxonomy: PASS | WARN | SKIPPED
## Detail (por check)
[tablas detalladas]
## Top 5 Fixes Priorizados (impact × ease)
1. **{Most impactful fix}** — file + what to change + estimated effort
2. ...
"Auditoría completa. {N} fixes prioritarios identificados. ¿Querés que proponga los cambios concretos?
- Sí, proponer fixes
- No, solo el report"
PUERTA: si el usuario dice sí, proceder a Paso 5. Si no, terminar.
Para cada fix priorizado, mostrar el diff propuesto al usuario. Aplicar solo con confirmación explícita por fix. NO bulk-apply.
${CLAUDE_PLUGIN_ROOT}/references/methodology.md${CLAUDE_PLUGIN_ROOT}/assets/skill-references/blooms-taxonomy.md${CLAUDE_PLUGIN_ROOT}/assets/skill-references/ship-first-design.md${CLAUDE_PLUGIN_ROOT}/agents/cmi5-metadata-writer.md${CLAUDE_PLUGIN_ROOT}/assets/schemas/course.schema.json${CLAUDE_PLUGIN_ROOT}/assets/schemas/overlay-protocol.schema.json — contrato OverlayInput/OverlayOutput para el Paso 2.5${CLAUDE_PLUGIN_ROOT}/assets/runtime/overlay-protocol.md — discovery + invocation + Layer 1 invariant validatornpx claudepluginhub dojocodinglabs/instructional-design-toolkit --plugin instructional-design-toolkitCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.