How HackQuest Works
HackQuest reads every changed line in your pull request, maps each error to the underlying concept you have not yet learned, and queues the right lesson. No fixed syllabus. Your code drives your curriculum.
From pull request to lesson in four steps
Connect a practice repo
Link your GitHub account and connect a practice repository, or use one of the HackQuest starter repos built for your target stack. You do not need to use a real production codebase. A branch set aside for learning is enough. HackQuest monitors pull requests opened against your designated learning branch.
Open a pull request
Work on a feature or fix in your practice branch, then open a pull request the same way you would at work. HackQuest picks it up automatically. There is no plugin, no IDE extension, and no separate submission step. If the PR exists on GitHub, HackQuest will process it within minutes for Pro users.
AI reads the full diff
The AI reads every changed line and identifies the concept behind each error: not just the surface linting violation, but the underlying gap in your understanding of the target stack. For a goroutine leak, it does not just flag the leak. It identifies that you do not yet have a mental model for Go channel ownership and goroutine lifecycle semantics.
The analysis cross-references your existing concept map so lessons are not repeated for gaps you have already closed.
Your lesson queue adapts
A focused lesson is added to your queue that addresses exactly what you fumbled in the PR. It is not the next video in a fixed playlist. It is the one piece of knowledge that, had you had it before writing the code, would have prevented the error.
Over time your concept map fills in and the lessons get progressively more advanced, tracking your actual trajectory rather than an assumed syllabus.
Semantic code understanding, not linting
Most static analysis tools catch linting errors. They can tell you that a variable is unused or that an import is missing. HackQuest does something different: it reads code as a reader who understands the intent, and identifies the conceptual gap between what you wrote and what idiomatic code in that stack looks like.
The difference matters. A linter flags go func() { handleJob(jobs[i]) }() as nothing wrong. HackQuest identifies that the loop variable i is captured by reference, not value, and that this signals a gap in understanding Go's closure semantics, not just a typo.
- Distinguishes syntax errors from concept gaps
- Maps errors to idiomatic patterns of the target stack
- Cross-references your running concept graph to avoid re-teaching closed gaps
- Delivers feedback inline on the diff, not in a separate report
Your concept map updates with every PR
Every graded PR updates a concept graph specific to your learning history. Concepts you have closed are no longer queued. Concepts adjacent to a gap you just hit move higher in priority. The graph captures not just what you know, but the order in which you learned it, so the AI can infer what you are most likely to misapply next.
This is why two developers on the same stack get different lesson queues. A Python developer switching to Go has different residual assumptions than a Java developer making the same switch. HackQuest tracks both separately.
After roughly six weeks of regular PR submissions, most developers report that feedback loops they used to wait days for from colleagues now arrive within two hours, with enough context to immediately apply the fix.