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
最近来源活动
2026年5月27日 04:11
检测到的 SKILL.md 语言
西班牙语
星标
1
分支
0

安装方式

默认使用会先检查来源的 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 查看