Skip to main content

course-audit

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".

Aller à l'installation

Informations de source

Dépôt
DojoCodingLabs/instructional-design-toolkit
Dernière activité de la source
4 mai 2026 à 21:30
Langue détectée de SKILL.md
Plusieurs langues
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
course-audit
version
1.0.0
description
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".
# Auditoría de Curso 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. ## Regla de idioma Español. Términos técnicos en formato *"español (English)"*. ## Inputs - `course-slug` (required, desde `$ARGUMENTS`): nombre del directorio en `docs/instructional-design/courses/`. Si vacío: listar cursos disponibles, pedir al usuario elegir. ## Flujo ### Paso 1 — Load + Validate JSON 1. Verificar que existe `docs/instructional-design/courses/{slug}/course.json`. 2. Validar contra schema: ```bash 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). 3. Cargar el JSON en memoria. ### Paso 2 — Run framework checks Ejecutar TODOS los checks abajo y agruparlos por severidad (PASS / WARN / FAIL). #### Check 1 — Infrastructure presence | 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 | #### Check 2 — CONTEXT→CONCEPT→BUILD→SHIP→REFLECT presence 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?") | #### Check 3 — Bloom's progression climb Mapear levels a integers: Recognize=1, Explain=2, Build=3, Debug=4, Decide=5, Ship=6. - **PASS**: progresión monotónica creciente (con plateaus OK). - **WARN**: 3+ módulos en mismo nivel, O regression de 1 nivel. - **FAIL**: regression de 2+ niveles, O salto de 3+ niveles sin step intermedio. #### Check 4 — Ship-First alignment - Cada módulo tiene `ship_milestone` no vacío. - Ship milestones escalan: commit local → push → deploy staging → prod → capstone público. - Capstone está alineado con assessment_criteria (ej. si capstone dice "publicada en stores" debe haber criterio sobre publicación). #### Check 5 — Hiring test no genérico - `capstone.hiring_test` debe ser >50 chars. - NO aceptar respuestas tipo "Sí" sin justificación. - Aceptar respuestas razonadas, incluso "No" si el creador justifica el rediseño pendiente. #### Check 6 — Standalone test Por cada lesson: - ¿BUILD asume conocimiento que NO está en CONCEPT de la misma lesson? - ¿BUILD referencia conceptos de lessons FUTURAS? 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. #### Check 7 — cmi5 structure Despachar `${CLAUDE_PLUGIN_ROOT}/agents/cmi5-metadata-writer.md` en mode **validate-only** (no escribir): - IDs (`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. #### Check 8 — Tag taxonomy compliance Si existe `tag-taxonomy.md` en el repo (proyecto del usuario, no del plugin): - Cross-reference que los tags usados en `meta.keywords` (si existen) están en la taxonomía. - WARN si hay tags no listados. Si no existe tag-taxonomy.md: skip este check (PASS). ### Paso 2.5 — Aplicar overlays al audit (Base + Overlay protocol) 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-audit` - `baseDraft` = 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): - El validator Layer 1 toma el snapshot contra `context._sourceArtifact` (el `course.json`), NO contra `baseDraft`. El snapshot queda fijo durante todo el run — los overlays agregan findings, no tocan el source. - Después de cada overlay, además del snapshot-compare estándar, el runtime escanea cada `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[]`. - Findings que proponen cambios sobre campos mutables (titles, slugs, description text, `analysis.identified_risks`, copy de lessons): OK — solo los path L1 disparan el abort. - Los findings de overlays se mezclan con los findings base en el report (Paso 3) bajo una sub-sección "Overlay findings" por overlay aplicado, con el `SKILL.md` path del overlay como header. - Si discovery devuelve cero overlays: el report contiene solo los 8 checks base (auditoría voice-neutral cmi5/xAPI). Ningún warning. - Warnings de overlays se acumulan y se incluyen en la presentación final (Paso 4) junto al "N fixes prioritarios identificados". ### Paso 3 — Compose audit report Generar `docs/instructional-design/courses/{slug}/audits/audit-{YYYY-MM-DD}.md` con estructura: ```markdown # 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. ... ``` ### Paso 4 — Present + gate > "Auditoría completa. {N} fixes prioritarios identificados. ¿Querés que proponga > los cambios concretos? > 1. Sí, proponer fixes > 2. No, solo el report" **PUERTA**: si el usuario dice sí, proceder a Paso 5. Si no, terminar. ### Paso 5 — Propose fixes Para cada fix priorizado, mostrar el diff propuesto al usuario. Aplicar solo con confirmación explícita por fix. NO bulk-apply. ## Recursos - `${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 validator
Voir sur GitHub