AI Slop Code RIsk Monitor

HariSekhon/DevOps-Bash-tools

1200+ DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..

15.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for HariSekhon/DevOps-Bash-tools, a Shell project with 8,428 GitHub stars. SynthScan examined 153,168 lines of code across 1736 source files, recording 2048 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 15.9 (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.

15.9
Adjusted Signal
15.9
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
8.4K
Stars
Shell
Language
153.2K
Lines of Code
1.7K
Files
2.0K
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 48.2/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1985 finding(s).

Hallucinated Dependency & Supply Chain Risk 8.5/100 · LOW

Are imports declared and package/API names verified? 19 finding(s).

Agent Over-Engineering Ratio 4.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 44 finding(s).

PR Review Velocity Impact 53.0/100 · HIGH

Which changes need focused human review? 2048 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 18HIGH 1MEDIUM 50LOW 1979

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2048 distinct pattern matches across 11 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.

Over-Commented Block1948 hits · 1948 pts
SeverityFileLineSnippetContext
LOWbuddy.yml1#COMMENT
LOW.drone.yml1---COMMENT
LOW.drone.yml21COMMENT
LOW.pre-commit-config.yaml1#COMMENT
LOW.pre-commit-config.yaml41 # Cross platformCOMMENT
LOW.hound.yml1#COMMENT
LOW.mdl.rb1#!/usr/bin/env rubyCOMMENT
LOW.appveyor.yml1#COMMENT
LOW.appveyor.yml41# enable SSH session accessible via my public keyCOMMENT
LOW.appveyor.yml61COMMENT
LOWazure-pipelines.yml1# vim:ts=2:sts=2:sw=2:etCOMMENT
LOWazure-pipelines.yml41COMMENT
LOW.scrutinizer.yml1#COMMENT
LOW.cirrus.yml1#COMMENT
LOW.gitlab-ci.yml1# vim:ts=2:sts=2:sw=2:etCOMMENT
LOWhadolint.yaml1# vim:ts=4:sts=4:sw=4:etCOMMENT
LOWcodefresh.yml1#COMMENT
LOWbitbucket-pipelines.yml1#COMMENT
LOW.bash.d/rancid.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/rancid.sh21export RANCID_HOME=~/rancidCOMMENT
LOW.bash.d/rancid.sh61#alias cl=cloginCOMMENT
LOW.bash.d/trivy.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/lolcat.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/android.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/teamcity.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/aliases.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/aliases.sh61#alias e=emCOMMENT
LOW.bash.d/aliases.sh161COMMENT
LOW.bash.d/aliases.sh261 fiCOMMENT
LOW.bash.d/vim.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/network.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/postgres.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/python.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/golang.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/intellij.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/intellij.sh21COMMENT
LOW.bash.d/intellij.sh41# local path="$1"COMMENT
LOW.bash.d/intellij.sh61#COMMENT
LOW.bash.d/intellij.sh81 # so use $! to specify the pid of the latest command in this shellCOMMENT
LOW.bash.d/bash_it.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/argocd.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/kubernetes.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/kubernetes.sh361 # sleep infinity only works on some distrosCOMMENT
LOW.bash.d/kafka.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/jenkins.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/circleci.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/travis_ci.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/spotify.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/gcp.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/linux.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/linux.sh121# When using Samba WinPopups on Linux in Windows workgroups - convenient back in the day but shouldn't be needed today wCOMMENT
LOW.bash.d/spinner.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/prompt.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/prompt.sh41PS1_USER_COLOUR="$txtcyn"COMMENT
LOW.bash.d/prompt.sh61COMMENT
LOW.bash.d/aws-cloudshell.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/virtualbox.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/when.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/grype.sh1#!/usr/bin/env bashCOMMENT
LOW.bash.d/os_detection.sh1#!/usr/bin/env bashCOMMENT
1888 more matches not shown…
Hallucination Indicators18 hits · 270 pts
SeverityFileLineSnippetContext
CRITICAL⚡bigdata/impala_tables_row_counts.sh56 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh57 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh58 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:2157)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh59 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2127)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh60 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2040)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh61 at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:583)CODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh62 at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizatiCODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh63 at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenoCODE
CRITICAL⚡bigdata/impala_tables_row_counts.sh71 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh55 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh56 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh57 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:2157)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh58 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2127)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh59 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2040)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh60 at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:583)CODE
CRITICAL⚡bigdata/impala_foreach_table.sh61 at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizatiCODE
CRITICAL⚡bigdata/impala_foreach_table.sh62 at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenoCODE
CRITICAL⚡bigdata/impala_foreach_table.sh70 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)CODE
Decorative Section Separators44 hits · 153 pts
SeverityFileLineSnippetContext
MEDIUM.bash.d/linux.sh120# ==========================COMMENT
MEDIUM.bash.d/linux.sh140# =========================COMMENT
MEDIUM.bash.d/aws.sh27# ==================COMMENT
MEDIUM.bash.d/aws.sh38# =====================COMMENT
MEDIUM.bash.d/aws.sh74# ==================COMMENT
MEDIUM.bash.d/aws.sh87# ==================COMMENT
MEDIUMinstall/install_d2.sh58# ==========================================COMMENT
MEDIUMinstall/install_d2.sh67# ==========================================COMMENT
MEDIUMbin/curl_auth.sh67 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh78 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh91 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh118# ==============================================COMMENT
MEDIUMbin/clean_caches.sh92# =====================================COMMENT
MEDIUMbin/clean_caches.sh113# =========================COMMENT
MEDIUMbin/clean_caches.sh133# =============================================================COMMENT
MEDIUMbin/sleepuntil.sh105# ===================================================================COMMENT
MEDIUMchecks/check_all.sh232# ========================================COMMENT
MEDIUM⚡setup/mac_settings.sh132# ============COMMENT
MEDIUM⚡setup/mac_settings.sh142# ============================COMMENT
MEDIUM⚡setup/mac_settings.sh150# ==============COMMENT
MEDIUM⚡setup/mac_settings.sh156# ===========COMMENT
MEDIUM⚡setup/mac_settings.sh164# ===============COMMENT
MEDIUM⚡setup/mac_settings.sh174# =======================================COMMENT
MEDIUMsetup/mac_settings.sh189# ===============COMMENT
MEDIUMgcp/gke_kubectl.sh68# ============================================================COMMENT
MEDIUMgcp/gke_kubectl.sh93# ============================================================COMMENT
MEDIUMlib/utils.sh505# =================================COMMENT
MEDIUMlib/utils.sh763# =================================COMMENT
MEDIUMlib/utils.sh1462# ==============================COMMENT
MEDIUMlib/utils.sh1494# ==============================COMMENT
MEDIUMaws/aws_kubectl.sh61# ============================================================COMMENT
MEDIUMaws/aws_kubectl.sh75# ============================================================COMMENT
MEDIUMaws/aws_eks_available_ips.sh83#----------------------------------------------------COMMENT
MEDIUMkubernetes/kubectl.sh57# ============================================================COMMENT
MEDIUMkubernetes/kubectl.sh68# ============================================================COMMENT
MEDIUM⚡travis/.travis.yml25# ==============================================================COMMENT
MEDIUM⚡travis/.travis.yml29# =========================================COMMENT
MEDIUM⚡travis/.travis.yml35# ==============================================COMMENT
MEDIUM⚡travis/.travis.yml40# =======================================COMMENT
MEDIUM⚡travis/.travis.yml45# ======================================================COMMENT
MEDIUM⚡travis/.travis.yml50# ==============================================COMMENT
MEDIUM⚡travis/.travis.yml55# =================================================================================COMMENT
MEDIUM⚡travis/.travis.yml62# ========================================COMMENT
MEDIUMtravis/.travis.yml77# ==============================================COMMENT
AI Slop Vocabulary16 hits · 28 pts
SeverityFileLineSnippetContext
MEDIUM.appveyor.yml45# more useful at end to leverage .appveyor.yml tweaks like disabling broken mssql repo/dependencies, checking out projecCOMMENT
LOW.bash.d/aws.sh150# this rarely changes so just set it once as initialization instead of passing lots of paramsCOMMENT
LOWinstall/install_homebrew.sh60 # can't just pass bash, and -s shell needs to be fully qualified pathCOMMENT
LOWpython/python_find_library_executable.sh41# Rather than do an --ignore-installed which could cause all sorts of other issues, just use it from wherever it is founCOMMENT
MEDIUMchecks/check_aws_no_git_credentials.sh17# This is a simplistic check, see Semgrep workflows under .github/workflows for more comprehensive checkCOMMENT
LOWspotify/spotify_backup_playlist.sh151 # try exact match first as it's faster than regex and allows us just use simpler literal linesCOMMENT
LOWspotify/spotify_backup_playlist.sh258 # if we pass the second arg snapshot ID just use that to save an API callCOMMENT
LOWspotify/spotify_backup_playlist.sh276 # better to just use atomic moves so we can ./commit.sh even while this is runningCOMMENT
LOWspotify/spotify_backup_playlist.sh360 # If we pass the second arg snapshot ID just use that to save an API callCOMMENT
LOWspotify/spotify_backup_playlist.sh452 # better to just use atomic moves so we can ./commit.sh even while this is runningCOMMENT
LOWgcp/gcp_info.sh22# (or just use Cloud Shell, will prompt you to set the project if it's not already)COMMENT
LOWinternet/chrome.sh63 # just call Chrome directly by path for simpler native chrome arg handling to be uniform across platformsCOMMENT
LOWinternet/brave.sh63 # just call Brave directly by path for simpler native brave arg handling to be uniform across platformsCOMMENT
LOWinternet/firefox.sh65 # just call Firefox directly by path for simpler native firefox arg handling to be uniform across platformsCOMMENT
MEDIUM.github/workflows/fork-update-pr.yaml20# To be used in conjunction with the adjacent fork-sync.yaml which keeps the default branch up to dateCOMMENT
LOWdocker-compose/jenkins.yml28 # this is based off Alpine - Jenkinsfile is for Debian/Ubuntu systems like standard Jenkins, just use stock image wiCOMMENT
Slop Phrases12 hits · 14 pts
SeverityFileLineSnippetContext
LOW.bash.d/git.sh1011# example of usage of this in the function below - make sure to put '$repo' or "\$repo" somewhere in the argument body tCOMMENT
LOWinstall/getawless.sh57echo "don't forget to add it to your path, with, for example, 'sudo mv -- awless /usr/local/bin/' "CODE
LOWinstall/install_tfenv.sh55 echo "Don't forget to add ~/.tfenv/bin to your \$PATH in your ~/.bashrc or similar"CODE
LOWinstall/install_cloud_sql_proxy.sh51echo "Done. Don't forget to add $HOME/bin to \$PATH"CODE
LOWinstall/install_java.sh29 install_packages.sh java-headless # won't install to $PATH, make sure to add /usr/lib/jvm/jre/bin/ to $PATH (jre isCODE
LOWinstall/install_oracle_sqlcl.sh113#timestamp "Don't forget to add /usr/local/sqlcl/bin to your \$PATH and check for clashes with other programs called 'sqCOMMENT
LOWinstall/install_codeql.sh93echo "Don't forget to add \$HOME/bin/codeql to \$PATH"CODE
LOWinstall/install_github_codeql.sh93echo "Don't forget to add \$HOME/bin/codeql to \$PATH"CODE
LOWteamcity/teamcity_api.sh73(don't forget to add '\$help' to the end to find out what attributes endpoints support):CODE
LOWconfigs/.config/terminalizer/config.yml63# Don't forget to add a backgroundColor style with a null as typeCOMMENT
LOWkubernetes/kubernetes_secrets_to_sealed_secrets.sh77echo "Completed. Don't forget to commit all sealed-secrets-*.yaml to Git"CODE
LOWgit/git_tag_release.sh40Don't forget to 'git push --tags' to send the tag upstreamCODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMterraform/terraform_cloud_api.sh135# Create a new user token:COMMENT
MEDIUMbitbucket/bitbucket_api.sh85# Create a repo variable (see bitbucket_repo_set_env_vars.sh for a more convenient way of adding/updating env vars, optiCOMMENT
MEDIUMbitbucket/bitbucket_api.sh106# Create a workspace variable (see bitbucket_workspace_set_env_vars.sh for a more convenient way of adding/updating env COMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHbigdata/cloudera_navigator_audit_logs.sh22# try to time bound it to a 1 year interval each time so it is more likely to succeed and less range to restart. I've wrCOMMENT
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWdocker/docker_generate_status_page.sh18# Usage:COMMENT
LOWbin/vault_pass.sh16# Usage:COMMENT
LOWbigdata/cloudera_navigator_audit_logs.sh34# Usage:COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWinstall/install_kubectl.sh62# WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. UsCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdata/ini_config_add_if_missing.sh65 # Check if the config block already exists in the fileCOMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWapplescript/is_screen_locked.py29CODE