Manage your Opensource projects!
mo keeps your GitHub repos organized under a single root directory.
vp i -g @liangmi/mo- macOS or Linux
git- GitHub CLI
ghauthenticated (gh auth status)
Run once to initialize config and shell integration:
mo setupTip
If you are an agent user, we provide two skills:
global-projectsorganizes repositories and resolves their local paths.contribute-to-open-sourceprepares forks withmo forkand follows the upstream contribution workflow.
Install either skill with:
skills add liangmiQwQ/mo --skill global-projects -g
skills add liangmiQwQ/mo --skill contribute-to-open-source -gBoth skills detect whether mo or moi is installed and use the matching command.
| Command | Alias | Description |
|---|---|---|
mo setup |
Initialize config and shell integration | |
mo clone <repo> |
mo c |
Clone <owner>/<repo> or a GitHub repo URL |
mo composition <main> <subs> <repo> |
Run clone/fork, then cd/edit/open |
|
mo fork [repo] |
mo f |
Fork <owner>/<repo>, a GitHub URL, or cwd |
mo list |
mo ls |
List all managed repos |
mo cd [target] |
Jump to root, owner, repo, or GitHub URL | |
mo edit [target] |
mo e |
Open a directory in your editor |
mo open [target] |
mo o |
Open a directory in Finder/Explorer |
mo cd, mo edit, and mo open have similar behavior and open an interactive selector when called without arguments. When a target is provided, it can be a search query, <owner>/<repo>, or a GitHub repository URL for an existing local repo.
Tip
If you are using mo with VS Code based editors, you can add this line to your editor config to prevent mo edit popping up a new separated window.
"window.openFoldersInNewWindow": "off"Setting code -r as your editor in mo setup have the same effect as well.
The config file should be generated by running mo setup. Modifying ~/.config/morc.json manually is not recommended.
Please follow the config_schema.json if you are developing mo.
~/.config/morc.json:
{
"$schema": "https://raw.githubusercontent.com/liangmiQwQ/mo/main/config_schema.json",
"root": "~/code",
"shells": ["zsh"],
"editor": "code",
"alias": {
"clone": ["k"],
"cd": ["i"],
"edit": ["e"]
},
"compositionAlias": true
}If another tool already uses the mo command, we provide moi as an cli alias:
vp i -g @liangmi/moi@liangmi/moi has the same behavior, but exposes moi, moi-inner, and moi-get-root commands.
We are so excited that you are willing to help improving mo! Please see ROADMAP.md for what's planned.
Vite+ provides powerful developing tools for the cli development, including linting, formatting and bundling.
Vue TUI provides an excellent Tui framework based on Vue.js. It helps build the selector part inside mo cd, mo edit and mo open commands.
MIT © Liang Mi
