AI Slop Code Risk Monitor

zizmorcore/zizmor

SlopCodeMonitor badge for zizmorcore/zizmor Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Static analysis for GitHub Actions (and more)

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for zizmorcore/zizmor, a Rust project with 6,848 GitHub stars. SynthScan examined 100,886 lines of code across 638 source files, recording 161 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low 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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
6.8K
Stars
Rust
Language
100.9K
Lines of Code
638
Files
161
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 8.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 8.8/100 · LOW

Which changes need focused human review? 161 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 0HIGH 0MEDIUM 12LOW 149

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

Over-Commented Block138 hits · 138 pts
SeverityFileLineSnippetContext
LOW…-models/tests/sample-dependabot/v2/sigstore-python.yml1# https://github.com/sigstore/sigstore-python/blob/e0168a781b87d059fde05dfdfe0ce82e564ce095/.github/dependabot.ymlCOMMENT
LOW…models/tests/sample-workflows/pip-audit-scorecards.yml1# https://github.com/pypa/pip-audit/blob/1fd67af0653a8e66b9470adab2e408a435632f19/.github/workflows/scorecards.ymlCOMMENT
LOW…sts/sample-workflows/mhils-workflows-python-deploy.yml1# https://raw.githubusercontent.com/mhils/workflows/0d7c124ffff22d26be111477a3ed9fadd853a6db/.github/workflows/python-deCOMMENT
LOW…sts/sample-workflows/mhils-workflows-python-deploy.yml21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,COMMENT
LOW…actions-models/tests/sample-workflows/pip-api-test.yml1# https://github.com/di/pip-api/blob/60691ed6bdc0c213253593de869bff1cf9195b81/.github/workflows/test.ymlCOMMENT
LOW…actions-models/tests/sample-workflows/pip-audit-ci.yml1# https://github.com/pypa/pip-audit/blob/1fd67af0653a8e66b9470adab2e408a435632f19/.github/workflows/ci.ymlCOMMENT
LOW…s/tests/sample-workflows/jazzband-tablib-docs-lint.yml1# https://raw.githubusercontent.com/jazzband/tablib/dcab406c553fc8b3c2e0aef955e9e8adea0590d8/.github/workflows/docs-lintCOMMENT
LOW…/sample-workflows/adafruit-circuitpython-run-tests.yml1# https://github.com/adafruit/circuitpython/blob/24a8927d0ce1d77addd584bf809ab73cb0386e75/.github/workflows/run-tests.ymCOMMENT
LOW…/sample-workflows/adafruit-circuitpython-run-tests.yml81 # - name: Build native modulesCOMMENT
LOW…s/sample-workflows/homebrew-core-dispatch-rebottle.yml1# https://github.com/Homebrew/homebrew-core/blob/8b4101be35fb7053e2026edcf1f7d218a5ac3379/.github/workflows/dispatch-rebCOMMENT
LOW…le-workflows/vil02-puzzle_generator-check_examples.yml1# https://raw.githubusercontent.com/vil02/puzzle_generator/e2c864ef2985743a648a35b2313eb9dd4592bd18/.github/workflows/chCOMMENT
LOW…ions-models/tests/sample-workflows/guacsec-guac-ci.yml1# https://github.com/guacsec/guac/blob/85868eadbf6a287f9bf5f47d355ff944080d3845/.github/workflows/ci.yamlCOMMENT
LOW…/sample-workflows/homebrew-core-automerge-triggers.yml1# https://github.com/Homebrew/homebrew-core/blob/ac74cb3f7dbdb2da2200886d5e740de124bab861/.github/workflows/automerge-trCOMMENT
LOW…ts/sample-workflows/letsencrypt-boulder-boulder-ci.yml41 # When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: trueCOMMENT
LOW…ample-workflows/gh-action-sigstore-python-selftest.yml1# https://github.com/sigstore/gh-action-sigstore-python/blob/b3690e3a279c94669b1e9e4e1e29317cdc7a52d5/.github/workflows/COMMENT
LOW…b-actions-models/tests/sample-actions/setup-python.yml1# https://github.com/actions/setup-python/blob/e9d6f990972a57673cdb72ec29e19d42ba28880f/action.ymlCOMMENT
LOW…els/tests/sample-actions/gh-action-sigstore-python.yml1# https://github.com/sigstore/gh-action-sigstore-python/blob/b3690e3a279c94669b1e9e4e1e29317cdc7a52d5/action.ymlCOMMENT
LOW…models/tests/sample-actions/gh-action-pypi-publish.yml1# https://github.com/pypa/gh-action-pypi-publish/blob/2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf/action.ymlCOMMENT
LOWcrates/github-actions-models/src/action.rs1//! Data models for GitHub Actions action definitions.COMMENT
LOWcrates/github-actions-models/src/action.rs41 pub required: Option<bool>,COMMENT
LOWcrates/github-actions-models/src/action.rs81COMMENT
LOWcrates/github-actions-models/src/action.rs121 /// An optional boolean or expression that, if `true`, prevents the job from failing whenCOMMENT
LOWcrates/github-actions-models/src/action.rs161COMMENT
LOWcrates/github-actions-models/src/common.rs41}COMMENT
LOWcrates/github-actions-models/src/common.rs61 /// Read access.COMMENT
LOWcrates/github-actions-models/src/lock/mod.rs1//! Data models for GitHub Actions workflow lockfiles.COMMENT
LOWcrates/github-actions-models/src/workflow/job.rs161COMMENT
LOWcrates/github-actions-models/src/workflow/event.rs1//! Workflow events.COMMENT
LOWcrates/github-actions-models/src/workflow/event.rs261#[derive(Deserialize, Serialize, Debug)]COMMENT
LOWcrates/github-actions-models/src/workflow/mod.rs41///COMMENT
LOWcrates/github-actions-models/src/workflow/mod.rs61///COMMENT
LOWcrates/github-actions-models/src/dependabot/v2.rs1//! "v2" Dependabot models.COMMENT
LOWcrates/github-actions-models/src/dependabot/v2.rs161 /// and dependencies.COMMENT
LOWcrates/github-actions-models/src/dependabot/v2.rs201 pub target_branch: Option<String>,COMMENT
LOWcrates/github-actions-models/src/dependabot/v2.rs341 /// These are, inexplicably, not [`UpdateType`] variants.COMMENT
LOWcrates/github-actions-expressions/src/lib.rs21mod parser;COMMENT
LOWcrates/github-actions-expressions/src/lib.rs41 /// A human-readable description of the error.COMMENT
LOWcrates/github-actions-expressions/src/lib.rs421 }COMMENT
LOWcrates/github-actions-expressions/src/lib.rs701impl<'src> Expr<'src> {COMMENT
LOWcrates/github-actions-expressions/src/identifier.rs1//! Identifiers.COMMENT
LOWcrates/github-actions-expressions/src/call.rs1//! Representation of function calls in GitHub Actions expressions.COMMENT
LOWcrates/github-actions-expressions/src/call.rs21 /// `contains(haystack, needle)`COMMENT
LOWcrates/github-actions-expressions/src/context.rs1//! Parsing and matching APIs for GitHub Actions expressionsCOMMENT
LOWcrates/github-actions-expressions/src/context.rs101 Expr::Index(idx) => match &idx.inner {COMMENT
LOWcrates/github-actions-expressions/src/context.rs141COMMENT
LOWcrates/zizmor-dev/src/lib.rs361 }COMMENT
LOWcrates/subfeature/src/lib.rs1//! Subfeature handling and manipulation APIs.COMMENT
LOWcrates/subfeature/src/lib.rs41COMMENT
LOWcrates/subfeature/src/lib.rs61 // replacing all whitespace with `\\s+`.COMMENT
LOWcrates/yamlpath/src/lib.rs1//! Comment and format-preserving YAML path routes.COMMENT
LOWcrates/yamlpath/src/lib.rs201 /// The user's input YAML is malformed.COMMENT
LOWcrates/yamlpath/src/lib.rs221 MissingChild(String, String),COMMENT
LOWcrates/yamlpath/src/lib.rs241/// bar:COMMENT
LOWcrates/yamlpath/src/lib.rs441 _node: node,COMMENT
LOWcrates/yamlpath/src/lib.rs661 }COMMENT
LOWcrates/yamlpath/src/lib.rs681 self.query_node(route, QueryMode::Pretty).map(|n| n.into())COMMENT
LOWcrates/yamlpath/src/lib.rs721COMMENT
LOWcrates/yamlpath/src/lib.rs741 /// neighbor, so the surrounding flow collection stays well-formed. ACOMMENT
LOWcrates/yamlpath/src/lib.rs1021 /// span, meaning that leading whitespace for the start point is notCOMMENT
LOWcrates/yamlpath/src/lib.rs1061 // nodes and extract all comment nodes in the line range for theCOMMENT
78 more matches not shown…
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMcrates/yamlpath/src/lib.rs902 /// robust against arbitrary nesting of flow and block collections.COMMENT
MEDIUM…ion/test-data/unpinned-images/docker-action/action.yml12# to see a comprehensive list of all environment variables that can be passedCOMMENT
MEDIUM…s/zizmor/tests/integration/audit/template_injection.rs898 # All expressions are replaced and environment variables are created in a single comprehensive fixCOMMENT
MEDIUM…s/zizmor/tests/integration/audit/template_injection.rs918 # All expressions are replaced and environment variables are created in a single comprehensive fixCOMMENT
MEDIUMcrates/zizmor/src/audit/impostor_commit.rs44 /// Definitely an impostor.COMMENT
MEDIUMcrates/zizmor/src/audit/impostor_commit.rs46 /// Definitely not an impostor.COMMENT
MEDIUMcrates/zizmor/src/audit/impostor_commit.rs207 // Our logic is a little nuanced here: we have two fast paths, and we want to tryCOMMENT
Self-Referential Comments5 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUM…tions-models/tests/sample-dependabot/homebrew-core.yml3# This file is synced from the `.github` repository, do not modify it directly.COMMENT
MEDIUM…ons-models/tests/sample-workflows/zizmor-issue-650.yml7# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUMcrates/tree-sitter-iter/src/lib.rs59 env: &env_vars # Define the anchor on first useCODE
MEDIUMcrates/yamlpath/tests/testcases/anchors-basic.yml4 env: &env_vars # Define the anchor on first useCODE
MEDIUMcrates/zizmor/tests/integration/e2e/collect.rs163 # This file is machine-generated by `gh actions-lock`.COMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWcrates/zizmor/src/utils.rs462/// NOTE: This function assumes that you pass it an `env`-prefixedCOMMENT
LOWcrates/zizmor/src/audit/mod.rs446 /// NOTE: This method takes the audit's own identifier as an argument,COMMENT
Excessive Try-Catch Wrapping2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsupport/codeql-injection-sinks.py180 except Exception as e:CODE
LOWsupport/codeql-injection-sinks.py201 except Exception as e:CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsupport/codeql-injection-sinks.py42CODE
LOWsupport/sync-expression-tests.py33CODE
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOWbench/test_bench_online.py51def test_zizmor_online_collect_workflows_fast_path(benchmark):CODE
LOWdocs/snippets/render-trophies.py41def normalize_and_sort_in_place() -> list[str]:STRING
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…sts/sample-workflows/mhils-workflows-python-deploy.yml25# Usage:COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…tests/integration/test-data/issue-612-repro/action.yml26 # Check if the author is either dependabot or pre-commit.ci.COMMENT
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsupport/sync-expression-tests.py75CODE