Skip to content
20 CLI Tools Projects (2026)

20 CLI Tools Projects (2026)

DodaTech Updated Jun 20, 2026 8 min read

Command-line tools are the foundation of developer tooling. They’re fast, composable, scriptable, and don’t need a UI framework. Building CLI tools teaches you file I/O, argument parsing, process management, and the Unix philosophy of small tools that do one thing well. These 20 projects start with simple file organizers and end with a full plugin-based CLI framework, spanning Python, Go, Rust, and Node.js.

Beginner Projects (1–10)

1. File Organizer — Difficulty: ⭐ Skills: file I/O, directory traversal, file extensions, move/copy Build a CLI tool that organizes files in a directory by extension. Features: sort into folders (Images/, Documents/, Audio/, Archives/), handle duplicate filenames with timestamp prefix, dry-run flag to preview changes, recursive or flat mode.

2. Directory Tree Viewer — Difficulty: ⭐ Skills: recursion, directory walking, tree drawing, output formatting Build a CLI tool that prints a visual directory tree. Features: ASCII tree branches, show file sizes, depth limit flag, exclude hidden files/folders, output to HTML or JSON format.

3. Markdown to HTML Converter — Difficulty: ⭐⭐ Skills: file parsing, markdown syntax, HTML generation, CLI args Build a CLI tool that converts Markdown files to HTML. Features: convert headings, bold/italic, links, images, code blocks, lists; output single HTML file or multiple files; custom CSS injection.

4. Todo CLI — Difficulty: ⭐ Skills: file persistence (JSON), CRUD operations, CLI interface Build a command-line todo list manager. Features: add/list/complete/delete tasks, priority flags (–high, –low), due dates, list filtered by status (all/pending/done), color-coded output.

5. Note-Taking CLI — Difficulty: ⭐⭐ Skills: file I/O, timestamps, search, tagging Build a CLI note-taking app with quick capture and search. Features: create notes with title and body, search by keyword or tag, list all notes with creation date, delete and edit notes, export as markdown files.

6. Weather CLI — Difficulty: ⭐⭐ Skills: HTTP requests, API integration, JSON parsing, colored output Build a CLI tool that shows current weather and forecast. Features: weather by city name or coordinates, save default location in config file, color-coded output (blue for cold, red for hot), 3-day or 7-day forecast flag.

7. Password Generator CLI — Difficulty: ⭐ Skills: random generation, flags, character sets, clipboard Build a CLI password generator with configurable options. Features: length flag (-l 16), include/exclude character sets, generate multiple at once (-n 5), copy to clipboard, strength evaluation output.

8. CSV Viewer — Difficulty: ⭐⭐ Skills: CSV parsing, tabular formatting, pagination, sorting Build a CLI tool to view CSV files in the terminal. Features: display as formatted table with columns, sort by column flag (–sort name), filter rows with –search, pagination for large files (–page 1 –per-page 20), column summary stats.

9. Timer / Stopwatch CLI — Difficulty: ⭐ Skills: time module, signal handling, real-time display Build a CLI countdown timer and stopwatch. Features: countdown mode (timer 5m 30s), stopwatch mode with lap times (–lap), pause/resume with Ctrl+P, display with hours:minutes:seconds, alarm notification on completion.

10. File Renaming Tool — Difficulty: ⭐⭐ Skills: regex, string manipulation, batch operations, dry-run Build a CLI tool for batch file renaming with patterns. Features: find-and-replace in filenames, add prefix/suffix, convert to kebab-case/snake-case, numbered sequences, preview changes in dry-run mode, undo/rollback.

Intermediate Projects (11–20)

11. Task Runner CLI — Difficulty: ⭐⭐⭐ Skills: YAML/TOML parsing, process execution, dependencies Build a CLI task runner (like a minimal Make or Just). Features: define tasks in a YAML file, run tasks by name, task dependencies (task B runs after task A), shell command execution, pass arguments to tasks.

12. Project Scaffolding Tool — Difficulty: ⭐⭐⭐ Skills: templates, file generation, user prompts, Git integration Build a CLI tool that generates project boilerplate from templates. Features: template library with language presets (Python, Node, Go), prompt for project name and options, variable substitution in templates, optional Git init.

13. HTTP Server CLI — Difficulty: ⭐⭐ Skills: HTTP protocol, file serving, routing, middleware Build a CLI tool that starts a simple HTTP file server on a directory. Features: serve static files from current directory, configurable port and host, directory listing, basic auth flag, CORS header toggle.

14. Log File Analyzer — Difficulty: ⭐⭐⭐ Skills: regex, file streaming, pattern matching, report generation Build a CLI tool that analyzes log files and produces reports. Features: count error/warning/info levels by frequency, extract IP addresses and find top requesters, timeline of events, filter by date range, export report as HTML.

15. Database Migration CLI — Difficulty: ⭐⭐⭐ Skills: database connections, SQL execution, version tracking, rollback Build a migration tool for managing database schema changes. Features: up/down SQL migrations with sequential numbering, track applied migrations in a schema table, migration status command, rollback last N migrations.

16. Image Optimizer CLI — Difficulty: ⭐⭐⭐ Skills: image processing library, batch processing, quality tuning Build a CLI tool that compresses and optimizes images. Features: compress JPEG/PNG/WebP with configurable quality, resize by dimensions or percentage, convert between formats, strip EXIF metadata, process directories recursively.

