Skip to content

docs: Add Marp slide deck with mkdocs integration#19

Open
cmungall wants to merge 4 commits intomainfrom
docs/marp-slide-deck
Open

docs: Add Marp slide deck with mkdocs integration#19
cmungall wants to merge 4 commits intomainfrom
docs/marp-slide-deck

Conversation

@cmungall
Copy link
Copy Markdown
Member

Adds a presentation slide deck for linkml-term-validator.

Contents (~30 slides)

  • Ontology background and why term validation matters
  • LinkML enumerations (static vs dynamic)
  • LTV architecture (3 plugins: binding, dynamic enum, permissible value)
  • Contrast with vskit materialization approach
  • Anti-hallucination dual validation pattern
  • Multi-level caching system
  • Real-world dismech case study (500+ disorders, 16 ontologies)
  • LTV's position in the LinkML ecosystem (not in core yet)

Setup (matching valuesets repo pattern)

  • docs/slides/ltv-slides.md — Marp source
  • docs/slides/ltv-slides.html — Pre-built HTML
  • docs/slides/index.md — mkdocs wrapper with iframe embed
  • justfilegen-slides recipe
  • mkdocs.yml — nav points to wrapper, not raw marp

cmungall and others added 4 commits March 17, 2026 22:59
Comprehensive ~28-slide presentation covering: the problem of validating
ontology terms, LinkML dynamic enums and bindings, the three composable
plugins, multi-level caching, anti-hallucination patterns, the DisMech
real-world use case, CLI examples, and future directions. Also adds a
gen-slides justfile recipe for building HTML/PDF output via Marp CLI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rrative

- Add early slides on what ontologies are, biomedical ontology landscape
  (GO 45k terms, CHEBI 180k, etc.), and CURIE identifier pattern
- Reframe LTV as a general data validation framework first: any data
  referencing ontology terms needs validation (clinical, genomic, KBs, EHRs)
- Move AI hallucination content later as a high-impact specific use case
- Add "DisMech + AI: Validation at Scale" slide connecting both themes
- Expand problem statement with obsolescence and scope violation examples
- Now ~33 slides total

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add slide explaining the gap in core LinkML: linkml-validate silently
  ignores dynamic enum constraints (too permissive), doesn't check
  meanings or labels against ontologies
- Add vskit vs LTV comparison slide: build-time materialization vs
  runtime validation, with trade-off table (complementary approaches)
- Update LTV intro slide to clarify it's a standalone complement to
  core LinkML, not part of linkml-runtime

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Build HTML from marp markdown via gen-slides justfile recipe
- index.md wraps the HTML in an iframe (same pattern as valuesets repo)
- mkdocs nav points to index.md, not the raw marp file
Copilot AI review requested due to automatic review settings March 19, 2026 01:45
@claude
Copy link
Copy Markdown

claude bot commented Mar 19, 2026

Claude finished @cmungall's task —— View job


PR Review: Marp Slide Deck Integration

I've thoroughly reviewed this PR that adds a presentation slide deck for linkml-term-validator. Here's my detailed feedback:

Todo List:

  • Read and analyze all changed files
  • Review slide content structure and accuracy
  • Examine build system integration (justfile, mkdocs.yml)
  • Check for security concerns
  • Assess performance considerations
  • Evaluate test coverage needs
  • Provide comprehensive feedback

Overall Assessment: Excellent Implementation

This PR adds a well-structured presentation that follows established patterns and integrates cleanly with the existing documentation system.

🎯 Strengths

Content Quality

  • Comprehensive coverage: 30 slides covering ontology background, LinkML enumerations, LTV architecture, and real-world use cases
  • Technical accuracy: Content aligns with CLAUDE.md project description and demonstrates deep understanding of the tool
  • Practical examples: Good balance of theory and practical CLI examples
  • Clear narrative flow: Logical progression from problem identification to solution presentation

Build Integration

  • Clean setup: Follows valuesets repo pattern with proper separation of concerns
  • Proper tooling: Uses industry-standard Marp CLI with appropriate flags (--allow-local-files)
  • mkdocs integration: Smart iframe wrapper approach preserves full Marp styling while integrating with docs site
  • Build automation: gen-slides recipe properly placed in main justfile

File Organization

docs/slides/
├── ltv-slides.md      # Source (694 lines)
├── ltv-slides.html    # Pre-built output (167KB)
└── index.md           # mkdocs wrapper with iframe

🔧 Technical Implementation Review

Build System (justfile:113-115)

gen-slides:
  cd docs/slides && npx @marp-team/marp-cli ltv-slides.md --allow-local-files -o ltv-slides.html
  • ✅ Proper working directory change
  • ✅ Correct output file specification
  • --allow-local-files flag appropriately used for local development

mkdocs Integration (mkdocs.yml:45)

nav:
  - Explanation:
      - Presentation: slides/index.md
  • ✅ Logical placement under "Explanation" section
  • ✅ Points to wrapper, not raw Marp file (correct pattern)

Duplicate Recipe Issue ⚠️

