Creating Courses
CLI Workflow
Validate and deploy courses using the tekanaid CLI. Always validate before pushing.
CLI Commands
tekanaid validate-courseValidate all content in the current course directory.
tekanaid push-courseDeploy the course to the active environment.
tekanaid validate-course-batch <dir>Validate all courses in a parent directory.
tekanaid push-course-batch <dir>Deploy all courses in a parent directory.
Development Workflow
Follow these steps when creating or updating a course:
- 1Create your course directory with course.yml and content files.
- 2Validate locally: tekanaid validate-course
- 3Set TEKANAID_ENV=production and TEKANAID_TARGET=povdemo, then run tekanaid push-course.
- 4Log in to POV Demo and publish the course to make it available to learners.
# Validate
tekanaid validate-course
# Deploy
export TEKANAID_ENV=production
export TEKANAID_TARGET=povdemo
tekanaid push-courseBatch Operations
Use batch commands when managing multiple courses in a shared parent directory. Each subdirectory is treated as a separate course and processed in sequence:
# Validate all courses under ./courses/
tekanaid validate-course-batch ./courses
# Deploy all
export TEKANAID_ENV=production
export TEKANAID_TARGET=povdemo
tekanaid push-course-batch ./coursesTroubleshooting
Common validation and deployment errors and how to fix them:
| Error | Cause | Fix |
|---|---|---|
missing required field: slug | course.yml is missing the slug field. | Add slug: "your-slug" to course.yml. |
invalid difficulty value | difficulty must be one of: beginner, intermediate, advanced. | Use exact lowercase value. |
content path not found | A path in sections[].contentItems references a directory that doesn't exist. | Verify directory path matches exactly. |
lab not found | A lab.yml references a labSlug that isn't published on the platform. | Publish the target lab first, or fix the slug. |
not authenticated | You're not logged in or your session expired. | Run tekanaid login. |