17. API Client CLI (curl Wrapper) — Difficulty: ⭐⭐⭐ Skills: HTTP methods, headers, JSON/XML formatting, authentication Build a CLI HTTP client with a focus on developer experience. Features: GET/POST/PUT/DELETE with -X flag, custom headers, JSON body input from file or stdin, pretty-printed response, save response to file, Bearer token auth.

18. Config File Validator — Difficulty: ⭐⭐ Skills: YAML/JSON/TOML parsing, schema validation, error reporting Build a CLI tool that validates configuration files against a schema. Features: support YAML, JSON, TOML formats, define schema with required fields and types, friendly error messages with line numbers, auto-fix missing defaults.

19. SSH Manager CLI — Difficulty: ⭐⭐⭐ Skills: SSH config parsing, process spawning, connection management Build a CLI tool for managing and quickly connecting to SSH hosts. Features: list hosts from ~/.ssh/config, fuzzy search to select host, auto-complete host names, copy SSH command to clipboard, ping/test connectivity.

20. Git Workflow Automation — Difficulty: ⭐⭐⭐ Skills: Git commands, shell execution, interactive prompts Build a CLI tool that automates common Git workflows. Features: create feature branch from main, commit with conventional commit template, push and open PR, squash and merge helper, interactive rebase wizard.

Advanced Projects (21–30)

21. Terminal-Based Text Editor — Difficulty: ⭐⭐⭐⭐⭐ Skills: termios/curses, buffer management, key bindings, file I/O Build a minimal terminal text editor (like a tiny Vim or Nano). Features: open/edit/save files, cursor movement with arrow keys, insert/overwrite mode, line numbers, search within file, syntax highlighting for basic languages.

22. File Sync CLI — Difficulty: ⭐⭐⭐⭐ Skills: file hashing, directory comparison, delta copy, progress bars Build a CLI tool that syncs files between two directories (like rsync basics). Features: compare source and destination by hash, copy only changed files, delete removed files on destination, progress bar and speed display.

23. Package Manager CLI — Difficulty: ⭐⭐⭐⭐ Skills: network requests, installation, dependency resolution, versioning Build a minimal package manager (like a tiny apt or npm). Features: install/update/remove packages, resolve and install dependencies, package manifest with version constraints, list installed packages.

24. Monitoring Dashboard CLI — Difficulty: ⭐⭐⭐⭐ Skills: system stats, real-time display, charts in terminal, alerts Build a CLI dashboard that shows real-time system metrics. Features: CPU, memory, disk, network usage with bar charts, process list sorted by CPU/memory, refresh interval config, alert threshold configuration.

25. Interactive REPL Tool — Difficulty: ⭐⭐⭐⭐ Skills: REPL loop, readline, command history, auto-completion Build an interactive REPL (Read-Eval-Print-Loop) for any domain (math, database queries, or a custom scripting language). Features: readline support with history, tab completion, multi-line input, save/load session, built-in help.

26. Deployment CLI — Difficulty: ⭐⭐⭐⭐ Skills: SSH, rsync, Docker, CI integration, rollback Build a CLI tool that deploys applications to a remote server. Features: deploy via rsync or Docker, zero-downtime with symlink swap, health check after deploy, rollback to previous version, notify on Slack/Discord.

27. Test Runner CLI — Difficulty: ⭐⭐⭐⭐ Skills: file watching, test discovery, parallel execution, reporting Build a CLI test runner for any language. Features: discover test files by pattern, run tests with pass/fail output, watch mode for auto re-run, parallel test execution, coverage summary, JUnit XML output.

28. Code Linter CLI — Difficulty: ⭐⭐⭐⭐ Skills: AST parsing, rule engine, file traversal, reporting Build a code linter for your language of choice. Features: parse source files into AST, detect rule violations (unused variables, missing docstrings, line length), auto-fix for simple rules, configurable rule set in config file.

29. CI Pipeline CLI — Difficulty: ⭐⭐⭐⭐ Skills: YAML parsing, pipeline stages, Docker containers, caching Build a CLI tool that runs CI/CD pipelines locally. Features: define pipeline stages in YAML (build, test, deploy), run stages sequentially or in parallel, Docker container isolation per step, cache dependencies between runs.

30. Plugin-Based CLI Framework — Difficulty: ⭐⭐⭐⭐⭐ Skills: plugin architecture, dynamic loading, CLI framework design Build a CLI framework that loads plugins dynamically and exposes them as subcommands. Features: plugin discovery from a directory, subcommand registration from plugins, shared context between plugins, hook system (before/after command), plugin lifecycle management.

How to Choose

If you’re new to CLI development, start with projects 1–5 to learn argument parsing and file I/O. Projects 6–10 add API calls and real-time display. Projects 11–20 build practical developer tools (task runners, scaffolders, linters). Projects 21–30 are major projects suitable for a portfolio — they demonstrate systems-level thinking and advanced patterns. Pick a language you’re already comfortable in; the CLI patterns are the same across Python, Go, Rust, and Node.js.

FAQ

Which language is best for CLI tools?
Python is the fastest to develop in and great for prototypes and utility tools. Go is the best choice for distribution — it compiles to a single binary with no dependencies. Rust gives you maximum performance and safety. Node.js (with Commander or yargs) works well if you’re already in the JS ecosystem. Start with Python, then rewrite your favorites in Go for distribution.
How do I handle flags and arguments?
Use a library for argument parsing — it handles validation, help text, and error messages. For Python, use argparse (built-in) or click. For Go, use cobra. For Rust, use clap. For Node.js, use commander or yargs. These libraries also auto-generate --help output.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro