Skip to content

Rules

All 152 rules. 43 are errors and fail the run; the remaining 109 are warnings and only report.

Every rule ships a snippet it must flag and one it must ignore, executed on every commit. Open any rule to see both.

Use the search box above to find a rule by what it catches.

Clean-code

RuleCatchesSeverityAnalysis
VBC-077
deceptive-function-name
Lying function name detected: implies a non-mutating action but contains side-effect…errorAST
VBC-079
debugger-statements
debugger; statement founderrorRegex
VBC-080
browser-alert
Avoid using alert()errorRegex
VBC-008
sleep-race-condition
Using setTimeout as a sleep to paper over a race conditionwarningRegex
VBC-009
jquery-modern-project
jQuery dependency detectedwarningRegex
VBC-012
redundant-promise-constructor
Redundant Promise constructor wrappingwarningRegex
VBC-015
magic-numbers
Magic number detectedwarningRegex
VBC-016
commented-out-code
Potential commented-out code detectedwarningRegex
VBC-018
console-logs-detected
Production code with console usage foundwarningRegex
VBC-026
empty-file
Empty code file detectedwarningAST
VBC-042
too-many-comments
Too many consecutive comment lineswarningRegex
VBC-048
meaningless-variable-names
Meaningless variable name detectedwarningRegex
VBC-049
magic-boolean
Magic boolean passed as first argumentwarningRegex
VBC-051
mixed-casing
snake_case and camelCase mixedwarningRegex
VBC-052
single-letter-variables
Single-letter variable name detectedwarningRegex
VBC-053
redundant-interpolation
Redundant string interpolation detectedwarningRegex
VBC-054
unnecessary-else
Unnecessary 'else' after 'return'warningRegex
VBC-056
stale-todo
Debt marker that admits it is temporarywarningRegex
VBC-058
overly-long-variable-name
Overly long variable name (>35 chars) detectedwarningRegex
VBC-063
empty-else
Empty else block detectedwarningRegex
VBC-063-B
empty-block
Empty block detectedwarningAST
VBC-065
hadouken-nested-logic
Nested logic is levels deep, over the limit ofwarningAST
VBC-066
redundant-if-true
Redundant 'if(true)' detectedwarningAST
VBC-068
overuse-ternary
Chained or nested ternarywarningRegex
VBC-084
long-line-limit
Line is too long ( characters)warningRegex
VBC-096
complex-regex-no-comment
Long regular expression literal with no explanationwarningRegex
VBC-098
z-index-war
Extremely high z-index value detected (z-index wars)warningRegex
VBC-102
multi-statement-one-liner
Multiple statements on a single line detectedwarningAST
VBC-104
inconsistent-import
Mixing 'require' and 'import' in the same filewarningRegex
VBC-201
redundant-async
async function with no awaitwarningAST
VBC-215
global-pollutant
Assignment to a window propertywarningRegex
VBC-501
boolean-naming-vibes
Boolean variable has no standard prefixwarningSemantic
VBC-502
redundant-boolean-logic
Redundant boolean return detectedwarningSemantic
VBC-503
collection-naming-vibes
Array named is missing a plural 's' or a collection suffix (List, Array)warningSemantic
VBC-504
semantic-shadowing
Variable shadows a common library or system keywordwarningSemantic
VBC-904
magic-string
Magic string literal passed to functionwarningRegex
VBC-905
debug-console-usage
Debug console method left in codewarningRegex
VBC-906
fixme-technical-debt
FIXME describing a live defectwarningRegex
VBC-907
anonymous-todo
Unattributed debt markerwarningRegex
VBC-908
long-inline-style
Overly long inline style attributewarningRegex
VBC-909
empty-interface-ts
Empty interface detectedwarningAST
VBC-910
console-table-leaks
console.table() left in codewarningRegex
VBC-911
meaningless-helper-names
Generic class name detectedwarningRegex
VBC-943
ignored-catch-variable
Catch clause with ignored error variablewarningRegex
VBC-945
ai-generated-placeholder-comment
AI-generated placeholder commentwarningRegex

Core

