{"id":13465097,"url":"https://github.com/jandamm/zgenom","last_synced_at":"2026-03-05T09:14:53.118Z","repository":{"id":38379977,"uuid":"296924338","full_name":"jandamm/zgenom","owner":"jandamm","description":"A lightweight and fast plugin manager for ZSH","archived":false,"fork":false,"pushed_at":"2025-06-17T10:15:35.000Z","size":275,"stargazers_count":392,"open_issues_count":2,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-06-17T11:27:59.641Z","etag":null,"topics":["ohmyzsh","plugin-manager","prezto","shell","zgen","zgenom","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jandamm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-09-19T18:03:09.000Z","updated_at":"2025-06-17T10:15:40.000Z","dependencies_parsed_at":"2024-01-03T04:15:19.986Z","dependency_job_id":"5359f4d9-b89b-4e62-b932-e313d4596cc0","html_url":"https://github.com/jandamm/zgenom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jandamm/zgenom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandamm%2Fzgenom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandamm%2Fzgenom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandamm%2Fzgenom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandamm%2Fzgenom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jandamm","download_url":"https://codeload.github.com/jandamm/zgenom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandamm%2Fzgenom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30117552,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T08:19:04.902Z","status":"ssl_error","status_checked_at":"2026-03-05T08:17:37.148Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ohmyzsh","plugin-manager","prezto","shell","zgen","zgenom","zsh"],"created_at":"2024-07-31T14:00:59.320Z","updated_at":"2026-03-05T09:14:53.104Z","avatar_url":"https://github.com/jandamm.png","language":"Shell","funding_links":[],"categories":["What does it contain?","Shell","Frameworks"],"sub_categories":["[zgen](https://github.com/tarjoilija/zgen)","\u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;1518⭐\u003c/code\u003e\u003c/b\u003e \u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;99🍴\u003c/code\u003e\u003c/b\u003e [zgen](https://github.com/tarjoilija/zgen))"],"readme":"# zgenom\n\nA lightweight yet powerful plugin manager for Zsh.\n\nIt is a superset of the brilliant [zgen](https://github.com/tarjoilija/zgen).\nProviding more features and bugfixes while being fully backwards compatible.\nHave a look at the [migration guide](#migration-from-zgen) if you're\ncurrently using `zgen`. Also have a look at [new features](#new-features) of\nzgenom.\n\nZgenom provides you simple commands for managing plugins. It installs your\nplugins and generates a static init script that will source them for you every\ntime you run the shell. We do this to save some startup time by not having to\nexecute time consuming logic (plugin checking, updates, etc) every time a new\nshell session is started. This means that you have to manually check for\nupdates (`zgenom update`) and reset the init script (`zgenom reset`) whenever\nyou add or remove plugins.\n\nZgenom does have a `zgenom autoupdate` which checks for updates periodically\nwithout startup penalty or having to wait for the plugins to update. See\n[here](#run-updates-automatically) for more information.\n\n## Installation\n\n\u003cdetails\u003e\u003csummary\u003e...\u003c/summary\u003e\n\nClone the zgenom repository:\n\n```zsh\ngit clone https://github.com/jandamm/zgenom.git \"${HOME}/.zgenom\"\n```\n\nEdit your .zshrc file to load zgenom:\n\n```zsh\n# load zgenom\nsource \"${HOME}/.zgenom/zgenom.zsh\"\n```\n\nPlace the following code after the one above to load ohmyzsh for example, see\n[Example](#example-zshrc) and [Usage](#usage) for more details.\n\n```zsh\n# if the init script doesn't exist\nif ! zgenom saved; then\n\n  # specify plugins here\n  zgenom ohmyzsh\n\n  # generate the init script from plugins above\n  zgenom save\nfi\n```\nIf you're currently using zgen [see below](#migration-from-zgen).\n\n\u003c/details\u003e\n\n## Example .zshrc\n\n```zsh\n# load zgenom\nsource \"${HOME}/.zgenom/zgenom.zsh\"\n\n# Check for plugin and zgenom updates every 7 days\n# This does not increase the startup time.\nzgenom autoupdate\n\n# if the init script doesn't exist\nif ! zgenom saved; then\n    echo \"Creating a zgenom save\"\n\n    # Add this if you experience issues with missing completions or errors mentioning compdef.\n    # zgenom compdef\n\n    # Ohmyzsh base library\n    zgenom ohmyzsh\n\n    # You can also cherry pick just parts of the base library.\n    # Not loading the base set of ohmyzsh libraries might lead to issues.\n    # While you can do it, I won't recommend it unless you know how to fix\n    # those issues yourself.\n\n    # Remove `zgenom ohmyzsh` and load parts of ohmyzsh like this:\n    # `zgenom ohmyzsh path/to/file.zsh`\n    # zgenom ohmyzsh lib/git.zsh # load git library of ohmyzsh\n\n    # plugins\n    zgenom ohmyzsh plugins/git\n    zgenom ohmyzsh plugins/sudo\n    # just load the completions\n    zgenom ohmyzsh --completion plugins/docker-compose\n\n    # Install ohmyzsh osx plugin if on macOS\n    [[ \"$(uname -s)\" = Darwin ]] \u0026\u0026 zgenom ohmyzsh plugins/macos\n\n    # prezto options\n    zgenom prezto editor key-bindings 'emacs'\n    zgenom prezto prompt theme 'sorin'\n\n    # prezto and modules\n    # If you use prezto and ohmyzsh - load ohmyzsh first.\n    zgenom prezto\n    zgenom prezto command-not-found\n\n    # Load prezto tmux when tmux is installed\n    if hash tmux \u0026\u003e/dev/null; then\n        zgenom prezto tmux\n    fi\n\n    zgenom load zsh-users/zsh-syntax-highlighting\n    zgenom load /path/to/super-secret-private-plugin\n\n    # use a plugin file\n    # The file must only contain valid parameters for `zgenom load`\n    zgenom loadall \u003c path/to/plugin/file\n\n    # bulk load\n    zgenom loadall \u003c\u003cEOPLUGINS\n        zsh-users/zsh-history-substring-search\n        /path/to/local/plugin\nEOPLUGINS\n    # ^ can't indent this EOPLUGINS\n\n    # add binaries\n    zgenom bin tj/git-extras\n\n    # completions\n    zgenom load zsh-users/zsh-completions\n\n    # theme\n    zgenom ohmyzsh themes/arrow\n\n    # save all to init script\n    zgenom save\n\n    # Compile your zsh files\n    zgenom compile \"$HOME/.zshrc\"\n    # Uncomment if you set ZDOTDIR manually\n    # zgenom compile $ZDOTDIR\n\n    # You can perform other \"time consuming\" maintenance tasks here as well.\n    # If you use `zgenom autoupdate` you're making sure it gets\n    # executed every 7 days.\n\n    # rbenv rehash\nfi\n```\n\nYou can also use `zgenom` in a more dynamic way:\n\n```zsh\nif ! zgenom saved; then\n    # ...\nfi\n\n# Load plugins on a per shell basis:\n# (Only load chucknorris on weekends)\nif is_weekend; then\n    zgenom ohmyzsh plugins/chucknorris\n    # Be aware that this will be loaded dynamically and increases the startup time.\n    # When using `zgenom clean` this plugin might be removed as well (unless it is\n    # currently loaded).\nfi\n\n# Load plugins lazily when used:\n# (When brew is first executed, load ohmyzsh brew and then use brew)\nalias brew='unalias brew \u0026\u0026 zgenom ohmyzsh brew \u0026\u0026 brew'\n# Be aware that this might not work for all plugins.\n```\n\n**Note:** The more dynamic examples are not official features. They are rather\nbyproducts. They are included as ideas you can test out. In most cases it's\nprobably a better idea to always load the plugin instead.\n\n### Migration from zgen\n\nThe quickest way would be to just use a new remote. This way no plugins have to\nbe cloned again.\n\n```zsh\ncd $ZGEN_SOURCE\ngit remote add zgenom https://github.com/jandamm/zgenom.git\ngit fetch zgenom\ngit switch main\nzgen reset\n```\n\nWhen you start a new shell your plugins will be migrated. You don't have to\nchange your `.zshrc`.\n\n**Note:** `zgen` is only present if you source `zgen.zsh`.\n\nThe preferred way would be to just delete zgen and start fresh.\n\n**Note:** If you keep `~/.zgen` around, zgenom will use it to store the plugins\nin there. So please `rm` or `mv` the folder before starting a new shell.\n(Otherwise the plugins will be migrated - with a prompt)\n\nIf you've specified branches (e.g. `main`) you can probably remove those since\nzgenom should take care of picking the right branch for you. Unless you're\nusing a \"pre-release\" branch.\n\n**Note:** While this README uses `zgenom` and `ohmyzsh` the old versions `zgen`\nand `oh-my-zsh` can be used interchangeably.\n\n\n## New features\n\n- Compiling your sourced scripts.\n- Add `zgenom compile` in case you want to recursively compile your dotfiles (manually).\n- Add `zgenom bin` to add an executable to your `$PATH`.\n- Lazy loading zgenom - only the bare minimum you need for the current shell is loaded.\n- The default `$ZGEN_DIR` is `path/to/zgenom/sources` (except when you have `~/.zgen` for backwards compatibility).\n  So most usecases shouldn't need to modify `$ZGEN_DIR` anymore.\n- Allow cloning without submodules `zgenom clone \u003crepo\u003e --no-submodules`.\n- Full support for non `master` branches (e.g. `main`). This includes following\n  a new default branch.\n- compinit with custom flags wasn't working properly.\n- Update to `ohmyzsh/ohmyzsh`.\n- Implement the [Zsh Plugin Standard](#zsh-plugin-standard).\n- Add `zgenom clean` to remove all unused plugins.\n- Add `zgenom autoupdate` to check for updates periodically and dispatch it to\n  the background to remove any waiting times.\n- Allow just adding a plugins directory to fpath using `--completion` with\n  `load` or `ohmyzsh`.\n- Add `zgenom compdef` to add `compdef` before loading plugins.\n\n## Usage\n\n\u003cdetails\u003e\u003csummary\u003e...\u003c/summary\u003e\n\n### ohmyzsh\n\nThis is a handy shortcut for installing ohmyzsh plugins. They can be loaded\nusing `zgenom load` too with a significantly longer format.\n\n#### Load ohmyzsh base\n\nIt's a good idea to load the base components before specifying any plugins.\n\n```zsh\nzgenom ohmyzsh\n```\n\n#### Load ohmyzsh plugins\n\n```zsh\nzgenom ohmyzsh \u003clocation\u003e\n```\n\n#### Example\n\n```zsh\nzgenom ohmyzsh\nzgenom ohmyzsh plugins/git\nzgenom ohmyzsh plugins/sudo\nzgenom ohmyzsh plugins/command-not-found\n# Just use the completions in this directory\nzgenom ohmyzsh --completion plugins/docker-compose\n\nzgenom ohmyzsh themes/arrow\n```\n\n### Prezto\n\n#### Load Prezto\n\n```zsh\nzgenom prezto\n```\n\nThis will create a symlink in the `$ZSHDOTDIR` or `$HOME` directory. This is\nneeded by prezto.\n\n**Note:** When `zgenom prezto` is used with `zgenom ohmyzsh` together, `prezto`\nshould be **put behind** `ohmyzsh`. Or prompt theme from prezto may not display\nas expected.\n\n#### Load prezto plugins\n\n```zsh\nzgenom prezto \u003cmodulename\u003e\n```\n\nThis uses the Prezto method for loading modules.\n\n**Note:** Some modules from prezto are enabled by default. Use\n`ZGEN_PREZTO_LOAD_DEFAULT=0` to disable this behavior.\n\n#### Load a repo as Prezto plugins\n\n```zsh\nzgenom pmodule \u003creponame\u003e \u003cbranch\u003e\n```\n\nThis uses the Prezto method for loading the module. It creates a symlink and\ncalls `pmodule`.\n\n#### Set prezto options\n\n```zsh\nzgenom prezto \u003cmodulename\u003e \u003coption\u003e \u003cvalue(s)\u003e\n```\n\nThis must be used before the module is loaded. Or if the default modules should\nbe loaded (default) these settings must be done before the `zgenom prezto`\ncommand. `module` is prepended if the name does not start with `module`,\n`prezto` or a `*`, `prezto` is prepended if it does not start with `prezto`.\n\n### Using a default branch\n\nIf you don't specify a branch the remotes default branch will be used. (The one\nyou see when you open the github page for a project). When the default branch\nis used zgenom will try to follow this branch. When you add a plugin with the\ndefault branch `master` and the maintainer decides to use `main` instead zgenom\nwill switch from `master` to `main` for you.\n\nIf you have to specify a branch but still want this behavior you can use `___`\ninstead of a branch name.\n\nWhen you are currently using zgenom and have plugins without a branch specified\nyou'll be asked (on `zgenom load`) if you want to migrate the old plugin or clone\nit freshly.\n\n**Be aware that this feature will delete the local branch when the head\nchanges.** So don't use it if you plan to tamper with clone locally. If you\njust want to use plugins this won't affect you.\n\n[See this comment for more\ninformation.](https://github.com/jandamm/zgenom/issues/48#issuecomment-763740949)\n\n### General zgenom functions\n\n#### Load plugins and completions\n\n```zsh\nzgenom load \u003crepo\u003e [location] [branch] [--completion] [--pin=full_commit_hash]\n```\n\nZgenom tries to source any scripts from `location` using a \"very smart matching\nlogic\". It will also append `location` to `$fpath`.\nIf you add `--completion` it will only append `location` to `fpath`.\n\nYou can use `--pin` with a full commit hash instead of a branch to prevent the repo from updating.\n\n- `repo`\n  - github `user/repository` or path to a repository\n  - currently supported formats for a repository path:\n    - any local repository\n    - `git://*`\n    - `https://*`\n    - `http://*`\n    - `ssh://*`\n      - Note that repos cloned using SSH can exhibit odd behavior during [autoupdates](#run-updates-automatically) if the associated ssh-key has a passphrase and is not present in an agent.  Observing several `zsh` processes using 100% CPU is a symptom of this.\n    - `git@*:*/*`\n- `location`\n  - relative path to a script/folder\n  - useful for repositories that don't have proper plugin\n- `branch`\n  - specifies the git branch to use\n- `--completion`\n  - Don't source any file. Just add the given location to `$fpath`\n\n#### Load executables\n\n```zsh\nzgenom bin \u003crepo\u003e --location --branch --name --glob\n```\n\nIf `location` is omitted `./bin` is checked if `./bin` doesn't exist `.` is\nchecked. All executables in the found folder will be added to the path.\n\nIf `location` is a folder all executables of this folder are added to the path.\n\nIt's also possible to provide a glob where every matching executable is added\nto the path.\n\n**Note:** This may lead to unwanted side-effects so it's recommended that you\nspecify the files you need. You can use `zgenom list --bin` to check which\nexecutables are added.\n\n```zsh\n# Add 'fasd' to the path and rename it to 'fast'.\nzgenom bin 'clvv/fasd' --location fasd --name fast\n\n# Add all executables which are in bin, start with git- and end with -branch.\nzgenom bin 'tj/git-extras' --glob 'bin/git-*-branch'\n```\n\n#### Bulk load plugins\n\n```zsh\nzgenom loadall \u003cplugins\u003e\n```\n\nYou can use it to load plugins listed in a file or provided by heredoc.\nPlease see example `.zshrc` for usage.\n\n#### Generate init script\n\n```zsh\nzgenom save [--no-compile]\n```\n\nIt is recommended to save the plugin sourcing part to a static init script so\nwe don't have to go through the time consuming installing/updating part every\ntime we start the shell (or source .zshrc)\n\nIf you don't want use a init script call `zgenom apply` after you've loaded all\nplugins. It'll take care of compinit and adding the loaded bins to your PATH.\nThe default path of the `.zcompdump` is `$ZGEN_DIR/zcompdump_$ZSH_VERSION`. You\ncan change it by setting `$ZGEN_CUSTOM_COMPDUMP`.\n\nYou can provide `--no-compile` to disable compiling the sources (probably because you want to compile sources yourself).\n\n#### Remove init script\n\n```zsh\nzgenom reset\n```\n\nRemoves the init script so it will be created next time you start the shell.\nYou must run this every time you add or remove plugins to trigger the changes.\n\nThis will not remove the plugins physically from disk.\n\n#### Check for an init script\n\n```zsh\nzgenom saved\n```\n\nReturns 0 if an init script exists.\n\nIt also sources the init script if it exists.\n\n**Note:** If you don't use `zgenom saved` you should call `zgenom init` manually.\n\n#### Update all plugins and reset\n\n```zsh\nzgenom update\n```\n\nPulls updates on every plugin repository and removes the init script.\n\n#### Update zgenom\n\n```zsh\nzgenom selfupdate\n```\n\n#### Run updates automatically\n\nUsing `autoupdate` disables ohmyzsh automatic updates since zgenom will do\nthe same. You can use `--keep-ohmyzsh` to keep ohmyzsh automatic updates\nenabled.\n\n```zsh\nsource path/to/zgenom.zsh\n\n# Update every 7 days\nzgenom autoupdate\n\n# Update every 3 days\nzgenom autoupdate 3\n\n# Update only zgenom every 14 days\nzgenom autoupdate --self 14\n\n# Update only plugins every 7 days\nzgenom autoupdate --plugin 7\n\n# Update plugins every 7 days and zgenom every 14 days\nzgenom autoupdate --plugin 7 --self 14\n\n# Update every 7 days and run updates in the current shell\nzgenom autoupdate --no-background\n\nif ! zgenom saved; then\n    # load plugins\n```\n\nCall `zgenom selfupdate` and `zgenom update` regularly. If you call one of\nthose manually this will also reset the timer. So you can use it to make sure\nyou update every x days.\n\nMake sure to call it before you check for the init file with `zgenom saved`.\n\nThese backups will run fully in the background so you won't any slowdown\nin your startup time. When the update is complete and you start a new\nshell everything is prepared so you don't have to wait then either. When\nstarting a new shell after a completed update you will get a log showing you\nwhat happened in the background.\n\nThere is also an option to run the updates in sync by adding `--no-background`.\nThis will show you any output as it happens and you have to wait until you can\nuse the shell.  \nThis also increases the startup time around 17% (~16ms) in order\nto check if an update has to be done. This figure may vary depending on your\nplugins and machine.\n\n**Note:** If your .zshrc contains any interactive prompts you might encounter\nissues with some terminals. In this case you might want to try running the\nupdates in sync using `--no-background`.\n\n#### Fix issues with compdef\n\n```zsh\nzgenom compdef\n```\n\n`compdef` is only available after `compinit` is called which zgenom executes\nafter all plugins are loaded.  \nSome plugins might use `compdef` and either error or fail to add completions\n(if they check the existence of `compdef`).\nRunning `zgenom compdef` will provide a `compdef` and apply all calls after\ncompinit was done.\n\n#### Clean zgenom plugins\n\n```zsh\nzgenom clean\n```\n\nRemoves every plugin which isn't loaded in the current shell session.\n\n#### Watch files for modifications\n\nYou can automate the process of running `zgenom reset` by specifying a list of\nfiles to `ZGEN_RESET_ON_CHANGE`. These files will be checked and if a change is\ndetected `zgenom reset` is called.\n\n```zsh\nZGEN_RESET_ON_CHANGE=(${HOME}/.zshrc ${HOME}/.zshrc.local)\n```\n\n#### Compile your .zshrc files\n\n```zsh\nzgenom compile .zshrc\nzgenom compile ~/.zsh\nzgenom compile $ZDOTDIR # If you set ZDOTDIR manually\n```\n\nThe first will just compile your `.zshrc`. The second one will compile every\nzsh file it can recursively find in `~/.zsh`. You might not want to add any of\nthese lines to your `.zsrhc` but run them manually or automatically in the\nbackground.\n\nYou can provide the options `-UzkMR` to `zgenom compile`. They are just passed\nto `zcompile`. See `man zshbuiltins` for an explanation of the flags.\n\n#### Safely access internal api\n\nCalling any function matching `__zgenom-*` is assumed unsafe and the function\nis considered private. So it may be renamed anytime without further notice.\n\nTo provide a way to safely access some internal api `zgenom api` is introduced.\nPlease use the zsh completion to check what parts of the internal api is\nexposed.\n\n\u003c/details\u003e\n\n## Notes\n\nWhile this README uses `zgenom` and `ohmyzsh` the old versions `zgen` and\n`oh-my-zsh` can be used interchangeably.\n\nEnvironment variables are still prefixed with `ZGEN_` to keep backwards\ncompatibility. When `zgenom` introduces new variables they are prefixed with\n`ZGENOM_`.\n\nBe aware that `zgenom` tries to handle [`compinit`][compinit] for you to allow\nfor the fastest possible initialization times. However, this functionality will\nbe disabled if you've already called `compinit` yourself before sourcing\n`zgenom.zsh`. Alternatively, you can disable it yourself by disabling\n`$ZGEN_AUTOLOAD_COMPINIT`.\n\n  [compinit]: \u003chttp://zsh.sourceforge.net/Doc/Release/Completion-System.html#Use-of-compinit\u003e \"Zsh manual 20.2.1: Use of compinit\"\n\n## Extensions\n\nExtensions may be a bit of a stretch. Every function matching `zgenom-*` is\ncallable like `zgenom *`. Every completion function matching `_zgenom_*` is\ncalled by `_zgenom`.\n\nAlso `$ZGENOM_EXTENSIONS` can be used to add an entry to `zgenom help` and\nsubcommand completion.\n\nTo provide an extension called `abc` you define `zgenom-abc` in your plugin.\nThen you can add a description: `ZGENOM_EXTENSIONS+=('abc:Some description')`.\nTo provide additional completions you can define `_zgenom_abc` which will be\ncalled when the prompt starts with `zgenom abc`.\n\nExisting extensions:\n\n- [eval](https://github.com/jandamm/zgenom-ext-eval): Use `zgenom` to quickly\n  generate plugins from a command or heredoc.\n- [release](https://github.com/jandamm/zgenom-ext-release): Use `zgenom` and\n  `gh` to download github releases.\n- [run](https://github.com/jandamm/zgenom-ext-run): Use `zgenom` to run\n  commands in the plugin folder (e.g. `make`).\n\nPlease create a PR to add your extension here :)\n\n**Note:** It is not recommended to use the private api (`__zgenom-*`) since it\nmay change without further notice. Use `zgenom api` instead.\n\n## Other resources\n\nThe [awesome-zsh-plugins](https://github.com/unixorn/awesome-zsh-plugins) list\ncontains many zgenom compatible zsh plugins \u0026 themes that you may find useful.\n\nThere's a [zsh-quickstart-kit](https://github.com/unixorn/zsh-quickstart-kit)\nfor using zsh and zgenom that does a guided setup of zgenom, including\ninstalling a starting sampler of useful plugins.\n\n### [Zsh Plugin Standard](https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html)\n\nThe Zsh Plugin Standard describes how a plugin for zsh should be written and\nwhat the plugin manager should do to support a plugin.\n\nZgenom does support most paragraphs of this standard. (1-3 \u0026 7-9 as of this writing).\nThe unsupported paragraphs are all related to unloading (which isn't currently\nsupported) and a hook for plugins that the plugin manager should call on\nupdates (you probably shouldn't use zgenom if your plugin requires this).\n\n**Note:** *Paragraph 3* says to add every `./bin` folder found in a plugin.\nI personally wouldn't want this so this is off by default. Please set\n`ZGENOM_AUTO_ADD_BIN=1` before sourcing `zgenom.zsh` to enable this paragraph.\n\n## Releases\n\nEvery commit which is merged into `main` is considered a stable release.\nEvery open PR is considered a beta release that I test locally. You're welcome to test it on your machine as well.\n\n## Alternatives\n\nThere are a lot of alternatives. The most popular is probably [antigen](https://github.com/zsh-users/antigen) but it's only in maintenance mode.\nAn extensive list can be found [here](https://github.com/mattmc3/zsh_unplugged#newspaper_roll-current-state).\n\nYou should think what features you need from a plugin manager.\nAt its purest form it's just `git clone` and `source path/to/plugin/file.zsh`. So nothing you couldn't do yourself.\n\nBut there are some subtleties that you might not think of. For example the default branch could change (e.g. `master` to `main`) and keep you from updating the plugin without an error message.\n\nWith `zgenom` I don't even think about zsh plugins.\nEvery seven days `zgenom` and the plugins get updated automatically. `zgenom` can also detect new plugins and install them automatically as well.\n\n## Feedback\n\nIf you like this plugin, star it! It's a great way of getting feedback. The same\ngoes for reporting issues or feature requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjandamm%2Fzgenom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjandamm%2Fzgenom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjandamm%2Fzgenom/lists"}