Skip to main content
This page lists all rules that Skylos can detect, organized by category.

Security Rules (--danger)

Dangerous Function Calls

Rule IDSeverityDescription
SKY-D201HIGHUse of eval()
SKY-D202HIGHUse of exec()
SKY-D203CRITICALUntrusted deserialization via pickle.load()
SKY-D204CRITICALUntrusted deserialization via pickle.loads()
SKY-D205HIGHyaml.load() without SafeLoader
SKY-D206MEDIUMWeak hash function (MD5)
SKY-D207MEDIUMWeak hash function (SHA1)
SKY-D208HIGHrequests call with verify=False

Injection Vulnerabilities

Rule IDSeverityDescription
SKY-D210CRITICALSQL injection via tainted input
SKY-D211CRITICALCommand injection via os.system()
SKY-D212CRITICALCommand injection via subprocess with shell=True
SKY-D214HIGHPath traversal via tainted file path
SKY-D215HIGHXSS via tainted input in Markup()
SKY-D216CRITICALSSRF via tainted URL in HTTP client
SKY-D217CRITICALSQL injection via sqlalchemy.text(), pandas.read_sql(), or Django .raw()

TypeScript Security

Rule IDSeverityDescription
SKY-D501CRITICALUse of eval()
SKY-D502HIGHUnsafe innerHTML assignment

Quality Rules (--quality)

Complexity

Rule IDSeverityDescriptionDefault Threshold
SKY-Q301WARN/HIGH/CRITICALCyclomatic complexity exceeds threshold10
SKY-Q302MEDIUM/HIGH/CRITICALNesting depth exceeds threshold3

Structure

Rule IDSeverityDescriptionDefault Threshold
SKY-Q303MEDIUMFunction length exceeds threshold50 lines
SKY-Q304MEDIUMArgument count exceeds threshold5 arguments

Logic

Rule IDSeverityDescription
SKY-L001HIGHMutable default argument (list, dict, set)
SKY-L002MEDIUMBare except: block
SKY-L003LOWComparison to True, False, or None using == instead of is

Performance

Rule IDSeverityDescription
SKY-P401LOWPerformance anti-patterns (repeated len(), string concatenation in loops)

TypeScript Quality

Rule IDSeverityDescription
SKY-Q501MEDIUMFunction complexity exceeds threshold

Secret Detection (--secrets)

ProviderPatternExample
AWSAKIA[0-9A-Z]{16}AKIAIOSFODNN7EXAMPLE
GitHubghp_, gho_, ghu_ prefixesghp_xxxxxxxxxxxx
Slackxox[baprs]- prefixxoxb-xxxxxxxxxxxx
Stripesk_live_, rk_live_ prefixessk_live_xxxxxxxxxxxx
GenericVariable names like api_key, secret, passwordAPI_KEY = "..."

Severity Reference

LevelPriorityGate BehaviorDescription
CRITICAL1 (highest)Blocks if fail_on_critical = trueExploitable vulnerability or severe bug
HIGH2Counted in max_security / max_qualitySerious issue that should be fixed
MEDIUM3Counted in limitsNotable issue worth addressing
WARN4Counted in limitsMinor issue to consider
LOW5 (lowest)Not countedInformational, style suggestion

Suppressing Rules

Inline Suppression

def internal_helper():  # noqa: skylos
    eval(user_input)  # This specific line is suppressed

Global Suppression

In pyproject.toml:
[tool.skylos]
ignore = ["SKY-L002", "SKY-D206"]

Rule Categories Summary

CategoryFlagRule PrefixDescription
Dead Code(always on)Unused functions, imports, classes, variables
Security--dangerSKY-DVulnerabilities and dangerous patterns
Quality--qualitySKY-Q, SKY-L, SKY-PComplexity, structure, logic, performance
Secrets--secretsHardcoded credentials and API keys