-
-
Trusted sources pass through a reusable Codex skill; optional adapters add repository rules before lesson generation.
-
The reusable Codex skill defines source discovery, lesson generation, validation, accessibility, and offline output.
-
The ML adapter allows public course sources and blocks private solutions, answer keys, grading data, and drafts.
-
Learners choose quiz depth and accessibility settings, then review concise concepts before the quiz.
-
Topic-specific controls link thresholds and decision boundaries to confusion outcomes, precision, and recall.
Inspiration
I teach classical machine learning at a university as a hobby. I needed a way for students to review the main ideas between classes without repeating a full lecture. I first recorded full lectures, then published Markdown notes and an interactive textbook. Students rarely used them for quick review, but they did use AI agents to find material and request summaries. I built Learning Companions to turn course sources into short lessons with interaction and feedback.
What it does
Learning Companions is a general Codex skill that turns selected material from a repository or knowledge base into a short interactive lesson. An optional repository adapter defines which sources to use or exclude, along with local privacy, output, and publishing rules.
Codex uses the learner's goal, topic, settings, and source constraints to build a grounded lesson payload. It then generates and validates one self-contained index.html with a short explanation, a topic-specific interaction, quizzes, and corrective feedback. The finished lesson runs offline without a server, account, API key, network connection, or AI model.
How we built it
I used Codex with GPT-5.6 to build three layers: a general skill, a repository adapter, and lesson payloads. The general skill contains the content contract, Python generator and validator, and shared JavaScript runtime. The ML adapter adds course-specific source, privacy, path, and publishing rules. JSON payloads keep lesson content and references separate from the renderer.
Pytest and Node tests check generation and browser behavior. GitHub Actions builds and publishes the pages. The course material and interactive textbook predated Build Week. During the event, I built the skill system, generator, validator, shared runtime, ML adapter, lesson payloads, and tests.
Challenges we ran into
Skill boundaries. One large skill mixed reusable behavior with repository rules, while separate topic skills duplicated the generator. I split the system into a general core, an optional adapter, and a lesson payload. Specific interactions. A shared renderer initially made Regression and Classification lessons look too similar. I added subject-specific interaction models without forking the core. Token use. Parallel agents repeatedly read the same repository context and revisited the same decisions. Reusing the core and adapter reduced that work.
Accomplishments that we're proud of
I separated the reusable generator from ML-specific sources and rules. Adapting another repository requires an adapter and lesson payloads, not a new generator. Each result is a grounded, portable HTML lesson. The ML course is the first implementation.
What we learned
Making content available is not enough; learners need interaction and feedback. Repository rules must stay outside the general skill.
What's next for Learning Companions
I want Learning Companions to work by default with any trusted material and adapt lessons to the learner's level, goals, and previous conversations. With permission, an AI agent could also track covered topics and start review sessions when needed.
Log in or sign up for Devpost to join the conversation.