Repository Analysis

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..

16.0 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of HariSekhon/DevOps-Bash-tools, a Shell project with 8,392 GitHub stars. SynthScan v2.0 examined 152,206 lines of code across 1728 source files, recording 2041 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 16.0 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

16.0
Adjusted Score
16.0
Raw Score
100%
Time Factor
2026-08-24
Last Push
8.4K
Stars
Shell
Language
152.2K
Lines of Code
1.7K
Files
2.0K
Pattern Hits
2026-08-29
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 18HIGH 1MEDIUM 49LOW 1973

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2041 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Over-Commented Block1942 hits · 1942 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# sudo pkill -f sambapopupCOMMENT
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
1882 more matches not shown…
Hallucination Indicators18 hits · 270 pts
SeverityFileLineSnippetContext
CRITICALbigdata/impala_tables_row_counts.sh56 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)CODE
CRITICALbigdata/impala_tables_row_counts.sh57 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)CODE
CRITICALbigdata/impala_tables_row_counts.sh58 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:2157)CODE
CRITICALbigdata/impala_tables_row_counts.sh59 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2127)CODE
CRITICALbigdata/impala_tables_row_counts.sh60 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2040)CODE
CRITICALbigdata/impala_tables_row_counts.sh61 at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:583)CODE
CRITICALbigdata/impala_tables_row_counts.sh62 at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizatiCODE
CRITICALbigdata/impala_tables_row_counts.sh63 at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenoCODE
CRITICALbigdata/impala_tables_row_counts.sh71 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)CODE
CRITICALbigdata/impala_foreach_table.sh55 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)CODE
CRITICALbigdata/impala_foreach_table.sh56 at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)CODE
CRITICALbigdata/impala_foreach_table.sh57 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:2157)CODE
CRITICALbigdata/impala_foreach_table.sh58 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2127)CODE
CRITICALbigdata/impala_foreach_table.sh59 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:2040)CODE
CRITICALbigdata/impala_foreach_table.sh60 at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:583)CODE
CRITICALbigdata/impala_foreach_table.sh61 at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizatiCODE
CRITICALbigdata/impala_foreach_table.sh62 at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenoCODE
CRITICALbigdata/impala_foreach_table.sh70 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)CODE
Decorative Section Separators43 hits · 150 pts
SeverityFileLineSnippetContext
MEDIUM.bash.d/linux.sh113# ==========================COMMENT
MEDIUM.bash.d/linux.sh133# =========================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.sh57# ==========================================COMMENT
MEDIUMinstall/install_d2.sh66# ==========================================COMMENT
MEDIUMbin/curl_auth.sh65 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh76 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh89 # ==============================================COMMENT
MEDIUMbin/curl_auth.sh116# ==============================================COMMENT
MEDIUMbin/clean_caches.sh92# =====================================COMMENT
MEDIUMbin/clean_caches.sh113# =========================COMMENT
MEDIUMbin/clean_caches.sh133# =============================================================COMMENT
MEDIUMchecks/check_all.sh232# ========================================COMMENT
MEDIUMsetup/mac_settings.sh132# ============COMMENT
MEDIUMsetup/mac_settings.sh142# ============================COMMENT
MEDIUMsetup/mac_settings.sh150# ==============COMMENT
MEDIUMsetup/mac_settings.sh156# ===========COMMENT
MEDIUMsetup/mac_settings.sh164# ===============COMMENT
MEDIUMsetup/mac_settings.sh174# =======================================COMMENT
MEDIUMsetup/mac_settings.sh189# ===============COMMENT
MEDIUMgcp/gke_kubectl.sh68# ============================================================COMMENT
MEDIUMgcp/gke_kubectl.sh93# ============================================================COMMENT
MEDIUMlib/utils.sh449# =================================COMMENT
MEDIUMlib/utils.sh705# =================================COMMENT
MEDIUMlib/utils.sh1404# ==============================COMMENT
MEDIUMlib/utils.sh1436# ==============================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
MEDIUMtravis/.travis.yml25# ==============================================================COMMENT
MEDIUMtravis/.travis.yml29# =========================================COMMENT
MEDIUMtravis/.travis.yml35# ==============================================COMMENT
MEDIUMtravis/.travis.yml40# =======================================COMMENT
MEDIUMtravis/.travis.yml45# ======================================================COMMENT
MEDIUMtravis/.travis.yml50# ==============================================COMMENT
MEDIUMtravis/.travis.yml55# =================================================================================COMMENT
MEDIUMtravis/.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.sh1008# 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.sh52echo "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.sh112#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.sh89echo "Don't forget to add \$HOME/bin/codeql to \$PATH"CODE
LOWinstall/install_github_codeql.sh89echo "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