{"id":13398105,"url":"https://github.com/tarjoilija/zgen","last_synced_at":"2025-12-17T20:06:21.901Z","repository":{"id":23563400,"uuid":"26930983","full_name":"tarjoilija/zgen","owner":"tarjoilija","description":"A lightweight and simple plugin manager for ZSH","archived":false,"fork":false,"pushed_at":"2021-07-21T03:56:30.000Z","size":123,"stargazers_count":1485,"open_issues_count":42,"forks_count":98,"subscribers_count":28,"default_branch":"master","last_synced_at":"2024-07-31T19:15:28.579Z","etag":null,"topics":[],"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/tarjoilija.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}},"created_at":"2014-11-20T20:41:19.000Z","updated_at":"2024-07-31T05:20:09.000Z","dependencies_parsed_at":"2022-07-27T04:02:20.618Z","dependency_job_id":null,"html_url":"https://github.com/tarjoilija/zgen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tarjoilija/zgen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarjoilija%2Fzgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarjoilija%2Fzgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarjoilija%2Fzgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarjoilija%2Fzgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tarjoilija","download_url":"https://codeload.github.com/tarjoilija/zgen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarjoilija%2Fzgen/sbom","scorecard":{"id":868902,"data":{"date":"2025-08-11","repo":{"name":"github.com/tarjoilija/zgen","commit":"0b669d2d0dcf788b4c81a7a30b4fa41dfbf7d1a7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":9,"reason":"Found 13/14 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 2-Clause \"Simplified\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T03:33:35.648Z","repository_id":23563400,"created_at":"2025-08-24T03:33:35.649Z","updated_at":"2025-08-24T03:33:35.649Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27786181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-17T02:00:08.291Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-07-30T19:00:16.970Z","updated_at":"2025-12-17T20:06:21.865Z","avatar_url":"https://github.com/tarjoilija.png","language":"Shell","readme":"## zgen\n\nA lightweight plugin manager for Zsh inspired by [Antigen](https://github.com/zsh-users/antigen). Keep your `.zshrc` clean and simple.\n\nZgen provides you a few simple commands for managing plugins. It installs your plugins and generates a static init script that will source them for you every time you run the shell. We do this to save some startup time by not having to execute time consuming logic (plugin checking, updates, etc). This means that you have to manually check for updates (`zgen update`) and reset the init script (`zgen reset`) whenever you add or remove plugins.\n\nThe motive for creating zgen was to have plugins quickly installed on a new machine without getting the startup lag that Antigen used to give me.\n\n## Installation\n\nClone the zgen repository\n\n    git clone https://github.com/tarjoilija/zgen.git \"${HOME}/.zgen\"\n\nEdit your .zshrc file to load zgen\n\n    # load zgen\n    source \"${HOME}/.zgen/zgen.zsh\"\n\nPlace the following code after the one above to load oh-my-zsh for example, see Usage for more details\n\n    # if the init script doesn't exist\n    if ! zgen saved; then\n\n      # specify plugins here\n      zgen oh-my-zsh\n\n      # generate the init script from plugins above\n      zgen save\n    fi\n\n## Usage\n\n### oh-my-zsh\n\nThis is a handy shortcut for installing oh-my-zsh plugins. They can be loaded using `zgen load` too with a significantly longer format.\n#### Load oh-my-zsh base\nIt's a good idea to load the base components before specifying any plugins.\n\n    zgen oh-my-zsh\n\n#### Load oh-my-zsh plugins\n\n    zgen oh-my-zsh \u003clocation\u003e\n\n#### Example\n\n    zgen oh-my-zsh\n    zgen oh-my-zsh plugins/git\n    zgen oh-my-zsh plugins/sudo\n    zgen oh-my-zsh plugins/command-not-found\n    zgen oh-my-zsh themes/arrow\n\n### Prezto\n\n#### Load Prezto\n\n    zgen prezto\n\nThis will create a symlink in the `ZSHDOT` or `HOME` directory. This is needed by prezto.\n\n#### Load prezto plugins\n\n    zgen prezto \u003cmodulename\u003e\n\nThis uses the Prezto method for loading modules.\n\n#### Load a repo as Prezto plugins\n\n    zgen pmodule \u003creponame\u003e \u003cbranch\u003e\n\nThis uses the Prezto method for loading the module. It creates a symlink and calls `pmodule`.\n\n#### Set prezto options\n\n    zgen prezto \u003cmodulename\u003e \u003coption\u003e \u003cvalue(s)\u003e\n\nThis must be used before the module is loaded. Or if the default modules should be loaded (default) these settings must be done before the `zgen prezto` command. `module` is prepended if the name does not start with `module`, `prezto` or a `*`, `prezto` is prepended if it does not start with `prezto`.\n\n### General zgen functions\n\n#### Load plugins and completions\n\n    zgen load \u003crepo\u003e [location] [branch]\n\nZgen tries to source any scripts from `location` using a \"very smart matching logic\". If it fails to find any, it will appends `location` to `$fpath`.\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        - `git@*:*/*`\n- `location`\n    - relative path to a script/folder\n    - useful for repositories that don't have proper plugin support like `zsh-users/zsh-completions`\n- `branch`\n    - specifies the git branch to use\n\n#### Bulk load plugins\n\n    zgen loadall \u003cplugins\u003e\n\nPlease see example `.zshrc` for usage.\n\n#### Generate init script\n    zgen save\n\nIt is recommended to save the plugin sourcing part to a static init script so we don't have to go through the time consuming installing/updating part every time we start the shell (or source .zshrc)\n\n#### Remove init script\n    zgen reset\n\nRemoves the init script so it will be created next time you start the shell. You 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    zgen saved\nReturns 0 if an init script exists.\n\n#### Update all plugins and reset\n    zgen update\n\nPulls updates on every plugin repository and removes the init script.\n\n#### Update zgen\n    zgen selfupdate\n\n#### Watch files for modifications\nYou can automate the process of running `zgen reset` by specifying a list of files to `ZGEN_RESET_ON_CHANGE`. These files will be checked and if a change is detected zgen reset is called.\n\n```zsh\nZGEN_RESET_ON_CHANGE=(${HOME}/.zshrc ${HOME}/.zshrc.local)\n```\n\n## Notes\nBe aware that `zgen` tries to handle [`compinit`][compinit] for you to allow for the fastest possible initialization times. However, this functionality will be disabled if you've already called `compinit` yourself before sourcing `zgen.zsh`. Alternatively, you can disable it yourself by disabling `$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## Example .zshrc\n\n```zsh\n# load zgen\nsource \"${HOME}/.zgen/zgen.zsh\"\n\n# if the init scipt doesn't exist\nif ! zgen saved; then\n    echo \"Creating a zgen save\"\n\n    zgen oh-my-zsh\n\n    # plugins\n    zgen oh-my-zsh plugins/git\n    zgen oh-my-zsh plugins/sudo\n    zgen oh-my-zsh plugins/command-not-found\n    zgen load zsh-users/zsh-syntax-highlighting\n    zgen load /path/to/super-secret-private-plugin\n\n    # bulk load\n    zgen loadall \u003c\u003cEOPLUGINS\n        zsh-users/zsh-history-substring-search\n        /path/to/local/plugin\nEOPLUGINS\n    # ^ can't indent this EOPLUGINS\n\n    # completions\n    zgen load zsh-users/zsh-completions src\n\n    # theme\n    zgen oh-my-zsh themes/arrow\n\n    # save all to init script\n    zgen save\nfi\n```\n\n### Example .zshrc for prezto use\nHere is a partial example how to work with prezto\n\n```zsh\n...\n    echo \"Creating a zgen save\"\n\n    # prezto options\n    zgen prezto editor key-bindings 'emacs'\n    zgen prezto prompt theme 'sorin'\n\n    # prezto and modules\n    zgen prezto\n    zgen prezto git\n    zgen prezto command-not-found\n    zgen prezto syntax-highlighting\n\n    # plugins\n    zgen load /path/to/super-secret-private-plugin\n....\n\n```\n\n## Other resources\n\nThe [awesome-zsh-plugins](https://github.com/unixorn/awesome-zsh-plugins) list contains many zgen-compatible zsh plugins \u0026 themes that you may find useful.\n\nThere's a quickstart kit for using zsh and zgen at [zsh-quickstart-kit](https://github.com/unixorn/zsh-quickstart-kit) that guides you through setting up zgen and includes a sampler of useful plugins.\n\nThe [autoupdate-zgen](https://github.com/unixorn/autoupdate-zgen) plugin will enable your zgen to periodically update itself and your list of plugins.\n\n## Alternatives\n\n- [antigen](https://github.com/zsh-users/antigen) - popular and mature\n- [zplug](https://github.com/b4b4r07/zplug) - well performing and has a fancy UI\n","funding_links":[],"categories":["Terminal","Shell","Frameworks","Shells","Installation","others","终端"],"sub_categories":["Shells","Visual Studio Code","[zgenom](https://github.com/jandamm/zgenom)","ZSH","Shell","\u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;408⭐\u003c/code\u003e\u003c/b\u003e \u003cb\u003e\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;20🍴\u003c/code\u003e\u003c/b\u003e [zgenom](https://github.com/jandamm/zgenom))"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarjoilija%2Fzgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftarjoilija%2Fzgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarjoilija%2Fzgen/lists"}