DEV Community

Wilson Xu
Wilson Xu

Posted on

54 CLI Tools I Built with Node.js — Sorted by Usefulness

54 CLI Tools I Built with Node.js — Sorted by Usefulness

I built 54 command-line tools with Node.js over the past year. Some solve real problems I hit daily. Others were 2 AM rabbit holes I never returned to. Here they are, ranked honestly from "I'd be lost without this" to "I can't believe I spent four hours on that."

Every tool is on npm. Every install command works. And I've tagged each one with the tier it actually deserves.


Tier S — Must-Have (Top 5)

These are the tools I actually use every single day. If my machine got wiped, these get reinstalled before VS Code.

1. envcheck-cli

Validate .env files against .env.example — catch missing variables before production does.

npm install -g @chengyixu/envcheck-cli
Enter fullscreen mode Exit fullscreen mode
envcheck --source .env --template .env.example
# Missing: DATABASE_URL, REDIS_HOST
# Extra: OLD_API_KEY (not in template)
# Empty: SMTP_PASSWORD (defined but blank)
Enter fullscreen mode Exit fullscreen mode

I built this after deploying to staging with a missing STRIPE_SECRET_KEY and watching the checkout page throw 500s for an hour. It now runs in my CI pipeline on every push. The --ci flag exits with code 1 on any mismatch, so the build fails before bad config ever reaches a server.


2. depcheck-ai

Smart dependency auditing — find outdated, vulnerable, and deprecated packages with risk scoring.

npm install -g @chengyixu/depcheck-ai
Enter fullscreen mode Exit fullscreen mode
depcheck-ai --audit --score
# lodash        4.17.20 → 4.17.21  [SECURITY] Prototype pollution  Risk: HIGH
# left-pad      1.3.0              [DEPRECATED] Use String.padStart  Risk: LOW
# express       4.18.2  → 4.21.0  [OUTDATED] 6 months behind        Risk: MEDIUM
Enter fullscreen mode Exit fullscreen mode

This combines npm audit, npm outdated, and deprecation checks into one command with a risk score. The --score flag ranks every dependency by how urgently you should deal with it. The difference between this and npm audit alone: this actually tells you what to do about each finding.


3. filewatch-cli

Watch files and run commands on change. Zero dependencies. Glob support. Process restart.

npm install -g @chengyixu/filewatch-cli
Enter fullscreen mode Exit fullscreen mode
filewatch "src/**/*.ts" --run "npm test" --debounce 500
# Watching 47 files...
# [changed] src/utils/parser.ts
# Running: npm test
# ✓ 23 tests passed
Enter fullscreen mode Exit fullscreen mode

Yes, nodemon exists. Yes, chokidar exists. But this is 400 lines of code with zero dependencies, and it does exactly what I need: watch a glob, run a command, debounce intelligently, and restart long-running processes cleanly. It starts in under 50ms where nodemon takes 200-300ms on my machine.


4. dotenv-vault-cli

Encrypt .env files so you can commit them safely. Share secrets without Slack DMs.

npm install -g @chengyixu/dotenv-vault-cli
Enter fullscreen mode Exit fullscreen mode
dotenv-vault encrypt .env --key my-team-passphrase
# Encrypted → .env.vault (safe to commit)

dotenv-vault decrypt .env.vault --key my-team-passphrase
# Decrypted → .env (19 variables restored)
Enter fullscreen mode Exit fullscreen mode

Every team has the "how do we share .env files" problem. Slack DMs? Google Drive? 1Password? This encrypts the file with AES-256 using a shared passphrase. New developer joins? Give them the passphrase, they run decrypt, done. The diff command compares two vault files without decrypting them fully, so you can see what changed in a PR.


5. gitpulse

Instant health check for any GitHub repo — activity score, bus factor, response times.

