Skip to main content

new-path

Diálogo guiado para diseñar un Path — una super-estructura SOBRE la capa cmi5-curso que agrupa cursos existentes en milestones ordenados y los envuelve en una credential OpenBadge 3.0. NO modifica ningún course.json (aditivo). Produce path.json (fuente de verdad, validado contra path.schema.json) + content/paths/<slug>/path-overview.md (frontmatter alineado con el contrato dojo-academy). Use when user asks to "create a path", "design a path", "new path", "crear un path", "diseñar un path", "nuevo path", "ruta de aprendizaje", "learning path", "armar un path", "/new-path".

الانتقال إلى التثبيت

معلومات المصدر

المستودع
DojoCodingLabs/instructional-design-toolkit
آخر نشاط في المصدر
٢٧ مايو ٢٠٢٦ في ٠٤:١١
لغة SKILL.md المكتشفة
الإسبانية
النجوم
١
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
new-path
version
1.0.0
description
Diálogo guiado para diseñar un Path — una super-estructura SOBRE la capa cmi5-curso que agrupa cursos existentes en milestones ordenados y los envuelve en una credential OpenBadge 3.0. NO modifica ningún course.json (aditivo). Produce path.json (fuente de verdad, validado contra path.schema.json) + content/paths/<slug>/path-overview.md (frontmatter alineado con el contrato dojo-academy). Use when user asks to "create a path", "design a path", "new path", "crear un path", "diseñar un path", "nuevo path", "ruta de aprendizaje", "learning path", "armar un path", "/new-path".
# Taller de Diseño de Path Diálogo guiado interactivo para diseñar un **Path**: una super-estructura **ABOVE the cmi5-course layer**. Un path referencia cursos existentes por id/slug, los agrupa en **milestones** ordenados, y carga metadata de credential (OpenBadge 3.0) + presentation. **Invariante central — un path es puramente aditivo:** NO toca ningún `course.json`. Los AUs cmi5, masteryScore, moveOn y xAPI IRIs de cada curso quedan intactos. El path vive en su propia capa de identidad: - path activity IRI = `path:<slug>` - milestone activity IRI = `path:<slug>/milestone:<ordinal>` - credential = OpenBadge 3.0 (seeded desde `credential.*`), NO un AU. Produce `path.json` (fuente de verdad) + `path-overview.md` (frontmatter para humanos + ingestion dojo-academy). ## Regla de idioma Todo el contenido generado en **español**. Términos técnicos en formato **"español (English)"** la primera vez (*"Hito (Milestone)"*, *"Credencial (Credential)"*). Después solo español. Nombres propios de frameworks mantienen su idioma (cmi5, xAPI, OpenBadge, Dojo Score). ## Directorio de salida `content/paths/{slug-del-path}/` — contiene `path.json`, `path-overview.md`, eventualmente `CHANGELOG.md` (en revise). ## Estilo de preguntas Una pregunta a la vez. Opción múltiple cuando sea posible. Esperar respuesta antes de avanzar. ## Puerta obligatoria NO generar ningún artefacto hasta que cada paso esté completo Y aprobado por el usuario. Si el usuario pide saltar un paso, advertir el riesgo (milestone sin cursos, credential sin earning criteria, ordinal gaps) antes de proceder. --- ## Paso 0 — Detectar Modo Revise (Optional) Si `$ARGUMENTS` no está vacío: 1. Buscar `content/paths/{$ARGUMENTS}/path-overview.md` (o `path.json`). 2. Si existe: sugerir > "Ya existe un path `{$ARGUMENTS}`. Para iterar bumpeá versión + changelog. > Si querés crear uno nuevo, dame un slug distinto." ABORT. 3. Si no existe: continuar al Paso 1 con el slug pre-poblado. --- ## Paso 1 — Identidad del Path Preguntar (una a la vez): 1. "¿Cuál es el **slug** del path? (`^[a-z0-9-]+$`, estable una vez publicado — se vuelve la xAPI IRI `path:<slug>`)." 2. "**Título** del path:" 3. "**Descripción** en 1-2 frases — ¿qué transforma este path en el alumno?" 4. "**Idioma** (es / en):" 5. "**Level** agregado del path (beginner / intermediate / advanced):" 6. "**Faculty** dueño (ej. 'Dojo Academy'):" 7. "**Emblem** — emoji/glyph para la credential cuando no hay imagen:" Asignar `meta.id = path:<slug>` (IMMUTABLE) y `meta.version = 0.1.0` inicial. `meta.status` default `draft`. **PUERTA DE APROBACIÓN**: confirmar identidad antes de continuar. --- ## Paso 2 — Pick de Cursos Miembros Explicar: > "Un path NO crea cursos — referencia cursos que ya existen, por slug o por > `course:<slug>` id. No vamos a tocar ningún `course.json`." Preguntar: 1. "Listame los cursos miembros de este path, en orden de enseñanza. Cada uno por slug (ej. `flutter-fundamentals`) o por id (`course:flutter-fundamentals`)." Si el repo consumidor tiene `content/courses/`, verificar que cada slug resuelva a un directorio existente. Si alguno falta, advertir: > "El curso `{slug}` no existe todavía en `content/courses/`. Podés crearlo con > `/new-course {slug}` antes de publicar el path, o dejarlo referenciado como > placeholder (el path queda en `draft`)." NO crear ni modificar ningún curso. **PUERTA DE APROBACIÓN**: confirmar la lista de cursos miembros. --- ## Paso 3 — Agrupar en Milestones Explicar: > "Los milestones son fases nombradas y ordenadas que agrupan los cursos. Cada > milestone tiene su propia identidad xAPI (`path:<slug>/milestone:<ordinal>`) > pero NO es un AU cmi5 — es agrupación + presentación." Para cada milestone (uno a la vez), preguntar: a. "**Título** del milestone:" b. "**Descripción** (opcional) — qué desbloquea esta fase:" c. "¿Qué cursos (de la lista del Paso 2) entran en este milestone, en orden?" Asignar `ordinal` 1-based incremental y `id`: - forma corta `milestone:<slug-corto>`, o - forma calificada `path:<slug>/milestone:<ordinal>` (= la xAPI IRI). IMMUTABLE. **Validación**: - Cada curso del Paso 2 debe caer en exactamente un milestone (warn si un curso queda huérfano o duplicado). - `ordinal` debe ser contiguo desde 1 (warn si hay gaps). - Ningún milestone vacío (cada uno ≥ 1 curso). **PUERTA DE APROBACIÓN**: confirmar el mapa de milestones. --- ## Paso 4 — Credential (OpenBadge 3.0) Explicar: > "La credential es la metadata OpenBadge 3.0 del path. NO es un AU cmi5 nuevo — > es el achievement que el alumno gana al completar el path. Estos tres campos > seedean el template OpenBadge." Preguntar (una a la vez): 1. "**Cert name** — nombre de la credencial (ej. 'Agentic AI Engineer'):" 2. "**Skills demonstrated** — 3-6 skills nivel-path que el alumno demuestra (distintas de los tags por-curso):" 3. "**Earning criteria** — cómo se gana la credencial (bullet list verificable):" **Validación**: - `cert_name` presente si `status` será `published` (warn si vacío). - Al menos 1 earning criterion (warn si vacío). **PUERTA DE APROBACIÓN**: confirmar la credential. --- ## Paso 5 — Presentation Preguntar: 1. "**Tech pills** — 3-4 tecnologías más reconocibles que enseña el path (para la path card):" 2. "**Reward points** — Dojo Score reward al completar (int ≥ 0):" 3. "**Credential badge URL** (opcional — overridea el emblem si está):" 4. "**Banner image URL** (opcional):" **PUERTA DE APROBACIÓN**: confirmar presentation. --- ## Paso 6 — Generar JSON + MD + Validar 1. Construir el objeto `path.json` siguiendo `${CLAUDE_PLUGIN_ROOT}/assets/schemas/path.schema.json`. El objeto resultante es el **base draft (Layer 1 + Layer 2)** — cmi5/xAPI-safe (capa de identidad path aditiva, contrato de curso intacto), voice-neutral. 2. **Aplicar overlays (Base + Overlay protocol).** Antes de tocar disco, leer `${CLAUDE_PLUGIN_ROOT}/assets/runtime/overlay-protocol.md` y ejecutar el procedimiento completo (Discovery + Invocation + Layer 1 validator) sobre el base draft: - `command` = `"new-path"` - `cwd` = directorio donde se invocó `/new-path` - `baseDraft` = objeto `path.json` - `context.locale` = `path.meta.language` (`es` | `en`) Layer 1 invariants (`meta.id` = `path:<slug>`, `milestones[].id`, semver, identidad OpenBadge de la credential) se revalidan después de cada overlay. Si un overlay los muta: ABORT con error apuntando al `SKILL.md` ofensor. NO se escribe nada. 3. Crear directorio `content/paths/{slug}/`. 4. Escribir `path.json` (el draft final post-overlays). 5. Generar `path-overview.md` con frontmatter YAML que matchea el contrato dojo-academy `schemas/path.schema.yml`: ```yaml --- slug: { meta.slug } title: { meta.title } description: { meta.description } status: { meta.status } level: { meta.level } emblem: { meta.emblem } faculty: { meta.faculty } cert_name: { credential.cert_name } skills_demonstrated: { credential.skills_demonstrated } earning_criteria: { credential.earning_criteria } tech_pills: { presentation.tech_pills } reward_points: { presentation.reward_points } credential_badge_url: { presentation.credential_badge_url } banner_image_url: { presentation.banner_image_url } milestones: - title: { ... } description: { ... } courses: [ ... ] --- ``` El cuerpo del MD resume el path para humanos (milestones + cursos en orden). NO incluir `meta.id` / `meta.version` en el frontmatter del MD — esos son campos de identidad cmi5 que solo viven en `path.json` (el YAML de dojo-academy los omite por contrato). 6. Validar `path.json` con `ajv` si está disponible: ```bash ajv validate -s ${CLAUDE_PLUGIN_ROOT}/assets/schemas/path.schema.json -d content/paths/{slug}/path.json --spec=draft2020 -c ajv-formats ``` Si falla: report al usuario, NO marcar como done. 7. Presentar resumen: > "Path generado en `content/paths/{slug}/`: > > - **{N} milestones**, **{M} cursos** referenciados (sin modificar) > - **Credential**: {credential.cert_name} (OpenBadge 3.0) > - **Level**: {meta.level} · **Reward**: {presentation.reward_points} pts > - **xAPI identity**: `path:{slug}` + milestones `path:{slug}/milestone:<n>` > > ✅ JSON válido contra path.schema.json > ✅ IDs estables asignados (meta.id, milestones[].id) > ✅ Contrato cmi5 por-curso INTACTO (ningún course.json tocado) > {Si overlays aplicados: bullet list de SKILL.md path que corrieron + warnings} > > Próximos pasos sugeridos: > - `/new-track {category}` — ver el catálogo + prerequisite graph > - `/new-course {slug}` — crear un curso miembro faltante" **PUERTA DE APROBACIÓN**: confirmar output con el usuario antes de cerrar el flow. --- ## Recursos ### Esquemas - `${CLAUDE_PLUGIN_ROOT}/assets/schemas/path.schema.json` — contrato de authoring del path - `${CLAUDE_PLUGIN_ROOT}/assets/schemas/course.schema.json` — contrato cmi5 por-curso (NO se modifica) - `${CLAUDE_PLUGIN_ROOT}/assets/schemas/overlay-protocol.schema.json` — contrato `OverlayInput`/`OverlayOutput` para el Paso 2 (Base + Overlay) ### Runtime - `${CLAUDE_PLUGIN_ROOT}/assets/runtime/overlay-protocol.md` — discovery + invocation + Layer 1 invariant validator ## Principios clave - **Aditivo, no destructivo** — un path NUNCA modifica un `course.json`. - **IDs son forever** — `meta.id` (`path:<slug>`) y `milestones[].id` son inmutables. - **Identidad xAPI propia** — `path:<slug>` + `path:<slug>/milestone:<n>`, sin colisión con IRIs de curso. - **Credential = OpenBadge 3.0** — `credential.*` seedea el achievement template, NO un AU cmi5. - **Consistencia con dojo-academy** — el frontmatter del MD matchea `schemas/path.schema.yml`; `path.json` agrega solo los campos de identidad cmi5. - **Datos antes que visualización** — `path.json` es fuente de verdad, el MD es derivado. - **No fabricar** — si un curso miembro no existe, marcarlo placeholder y mantener `draft`, no inventar.
عرض على GitHub