A fast, cross-platform CLI tool to check the Git status of multiple projects organized by categories.
run check-projects To see which of your projects have uncommitted changes, are ahead of the remote, or have other Git status indicators.
x mozilla
* M firefox
✱ ✚ thunderbird
✔ godot
x gamedev
⬆ flying-ones
* M avindi
✔– Clear (synced with remote)⬆– forward from remote⬆⬆– disconnected from remote* M– modified files* D– deleted files✱ ✚– Untracked files❌– Mistake
- multi-category organization: Group your projects by team, customer or any category
- nested project search:Automatically scan nested folder structures
- concurrent scanning: fast parallel git status check
- flexible configuration:YAML-based configuration with local and global support
- smart filtering: Hide clean projects by default, show only what needs attention
- cross-platform: Single binary for MacOS, Linux and Windows
Quick Install (MacOS/Linux)
curl -fsSL https://raw.githubusercontent.com/uralys/check-projects/main/install.sh | sh
This will download the latest release and install it ~/.local/bin/check-projects,
show manual installation
-
Download the latest release for your platform from GitHub Releases
-
Remove and Install:
# macOS/Linux
tar -xzf check-projects-*.tar.gz
chmod +x check-projects
sudo mv check-projects /usr/local/bin/
# Or install to user directory (no sudo required)
mkdir -p ~/.local/bin
mv check-projects ~/.local/bin/
# Add ~/.local/bin to your PATH if not already done
# Windows (PowerShell as Administrator)
Move-Item check-projects.exe C:\Windows\System32\
git clone https://github.com/uralys/check-projects.git
cd check-projects
make install
- Create a configuration file:
cp check-projects.example.yml ~/check-projects.yml
-
edit
~/check-projects.ymlto match your project structure -
Run the tool:
Configuration files are searched in this order:
- path is specified
--configflag ./check-projects.yml(current directory)~/check-projects.yml(home directory)
categories:
# Mode 1: Explicit project list (using 'projects' field)
# Use full paths to specific git repositories
- name: core
projects:
- ~/fox
- ~/cherry
# Mode 2: Auto-scan directory (using 'root' field)
# Recursively scans for all git repositories in the directory
- name: godot
root: ~/Projects/godot
# Mode 2 with ignore patterns
# Projects listed in 'ignore' will be skipped in this category
- name: uralys
root: ~/Projects/uralys
ignore:
- deprecated-project # Exact match
- _archives/* # Wildcard: ignore all projects in _archives/
- "*-old" # Pattern: ignore all projects ending with -old
# Display options
display:
hide_clean: true # Hide projects with ✔ status by default
hide_ignored: true # Hide ignored projects from output
You can ignore specific projects in a category using ignore Field. Supported Pattern:
- perfect match,
project-name– ignores exact project name - wildcard prefix,
_archives/*– ignores all projects in_archives/directory - globe pattern,
*-deprecated– Ignores all projects that have expired-deprecated
Common ignore patterns are applied automatically:
node_modules– Always missed during scanning.DS_Store– Always missed during scanning
# Check all projects
check-projects
# Show all projects including clean ones
check-projects --verbose
check-projects -v
# Check only specific category
check-projects --category gamedev
# Use custom config file
check-projects --config /path/to/config.yml
# Show version
check-projects --version
check-projects Automatically checks for new versions at startup. When a new version is available, you will see:
⚠ New version available: 1.0.0 → 1.1.0
Install update? [Y/n]:
- Press enter or type Y To automatically download and install updates
- Type n To quit and continue with your current version
The update check is non-blocking and will fail silently if GitHub is inaccessible.
# Install dependencies
make deps
# Run without building
make dev
# Build binary
make build
# Run tests
make test
# Build for all platforms
make release