RuleCatchesSeverityAnalysis
VBC-001
hardcoded-secret
Hardcoded credentialerrorRegex
VBC-002
committed-env
Environment file (.env) detected in staged fileserrorGit
VBC-003
chmod-777
Insecure chmod 777 detectederrorRegex
VBC-005
use-var
Use of 'var' detectederrorRegex
VBC-013
empty-catch
Empty catch block detectederrorAST
VBC-017
fake-test-assertion
Trivially true test assertionerrorRegex
VBC-019
absolute-paths
Hardcoded absolute path detectederrorRegex
VBC-039
use-eval
Use of 'eval()' detectederrorRegex
VBC-070
use-innerhtml
Use of 'innerHTML' detectederrorRegex
VBC-086
target-blank-rel
target='_blank' without rel='noopener' detectederrorRegex
VBC-800
floating-promise
Unawaited Promise detectederrorType checker
VBC-028
function-params-limit
Function takes parameters, over the limit ofwarningAST
VBC-032
css-important
Global '!important' detected in CSSwarningRegex
VBC-057
use-any
Avoid using 'any' typewarningRegex
VBC-059
file-length-limit
File is too long ( lines)warningAST
VBC-090
passive-aggressive-comments
Passive-aggressive or helpless comment detectedwarningRegex
VBC-150
production-todo
Tracked debt marker still in the codewarningRegex

Correctness

RuleCatchesSeverityAnalysis
VBC-006-B
merge-conflict-markers
Merge conflict markererrorRegex
VBC-017-B
focused-test-committed
Focused testerrorRegex
VBC-946
no-verification-after-operation
Destructive async operation with no verification of successwarningRegex

Docs

RuleCatchesSeverityAnalysis
VBC-928
lorem-ipsum-docs
Placeholder text 'Lorem ipsum' detectederrorRegex
VBC-103
ascii-art-block
Block of decoration: three or more comment lines that are shape and nothing elsewarningRegex
VBC-324
condescending-language
Condescending or vague language detectedwarningRegex
VBC-334
ai-generated-fluff
Potential AI-generated fluff or overused cliché detectedwarningRegex
VBC-338
non-inclusive-terminology
Non-inclusive terminologywarningRegex
VBC-340
gendered-address
Gendered language detectedwarningRegex
VBC-344
non-iso-date
Non-ISO 8601 date foundwarningRegex
VBC-347
passive-voice
Potential passive voicewarningRegex
VBC-348
click-here-links
Vague link text foundwarningRegex
VBC-385
success-message-grammar
Improper success message grammarwarningRegex
VBC-398
panic-punctuation
Excessive punctuationwarningRegex
VBC-401
broken-links
Broken link detectedwarningHeuristic
VBC-414
please-in-cli
Avoid using 'Please' in technical instructionswarningRegex
VBC-421
filler-words
Filler word detectedwarningRegex
VBC-917
shouting-documentation
Sustained all-caps textwarningRegex
VBC-918
we-detected-tone
Avoid first-person collective ('We') in system messageswarningRegex
VBC-920
relative-link-format
Relative local link missing './' prefixwarningRegex
VBC-921
hardcoded-outdated-year
Copyright notice ends at a year that has passed:warningHeuristic
VBC-927
vague-button-label
Vague button label detectedwarningRegex
VBC-929
technical-jargon-slop
Avoid buzzword-heavy jargonwarningRegex
VBC-933
coming-soon-docs
Placeholder documentation contentwarningRegex
VBC-934
personal-opinion-docs
Personal opinion language in documentationwarningRegex
VBC-935
colloquial-language
Corporate colloquialism or buzzword in documentationwarningRegex
VBC-936
outdated-experimental-tag
Experimental or alpha status tagwarningRegex
VBC-948
em-dash-prose
Em dashwarningRegex

Git

RuleCatchesSeverityAnalysis
VBC-006
committed-node-modules
node_modules directory detected in staged fileserrorGit
VBC-025
missing-gitignore
Missing.gitignore fileerrorGit
VBC-106
spaces-in-filenames
Filename contains spaceserrorGit
VBC-924
missing-readme-root
No README file found in project rooterrorGit
VBC-014
committed-ide-settings
IDE settings file detected in staged fileswarningGit
VBC-045
missing-license
Missing LICENSE filewarningGit
VBC-046
binary-files-in-git
Binary file committed to GitwarningGit
VBC-922
too-many-staged-files
Staging files (limit:)warningGit
VBC-923
filename-too-long-hazard
Filename length exceeds characterswarningGit
VBC-925
large-file-staged
File is over 1MB ( bytes)warningGit
VBC-926
short-commit-message-check
Commit message is likely too shortwarningGit
VBC-930
missing-contributing
Missing CONTRIBUTING.md filewarningGit
VBC-931
missing-security-policy
Missing SECURITY.md filewarningGit
VBC-932
missing-changelog
Missing CHANGELOG.md (or HISTORY.md) filewarningGit

