20 CLI Tools Projects (2026)
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
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro