Skip to content

feat: add teach check — cross-tool validation summary #359

Description

@Data-Wise

Quick Win 4: teach check — Cross-Tool Validation Summary

Effort: 2-3 hours | Priority: Medium (unified health view)
Blocked by: Craft QW3 (config normalization) — now complete

Problem

Three validation tools exist but users must know about and run each separately. No unified health view.

What to implement

A teach check subcommand that runs all three validation layers and presents a unified report.

Where

Add check|chk case to teach() function. Create _teach_check() function.

Validation layers

  1. Config syntax (flow-cli) — yq '.' "$config_file"
  2. Schema validation (Scholar, if available) — _teach_build_command validate
  3. Content validation (Craft, if available) — python3 commands/utils/teaching_validation.py
  4. Quarto render check (flow-cli) — render/syntax validation

Output design

╭─────────────────────────────────────────────╮
│  TEACHING PROJECT HEALTH                     │
╰─────────────────────────────────────────────╯
  Config syntax      PASS   [flow-cli]
  YAML schema        PASS   [scholar]
  Syllabus sections  PASS   [craft]    4/4 required
  Schedule           WARN   [craft]    week 14 missing content
  Assignments        PASS   [craft]    all referenced files exist
  Quarto render      PASS   [flow-cli]

  5/6 passed, 1 warning

Implementation sketch

_teach_check() {
    local config_file=$(_teach_require_config) || return 1
    local pass=0 warn=0 fail=0 total=0
    # Run each validation layer, aggregate results
    # Gracefully skip unavailable tools (Scholar/Craft)
}

Verification

  • teach check shows unified report from all available validators
  • Gracefully handles missing Scholar/Craft plugins

Context

Part of the Teaching Ecosystem Coordination spec. Craft-side changes (QW3: config normalization) merged in Data-Wise/craft@ced5ac5 — Craft's content validator now works on real flow-cli configs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions