
Security News
CVE Volume Surges Past 48,000 in 2025 as WordPress Plugin Ecosystem Drives Growth
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.
A unified CLI tool for managing git repositories with a structured directory layout. Organize all your repositories in a consistent domain-based structure. Fast search, clipboard integration, and cross-platform support.
English · 简体中文
repo-do helps you organize all your git repositories in a consistent, domain-based directory structure. It automatically clones repositories to organized paths and provides fast search capabilities to find and navigate to your projects.
{baseDir}/{domain}/{group}/{repo} structurecd commands to clipboardnpm install -g repo-do
repo-do init
This prompts you to set a base directory for storing repositories (default: ~/.repo-do/repo).
repo-do add git@github.com:STDSuperman/super-image-cropper.git
The repository will be cloned to:
{baseDir}/github.com/STDSuperman/super-image-cropper
The cd command is automatically copied to your clipboard!
repo-do find super-image
Output:
Found 1 repository:
1. D:\Code\github.com\STDSuperman\super-image-cropper
repo-do list
Output:
github.com/STDSuperman/super-image-cropper
github.com/STDSuperman/NanoBanana-PPT-Skills
gitlab.com/myorg/internal-tool
Total: 3 repositories
repo-do initInitialize configuration and set the base directory for repositories.
repo-do init
repo-do add <repo_url> [git-clone-args...]Clone a repository to the structured directory.
Supported URL formats:
https://github.com/user/repo.git or https://github.com/user/repogit@github.com:user/repo.git or ssh://git@github.com/user/repo.gitExamples:
# Basic clone
repo-do add git@github.com:STDSuperman/super-image-cropper.git
# Shallow clone
repo-do add https://github.com/STDSuperman/super-image-cropper.git --depth 1
# Clone specific branch
repo-do add https://github.com/STDSuperman/super-image-cropper.git --branch develop
# SSH clone
repo-do add git@github.com:STDSuperman/NanoBanana-PPT-Skills.git
Directory structure:
{baseDir}/
├── github.com/
│ └── STDSuperman/
│ ├── super-image-cropper/
│ └── NanoBanana-PPT-Skills/
└── gitlab.com/
└── myorg/
└── internal-tool/
repo-do find <query>Search for repositories by name, group, or path fragment (case-insensitive).
repo-do find super-image
repo-do find STDSuperman
repo-do find github.com
Output format:
Found 2 repositories:
1. D:\Code\github.com\STDSuperman\super-image-cropper
2. D:\Code\github.com\STDSuperman\NanoBanana-PPT-Skills
Each result is prefixed with a number, followed by the absolute path.
repo-do list [--refresh]List all managed repositories.
# List from cache (fast)
repo-do list
# Force rebuild cache
repo-do list --refresh
repo-do remove <repo>Remove a repository from tracking (does not delete files).
repo-do remove super-image
If multiple matches are found, you'll be prompted to select which one to remove.
repo-do config [options]View or modify configuration.
# Show current config
repo-do config
# Get base directory
repo-do config --get baseDirectory
# Set base directory
repo-do config --set baseDirectory /path/to/repos
All repositories are organized in a consistent structure:
{baseDirectory}/{domain}/{group}/{repository}
Examples:
| Git URL | Cloned Path |
|---|---|
git@github.com:STDSuperman/super-image-cropper.git | {baseDir}/github.com/STDSuperman/super-image-cropper |
git@gitlab.com:myorg/myrepo.git | {baseDir}/gitlab.com/myorg/myrepo |
https://github.com/STDSuperman/NanoBanana-PPT-Skills.git | {baseDir}/github.com/STDSuperman/NanoBanana-PPT-Skills |
Configuration is stored in ~/.repo-do/config.json:
{
"baseDirectory": "D:\\Code",
"version": "1.0.0"
}
To improve performance, repo-do maintains a repository cache at ~/.repo-do/repo_cache.json.
Cache is automatically updated when:
repo-do add)repo-do remove)repo-do list --refresh)Cache format:
{
"repositories": [
{
"name": "super-image-cropper",
"fullPath": "D:\\Code\\github.com\\STDSuperman\\super-image-cropper",
"gitUrl": "git@github.com:STDSuperman/super-image-cropper.git",
"domain": "github.com",
"group": "STDSuperman",
"lastUpdated": "2026-01-11T12:00:00.000Z"
}
],
"lastUpdated": "2026-01-11T12:00:00.000Z"
}
pbcopyxclip or xsel (may require installation)clip commandIf clipboard fails, the path is still displayed in the terminal.
All paths are handled using Node.js path module for cross-platform compatibility.
repo-do provides clear error messages for common issues:
# Clone the repository
git clone https://github.com/your-username/repo-do.git
cd repo-do
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Run tests
npm test
repo-do/
├── src/
│ ├── commands/ # CLI command implementations
│ ├── core/ # Core business logic
│ ├── utils/ # Utility functions
│ ├── types/ # TypeScript type definitions
│ ├── constants/ # Constants
│ └── index.ts # CLI entry point
├── bin/
│ └── repo-do.js # Executable entry
├── dist/ # Compiled output
└── tests/ # Test files
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
FAQs
Unified git repository management tool
We found that repo-do demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.

Security News
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.

Security News
Tailwind Labs laid off 75% of its engineering team after revenue dropped 80%, as LLMs redirect traffic away from documentation where developers discover paid products.