tanmay-563
v1.0.0
Published
PowerShell-first Pokemon terminal art CLI built from ANSI sprite assets.
Maintainers
Readme
tanmay-563
PowerShell-first Pokemon terminal art for Windows, VS Code, and npm.
This project started from a shell-based Pokemon colorscript repo and now wraps the same ANSI sprite assets in a small Node.js CLI so it can run cleanly in PowerShell instead of depending on a POSIX shell.
What It Does
The CLI prints prebuilt Pokemon sprites directly in the terminal.
tanmayshows a random Pokemontanmay pikachushows a named Pokemontanmay pikachu --size smallshows a smaller spritetanmay random 1-3shows a random Pokemon from generations 1 to 3tanmay pikachu --shinyshows the shiny spritetanmay setup --profile vscodemakes a Pokemon appear whenever a new VS Code PowerShell terminal opens
The output works because the sprite files already contain ANSI color escape codes. Node just reads those text files and writes them to standard output.
Why This Version Uses Node Instead Of Shell
The original project entrypoint is pokemon-colorscripts.sh, which depends on commands like shuf, sed, cat, and less.
That works well on Linux, but it is not a native Windows or PowerShell experience.
This package uses Node.js because:
- npm can install it globally on Windows
- npm automatically creates command shims for PowerShell
- the same CLI can run inside VS Code terminals
- we can manage PowerShell profile setup without asking users to touch
.bashrc
Quick Start
Run It Locally From This Repo
node .\bin\tanmay.js
node .\bin\tanmay.js pikachu
node .\bin\tanmay.js pikachu --size small
node .\bin\tanmay.js random 1-2
node .\bin\tanmay.js pikachu --shinyTest It As An npm Package On Your Machine
npm install
npm link
tanmay
tanmay --size small
tanmay setup --profile vscode --size smallNotes:
- This package has no runtime dependencies, so
npm installis mainly there for a normal npm workflow. npm linkmakes thetanmaycommand available globally on your local machine for testing.
Publish It Later
npm login
npm publish --access publicThen users can do one of these:
npx tanmay-563npm install -g tanmay-563
tanmay
tanmay setup --profile vscodeImportant:
npx tanmay-563runs the package oncenpm install -g tanmay-563installs the package globallynpx install tanmayis not the correct npm pattern
Commands
tanmay
tanmay help
tanmay list
tanmay pikachu
tanmay pikachu --size small
tanmay mr. mime
tanmay --name charizard --shiny
tanmay random
tanmay random 1-3
tanmay random 1 3 6
tanmay setup
tanmay setup --profile vscode --size small
tanmay remove --profile vscodePowerShell Profile Setup
The setup command adds a managed block to a PowerShell profile file.
Example block:
# >>> tanmay-pokemon >>>
if (Get-Command tanmay -ErrorAction SilentlyContinue) {
tanmay --startup
}
# <<< tanmay-pokemon <<<Why this is a good pattern:
- the change is explicit
- the change is reversible
- it does not silently modify the terminal on package install
tanmay removecan safely delete only the block it owns
Supported profile targets:
autocurrent-hostvscodeall-hostsboth
Recommended for your current goal:
tanmay setup --profile vscode --size smallThat targets the VS Code PowerShell profile so Pokemon appear in a smaller size when that terminal opens.
Project Structure
bin/tanmay.js npm CLI entrypoint
src/cli.js command parsing, sprite selection, profile management
colorscripts/regular regular Pokemon ANSI sprite files
colorscripts/shiny shiny Pokemon ANSI sprite files
nameslist.txt ordered Pokedex name list used for lookup and generation ranges
generator_scripts/ legacy sprite generation scripts
pokemon-colorscripts.sh legacy shell version kept for referenceHow It Works
- The CLI loads
nameslist.txt. - It parses the command line arguments.
- It normalizes Pokemon names like
mr. mimeinto the filename formatmr-mime. - For random mode, it builds a selection pool from the requested generation ranges.
- It chooses a Pokemon.
- It reads the matching text sprite from
colorscripts/regularorcolorscripts/shiny. - If
--size smallis used, it downsamples the ANSI sprite at runtime. - It writes the final ANSI text to the terminal.
There is no image conversion at runtime. The heavy lifting already happened earlier when the sprite files were generated.
Interview-Friendly Design Decisions
- Reused the existing art asset pipeline instead of regenerating sprites.
- Replaced the shell runtime with Node so the package works natively in PowerShell and npm.
- Kept the package dependency-free for clarity and portability.
- Added a managed PowerShell profile block instead of mutating shell startup files implicitly.
- Preserved the original shell script as historical reference instead of deleting upstream work.
- Used explicit generation ranges in code, which also avoids off-by-one mistakes from manual shell indexing.
Legacy Asset Pipeline
The original repo includes the asset-generation scripts:
Those scripts were used to download Pokemon sprites and convert them into ANSI-colored text files. The new npm CLI does not need to run them during normal use.
Credits
Original shell project by Phoney badger: https://gitlab.com/phoneybadger
This repo now adds a Windows and PowerShell packaging layer on top of that asset base.
