uralys/check-projects: ✨​ A fast, cross-platform CLI tool to check the git status of multiple projects organized by categories.

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
  1. Download the latest release for your platform from GitHub Releases

  2. 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
  1. Create a configuration file:
cp check-projects.example.yml ~/check-projects.yml
  1. edit ~/check-projects.yml to match your project structure

  2. Run the tool:

Configuration files are searched in this order:

  1. path is specified --config flag
  2. ./check-projects.yml (current directory)
  3. ~/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



Leave a Comment