Course Development with CourseOps

IDT-CD-001 — Student Guide

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

This course is designed for course developers, content creators, technical writers, and instructional designers who want to create professional training materials efficiently. You'll learn how to use the CourseOps platform to author content once in Markdown and automatically generate multiple output formats.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The course is structured to build your skills progressively. We'll start with environment setup, move through understanding the system architecture, then dive into hands-on course creation. Each section builds on the previous one, ensuring you have a solid foundation before moving forward.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

CourseOps is Identitrain's answer to the challenge of maintaining training content across multiple formats. Instead of managing separate Word documents, PowerPoint files, and PDF exports, you author everything in simple Markdown files. The system automatically generates all the formats students need: interactive web slides, downloadable PDFs, and comprehensive EPUB e-books for offline reading.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The power of CourseOps lies in its "write once, output many" approach. From a single set of Markdown files, the system generates:

Interactive HTML Slides - Beautiful, responsive presentations built with Slidev, featuring smooth transitions, presenter notes, and full navigation

PDF Slides - Downloadable presentation decks for printing or offline viewing

Student Guide EPUB - Comprehensive e-book with all slide content plus detailed explanatory notes

Student Workbook EPUB - Exercise-focused companion with hands-on activities and practice materials

All outputs maintain consistent branding and styling based on Identitrain's visual identity.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Traditional course development often involves managing multiple file formats: PowerPoint for presentations, Word for handouts, PDF exports for distribution, and maybe HTML for web delivery. Each format requires manual updates when content changes, leading to version drift and inconsistencies.

CourseOps eliminates these problems by treating your Markdown source files as the single source of truth. When you update content, you simply rebuild, and all formats update automatically. Git version control provides complete history, branch management for experimental content, and easy collaboration through pull requests and code review workflows.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

While some familiarity with these technologies is helpful, you don't need to be an expert. We'll provide enough context and examples for you to be productive. If you can write basic Markdown and make Git commits, you're ready to start. The VSCode setup section will walk you through installing and configuring everything you need.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The course is designed to be hands-on and practical. After the initial setup and architecture overview, you'll spend most of your time actually creating course content. By the end, you'll have built and published a real course that demonstrates all the key CourseOps features.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The development environment setup is crucial for a smooth course development experience. We'll install Visual Studio Code, configure essential extensions for Markdown editing, Mermaid diagrams, Git integration, and more. Once your environment is ready, you'll have a professional workspace optimized for course development.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Your development environment is your primary workspace for course creation. We recommend Visual Studio Code (VSCode) because it provides excellent Markdown support, integrated Git functionality, and a rich ecosystem of extensions specifically designed for technical content creation. Setting up your environment properly now will save you significant time and frustration later.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

While you can use any text editor for course development, VSCode has become the de facto standard for several reasons. It's free, well-maintained by Microsoft, and has massive community support. The Markdown ecosystem around VSCode is particularly strong, with extensions for preview, linting, formatting, and diagram rendering. Most importantly, it integrates seamlessly with Git, allowing you to commit, push, and manage branches without leaving the editor.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The Extensions view (Method 1) is the easiest for most users. You can search by name, read descriptions, and see ratings all in one place. Method 2 is convenient when you have direct links. Method 3 is fastest if you're installing multiple extensions at once, which we'll do later in this section.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Markdown Preview Enhanced is the most comprehensive Markdown preview extension available. It renders your content in real-time as you type, supports Mermaid diagrams (which we'll use extensively), handles math equations via LaTeX, and can export to PDF or HTML. The preview updates instantly, so you can see exactly how your content will look without leaving your editor.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The keyboard shortcut opens a preview pane next to your editor. As you type in the editor, the preview updates in real-time. This immediate feedback loop helps you catch formatting errors, verify diagram syntax, and ensure your content flows well. The presentation mode is particularly useful for rehearsing how your slides will look during delivery.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Slidev is a presentation framework built specifically for developers who want to create slides using Markdown. It's the engine that powers the HTML slide generation in CourseOps. The VSCode extension adds syntax highlighting for Slidev-specific features, navigation through your slide deck, and quick access to Slidev documentation. It makes authoring slides feel more like working with a presentation tool rather than a text editor.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Once installed, the Slidev extension automatically activates when you open a slides.md file. You'll see improved syntax highlighting that distinguishes between YAML frontmatter, Markdown content, and Slidev directives. The outline view in VSCode's sidebar shows all your slides, making it easy to navigate large courses. Hover over frontmatter fields to see documentation about what each field does.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Every course's slides.md file starts with YAML frontmatter that defines the course title, metadata, and Slidev configuration. The YAML extension provides syntax validation, auto-completion, and error detection for this critical configuration. It will catch common mistakes like incorrect indentation, missing colons, or invalid values before you try to build your course.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

YAML is whitespace-sensitive and easy to mess up. A single misplaced space can break your entire configuration. The YAML extension prevents these issues by validating as you type. It shows errors inline with helpful messages about what's wrong and how to fix it. The auto-completion is particularly helpful when you can't remember exact field names or are exploring what options are available.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Mermaid is a diagram-as-code tool that lets you create flowcharts, sequence diagrams, class diagrams, and more using simple text syntax. Instead of using a graphical diagramming tool, you write your diagram structure in Markdown code blocks. CourseOps renders these diagrams automatically in all output formats. The syntax highlighting extension makes Mermaid code blocks easier to read and edit by color-coding the syntax.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Without syntax highlighting, Mermaid code blocks look like plain text. With this extension, different parts of your diagram syntax get different colors: node definitions, connections, labels, and styling directives. This visual distinction makes it much easier to understand the structure of complex diagrams at a glance and to spot syntax errors before you even preview the diagram.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Claude Code brings AI assistance directly into your editor. You can ask questions about Markdown syntax, get help with content structure, generate example code blocks, or even get suggestions for improving your writing. It's particularly useful when you're stuck on how to phrase something, need to generate example data, or want to verify that your content is clear and well-structured.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Claude Code integrates directly into your editor workflow. You can select text and ask Claude to improve it, explain it differently, or expand on it. You can ask questions about Markdown syntax without leaving your editor. You can even ask Claude to generate entire sections based on a brief description. It's particularly helpful when you're experiencing writer's block or need to create technical examples quickly.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Git Graph shows your repository's commit history as a visual graph, making it easy to understand branching, merging, and the overall history of your course. GitLens adds inline blame annotations showing who last changed each line and when. Together, these tools make version control much more accessible, especially if you're not comfortable with Git command line.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The Git Graph view appears at the bottom of your editor and shows your entire repository history as a connected graph. Each commit is a node, with lines showing parent-child relationships and branch flows. You can right-click any commit to perform Git operations like checkout, cherry-pick, merge, or rebase. This visual approach makes understanding repository state much easier than reading command-line output.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

GitLens adds subtle gray text to the end of each line showing who last modified it and when. Hover over this annotation to see the full commit message and diff. You can click through to see the entire commit, compare with other commits, or view the file's complete history. This makes understanding code history and tracking down when changes were made incredibly easy.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The Code Spell Checker runs in real-time as you type, underlining potential spelling mistakes with a blue squiggle. Right-click to see suggestions or add words to your custom dictionary. It's smart enough to handle technical terms, camelCase, and code blocks. For course content, this extension is essential for maintaining professional quality.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Running these commands from your terminal will install all extensions without needing to search for each one individually in VSCode. This is particularly useful when you're setting up a new computer or helping a colleague get started with course development. After installation, restart VSCode to ensure all extensions are fully loaded and activated.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

This configuration file customizes VSCode specifically for course development. Word wrap prevents horizontal scrolling in long paragraphs. The larger font size and line height make content more comfortable to read during extended writing sessions. Smart commit allows committing all changes without explicitly staging files. These settings strike a good balance between functionality and simplicity.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Learning keyboard shortcuts significantly speeds up your workflow. The Command Palette (Ctrl+Shift+P) is particularly important - it gives you access to every command in VSCode without memorizing individual shortcuts. Quick File Open (Ctrl+P) lets you jump to any file by typing part of its name. Toggle Preview (Ctrl+K V) is essential for Markdown work. Invest time in learning these shortcuts and they'll pay dividends throughout your course development career.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

With your environment fully configured, you're ready to start creating courses. The extensions will help you write better content faster, catch errors before they become problems, and manage version control effectively. In the next section, we'll explore how CourseOps works behind the scenes, including the multi-repository architecture and automated build pipeline that transforms your Markdown into polished training materials.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The CourseOps architecture is designed around the principle of separation of concerns. Course content is separate from build tools, which are separate from deployment infrastructure. This separation makes the system maintainable, testable, and scalable. We use a multi-repository approach where each course is its own Git repository, allowing independent versioning and updates.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The multi-repository architecture provides several benefits:

Independence: Each course can be developed, versioned, and released independently

Ownership: Different teams can own different courses without conflicts

History: Each course has its own Git history, making it easy to track changes

Access Control: Permissions can be set per repository

Scalability: New courses are added without modifying existing ones

The catalog repository acts as the registry, listing all available courses. The courseops repository contains the build system itself, which you typically won't need to modify.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

When you create a new course, you create a new course repository. When you want to add that course to the build system, you edit the catalog's courses.yaml file. If you need to customize the build process itself (rare), you'd modify the courseops repository. Most of your work will be in course repositories, occasionally touching the catalog to register new courses.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The build pipeline consists of several stages:

Source: Your course repository on GitHub contains the Markdown source

Builder: The CourseOps builder is a Python script that orchestrates the entire process

Slidev: Converts Markdown to interactive HTML slides and exports PDF

EPUB Generator: Creates e-books from your content and notes

Web Server: Hosts all generated materials at courses.identitrain.com

