Skip to main content

Ghost Code’s title screen: the Phantom mark beside the wordmark, three mastery counters, a one-line how to play, and Press Start with a theme control below.
Ghost Code’s title screen: the Phantom mark beside the wordmark, three mastery counters, a one-line how to play, and Press Start with a theme control below.

Solo builder · AI-assisted

Skyler Halisky

Ghost Code

A terminal-command trainer and my first real build, made to get fluent in the command line and Claude Code. 56 cards, Arcade and Learn modes, no dependencies.

Mastery count

Three correct answers mark a card mastered.

Complete · live

Status
Complete · live · no backend
Role
Solo builder · AI-assisted
Year
2026

Tech

  • Vanilla JS
  • HTML
  • CSS
  • GitHub Pages

Tags

  • tools
  • game
  • learning

The problem

Command-line fluency does not come from reading about commands. It comes from running them, under a little pressure, until your hands know them. I wanted that fluency in the terminal, in Git, and in Claude Code, and studying a list was not getting me there. So instead of only drilling commands, I built the thing I would practise with: a small game I would actually open again. It was my first real build, and it was meant to be.

The approach

A prompt appears, four command tokens surround the Phantom, and you steer it to the right one. Arcade mode keeps score and takes a spirit for every miss. Learn mode drops the pressure and escalates instead: a hint with the first retry, a second try, then the answer. A card counts as mastered after three correct answers, which is a plain local counter rather than anything adaptive, and cards you have not mastered come up more often.

Inside the build

See it in motion.

  • A seeded round in motion: the same board, both themes.captured

Zero dependencies

The runtime is one HTML file and a deck file. No framework, no build step, no dependencies, no server. That rule meant every feature cost exactly what it weighed, and it kept the whole game readable in one sitting, which is what a practice project needed to be.

What shipped

Fifty-six cards across Claude Code, the macOS terminal, and Git (20, 20, and 16), with a decoy set for each. Keyboard-first play: number keys for the tokens, arrows to move focus, and single keys for the 50/50 lifeline, category, mode, theme, pause, and help. Touch and swipe on phones. Light, dark, and system themes with no flash on load. Progress persists in the browser under one storage key and is never sent anywhere. A GitHub Actions check validates the deck on every push, so a duplicate ID or a decoy that is also the answer cannot land. Built against WCAG 2.2 AA: a live region announces state to screen readers, reduced motion is honoured from the system setting or an in-app toggle, and high-contrast mode is supported.

Where it stands

Complete · live · no backend

My role

The reason to build it, the scope of the deck, and that rule were mine; most of the implementation, the deck validator, and the accessibility audits were the agents’, and I played every build.

Reflection

The best constraint I gave myself was “zero dependencies.”

It kept a first project the right size, and it set the pattern the later ones follow: ship something small and real, then widen it deliberately.


Skyler Halisky · Okanagan Valley, British Columbia

A Brief Account

Have something like this?
Write to me.

Send me an email

More work

Continue reading.

  • Flagstone

    Community map of accessibility barriers: report a broken ramp, verify a neighbour's, see it marked fixed. Privacy-first: no ads, no analytics, no trackers.

    Flagstone's Explore map with an expanded verified Steep grade report, a real barrier photograph, orange map pins, map controls, and bottom navigation.
    Flagstone's Explore map with an expanded verified Steep grade report, a real barrier photograph, orange map pins, map controls, and bottom navigation.
  • Claude Corp

    A governed multi-agent development system I designed and operate: 15 AI roles, a written Constitution, review gates, and autonomy bounded by explicit rules.

    The Claude Corp front door, with the fifteen-role pipeline under the editorial hero.
    The Claude Corp front door, with the fifteen-role pipeline under the editorial hero.
    The Claude Corp front door on a phone, with the editorial hero and the governed agent pipeline below it.
    The Claude Corp front door on a phone, with the editorial hero and the governed agent pipeline below it.