npm install -g @chengyixu/gitpulse
Enter fullscreen mode Exit fullscreen mode
gitpulse facebook/react
# Health Score: 92/100
# Bus Factor: 14 (healthy)
# Avg Issue Response: 4.2 hours
# Last Commit: 2 hours ago
# Verdict: Actively maintained, low risk
Enter fullscreen mode Exit fullscreen mode

Before adding a dependency, I run this. Before contributing to a project, I run this. It checks commit frequency, contributor distribution, issue response times, and PR merge velocity. The bus factor calculation alone has saved me from adopting three "maintained by one person who last committed 8 months ago" libraries.


Tier A — Very Useful (10 Tools)

I reach for these weekly. They solve real problems, just not daily ones.

6. json-diff

Compare JSON files with color-coded structural diffs and JSON Patch output.

npm install -g @chengyixu/json-diff
Enter fullscreen mode Exit fullscreen mode
json-diff config.old.json config.new.json --patch
# [ADDED]   settings.darkMode: true
# [CHANGED] settings.timeout: 3000 → 5000
# [REMOVED] settings.legacyMode
# JSON Patch (RFC 6902): 3 operations written to patch.json
Enter fullscreen mode Exit fullscreen mode

The killer feature is RFC 6902 JSON Patch output. You get a machine-readable patch file you can apply programmatically, not just a human-readable diff. I use this in deployment scripts to validate config changes before they go live.


7. apispec-cli

Generate OpenAPI specs from Express/Fastify/Koa route files.

npm install -g @chengyixu/apispec-cli
Enter fullscreen mode Exit fullscreen mode
apispec-cli scan ./src/routes --framework express --output openapi.yaml
# Scanned 23 route files
# Found 47 endpoints
# Generated OpenAPI 3.0 spec → openapi.yaml
Enter fullscreen mode Exit fullscreen mode

Point it at your routes directory and it reverse-engineers an OpenAPI spec from your code. It reads JSDoc comments for descriptions, infers request/response types from TypeScript annotations, and validates the output spec. Not perfect — it misses middleware-injected params — but it gets you 80% of the way there in seconds.


8. httpstat

Visualize HTTP timing like curl, but actually readable.

npm install -g @chengyixu/httpstat
Enter fullscreen mode Exit fullscreen mode
httpstat https://api.example.com/users
#  DNS Lookup   TCP Connection   TLS Handshake   Server Processing   Transfer
#  12ms         34ms             89ms            142ms               8ms
#  Total: 285ms  Status: 200 OK
Enter fullscreen mode Exit fullscreen mode

A waterfall chart in your terminal showing exactly where time is being spent. DNS slow? TLS renegotiating? Server just being sluggish? You see it instantly. I use this more than I use Postman now.


9. api-health

Monitor API endpoints with response times, status codes, and SSL expiry.

npm install -g @chengyixu/api-health
Enter fullscreen mode Exit fullscreen mode
api-health check https://api.myapp.com https://api.myapp.com/health --interval 30
# ✓ /        200 OK  142ms  SSL: 83 days remaining
# ✓ /health  200 OK   23ms  SSL: 83 days remaining
# Monitoring every 30s... (Ctrl+C to stop)
Enter fullscreen mode Exit fullscreen mode

Simple uptime monitoring from your terminal. Set it running in a tmux pane and you have a poor man's Pingdom. The SSL certificate expiry warning alone has saved me from two embarrassing outages.


10. commitviz-cli

GitHub-style commit heatmaps in your terminal.

npm install -g @chengyixu/commitviz-cli
Enter fullscreen mode Exit fullscreen mode
commitviz --repo . --period 6months
# ░░▓▓██░░▓▓▓▓██████▓▓░░░░▓▓██▓▓
# Mon ░░▓▓██░░▓▓▓▓██████▓▓░░░░▓▓██
# 523 commits | Top day: March 19 (87 commits)
# Top contributor: wilsonxu (100%)
Enter fullscreen mode Exit fullscreen mode

