Introducing Ursa Weaver
I got into tech because I didn’t like school.
It wasn’t that I disliked learning or got bad grades. I just never understood the way most schools work. Why should everyone who is the same age have to learn the exact same material at roughly the same rate? We were taught to embrace our strengths and weaknesses, and yet our school treated us like we were all the same when it came to learning.
To arrogant, teenage me, it was obvious that the solution was self-paced learning of some kind, likely driven by computers since most of my classes had over 30 students per teacher. So I tried to code a self-paced learning system. Sadly my programming skills weren’t up to the task back in the mid-90s. I did build a couple of very simple flashcard-style apps that my friends used to improve their grades on tests, and seeing how my work could help others was what got me hooked on tech. And so I got a degree in Computer Science.
Announcing Ursa Weaver
A few weeks ago, at a workshop, I got thinking about the personalized learning problem again and wondered if I could create something to address it using AI. I fired up Google Antigravity, picked something I wanted to learn, Agent Development Kit (ADK) for Go, and got to work. I’ve released what I created in open source as Ursa Weaver (https://github.com/GoogleCloudPlatform/ursa-weaver).
Ursa Weaver was entirely vibe coded in Antigravity. It took me about 60 minutes to build an initial proof of concept and a few hours over the following weeks to refine the idea based on feedback and do some initial testing. The initial release has no traditional code, just an AI Agent Skill and some data files. And yet, it can provide personalized guidance to someone who wants to learn ADK for Go.

Design Considerations
Before I started actually writing the code, I worked on refining the requirements. In the end there were three things that were high priorities for the initial version. First, the tutor needed to run in the environment where people actually worked. I don’t understand why folks should learn skills in one set of tools and then have to transfer that knowledge to their primary IDE.
Second, I wanted the curriculum to be both personalized and curated by an expert. There are plenty of examples of AI explaining concepts; what is usually missing from these demonstrations is how bits of skill and knowledge build on each other. For example, AI can teach you addition, but it may not know you need to understand quantity and numbers before you learn addition. Or that you could learn subtraction before you learn addition.
Finally, it was important to me that there was some verification that students had actually learned the material. I know that often just reading material isn’t enoug. You need to actually do something with the information to retain it.
High Level Implementation
Ursa Weaver is implemented as an AI Agent Skill, allowing it to run on AI integrated IDEs. This means that the tutorial happens in the context of your existing configuration and preferences and in the context of a tool you already know. In context learning means you can focus on the material being presented and not on learning a new interface or tool. It also means that Ursa Weaver has access to any additional skills, CLIs, or MCP servers you have installed.
To allow the AI to personalize the learning journey I broke down the topic I wanted to learn, ADK for Go, into a series of skills that could be learned in 5-10 minutes. I used Gemini to help me do this, but I verified its work. Once I had the core list of skills I then worked with Gemini to add any pre-requisite skills, especially implicit or implied skills. Things like having Go installed or understanding how asynchronous versus synchronous function calls worked.
Once I had the entire list of possible skills, I used Gemini to organize them in a JSON file that listed each skill and the dependencies it had on previous skills. This creates a skill graph, but you can think of it as a course catalog explicitly listing that you can’t take Advanced Algorithms until you complete the Introduction to Algorithms course.
To tackle the verification requirement, I added explicit details about how to verify each skill was completed or learned. I gave Gemini a list of potential ways to do verification including short answer questions, multiple-choice questions, reviewing or executing code the user wrote, and verifying a configuration with MCP or command-line commands. This verification ensures that if a user completes the “Go Setup Skill” later skills can assume that the user has Go and the GOPATH is set correctly.
Finally, to support personalization I made two changes. First, I added support for fast tracking through skills if the user can complete the verification or an equivalent assessment without needing additional guidance or explanation. I also added a user profile that has basic information about the user including their background, interests, and what skills they’ve already completed. This allows the AI to customize the learning to a learner’s existing knowledge base and allows you to work through the curriculum across sessions.
Future Work
I have a long to-do list for the project. I’ve tested it in Antigravity and Gemini CLI but I need to test it with more tools. I want to add full support for multiple languages so students can be taught in their preferred language. I’ve only committed one curriculum file to the GitHub project, but I have others I’ve tested myself. I want to both provide some additional example curriculum files and the prompts (and code) to create your own from documentation and other sources.
I want to build evaluation tools for curriculum files that simulate common user personas and common scenarios including longer sessions which in my testing have shown the highest tendency to drift from the established curriculum. Once I’m confident in evaluation, I want to create larger curricula with potentially hundreds or thousands of skill nodes. I’ve created a curriculum with 100 nodes in my testing, but without good testing and evaluation it is hard to have confidence it will provide a good learner experience consistently.
Finally, most learning apps have some sort of gamification, or at least recognition of the work learners finish. I’m not sure what to do here but potentially I could use one of Google’s image models to create merit badges or certificates of accomplishment at key points in someone’s learning journey.
Share Your Feedback
If you get a chance to try Ursa Weaver, let me know what you think, both good and bad. It is still a proof of concept. For me, the biggest surprise was how fast it came together without any traditional coding. In just a few hours using Antigravity I was able to build something that teenage me could imagine but didn’t have the ability to build. I know I would have been a happier student if I could have wound my own way through the curriculum rather than having to work on chapter 3 just because it was the first Thursday in November.