The builder is smart - it tracks which courses have changed and only rebuilds what's necessary, saving time on large catalogs.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Here's how the build process works step by step:

You push changes to your course repository on GitHub

A scheduled build runs (typically daily) or can be triggered manually

The builder reads the catalog's courses.yaml to see which courses to build

It clones or updates each course repository

For each course, it generates HTML slides, PDFs, and EPUBs

All outputs are published to the web server

You can view your course at courses.identitrain.com/your-course-slug

The builds run on Kubernetes in Google Cloud, providing scalability and reliability.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The courses.yaml file is the single source of truth for what courses exist. When you create a new course, you add an entry here. The slug becomes part of the URL where your course is published (e.g., courses.identitrain.com/idt-cd-001). The ref field allows you to build from different branches or tags, useful for testing changes before merging to main.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Without state management, every build would rebuild every course, even if nothing changed. By tracking the Git commit SHA for each course's last successful build, the system can skip unnecessary work. If you push a commit to IDT-AI-101 but IDT-GD-200 hasn't changed, only IDT-AI-101 gets rebuilt. This makes builds fast even as your course catalog grows.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The course structure follows conventions that make it easy to navigate any course repository. The slides.md file is the only required file - it contains frontmatter metadata and references to chapter files. Chapter files are numbered for ordering: 0-intro, 1-first chapter, 2-second chapter, etc. Images go in the images/ directory. Exercises are optional and stored in exercises/. The README documents the course for contributors.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The slides.md file has two parts: frontmatter and chapter references. The frontmatter (between --- markers) defines course metadata like title, course code, duration, target audience, and Slidev configuration. Below the frontmatter, you reference each chapter file using Slidev's src: syntax. The builder processes this file first, then follows the references to assemble the complete course.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Breaking your course into separate chapter files has several advantages. You can reorder chapters by changing the order of references in slides.md. You can hide chapters during development by setting hidden: true. You can work on different chapters simultaneously without merge conflicts. Large courses become manageable because each chapter is a self-contained file.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The output structure mirrors the course catalog. The root index.html lists all available courses with links to their slides and downloads. Each course gets a directory named after its slug. Inside, you'll find the interactive HTML slides (index.html), the PDF export, and both EPUB files. The _courseops_theme directory contains shared assets like fonts and backgrounds used across all courses.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Cloud builds are the production build system. They run automatically on a schedule (typically nightly) or can be triggered manually via the GKE console. They build all courses in the catalog and publish to the live web server.

Local builds let you test your course without waiting for cloud builds. You run a Docker container on your machine that mimics the cloud build environment. This is essential for testing changes before pushing them to GitHub. You can see your slides, verify images load correctly, and ensure Mermaid diagrams render properly.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Using Docker containers provides a consistent, reproducible build environment. Your local build uses the exact same container as the cloud build, ensuring what works locally will work in production. The container includes all dependencies: Node.js for Slidev, Python for the builder scripts, Puppeteer for PDF generation, and Git for fetching course repositories. This eliminates "works on my machine" problems.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Build performance is critical for developer productivity. The builder includes several optimizations: courses are built in parallel when possible, unchanged courses are skipped entirely based on Git SHAs, Git clones are shallow (only the latest commit), and npm packages are cached between builds. These optimizations mean you typically wait only for your changed course to rebuild, not the entire catalog.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The Kubernetes deployment runs the build system reliably at scale. The CronJob runs builds on a schedule (configurable, typically daily). The PersistentVolume stores working directories, course repositories, and build state across runs. Nginx serves the generated static files. Ingress provides TLS termination and routes requests to the appropriate course. This architecture can handle dozens or hundreds of courses without issue.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Now that you understand how CourseOps works behind the scenes, you're ready to create your first course. You know that you'll create a Git repository for your course, add it to the catalog's courses.yaml, and the build system will automatically process it. You understand the multi-stage pipeline that transforms your Markdown into slides, PDFs, and EPUBs. In the next section, we'll walk through creating a complete course step by step.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