Great for README screenshots. Even better for sprint retrospectives. "Why did velocity drop in week 3?" Pull up the heatmap and the answer is usually obvious. The file churn analysis shows which files change most frequently — a reliable indicator of where bugs will appear next.


11. csvutil-cli

Swiss Army knife for CSV in the terminal — view, filter, sort, stats, convert.

npm install -g @chengyixu/csvutil-cli
Enter fullscreen mode Exit fullscreen mode
csvutil stats sales.csv --column revenue
# Count: 1,247  Mean: $3,421  Median: $2,800  StdDev: $1,893
# Min: $12  Max: $48,200  Sum: $4,267,987
Enter fullscreen mode Exit fullscreen mode

I stopped opening Excel for quick data questions after building this. Column stats, filtering by regex, sorting, converting to JSON or Markdown tables — it covers the 90% of CSV operations that don't require a full spreadsheet. The join command for merging CSVs on a shared column is genuinely useful.


12. websnap-reader

Convert any webpage to clean Markdown. Reader mode for the terminal.

npm install -g websnap-reader
Enter fullscreen mode Exit fullscreen mode
websnap https://example.com/long-article --format markdown
# Extracted 2,847 words from "Understanding TCP/IP"
# Saved to: understanding-tcp-ip.md
Enter fullscreen mode Exit fullscreen mode

