Sharpen your Git and TypeScriptagainst the clock

Timed challenges played in your browser, with a Socratic mentor that guides you without revealing the solution. One command and you are in.

Runs on your Claude Code subscription

No API keys, no new accounts, nothing to configure.

sharpen

$npx @juanwmedia/sharpen

sharpen listening on http://127.0.0.1:4517

✓ arena ready in your browser

✓ mentor on your Claude Code subscription

$ npx @juanwmedia/sharpen

Sharpen opens a local arena in your browser: a real Git terminal or a TypeScript workspace, and a Socratic AI mentor that nudges without giving the answer. Every Enter validates against the real board state and any correct solution passes. Practice at your own pace in learn mode, or put the clock on in challenge mode.

The sharpen arena: briefing, Git terminal and live verdict panel for the Wrong branch, wet paint challenge
The arena in your browser: every Enter validates against the real board.

How to play

  1. 1 Install Claude Code if you do not have it yet: claude.com/claude-code
  2. 2 Install sharpen from npm:
    npm install -g @juanwmedia/sharpen
  3. 3 Then launch it; the arena opens in your browser:
    sharpen
  4. or Or try it without installing anything:
    npx @juanwmedia/sharpen
  5. 4 And to update when a new version ships:
    sharpen update

Work in progress

Sharpen is under active development and your eyes make it better. The arena does not replicate all of Git or TypeScript yet: each command lands when a challenge needs it, faithful to the real behavior. If something breaks, a challenge limps, or you miss a command or a challenge that should exist, tell me. Issues, ideas and PRs are welcome.

Hear about new challenges first

Sign up and I will write when new Sharpen challenges and features ship.

Challenges

33 challenges
  1. TypeScript#33

    Stale paint

    hard

  2. TypeScript#32

    Narrow the status

    medium

  3. TypeScript#31

    One client

    medium

  4. TypeScript#30

    Two doors

    medium

  5. TypeScript#29

    Swallow the 500

    medium

  6. TypeScript#28

    Forgot to await

    medium

  7. TypeScript#27

    Then chain

    easy

  8. TypeScript#26

    Pending receipt

    easy

  9. TypeScript#25

    Pipe it

    easy

  10. TypeScript#24

    Make the doc

    easy

  11. TypeScript#23

    Weekend rate

    easy

  12. TypeScript#22

    Config bleed

    easy

  13. TypeScript#21

    List bleed

    easy

  14. TypeScript#20

    Maybe null

    easy

  15. TypeScript#19

    Stringly id

    easy

  16. TypeScript#18

    Cart that lies

    easy

  17. TypeScript#17

    Free shipping gate

    easy

  18. TypeScript#16

    Tip jar lies

    easy

  19. Git#15

    Half-deleted

    medium

  20. Git#14

    Time machine recovery

    medium

  21. Git#13

    Tip belongs on a feature

    medium

  22. Git#12

    Soft landing, wrong branch

    medium

  23. Git#11

    Forgot the receipt

    easy

  24. Git#10

    Abort the experiment

    medium

  25. Git#9

    Wrong branch, wet paint

    medium

  26. Git#8

    Clean sweep

    medium

  27. Git#7

    The vanished file

    easy

  28. Git#6

    Leaked secret

    easy

  29. Git#5

    Staged but invisible

    easy

  30. Git#4

    Ship only the fix

    easy

  31. Git#3

    Not on main

    easy

  32. Git#2

    Take it back

    easy

  33. Git#1

    Save your work

    easy