This section is entirely hands-on. We'll create a real course from scratch, covering every step: choosing a course code, setting up the directory structure, creating the initial files, writing content, and publishing to GitHub. By the end, you'll have built and published your first CourseOps course.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Choose your subject code thoughtfully as it groups related courses. Common subject codes: AI (Artificial Intelligence), IM (Identity Management), GD (Groovy Development), CD (Course Development), SC (Security), CL (Cloud). The number typically indicates level: 001-099 for introductory, 100-199 for intermediate, 200+ for advanced. Your course code becomes part of URLs, so keep it professional and meaningful.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Spend time crafting good metadata. The title should be descriptive but concise. Duration should be realistic - don't try to cram too much into a short course. Target audience helps market the course and set appropriate expectations. Prerequisites ensure students have the necessary background. The description should clearly state what students will learn and be able to do after completing the course.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Don't make chapters too long or too short. A good chapter takes 15-45 minutes to deliver and covers one coherent topic. Too many short chapters feel fragmented; too few long chapters are overwhelming. Aim for 5-8 chapters in a one-day course. Each chapter should have a clear learning objective and build on previous chapters. Include hands-on examples and exercises to reinforce learning.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The directory structure is a convention, not a requirement, but following it keeps courses consistent and maintainable. The slides.md file is required. Chapter files are numbered for ordering. The images/ directory holds all visual assets. The .gitignore file prevents build outputs from being committed to Git. The README.md documents the course for contributors.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The .gitignore file tells Git which files to ignore. Build outputs like PDFs and EPUBs are generated by the build system, so they shouldn't be in your source repository. OS files like .DS_Store (macOS) and Thumbs.db (Windows) are system-specific and shouldn't be shared. Editor configuration files are personal preferences. The node_modules/ directory (if you're customizing the theme) can be huge and is reconstructed from package.json.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Git provides a complete history of your course development. Every change is tracked, allowing you to see what changed, when, and why. If you make a mistake, you can revert to any previous version. Git also enables collaboration - multiple people can work on the same course without conflicts. The initial commit establishes a baseline. Future commits will show the evolution of your course content.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

GitHub serves as the central repository for your course. Once pushed to GitHub, the CourseOps build system can access your course to build it. The repository name should exactly match your course code to maintain consistency. Don't initialize with a README because you already have one locally - doing so would create merge conflicts. The repository visibility depends on your organization's policy - some courses may be public, others private.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The remote add command connects your local Git repository to GitHub. The push command uploads your commits to GitHub. The -u flag sets up tracking so future pushes and pulls know which branch to use. Once pushed, your course source is backed up to GitHub, accessible to the build system, and available for collaboration. You can now work locally and push changes to share them.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The frontmatter is YAML configuration between --- markers. Don't change the Slidev configuration section - these are standard settings that work for all courses. The course metadata section is where you customize your course. The exportFilename determines the PDF filename. The idtCourseCode must match your repository name. Revision starts at "A" and increments for major updates. Duration is in days.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The frontmatter metadata appears in multiple places: on the title slide, in the PDF export, in EPUB metadata, and in the course catalog. The exportFilename becomes the actual PDF filename students download. The idtTargetAudience can span multiple lines using backslash line continuation. Be specific in the description - it helps students decide if the course meets their needs and helps with search engine optimization when courses are published publicly.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Each chapter reference is a mini-frontmatter block with src: pointing to the chapter file and hidden: controlling visibility. The three hyphens (---) separate each reference. The order of references determines the order of chapters in your course. You can hide chapters during development by setting hidden: true. This is useful when you're working on a chapter but aren't ready to include it in the build yet.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The screenshot shows a typical course structure in VSCode. Notice the numbered chapter files (0-intro.md, 1-xxx.md, etc.), the images directory containing visual assets, the slides.md main file, and supporting files like .gitignore and README.md. The META-INF directory is optional and contains course development notes not included in the final output. Some courses also have an exercises/ directory for hands-on activities.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Get in the habit of committing frequently. After you finish a chapter, commit it. After you add a set of images, commit them. If you make significant edits to existing content, commit those changes. Clear commit messages help you (and others) understand what changed and why. "Add chapter 2 on authentication" is much more helpful than "update files". Pushing regularly ensures your work is backed up to GitHub and available to collaborators.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Until your course is in the catalog, the build system doesn't know it exists. The catalog is a separate Git repository that you'll need to clone, edit, commit, and push. The slug is the lowercase version of your course code and becomes part of the URL (courses.identitrain.com/idt-xx-nnn). The SSH URL format is required for the build system to authenticate with GitHub. The ref determines which branch or tag to build - use main for production.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The catalog repository is separate from your course repository. You'll clone it once, then update it whenever you create new courses. After editing courses.yaml to add your course, commit and push those changes. The build system reads this file to determine which courses to build, so your course will be included in the next build after you push the catalog changes.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

For production courses, automatic scheduled builds are usually sufficient. They run daily and pick up all changes. For development and testing, manual triggers are faster. You can trigger a build, wait a few minutes, and see your course appear at courses.identitrain.com. This quick feedback loop helps you catch and fix issues early. Note that you need appropriate GKE permissions to trigger builds manually.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

After a build completes, immediately check your course. Open the slides and click through them all. Verify images load (broken images appear as icons). Check that Mermaid diagrams rendered correctly. Download the PDF and flip through it. Open the EPUB files in an e-reader to ensure they contain your content and format correctly. Finding issues early makes them easier to fix.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Image path issues are very common - make sure you're using relative paths from the course root and that filenames match exactly (including case). YAML syntax errors in courses.yaml will cause builds to fail entirely - use a YAML validator if you're unsure. Mermaid diagrams are sensitive to syntax - always test complex diagrams at mermaid.live before adding them to your course. Most issues are simple to fix once you know what to look for.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Course development is iterative. You'll go through this cycle many times: write content, commit, push, build, review, revise. Early on, you might trigger manual builds frequently to check your work. As you get more comfortable, you might wait for scheduled builds. The key is to keep the iterations small - don't write an entire course before building it. Build frequently to catch issues early when they're easier to fix.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Congratulations on creating your first CourseOps course! You now understand the complete workflow from initial setup to published output. In the next section, we'll dive deep into content creation techniques: writing effective Markdown, using images effectively, creating diagrams with Mermaid, and structuring content for maximum learning impact. These skills will help you create professional, engaging training materials.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

This section covers the practical skills you'll use daily: writing clear Markdown, organizing images effectively, and creating professional diagrams. These are the building blocks of great course content. Mastering these tools will help you create engaging, visually appealing training materials efficiently.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Markdown was designed to be readable as plain text while providing formatting capabilities. Unlike HTML or Word, Markdown source is clean and easy to edit. Headers use hash marks (#), emphasis uses asterisks (* or **), lists use bullets or numbers, and links use brackets and parentheses. The syntax is intuitive - most people can read Markdown without knowing the syntax. This simplicity makes Markdown ideal for course content where clarity matters more than complex formatting.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The layout determines how your slide looks. Cover layouts are full-screen with centered text, perfect for chapter openings. Default layouts have a title area and content area for standard slides. Two-column layouts split content side-by-side. Image layouts place content next to images. Using appropriate layouts makes your slides more visually appealing and helps structure information clearly.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The two-column layout is one of the most useful for technical content. You can show code on one side with explanation on the other. You can compare two approaches side by side. You can list pros in one column and cons in another. The ::right:: separator divides the content. Keep each column's content roughly balanced - one very short column next to one very long column looks awkward.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Code blocks use triple backticks (```) with the language name. Slidev uses Shiki for syntax highlighting, which supports virtually every programming language. The highlighting is automatic - just specify the language and your code gets appropriate colors. For shell commands, use bash. For configuration files, use yaml, json, or xml. Good syntax highlighting makes code examples much easier to read and understand.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Formatting should serve clarity, not decoration. Use inline code formatting for anything a student might type or see in a terminal: commands, filenames, function names, variable names. Use bold for key terms when first introduced or for important warnings. Use italics rarely - too much italicized text is hard to read. The goal is to help students quickly identify what's important and what's technical versus explanatory.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Lists are the workhorse of presentation content. They break information into digestible chunks and make slides easy to scan. Keep individual list items short - if an item needs multiple sentences, consider making it a separate slide. Use parallel structure for professionalism: "Create repository, Write content, Publish course" not "Creating, Write content, Publishing." Indent sub-items two spaces to show hierarchy.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Link text should be descriptive - reading just the link text should tell users what they'll find. "Download VSCode" is better than "click here". Verify all external links work before building your course. Broken links damage credibility. For links to other courses or internal documentation, use relative paths when possible. Be cautious with links to commercial sites that might change URLs or disappear.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Images are powerful teaching tools but require care. Store all images in the images/ directory to keep them organized. Use descriptive filenames so you can find them later - authentication-flow-diagram.png is much better than img3.png. Provide alt text describing what the image shows for accessibility and for when images fail to load. Optimize images before committing - large images slow page loads and bloat your repository.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Most images work fine at their default size. For very large images, use HTML img tags with style attributes to scale them down. The percentage is relative to the slide width - 80% means 80% of the slide width. Add captions below images using italic text to provide context. Captions help when students review slides later without audio narration.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Mermaid is a game-changer for technical content. Instead of using a diagramming tool, exporting images, and manually updating them when things change, you write diagram code that generates the visual automatically. Changes are simple: edit the code, rebuild, done. Mermaid supports flowcharts, sequence diagrams, class diagrams, entity-relationship diagrams, state diagrams, and more. The diagrams are resolution-independent and match your course theme automatically.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Flowcharts are perfect for showing step-by-step processes, decision trees, and workflows. Use rectangles for processes, diamonds for decisions, and arrows for flow. Keep diagrams simple - aim for 5-10 nodes maximum. Label decision branches clearly (Yes/No, True/False, etc.). Flowcharts help students visualize abstract processes and understand branching logic that's hard to explain in text.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Sequence diagrams show how components interact over time. They're perfect for explaining API calls, authentication flows, or any multi-step process involving multiple actors. The vertical axis represents time flowing downward. Solid arrows show requests, dashed arrows show responses. Sequence diagrams help students understand complex interactions that would be confusing in prose.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Class diagrams visualize object-oriented design. Show classes with their properties and methods, and relationships between classes. Use + for public, - for private, # for protected. Entity-Relationship diagrams (similar syntax) show database schema. These diagrams help students understand data models that would be tedious to explain textually.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Simple diagrams are more effective than complex ones. If your diagram has 20+ nodes, split it into multiple diagrams showing different aspects. Use consistent styling - don't make every node a different color. Test complex diagrams at mermaid.live before adding them to your course to catch syntax errors early. Remember that diagrams will be printed in black and white PDFs, so don't rely solely on color to convey meaning.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The comments section serves two purposes. Everything before the NOTES separator is for instructors: delivery tips, timing estimates, stories to tell, warnings about common confusion points. Everything after the separator goes into the student guide EPUB as supplementary content. This lets you keep slides concise (for presentation) while providing detailed explanations (for reference). Write student guide content in full sentences with proper formatting.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Tables work well for comparing features, showing specifications, or presenting structured data. Keep them simple - tables with many columns are hard to read on slides. Use colons in the separator row to control alignment: :--- for left, :--: for center, ---: for right. If your table is very complex, consider breaking it into simpler slides or using a different format.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Use block quotes sparingly for information that deserves special attention: key definitions, important warnings, or memorable quotes. Don't overuse them - if everything is highlighted, nothing stands out. Block quotes render with special styling that makes them visually distinct from regular text. They're perfect for "remember this" moments you want students to notice.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

How you organize content matters as much as what you say. One concept per slide prevents cognitive overload. Progressive disclosure means starting simple and adding complexity gradually - don't introduce five new concepts simultaneously. Visual hierarchy guides the eye: headers for topics, bullets for details, emphasis for key terms. Leave white space - cramped slides are hard to read. Consistent patterns help students develop mental models of how your content works.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Accessibility isn't just compliance - it's good design. Alt text helps screen readers and provides context when images fail to load. Not everyone sees color the same way, so use color plus text or icons. Ensure sufficient contrast between text and background. Use heading levels properly (h1, h2, h3) for structure, not just for font sizes. Write clearly - every student benefits from straightforward language. Accessible content is simply better content.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You've learned the essential techniques for creating CourseOps content. You can write clean Markdown, include images effectively, generate professional diagrams with Mermaid, and structure content for maximum learning. These skills will serve you throughout your course development career. In the next section, we'll cover the final piece: publishing your course using Git workflows and understanding the automated build process.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Publishing in CourseOps is streamlined through Git version control and automated builds. You'll learn the day-to-day Git workflow, how to trigger builds, how to verify outputs, and how to handle common issues. By the end of this section, you'll be comfortable with the complete publish cycle from local edits to live course materials.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The publishing workflow has seven stages: 1) Edit your Markdown files locally in VSCode, 2) Commit changes with Git, 3) Push commits to GitHub, 4) Automated or manual build triggers, 5) CourseOps generates all output formats, 6) Outputs publish to the web server, 7) You verify everything looks correct. This workflow is fast once you're comfortable with it - you can go from local edit to published course in under 10 minutes.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The git status command shows the state of your working directory. Modified files appear in red - these are changes not yet staged. Staged files appear in green - these are ready to commit. Untracked files are new files Git doesn't know about yet. Checking status before committing helps you avoid accidentally committing files you didn't mean to include or forgetting to include files you did change.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Staging is the step between editing and committing. You choose which changes to include in the next commit. git add . stages everything - convenient but less precise. Staging specific files gives you more control. You might stage and commit your chapter 1 changes, then separately stage and commit chapter 2 changes, creating two focused commits instead of one large one. This makes your Git history clearer and more useful.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Think of commit messages as documentation for future you (and others). A message like "update files" tells you nothing. "Add MFA section to authentication chapter" tells you exactly what changed. Use present tense by convention: "Add feature" not "Added feature". The first line should be a short summary. If you need more detail, add it in subsequent paragraphs. Good messages make it easy to understand project history months or years later.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The push command uploads your local commits to GitHub. Until you push, your changes exist only on your computer. After pushing, they're backed up to GitHub, visible to collaborators, and accessible to the build system. The -u flag (first push only) sets up tracking so future pushes and pulls know which branch to use. You can push after every commit or batch multiple commits before pushing - either approach works.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Git log shows your commit history. The --oneline flag shows a compact view. --graph visualizes branches. git show displays a specific commit's changes. git diff compares versions: no arguments shows unstaged changes, --staged shows what's about to be committed, and you can compare any two commits. These commands are essential for understanding what changed, when, and why. They're also invaluable when troubleshooting issues.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Branches are parallel versions of your repository. The main branch is your stable, published content. Feature branches let you work on new chapters or major changes without disrupting main. Create a branch with checkout -b, make changes and commits on that branch, then merge back to main when ready. This is especially useful for experimental content or when multiple people are working on the same course.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

After finishing work on a feature branch, you merge it back into main. Switch to main first, then merge the feature branch. Git combines the changes. If there are no conflicts, the merge completes automatically. Push the updated main branch to GitHub. Delete the feature branch locally since it's no longer needed. This workflow keeps main clean while allowing experimentation in branches.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Merge conflicts occur when the same lines changed in both branches being merged. Git doesn't know which version to keep, so it marks the conflict and asks you to resolve it. VSCode highlights conflicts and provides buttons to accept one version or the other. For complex conflicts, manually edit to combine the best of both. After resolving, stage the file and commit to complete the merge. Don't panic when conflicts happen - they're a normal part of collaborative work.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Get in the habit of pulling before pushing, especially on shared courses. If someone else pushed changes since your last pull, your push will fail with a "non-fast-forward" error. Pulling first incorporates their changes into your local repository. If their changes conflict with yours, you resolve conflicts locally before pushing. This prevents problems and keeps the remote repository history clean.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Automatic builds run overnight and pick up all changes from the day. They're perfect for production workflows where immediate publication isn't critical. Manual builds let you test changes quickly - make an edit, trigger a build, see results in minutes. This rapid feedback is invaluable during development. Use manual builds liberally while creating content, then rely on automatic builds once your course is stable.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

When builds fail, logs tell you why. Common issues: YAML syntax errors in courses.yaml, Mermaid diagram syntax problems, missing images, invalid frontmatter. The logs show which course failed and what error occurred. Most errors are simple to fix once identified. If you see an error about a missing image, check that the image exists in your repository and the path in your Markdown is correct. If Mermaid fails, test the diagram at mermaid.live.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Never assume a build succeeded without checking. Open the live course and click through every slide. Broken images show as icons - verify all images display. Check that Mermaid diagrams rendered correctly and aren't showing as plain text. Test slide navigation. Download and review the PDF - sometimes formatting looks different in PDF than web. This verification catches issues before students encounter them.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

EPUBs are often overlooked but are critical for student reference. Open them in a reader (Apple Books on Mac, Calibre on Windows/Linux) and page through. The student guide should include all slide content plus your detailed notes. The workbook should contain exercises. Check that images display - EPUB image handling sometimes differs from web. If formatting looks wrong, check your Markdown syntax - poorly formatted Markdown can break EPUB generation.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

When problems occur, work systematically. If the build fails entirely, check courses.yaml syntax - a missing colon or incorrect indentation breaks everything. If only your course fails, check your slides.md frontmatter. If images don't show, verify the path starts with images/ and the file exists in Git. Case sensitivity matters - Image.png and image.png are different files on Linux. Most issues are typos or missing files that are easy to fix once found.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

For Mermaid issues, always test your diagram at mermaid.live first. If it works there but not in your course, check the code block syntax: needs three backticks, mermaid language identifier, and no indentation before the block. For missing chapters, open slides.md and verify the chapter is referenced with correct path and hidden: false. A common mistake is copying a chapter reference but forgetting to update the file path.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Normally, the builder only rebuilds courses that changed (based on Git SHAs). Sometimes you need to rebuild everything: after updating the Slidev theme, if the state file gets corrupted, or when troubleshooting mysterious issues. Force rebuild ignores the state file and rebuilds every course. This takes longer but ensures everything is regenerated with current settings. Use it sparingly - most of the time, normal builds are sufficient.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Good workflow habits save time and prevent frustration. Committing frequently means you can revert bad changes easily. Descriptive messages help you understand history. Pulling before pushing prevents conflicts. Verifying builds catches issues immediately when they're easiest to fix. Testing locally (when possible) catches errors before they hit production. These practices become second nature with experience and pay dividends in productivity and code quality.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You've mastered the complete publishing workflow. You can work efficiently with Git, understand the build process, and troubleshoot issues when they arise. These skills make you a productive course developer. You'll use this workflow daily: edit content, commit changes, push to GitHub, trigger builds, verify outputs. The workflow becomes automatic with practice. In the final section, we'll summarize what you've learned and point you toward resources for continued growth.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

This final section summarizes what you've learned, provides resources for continued learning, and offers guidance on next steps. You've gained a complete skill set for course development - from environment setup through publishing. Now it's time to apply these skills to create great training content!

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You started by setting up a professional development environment with VSCode and extensions tailored for course development. You learned how CourseOps works behind the scenes: the multi-repository architecture, the automated build pipeline, how courses are registered in the catalog, and how the system tracks build state to optimize performance. This architectural understanding helps you work more effectively and troubleshoot issues confidently.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You walked through the complete process of creating a course: planning the structure, setting up directories, initializing version control, connecting to GitHub, creating the main slides.md file with proper metadata, writing chapter content, and registering your course in the catalog. You understand each step and why it's necessary. You can now create new courses independently.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You mastered Markdown for course content creation. You learned to integrate images effectively, create professional diagrams with Mermaid, use appropriate slide layouts, add instructor notes and student guide content, format code blocks with syntax highlighting, and organize content with tables and lists. These skills let you create visually appealing, pedagogically sound training materials.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You learned the complete Git workflow for version control: staging changes, committing with good messages, pushing to GitHub, branching for features, and merging changes. You understand how to trigger builds, monitor their progress, verify all output formats, and troubleshoot common issues. You know best practices that keep your workflow efficient and your courses maintainable.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

These skills work together as an integrated whole. Your environment setup supports efficient content creation. Understanding the architecture helps you design courses that build well. Content creation skills let you express ideas effectively. Git workflow enables version control and collaboration. Together, these skills make you a professional course developer capable of producing high-quality training materials efficiently.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Reading about course development is valuable, but real mastery comes from doing. Your next step is to create a real course on a topic you know well. Start with something modest - a 1-day course with 3-5 chapters. Apply all the techniques you've learned. Build it, publish it, and get feedback. Study existing successful courses to see how experienced developers structure content, use visuals, and explain complex topics. Every course you create will be better than the last.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The Course Developer Guide is your primary reference - bookmark it. Review it whenever you have questions about syntax, workflow, or best practices. The CLAUDE.md file in the courseops repository contains technical implementation details. Study example courses to see real-world applications of techniques. The external documentation for Slidev, Mermaid, and Markdown provides deeper dives into specific tools when you need advanced features.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Good content is written for a specific audience - know who you're teaching and what they need. Use examples and visuals to clarify concepts that would be confusing in text. Keep slides concise - details go in notes and student guides. Have someone review your content before publishing - fresh eyes catch issues you miss. Expect to revise - rarely is the first draft perfect.

Technically, commit frequently so you can revert bad changes easily. Test locally when you can to catch errors before production. Deep Git knowledge gives you confidence - you can always undo mistakes. Read error messages carefully - they usually point to the problem. Don't hesitate to ask for help when stuck - everyone was a beginner once.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Course length depends on content depth and student background. As a rough guide, plan 40-80 slides per day of instruction. Mermaid diagrams should clarify complex concepts - use them where they help, not arbitrarily. Exercises are valuable for skills-based training but less critical for pure information transfer. Commit when you've completed something logical - a chapter, a section, a bugfix. Git makes mistakes safe - you can always revert to any previous version, so experiment freely.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Course development benefits enormously from feedback. When reviewing others' work, be constructive and specific. Point out strengths and suggest improvements with explanations. Consider whether content is appropriate for the stated audience. Offer alternatives rather than just critique.

When receiving feedback, remember it's about the course, not you personally. Ask questions to understand concerns fully. Consider the source - feedback from someone in your target audience is more valuable than from outside it. Ultimately, you decide what changes to make. Not all feedback is equally valid or applicable.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

You're part of a community of course developers. Collaborate through peer review - reviewing others' courses and having yours reviewed. Share reusable components like diagram templates or example code. Learn best practices from experienced developers. Suggest improvements to the CourseOps system itself when you see opportunities.

When you need help, start with the Developer Guide. Ask experienced team members for guidance. Report bugs or feature requests as GitHub issues. Contribute back by improving documentation when you find gaps or unclear sections. Your experience as a learner makes you valuable for improving the system for future developers.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

The best way to solidify your learning is to create a real course. Choose a topic you know well - teaching something you're expert in lets you focus on the process rather than struggling with content. Plan a simple structure with 5-7 chapters. Follow all the steps you learned: create repository, write content, add images and diagrams, publish through the build system. Share your course with the team for feedback. This hands-on project will reveal any gaps in your understanding and give you confidence as a course developer. Take the challenge!

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Course development skills improve continuously. Stay current with CourseOps updates - new features and improvements appear regularly. Experiment with different approaches: new slide layouts, alternative diagram styles, different content structures. Analyze feedback and student success - what made concepts click? What confused people? Refine your personal workflow to match your style. Share your knowledge with newer developers - teaching others deepens your own understanding.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

These principles separate professional course development from amateur approaches. Writing once in Markdown and generating multiple formats eliminates duplicate work and inconsistencies. Version control provides safety, history, and collaboration infrastructure. Frequent builds provide rapid feedback. Thorough verification catches issues before students see them. Constant iteration improves quality. Active collaboration leverages collective expertise. Internalize these principles and they'll guide you to create better courses more efficiently.

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

Congratulations on completing the Course Development with CourseOps course! You've learned a comprehensive set of skills that enable you to create professional training materials. You understand the tools, the system, the workflow, and best practices. Most importantly, you've gained the confidence to create courses independently.

Your journey as a course developer is just beginning. Every course you create will make you better. You'll discover techniques that work for you, develop your unique style, and contribute to the collective knowledge of the course development community.

Thank you for your attention and dedication throughout this course. We look forward to seeing the amazing training materials you'll create. Happy course development!

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A

If you have questions as you begin creating courses, don't hesitate to reach out. The course development team is available for technical support and guidance. Use GitHub issues to report bugs in the build system or request new features. Consult the Developer Guide whenever you need reference material or examples.

Remember, every expert was once a beginner. You have the skills and knowledge to create great courses. The more you practice, the more confident and capable you'll become. We're excited to see what you'll create. Good luck!

© 2026 Identitrain, Inc. All Rights Reserved.IDT-CD-001 rev A