I use this to save articles I want to read offline, strip paywalls (ethically — for content I've paid for), and feed web content into other scripts. The --batch flag takes a file of URLs and processes them in parallel.


13. npmdeps-cli

Visualize dependency trees in the terminal with colored ASCII output.

npm install -g @chengyixu/npmdeps-cli
Enter fullscreen mode Exit fullscreen mode
npmdeps tree express --depth 2
# express@4.21.0
# ├── body-parser@1.20.3
# │   ├── bytes@3.1.2
# │   └── content-type@1.0.5
# ├── cookie@0.7.1
# └── ... (34 dependencies, 847 total)
Enter fullscreen mode Exit fullscreen mode

npm ls exists, but it's noisy and doesn't highlight problems. This color-codes by status (outdated = yellow, vulnerable = red, deprecated = strikethrough), shows size contribution, and flags duplicate packages pulled in at different versions.


14. changelog-gen-cli

Generate changelogs from conventional commit history.

npm install -g @chengyixu/changelog-gen-cli
Enter fullscreen mode Exit fullscreen mode
changelog-gen --from v1.2.0 --to HEAD
# ## [1.3.0] - 2026-03-20
# ### Features
# - Add dark mode toggle (a3f2b1c)
# - Support CSV export (7d1e4a9)
# ### Bug Fixes
# - Fix memory leak in watcher (2c8f1b3)
Enter fullscreen mode Exit fullscreen mode

If your team uses conventional commits (feat:, fix:, chore:), this generates a clean changelog automatically. If your team doesn't use conventional commits, this tool is useless to you. I tried adding "smart commit message parsing" for non-conventional commits. It was a disaster. Garbage in, garbage out.


15. ghprofile-stats

Beautiful CLI dashboard for any GitHub user's stats.

npm install -g ghprofile-stats
Enter fullscreen mode Exit fullscreen mode
ghprofile-stats chengyixu
# Repos: 43  Stars: 127  Forks: 34  Followers: 89
# Top Language: TypeScript (67%)  PRs Merged: 156
# Contribution Streak: 23 days
# Most Active: Tuesday 2-4 PM
Enter fullscreen mode Exit fullscreen mode

Built this partly for vanity, partly because it's useful for evaluating potential collaborators. The "most active hours" feature is oddly fascinating. Turns out I write 40% of my code between midnight and 3 AM.


Tier B — Nice to Have (15 Tools)

Solid tools that solve narrower problems. I use them monthly or when a specific situation arises.

16. compose-viz-cli

Visualize Docker Compose files as ASCII trees with Mermaid export.

npm install -g @chengyixu/compose-viz-cli
Enter fullscreen mode Exit fullscreen mode
compose-viz docker-compose.yml --mermaid
# Generated mermaid diagram → compose.mmd
Enter fullscreen mode Exit fullscreen mode

17. scaffold

Scaffold projects from templates with variable substitution.

npm install -g @chengyixu/scaffold
Enter fullscreen mode Exit fullscreen mode
scaffold create my-api --template express-ts --var DB=postgres
Enter fullscreen mode Exit fullscreen mode

18. clitest-runner

Test CLI tools with YAML-defined test cases and snapshot testing.

npm install -g @chengyixu/clitest-runner
Enter fullscreen mode Exit fullscreen mode
clitest run tests.yaml --snapshot --parallel
# ✓ 12/12 tests passed (3 snapshots updated)
Enter fullscreen mode Exit fullscreen mode

19. urlmeta-cli

Extract Open Graph, Twitter Cards, and meta tags from any URL.

npm install -g urlmeta-cli
Enter fullscreen mode Exit fullscreen mode
urlmeta https://github.com/nodejs/node
# Title: Node.js  OG:Image: https://...  Twitter:Card: summary_large_image
Enter fullscreen mode Exit fullscreen mode

20. portfinder-cli

Find open ports, check what's listening, and kill processes by port.

npm install -g @chengyixu/portfinder-cli
Enter fullscreen mode Exit fullscreen mode
portfinder --scan 3000-3100
# 3000: node (PID 12847)  3001: open  3002: open
portfinder --kill 3000
# Killed PID 12847 on port 3000
Enter fullscreen mode Exit fullscreen mode

21. logparse-cli

Parse, filter, and aggregate structured log files (JSON, Apache, nginx).

npm install -g @chengyixu/logparse-cli
Enter fullscreen mode Exit fullscreen mode
logparse access.log --format nginx --top-paths 10 --status 5xx
Enter fullscreen mode Exit fullscreen mode

22. gitstats-cli

Local git statistics — lines added/removed per author, per week.

npm install -g @chengyixu/gitstats-cli
Enter fullscreen mode Exit fullscreen mode
gitstats --period 30d --by-author
# wilsonxu: +12,847 / -3,291  (142 commits)
Enter fullscreen mode Exit fullscreen mode

23. readme-gen

Generate README.md from package.json, JSDoc, and directory structure.

npm install -g @chengyixu/readme-gen
Enter fullscreen mode Exit fullscreen mode
readme-gen --scan . --output README.md
# Generated README with: install, usage, API docs, license
Enter fullscreen mode Exit fullscreen mode

24. semver-bump

Interactively choose version bumps with changelog preview.

npm install -g @chengyixu/semver-bump
Enter fullscreen mode Exit fullscreen mode
semver-bump
# Current: 1.2.3
# patch → 1.2.4 (3 fixes since last release)
# minor → 1.3.0 (2 features + 3 fixes)
Enter fullscreen mode Exit fullscreen mode

25. tsconfig-lint

Lint your tsconfig.json for common mistakes and anti-patterns.

npm install -g @chengyixu/tsconfig-lint
Enter fullscreen mode Exit fullscreen mode
tsconfig-lint
# WARN: strict is false — consider enabling for new projects
# ERROR: outDir same as rootDir — compiled files will overwrite source
Enter fullscreen mode Exit fullscreen mode

26. gitignore-gen

Generate .gitignore files from templates. Covers 400+ technologies.

npm install -g @chengyixu/gitignore-gen
Enter fullscreen mode Exit fullscreen mode
gitignore-gen node,macos,vscode > .gitignore
Enter fullscreen mode Exit fullscreen mode

27. pkgjson-lint

Validate and fix common package.json issues.

npm install -g @chengyixu/pkgjson-lint
Enter fullscreen mode Exit fullscreen mode
pkgjson-lint --fix
# Fixed: missing "repository" field
# Fixed: inconsistent dependency versions
Enter fullscreen mode Exit fullscreen mode

28. color-convert-cli

Convert colors between hex, RGB, HSL, and CMYK from the terminal.

npm install -g @chengyixu/color-convert-cli
Enter fullscreen mode Exit fullscreen mode
color-convert "#FF5733" --to hsl
# hsl(11, 100%, 60%)
Enter fullscreen mode Exit fullscreen mode

29. mdtoc-cli

Generate a table of contents for Markdown files.

npm install -g @chengyixu/mdtoc-cli
Enter fullscreen mode Exit fullscreen mode
mdtoc README.md --insert
# Inserted TOC with 14 entries after first heading
Enter fullscreen mode Exit fullscreen mode

30. license-checker-cli

Scan all dependencies and report their licenses. Flag problematic ones.

npm install -g @chengyixu/license-checker-cli
Enter fullscreen mode Exit fullscreen mode
license-checker --deny GPL-3.0 --allow MIT,Apache-2.0
# 2 packages with denied licenses: pkg-a (GPL-3.0), pkg-b (GPL-3.0)
Enter fullscreen mode Exit fullscreen mode

Tier C — Niche (15 Tools)

These solve very specific problems. If you have the problem, they're great. If you don't, you'll wonder why they exist.

31. regex-test-cli

Test regular expressions against input strings with match highlighting.

npm install -g @chengyixu/regex-test-cli
Enter fullscreen mode Exit fullscreen mode
regex-test "(\d{3})-(\d{4})" "Call 555-1234 or 555-5678"
# Match 1: [555-1234] Groups: [555] [1234]
# Match 2: [555-5678] Groups: [555] [5678]
Enter fullscreen mode Exit fullscreen mode

32. jwt-decode-cli

Decode JWT tokens and check expiry from the terminal.

npm install -g @chengyixu/jwt-decode-cli
Enter fullscreen mode Exit fullscreen mode
jwt-decode eyJhbGciOi...
# Header: {"alg":"RS256","typ":"JWT"}
# Payload: {"sub":"user123","exp":1711036800}
# Expires: 2026-03-22T00:00:00Z (2 days from now)
Enter fullscreen mode Exit fullscreen mode

33. base64-cli

Encode/decode base64 with file support and URL-safe variants.

npm install -g @chengyixu/base64-cli
Enter fullscreen mode Exit fullscreen mode
base64-cli encode "Hello, World!" --url-safe
Enter fullscreen mode Exit fullscreen mode

34. hash-cli

Hash strings or files with MD5, SHA-1, SHA-256, SHA-512.

npm install -g @chengyixu/hash-cli
Enter fullscreen mode Exit fullscreen mode
hash-cli sha256 ./package-lock.json
# a3f2b1c8e9d4... (sha256)
Enter fullscreen mode Exit fullscreen mode

35. ip-info-cli

Look up IP geolocation, ASN, and reverse DNS from the terminal.

npm install -g @chengyixu/ip-info-cli
Enter fullscreen mode Exit fullscreen mode
ip-info 8.8.8.8
# Location: Mountain View, CA, US  ASN: AS15169 Google LLC
Enter fullscreen mode Exit fullscreen mode

36. cron-explain-cli

Translate cron expressions to human-readable descriptions.

npm install -g @chengyixu/cron-explain-cli
Enter fullscreen mode Exit fullscreen mode
cron-explain "0 */6 * * 1-5"
# "At minute 0, every 6 hours, Monday through Friday"
# Next 3 runs: Mon 06:00, Mon 12:00, Mon 18:00
Enter fullscreen mode Exit fullscreen mode

37. uuid-cli

Generate UUIDs (v4, v5, v7) and ULID from the terminal.

npm install -g @chengyixu/uuid-cli
Enter fullscreen mode Exit fullscreen mode
uuid-cli v4 --count 5
Enter fullscreen mode Exit fullscreen mode

38. timestamp-cli

Convert between Unix timestamps, ISO 8601, and relative time.

npm install -g @chengyixu/timestamp-cli
Enter fullscreen mode Exit fullscreen mode
timestamp-cli 1711036800
# 2026-03-22T00:00:00Z  "2 days from now"  "Saturday"
Enter fullscreen mode Exit fullscreen mode

39. placeholder-img-cli

Generate placeholder images with custom dimensions, color, and text.

npm install -g @chengyixu/placeholder-img-cli
Enter fullscreen mode Exit fullscreen mode
placeholder-img 800x600 --bg "#eee" --text "Hero Image" --out hero.png
Enter fullscreen mode Exit fullscreen mode

40. password-gen-cli

Generate secure passwords and passphrases with entropy calculation.

npm install -g @chengyixu/password-gen-cli
Enter fullscreen mode Exit fullscreen mode
password-gen --length 24 --symbols --entropy
# G$k9!mP2@vX4nR7&wQ1 (entropy: 143 bits)
Enter fullscreen mode Exit fullscreen mode

41. http-mock-cli

Spin up a mock HTTP server from a JSON definition file.

npm install -g @chengyixu/http-mock-cli
Enter fullscreen mode Exit fullscreen mode
http-mock --config mocks.json --port 4000
# Mock server running on http://localhost:4000
# GET /users → 200 (3 routes loaded)
Enter fullscreen mode Exit fullscreen mode

42. sitemap-gen-cli

Crawl a website and generate an XML sitemap.

npm install -g @chengyixu/sitemap-gen-cli
Enter fullscreen mode Exit fullscreen mode
sitemap-gen https://example.com --depth 3 --output sitemap.xml
# Crawled 147 pages in 12s → sitemap.xml
Enter fullscreen mode Exit fullscreen mode

43. ssl-check-cli

Check SSL certificate details and chain validity for any domain.

npm install -g @chengyixu/ssl-check-cli
Enter fullscreen mode Exit fullscreen mode
ssl-check example.com
# Issuer: Let's Encrypt  Valid: 67 days  Grade: A+  Chain: ✓ valid
Enter fullscreen mode Exit fullscreen mode

44. dns-lookup-cli

DNS record lookup with all record types and trace mode.

npm install -g @chengyixu/dns-lookup-cli
Enter fullscreen mode Exit fullscreen mode
dns-lookup example.com --type ALL
# A: 93.184.216.34  AAAA: 2606:2800::  MX: mail.example.com  TXT: "v=spf1..."
Enter fullscreen mode Exit fullscreen mode

45. whois-cli

WHOIS lookup with parsed, structured output.

npm install -g @chengyixu/whois-cli
Enter fullscreen mode Exit fullscreen mode
whois-cli example.com --json
# Registrar: ICANN  Created: 1995-08-14  Expires: 2026-08-13
Enter fullscreen mode Exit fullscreen mode

Tier D — Built for Fun (9 Tools)

These exist because I was curious, bored, or procrastinating on something more important. No regrets.

46. ascii-art-cli

Convert images to ASCII art in the terminal.

npm install -g @chengyixu/ascii-art-cli
Enter fullscreen mode Exit fullscreen mode
ascii-art ./photo.jpg --width 80
# @@@@@@%%##**++==--..
# (it looks cool, I promise)
Enter fullscreen mode Exit fullscreen mode

47. weather-cli

Check the weather from your terminal. Because alt-tabbing is hard.

npm install -g @chengyixu/weather-cli
Enter fullscreen mode Exit fullscreen mode
weather-cli "Toronto"
# 🌤 12°C  Feels like: 9°C  Humidity: 45%  Wind: 15 km/h NW
Enter fullscreen mode Exit fullscreen mode

48. fortune-cli

Random programming quotes and jokes for your terminal startup.

npm install -g @chengyixu/fortune-cli
Enter fullscreen mode Exit fullscreen mode
fortune-cli
# "There are only two hard things in Computer Science:
#  cache invalidation and naming things." — Phil Karlton
Enter fullscreen mode Exit fullscreen mode

49. pomodoro-cli

Terminal Pomodoro timer with system notifications.

npm install -g @chengyixu/pomodoro-cli
Enter fullscreen mode Exit fullscreen mode
pomodoro-cli start --work 25 --break 5
# 🍅 Focus: 24:59 remaining...
Enter fullscreen mode Exit fullscreen mode

50. matrix-rain-cli

The Matrix digital rain effect in your terminal. No practical use whatsoever.

npm install -g @chengyixu/matrix-rain-cli
Enter fullscreen mode Exit fullscreen mode
matrix-rain --color green --speed fast
# ╎ヨ₧╎ヨ₧╎ヨ₧╎ヨ₧ (you've seen the movie)
Enter fullscreen mode Exit fullscreen mode

51. cowsay-node

ASCII cow says your message. A classic, reimplemented.

npm install -g @chengyixu/cowsay-node
Enter fullscreen mode Exit fullscreen mode
cowsay-node "Ship it!"
#  __________
# < Ship it! >
#  ----------
#         \   ^__^
#          \  (oo)\_______
#             (__)\       )
Enter fullscreen mode Exit fullscreen mode

52. lolcat-cli

Rainbow-colored text output. Because plain white text is boring.

npm install -g @chengyixu/lolcat-cli
Enter fullscreen mode Exit fullscreen mode
echo "Hello World" | lolcat-cli
# H e l l o   W o r l d  (in beautiful rainbow gradient)
Enter fullscreen mode Exit fullscreen mode

53. typewriter-cli

Print text with a typewriter animation effect.

npm install -g @chengyixu/typewriter-cli
Enter fullscreen mode Exit fullscreen mode
typewriter-cli "Deploying to production..." --speed 50
Enter fullscreen mode Exit fullscreen mode

54. elevator-music-cli

Play elevator music while your build runs. That's it. That's the tool.

npm install -g @chengyixu/elevator-music-cli
Enter fullscreen mode Exit fullscreen mode
elevator-music-cli & npm run build
# ♫ Playing smooth jazz... (build completes) ♫ Stopped.
Enter fullscreen mode Exit fullscreen mode

What I Learned Building 54 Tools

Tier S tools solve recurring pain. Every S-tier tool was born from a real production incident or a workflow friction I hit repeatedly. envcheck-cli exists because I deployed with missing variables. filewatch-cli exists because nodemon was too slow. The tools I use most are the ones that were born from genuine frustration, not "wouldn't it be cool if."

Tier D tools taught me the most. Building ascii-art-cli taught me about terminal escape codes and image processing in Node. matrix-rain-cli taught me about terminal rendering performance. The "useless" tools were the ones where I explored the most unfamiliar territory.

Zero-dependency tools are underrated. Most of my Tier S and A tools have zero runtime dependencies. They install in under a second, have no supply chain risk, and never break because a transitive dependency pushed a bad update. I wrote my own arg parser, my own colored output, my own file watcher. It was more work, but the result is tools I trust completely.

Naming is half the battle. envcheck-cli gets more installs than dotenv-validator ever would. Short, descriptive names that tell you exactly what the tool does in one compound word are the sweet spot. If I have to explain the name, I've already lost.

Ship fast, iterate never. Controversial take: most of these tools were "done" in a single session. I published them and moved on. The ones that got traction (like gitpulse) I came back to. The rest? They work fine as v1.0.0 and probably always will.


The Full Tier List

Tier Count Philosophy
S 5 "I'd be lost without this"
A 10 "Reach for it weekly"
B 15 "Right tool for the right job"
C 15 "If you have the problem, it's great"
D 9 "Built for fun, no regrets"

Which tier would YOU put them in? Let me know in the comments. And if you've built your own CLI tools, I'd love to see your tier list. The best tools are always the ones someone built to scratch their own itch.

Top comments (0)