Skip to content

Curriculum Authoring Editors

Generated artifact. Do not edit manually.

Generated by: scripts/build_compendia.py Regenerate with: python3 scripts/build_compendia.py --compendium dev-handbook --web-and-tex Source of truth: docs/dev/source/

Language / Sprache: English (EN) · Deutsch (DE) | PDF: English PDF · Deutsches PDF

Compendium: §1 Documentation Guidelines · §2 Landscape JSON Reference · §3 Minimal Schema & Fallback · §4 Authoring Editors · §5 Graph Editor · §6 Flashcard Editor · §7 Node Ordering · §8 Liquibase · §9 Auto-Update (SSE)


4. Curriculum Authoring Editors

SkillPilot separates local Vite development-server authoring tools by semantic layer rather than mixing canonical graph editing, flashcard curation, and scope-view composition into one monolithic UI.

4.1. Four Local Vite Editors and Route Architecture

| Editor | Frontend Route & Dev Middleware | Owned Artifact Layer | | –- | –- | –- | | Flashcard Editor (6) | /flashcard-editor · /__deck-editor/* | *_deck*.json flashcard decks (curricula/... + app/public/data/). | | Graph Editor (5) | /graph-editor · /__graph-editor/* | Narrow requires refactoring and cluster-to-atomic prerequisite normalization on landscape JSONs. | | Canonical Cluster Editor | /canonical-cluster-editor · /__canonical-cluster-editor/* | Canonical contains cluster hierarchy, sibling order, and cluster metadata in curricula/DE/Gymnasium/canonical/. | | Composition View Editor | /composition-view-editor · /__composition-view-editor/* | Scope-specific *.view.json upper trees (structure nodes + cluster-only canonicalSubtree attachments). | {cols="26%,34%,40%"}

All /__* file-mutation endpoints exist exclusively inside local Vite dev-server middleware (vite.config.ts) and are never exposed in production builds.

4.2. Three-Pane Layout, Blocking vs. Warning Validations, and Rollout Order

Both V1 structural editors use a three-pane layout (left tree navigator, center node/attachment inspector, right live compiled-preview & diagnostics pane):

  • Blocking save validations (reject write): Malformed JSON, duplicate IDs, contains cycles, dangling goalId references, authoring atomic goals inline inside .view.json, or overlapping canonicalSubtree expansions violating single-occurrence projection (View Projection).
  • Non-blocking warnings (allow save with diagnostic badge): Unreferenced canonical clusters in a partial draft view, unplacedInScope candidates, or pending downstream QA reruns (npm run validate:graph, validate:views).
  • Four-phase implementation sequence: (1) Read-only compiled tree & diagnostic inspector \(\to\) (2) Canonical Cluster Editor save pipeline \(\to\) (3) Composition View Editor .view.json authoring \(\to\) (4) cross-view coverage diffing (deliberate non-goals: multi-user cloud editing, automatic AI graph rewriting, or editing learner state).