Build your coding skills, one challenge at a time
A command-line tool for practicing coding challenges with real-time validation and progress tracking. Your code runs locally, gets validated server-side, and tracks your progress as you level up your skills.
- GitHub OAuth Authentication - Secure login with your GitHub account
- Local Execution - Your code runs on your machine for fast feedback
- Server-Side Validation - Expected outputs never leave the server (prevents cheating)
- Progress Tracking - Automatically saves your progress as you complete stages
- Cascading Tests - Tests all prerequisite stages to ensure backward compatibility
Requires Go 1.23+:
go install github.com/chibuka/95@latestMake sure $GOPATH/bin or $HOME/go/bin is in your PATH:
# macOS/Linux
export PATH=$PATH:$HOME/go/binVerify installation:
95 --versiongit clone https://github.com/chibuka/95.git
cd 95
go build -o 95
sudo mv 95 /usr/local/bin/95 loginOpens your browser for GitHub OAuth authentication. Tokens are stored securely locally.
95 init --cmd "python main.py" // in case you're using pythonCreates a config.json file with your project settings. The language is automatically detected from your command.
95 test <stage-uuid>Run tests locally without submitting to the server. Useful for debugging.
95 run <stage-uuid>Runs all tests and submits results to the server for validation. Cascading tests ensure previous stages are also validated.
95 login— Authenticate with GitHub OAuth95 logout— Clear credentials and log out95 init— Initialize project configuration (--cmdor positional argument)95 test <stage-uuid>— Run tests locally95 run <stage-uuid>— Run all tests and submit results
Created by 95 init in your project directory:
{
"runCommand": "python main.py",
"language": "PYTHON"
}Note: Language is automatically detected from your run command. Supported languages include Python, Go, Java, Rust, JavaScript (Node.js), C, and C++.
Contains:
- Access token (JWT, expires in 24 hours)
- Refresh token (valid for 30 days)
- User info (ID, username)
- API URL
Security: Permissions 0600, auto-refresh, never committed.
# Login
$ 95 login
█████╗ ███████╗
██╔══██╗██╔════╝
╚██████║███████╗
╚═══██║╚════██║
█████╔╝███████║
╚════╝ ╚══════╝
Build your coding skills, one challenge at a time
✓ Logged in successfully!
# Initialize project
$ 95 init --cmd "python main.py"
✓ Project initialized!
Run command: python main.py
Language: PYTHON
# Test stage locally
$ 95 test a85fdf04-a98e-4747-aa38-6e38babe663c
# Submit stage
$ 95 run a85fdf04-a98e-4747-aa38-6e38babe663c
✓ All tests passed!- CLI starts a local HTTP server
- Opens browser for GitHub OAuth
- CLI receives tokens from the redirect and stores them securely
- Fetches test configuration from backend
- Runs code locally and captures output
- Submits results to backend for validation
- Returns pass/fail with detailed feedback
Running stage N tests all previous stages to ensure backward compatibility.
- "Command not found: 95" — Ensure
$HOME/go/binis in your PATH - "Authentication failed" — Run
95 loginagain (your session may have expired) - "Stage not found" — Verify stage UUID
- Fork the repository
- Create a feature branch
- Make changes
- Submit a PR
MIT License - see LICENSE
- Website: https://95ninefive.dev
- GitHub: https://github.com/chibuka/95
- Personal GitHub: https://github.com/grainme
ありがとうございます 💯