Security

RuleCatchesSeverityAnalysis
VBC-004
sql-injection-concatenation
SQL built by string concatenationerrorRegex
VBC-007
float-for-currency
Monetary value declared as a floating point literalerrorRegex
VBC-034
http-not-https
Insecure http:// link detectederrorRegex
VBC-902
document-write-slop
document.write() is prohibitederrorRegex
VBC-903
eval-like-timers
Passing strings to timers is eval-like and insecureerrorRegex
VBC-937
client-side-auth-check
Authentication token or role stored/read from browser storageerrorRegex
VBC-938
command-injection-risk
Potential command injectionerrorRegex
VBC-939
unrestricted-file-upload
File upload handler may lack type/size restrictionserrorRegex
VBC-940
float-currency-arithmetic
Floating-point arithmetic on monetary valueerrorRegex
VBC-944
xss-href-injection
Dynamic href constructed with string interpolationerrorRegex
VBC-947
prototype-pollution-risk
Merging untrusted request body directlyerrorRegex
VBC-949
committed-private-key
A private key is committed hereerrorGit
VBC-950
window-open-without-noopener
window.open() without 'noopener'errorRegex
VBC-011
document-cookie-direct
Direct document.cookie writewarningRegex
VBC-901
hardcoded-ip-v4
Hardcoded IP addresswarningRegex
VBC-941
missing-input-sanitization
Unsanitized HTML sinkwarningRegex
VBC-942
missing-access-control
Route handler may be missing authentication middlewarewarningRegex

Ux-dx

RuleCatchesSeverityAnalysis
VBC-010
div-onclick-non-semantic
Clickable <div> with onclick handlererrorRegex
VBC-023
notification-permission-eager
Notification.requestPermission() detectederrorRegex
VBC-024
autoplay-video-unmuted
Autoplay video without the muted attributeerrorRegex
VBC-033
placeholder-image-src
Placeholder image service URL detectederrorRegex
VBC-035
aria-label-icon-button
Icon-only button without aria-labelerrorRegex
VBC-101
img-missing-alt
Image missing 'alt' attributeerrorRegex
VBC-113
disable-zoom
Disabling pinch-to-zoom is an accessibility violationerrorRegex
VBC-117
block-paste
Blocking paste in input fields harms both UX and security (password managers)errorRegex
VBC-913
outline-none-hazard
Focus outline removed with nothing replacing iterrorRegex
VBC-020
justify-text-web
text-align:justify detectedwarningRegex
VBC-021
thin-font-weight
Thin font weight (100-199) detectedwarningRegex
VBC-022
custom-cursor-css
Custom cursor via CSS url()warningRegex
VBC-027
parallax-overuse
Parallax scrolling effect detectedwarningRegex
VBC-029
glassmorphism-overuse
backdrop-filter:blur() (glassmorphism)warningRegex
VBC-030
confetti-overuse
Confetti or particle animation library detectedwarningRegex
VBC-097
br-tags-for-layout
Multiple <br> tags used for layoutwarningRegex
VBC-112
scroll-hijacking
Potential scroll hijacking or forced smooth scrolling detectedwarningRegex
VBC-123
placeholder-as-label
Using placeholder as the only label is bad for accessibilitywarningRegex
VBC-131
video-background
Autoplay video backgrounds can be distracting and impact performancewarningRegex
VBC-153
sudo-setup
Setup instructions requiring sudo detectedwarningRegex
VBC-158
fouc-prevention
Use of @import in CSS can cause Flash of Unstyled Content (FOUC)warningRegex
VBC-161
oversized-sticky-header
Oversized sticky header (>30vh) detectedwarningRegex
VBC-172
hamburger-on-desktop
Hamburger menu detected on desktop resolutionswarningRegex
VBC-197
hardcoded-node-version
Hardcoded system version check detectedwarningRegex
VBC-206
pure-black-background
Pure black backgrounds (#000000) can cause eye strainwarningRegex
VBC-208
hardcoded-colors
Hardcoded color value detectedwarningRegex
VBC-212
keyboard-focus-awareness
Suppressing focus outline without providing an alternativewarningRegex
VBC-305
hardcoded-font-size
Hardcoded font size detectedwarningRegex
VBC-914
cursor-pointer-on-text
cursor: pointer applied to potentially non-interactive elementwarningRegex
VBC-915
user-select-none-slop
user-select: none detectedwarningRegex
VBC-916
vague-link-text-ux
Vague link text detectedwarningRegex

Released under the MIT License.