Minor Issue: There are now two gen-slides recipes:

  1. justfile:113-115 (this PR):

    gen-slides:
      cd docs/slides && npx @marp-team/marp-cli ltv-slides.md --allow-local-files -o ltv-slides.html
  2. project.justfile:57-62 (existing):

    gen-slides:
      @echo "Building slides with Marp..."
      @mkdir -p docs/slides/output
      npx @marp-team/marp-cli docs/slides/ltv-slides.md -o docs/slides/output/ltv-slides.html

The main justfile's recipe will override the project.justfile one due to import order, but this creates inconsistency.

📊 Performance Considerations

File Sizes

  • Source markdown: 19.7KB (reasonable)
  • Generated HTML: 167KB (acceptable for slide deck with embedded styles)
  • Total addition: ~188KB (minimal impact)

Caching Strategy

  • ✅ Pre-built HTML committed to repo (good for CI/CD performance)
  • ✅ No runtime compilation required for docs serving

🔒 Security Review

  • No security concerns: Slide content is static markdown with no dynamic content
  • Safe build process: Uses standard Marp CLI with appropriate flags
  • Clean iframe embedding: Standard mkdocs iframe integration
  • No external dependencies: Self-contained presentation

📝 Content Highlights

The slide content demonstrates excellent technical communication:

  1. Problem identification: Clear explanation of ontology validation challenges
  2. Solution architecture: Well-illustrated 3-plugin system
  3. Comparison with alternatives: Thoughtful vskit vs LTV comparison
  4. Real-world evidence: DisMech case study with concrete metrics
  5. AI integration: Forward-looking anti-hallucination patterns

🛠 Recommendations

1. Fix Recipe Duplication

Choose one approach and remove the other:

Option A (recommended): Keep main justfile recipe, remove from project.justfile
Option B: Keep project.justfile recipe with output directory, update main justfile

2. Consider Documentation

Add a brief note in CLAUDE.md about slide generation:

### Documentation
just gen-slides       # Generate Marp slide deck

Test Coverage

No additional test coverage needed - this is documentation/presentation content that:

  • Uses standard Marp tooling (well-tested)
  • Contains static content (no business logic)
  • Follows established patterns (iframe embedding)

🎯 Summary

This is a high-quality addition that enhances the project's documentation with a professional presentation. The technical implementation is sound, follows established patterns, and integrates well with the existing toolchain.

Recommendation: Approve after addressing the minor recipe duplication issue.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Marp-based presentation slide deck to the documentation site and wires it into MkDocs navigation, along with Just recipes to (re)generate the rendered outputs.

Changes:

  • Add Marp slide source (docs/slides/ltv-slides.md) and a pre-built HTML export (docs/slides/ltv-slides.html).
  • Add an MkDocs page wrapper (docs/slides/index.md) and link it into mkdocs.yml nav.
  • Add gen-slides Just recipes intended to generate HTML/PDF outputs.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
project.justfile Adds a gen-slides recipe to build slide outputs via npx marp-cli.
justfile Imports project.justfile and adds another gen-slides recipe.
mkdocs.yml Adds “Presentation” to the MkDocs nav under “Explanation”.
docs/slides/index.md MkDocs page that links to and embeds the generated slides via iframe.
docs/slides/ltv-slides.md Marp markdown source for the slide deck.
docs/slides/ltv-slides.html Pre-built Marp HTML export of the slide deck.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread justfile
Comment on lines +111 to +115

# Generate presentation slides in all formats
gen-slides:
cd docs/slides && npx @marp-team/marp-cli ltv-slides.md --allow-local-files -o ltv-slides.html
@echo "Slides generated in docs/slides/"
Comment thread project.justfile
Comment on lines +59 to +62
@mkdir -p docs/slides/output
npx @marp-team/marp-cli docs/slides/ltv-slides.md -o docs/slides/output/ltv-slides.html
npx @marp-team/marp-cli docs/slides/ltv-slides.md -o docs/slides/output/ltv-slides.pdf
@echo "✅ Slides built: docs/slides/output/ltv-slides.html and ltv-slides.pdf"
Comment thread project.justfile
Comment on lines +60 to +61
npx @marp-team/marp-cli docs/slides/ltv-slides.md -o docs/slides/output/ltv-slides.html
npx @marp-team/marp-cli docs/slides/ltv-slides.md -o docs/slides/output/ltv-slides.pdf
Comment thread justfile
Comment on lines +112 to +115
# Generate presentation slides in all formats
gen-slides:
cd docs/slides && npx @marp-team/marp-cli ltv-slides.md --allow-local-files -o ltv-slides.html
@echo "Slides generated in docs/slides/"
Comment thread docs/slides/index.md

## Preview

<iframe src="ltv-slides.html" width="100%" height="600px" style="border:1px solid #ccc; border-radius: 4px;"></iframe>
Comment thread docs/slides/ltv-slides.md
theme: default
paginate: true
backgroundColor: #fff
backgroundImage: url('https://marp.app/assets/hero-background.svg')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants