A delightful community-driven framework for managing your bash configuration, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
This report summarizes scanner evidence for ohmybash/oh-my-bash, a Shell project with 7,742 GitHub stars. SynthScan examined 35,107 lines of code across 303 source files, recording 303 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 17.8 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 180 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 123 finding(s).
Which changes need focused human review? 303 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 303 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/autossh.sh | 2 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | tools/autossh.sh | 9 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | plugins/bashmarks/bashmarks.plugin.sh | 12 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | plugins/bashmarks/bashmarks.plugin.sh | 36 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | plugins/nvm/nvm.plugin.sh | 16 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | plugins/nvm/nvm.plugin.sh | 101 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/svn.completion.sh | 10 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/svn.completion.sh | 27 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/sdkman.completion.sh | 4 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/gradle.completion.sh | 3 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/salt.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/vagrant.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/defaults.completion.sh | 14 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/gh.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/go.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/git_flow.completion.sh | 4 | # =================== | COMMENT |
| MEDIUM | completions/git_flow.completion.sh | 16 | # ------------ | COMMENT |
| MEDIUM | completions/git_flow.completion.sh | 42 | # -------------- | COMMENT |
| MEDIUM | completions/virtualbox.completion.sh | 17 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/grunt.completion.sh | 9 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/maven.completion.sh | 10 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/vault.completion.sh | 9 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | completions/vault.completion.sh | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | completions/django.completion.sh | 8 | # ================================= | COMMENT |
| MEDIUM | completions/django.completion.sh | 21 | # ========== | COMMENT |
| MEDIUM | completions/django.completion.sh | 32 | # ============ | COMMENT |
| MEDIUM | completions/hub.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/git_flow_avh.completion.sh | 5 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/git_flow_avh.completion.sh | 7 | # =================== | COMMENT |
| MEDIUM | completions/git_flow_avh.completion.sh | 19 | # ------------ | COMMENT |
| MEDIUM | completions/git_flow_avh.completion.sh | 45 | # -------------- | COMMENT |
| MEDIUM | completions/fallback/docker.bash | 3 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/fallback/docker.bash | 10 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/fallback/docker-compose.bash | 2 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | completions/fallback/docker-compose.bash | 10 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 29 | #------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 31 | # ----------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 33 | # ----------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 36 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 42 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 46 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 50 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 56 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 61 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 69 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 80 | # ------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 82 | # ------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 87 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 110 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 119 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 125 | # --------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 176 | # --------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 178 | # --------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 181 | # ----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 185 | # ----------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 189 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lib/base.sh | 193 | # --------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 195 | # --------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 198 | # ------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | lib/base.sh | 212 | # ------------------------------------------------------------------- | COMMENT |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/git-prompt.sh | 1 | # bash/zsh git prompt support | COMMENT |
| LOW | tools/git-prompt.sh | 21 | # you would put in $PS1 before and after the status string | COMMENT |
| LOW | tools/git-prompt.sh | 41 | # bash.showDirtyState variable, which defaults to true once | COMMENT |
| LOW | tools/git-prompt.sh | 61 | # | COMMENT |
| LOW | tools/git-prompt.sh | 81 | # | COMMENT |
| LOW | tools/git-prompt.sh | 281 | __git_eread () | COMMENT |
| LOW | tools/git-prompt.sh | 321 | *) return $exit | COMMENT |
| LOW | tools/git-prompt.sh | 341 | # with the user's environment) and that variable should be | COMMENT |
| LOW | tools/bash-preexec.sh | 1 | # bash-preexec.sh -- Bash support for ZSH-like 'preexec' and 'precmd' functions. | COMMENT |
| LOW | tools/bash-preexec.sh | 21 | # e.g. | COMMENT |
| LOW | tools/git-completion.bash | 1 | # bash/zsh completion support for core Git. | COMMENT |
| LOW | tools/git-completion.bash | 21 | # 2) Add the following line to your .bashrc/.zshrc: | COMMENT |
| LOW | tools/git-completion.bash | 41 | # Compatible with bash 3.2.57. | COMMENT |
| LOW | tools/git-completion.bash | 181 | # © 2009-2010, Bash Completion Maintainers | COMMENT |
| LOW | tools/git-completion.bash | 201 | # RELEASE: 2.x | COMMENT |
| LOW | tools/git-completion.bash | 401 | # the completion script. | COMMENT |
| LOW | tools/git-completion.bash | 681 | # employ the heuristic used by git checkout and git switch | COMMENT |
| LOW | tools/git-completion.bash | 801 | done | COMMENT |
| LOW | tools/git-completion.bash | 1241 | # $1: short option name | COMMENT |
| LOW | tools/git-completion.bash | 1501 | # git-switch and git-checkout. | COMMENT |
| LOW | tools/git-completion.bash | 3281 | add,*) # usage: git worktree add [<options>] <path> [<commit-ish>] | COMMENT |
| LOW | tools/update-wiki-themes.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | plugins/bashmarks/bashmarks.plugin.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/bashmarks/bashmarks.plugin.sh | 21 | # * Neither the name of Huy Nguyen nor the names of contributors may be | COMMENT |
| LOW | plugins/progress/progress.plugin.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/nvm/nvm.plugin.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/nvm/nvm.plugin.sh | 21 | # | COMMENT |
| LOW | plugins/tmux-autoattach/tmux-autoattach.plugin.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/tmux/tmux.plugin.bash | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/npm/npm.plugin.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | plugins/git/git.plugin.sh | 561 | alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h)' | COMMENT |
| LOW | completions/fabric-completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/fabric-completion.sh | 21 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | COMMENT |
| LOW | completions/svn.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/svn.completion.sh | 21 | # Unless required by applicable law or agreed to in writing, | COMMENT |
| LOW | completions/svn.completion.sh | 121 | # 2. svn+ssh:// lists servers from .ssh/known_hosts | COMMENT |
| LOW | completions/svn.completion.sh | 201 | # - there is a "real" parser to check for what is available and deduce what | COMMENT |
| LOW | completions/svn.completion.sh | 221 | # SVN_BASH_USERNAME: usernames suggested for --username | COMMENT |
| LOW | completions/svn.completion.sh | 301 | # Parse arguments and set various variables about what was found. | COMMENT |
| LOW | completions/svn.completion.sh | 621 | # property names... | COMMENT |
| LOW | completions/gulp.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/makefile.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/sdkman.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/salt.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/vagrant.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/defaults.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/defaults.completion.sh | 161 | # This file is licensed under the BSD license, as follows: | COMMENT |
| LOW | completions/defaults.completion.sh | 181 | # disclaimed. In no event shall the copyright owner or contributors be liable | COMMENT |
| LOW | completions/git_flow.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/git_flow.completion.sh | 21 | # | COMMENT |
| LOW | completions/virtualbox.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/packer.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/packer.completion.sh | 21 | # team in general. | COMMENT |
| LOW | completions/grunt.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/kubectl.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/vault.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/django.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/django.completion.sh | 21 | # ========== | COMMENT |
| LOW | completions/hub.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| LOW | completions/docker-machine.completion.sh | 1 | #! bash oh-my-bash.module | COMMENT |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/bash-preexec.sh | 135 | # This function is installed as part of the PROMPT_COMMAND; | COMMENT |
| MEDIUM | tools/bash-preexec.sh | 143 | # This function is installed as part of the PROMPT_COMMAND. | COMMENT |
| MEDIUM | tools/bash-preexec.sh | 203 | # This function is installed as the DEBUG trap. It is invoked before each | COMMENT |
| MEDIUM | tools/git-completion.bash | 176 | # The following function is based on code from: | COMMENT |
| MEDIUM | tools/git-completion.bash | 408 | # This function is equivalent to | COMMENT |
| MEDIUM | plugins/dotnet/dotnet.plugin.sh | 28 | #Create a new .NET project or file. | COMMENT |
| MEDIUM | plugins/dotnet/dotnet.plugin.sh | 44 | #Create a NuGet package. | COMMENT |
| MEDIUM | completions/defaults.completion.sh | 161 | # This file is licensed under the BSD license, as follows: | COMMENT |
| MEDIUM | completions/fallback/docker.bash | 672 | # This function is needed for key-specific completions. | COMMENT |
| MEDIUM | completions/fallback/docker-compose.bash | 64 | # This function is needed for key-specific completions. | COMMENT |
| MEDIUM | lib/shopt.sh | 97 | # Define a variable containing a path and you will be able to cd into it regardless of the directory you're in | COMMENT |
| MEDIUM | lib/readlink.sh | 3 | ## This module provides the following function which can be used as "readlink | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | oh-my-bash.sh | 35 | # Set OSH_CUSTOM to the path where your custom config files | COMMENT |
| LOW | oh-my-bash.sh | 43 | # Set OSH_CACHE_DIR to the path where cache files should be created | COMMENT |
| LOW | plugins/starship/starship.plugin.sh | 3 | # Check if starship is installed | COMMENT |
| LOW | plugins/cargo/cargo.plugin.sh | 4 | # Set CARGO_HOME to default if not already set | COMMENT |
| LOW | plugins/cargo/cargo.plugin.sh | 7 | # Check if the directory exists | COMMENT |
| LOW | plugins/zoxide/zoxide.plugin.sh | 3 | # Check if zoxide is installed | COMMENT |
| LOW | plugins/jump/jump.plugin.sh | 3 | # Check if jump is installed | COMMENT |
| LOW | plugins/virtualenvwrapper/virtualenvwrapper.plugin.sh | 3 | # Check if virtualenvwrapper is installed | COMMENT |
| LOW | plugins/fzf/fzf.plugin.sh | 3 | # Check if fzf is installed | COMMENT |
| LOW | plugins/git/git.plugin.sh | 42 | # Check if main exists and use instead of master | COMMENT |
| LOW | completions/fabric-completion.sh | 43 | # Set command to get time of last file modification as seconds since Epoch | COMMENT |
| LOW | completions/drush.completion.sh | 27 | # Set IFS to newline (locally), since we only use newline separators, and | COMMENT |
| LOW | themes/binaryanomaly/binaryanomaly.theme.sh | 3 | # Set term to 256color mode, if 256color is not supported, colors won't work properly | COMMENT |
| LOW | themes/rana/rana.theme.sh | 118 | # Check if the current directory is in a Git repository. | COMMENT |
| LOW | themes/pzq/pzq.theme.sh | 73 | # Check if the current directory is in a Git repository. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/git-completion.bash | 1510 | # logic, as requested by the user. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/git-completion.bash | 26 | # If you use complex aliases of form '!f() { ... }; f', you can use the null | COMMENT |
| MEDIUM | tools/git-completion.bash | 33 | # like completion, you can use __git_complete: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | completions/gulp.completion.sh | 8 | # Usage: | COMMENT |
| LOW | completions/grunt.completion.sh | 17 | # Usage: | COMMENT |
| LOW | lib/utils.sh | 89 | # Usage: | COMMENT |
| LOW | custom/aliases/example.aliases.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/git-prompt.sh | 315 | # simply return early if the prompt should not | COMMENT |
| LOW | completions/fallback/docker.bash | 1179 | # if result empty, just use filename completion as fallback | COMMENT |
| LOW | themes/hawaii50/hawaii50.theme.sh | 107 | # If no virtual info, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/bash-preexec.sh | 56 | # WARNING: This variable is no longer used and should not be relied upon. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/omb-prompt-base.sh | 177 | # TODO: consider adding minimal status information for hg and svn | COMMENT |