Warning
This project is largely LLM-generated and is in an early stage of development.
Proceed with caution, and expect significant changes.
Interactive terminal learning experience for filesystem navigation and basic shell operations.
ShellGame is a terminal-based learning tool designed for first-semester CS students to practice shell navigation and common filesystem operations through progressive levels.
ShellGame starts a wrapped subshell (bash/fish) with integration enabled automatically. You don’t need to source anything.
Just run:
shellgameIf you want to explicitly choose which subshell ShellGame launches (useful in nested shells or under wrappers like uv / make), use:
shellgame --shell fish
# or
shellgame --shell bashThis affects only the initial wrapper launch (when ShellGame is not already running inside the wrapper).
make dev
shellgame init
shellgameShow current level:
shellgameGet hints:
shellgame hintSubmit answers:
shellgame submit <your-answer>Example: shellgame submit level-1
Check progress:
shellgame statusReset current level (rebuild workspace for the level and re-show assignment):
shellgame resetRepeat assignment (without resetting):
shellgame repeatYou can also target a section or a specific level:
shellgame repeat --section 2(shows level2.0)shellgame repeat --level 1.7
Clean up (removes all game data and workspace; requires confirmation):
shellgame remove- Read the goal carefully — each level has specific requirements
- Use hints wisely — they’re tracked but there to help you learn
- Experiment freely — the workspace is temporary and safe
- Check your location — use
pwdbefore submitting
"Not initialized"
- Run:
shellgame init
"Level not found"
- Run:
shellgame init
Wrong answer
- Re-read the assignment
- Check
pwdto confirm where you are - Use
shellgame hint
Need to start over:
shellgame remove
shellgame init
shellgameShellGame teaches you to:
- Navigate the filesystem confidently
- Understand absolute vs relative paths
- Use
pwd,ls,cdfluently - Read and follow file-based instructions
- Build mental models of directory trees
git clone https://github.com/jdupak/ShellGame.git
cd ShellGame
make devNotes:
- This project uses
uvfor dependency management and virtual environments. make devwill create/sync.venvand install thedevextras.
Create a standalone binary using PyInstaller:
make buildShellGame provides built-in subshell integration automatically on startup (bash/fish). You don’t need to source anything.
Protocol reference:
docs/protocols/SHELL_PROTOCOL.md
Copyright (C) 2025 Jakub Dupak dev@jakubdupak.com
This project is licensed under the GNU General Public License v3.0 (GPL-3.0-only).
See LICENSE.