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
shellgameShow current level:
shellgameGet hints (each call reveals one more hint):
shellgame hintRe-read the hints you already unlocked (does not consume a new one):
shellgame hint --repeatSubmit answers:
shellgame submit <your-answer>Example: shellgame submit level-1
Skip the current level (only possible on optional and extension levels):
shellgame skipCheck progress:
shellgame statusReset current level (rebuild workspace for the level, re-show assignment, and move you back to the level's start directory):
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
"Level not found"
- Restart ShellGame; if the problem persists, remove and recreate the game data.
Wrong answer
- Re-read the assignment
- Check
pwdto confirm where you are - Use
shellgame hint
Stuck: a navigation level rejects every cd you try
- Some levels practise one exact command, so other moves are refused on purpose.
shellgame resetalways takes you back to the level's start directory.- Once you have used the required command, normal movement is restored.
Need to start over:
shellgame remove
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.