DEV Community

Cover image for Quest: Epic CLI tutor (Learn Code by Actually Building)
Mr. Aang
Mr. Aang

Posted on • Edited on

Quest: Epic CLI tutor (Learn Code by Actually Building)

GitHub Copilot CLI Challenge Submission

This is a submission for the GitHub Copilot CLI Challenge

What I Built

I built Quest.
A CLI tool that teaches you Code by making you actually write code, not just read about it.

I used to work in big tech and most of my responsibilities are maintaining repos, building mini features. I don't really get a chance for that 0 to 1 development. So last summer I started messing around with personal projects on the side. Let me tell you...the learning curve is real. I spent most of my time asking GPT, reading docs, doing tutorials.

I kept thinking: why can't I just learn this stuff while I code? Like, inside my IDE, while I'm actually building?

That's Quest. You pick a project (or have one generated for you), and it walks you through building it step by step — with automated checks for your code and AI hints when you're stuck. No browser tabs, no tutorial rabbit holes. Just your editor and your terminal.

Here's what a typical session looks like:

quest begin       →  Pick a quest (templates or AI-generated)
quest next        →  See your current task
                  →  Write your code
quest check       →  Auto-validate your implementation
quest check -a    →  AI code review with inline comments
quest explain     →  Get hints (they get more direct each time)
quest complete    →  Move on
quest summary     →  See where you're at
Enter fullscreen mode Exit fullscreen mode

The Loop

This is the core workflow. It's dead simple on purpose:

Quest Templates

There are 7 built-in templates ranging from 3-task quickies to 20-task deep dives:

Template Difficulty Tasks What You Build
go-web-api Quick 3 REST API basics — handlers, JSON, tests
go-cli-tool Quick 3 CLI with Cobra — subcommands and flags
go-concurrency Quick 3 Goroutines, channels, worker pools
go-fairy-garden Normal 10 A whimsical worker service
go-todo-api Advanced 15 Full CRUD API with middleware
go-auth-system Advanced 19 Auth system — JWT, sessions, the works
go-isekai-server Advanced 20 Distributed virtual world manager

Or you can skip templates entirely. Describe what you want to build, pick a difficulty, and Copilot CLI generates a custom quest plan: chapters, tasks, validation rules, everything.

Demo

Repo: github.com/jovanpet/quest

go install github.com/jovanpet/quest@latest
Enter fullscreen mode Exit fullscreen mode

Starting a quest

  🧭 Quest

  Choose your path:
  > 🗡️  Pick a Legendary Path
    🔨 Forge Your Own Quest
    🎲 Seek a Mystery Quest
Enter fullscreen mode Exit fullscreen mode

Checking your work

  🔍 Checking Task 1: Create a Hello World endpoint

  ✓ File exists                    main.go found
  ✓ Contains HTTP server code      http.HandleFunc detected

  🎉 All 2 checks passed!

  → Next step: quest complete
Enter fullscreen mode Exit fullscreen mode

AI code review with quest check -a

The -a flag sends your code through Copilot CLI and you get inline comments injected right into your source files:

// ✓ GOOD: Correct imports for HTTP server functionality
import (
    "fmt"
    "net/http"
)

func main() {
    // TODO: What content type should the client expect from a JSON endpoint?
    handler := func(w http.ResponseWriter, r *http.Request) {
        // HINT: Plain text isn't structured JSON — what Go package helps encode structs?
        fmt.Fprint(w, "Hello, World!")
    // ✓ GOOD: Handler properly uses ResponseWriter to send response
    }
}
Enter fullscreen mode Exit fullscreen mode

Progressive hints with quest explain

The hint system adapts based on how bad you are:

Attempt 1 → Minimal hints ("Consider what happens if input is empty")
Attempt 2 → More specific ("Look into http.Error for error responses")
Attempt 3 → Direct code (partial code examples, since you're clearly stuck)
Enter fullscreen mode Exit fullscreen mode

My Experience with GitHub Copilot CLI

Copilot CLI was a great deal of help when refactoring code, especially when I would add a field and have to change all the templates. Furthermore an awesome helper for writing tests and catching the edge cases in. Lastly, I have no idea how to make CLI output pretty, I appreciate you Steve (Copilot)...also, low key, it does powers three core features that would've been a pain to build otherwise.

Hints that actually know your code

When you run quest explain, Quest grabs your current tas and pipes it to Copilot CLI. What comes back is structured comments tied to specific lines in your code.

A code reviewer that knows your assignment

The automated checks (quest check) handle the basics...does the file exist? Does it contain the right patterns? Adding the -a flag let's Copilot CLI do the real review. It reads your actual code, and writes comments like:

  • ✓ GOOD: Using http.HandleFunc correctly
  • ✗ ERROR: Missing error handling on ListenAndServe
  • ⚠ WARNING: Consider adding Content-Type header

These go directly into your source files as inline comments, right above the relevant lines.

Generating entire quest plans

This is kinda epic. Instead of picking a template, you describe what you want ("I want to build a princess fairy scheduler worker"), choose quick/normal/deep difficulty, and Copilot CLI generates a full teaching plan in JSON. And yes it's epic because I made an isekai server template you can check out: go-isekai-server where you finish quests like...player skill endpoints...

What it changed for me

The big realization was that Copilot CLI isn't just an autocomplete tool, it's basically a programmable AI interface. I can pipe structured prompts to it and get structured output back. No API keys, no cloud hosting, no billing dashboards. Just a binary that takes stdin and returns useful output.

Top comments (0)