AI Slop Code Risk Monitor

anthropics/claude-code-action

SlopCodeMonitor badge for anthropics/claude-code-action Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
2.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for anthropics/claude-code-action, a TypeScript project with 9,729 GitHub stars. SynthScan examined 41,869 lines of code across 206 source files, recording 78 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.9 (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.

2.9
Adjusted Signal
2.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
9.7K
Stars
TypeScript
Language
41.9K
Lines of Code
206
Files
78
Pattern Hits
2026-10-31
Scan Date
0.03
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 11.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.5/100 · LOW

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

Agent Over-Engineering Ratio 4.7/100 · LOW

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

PR Review Velocity Impact 13.4/100 · LOW

Which changes need focused human review? 78 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 7MEDIUM 4LOW 67

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 78 distinct pattern matches across 14 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.

Hyper-Verbose Identifiers38 hits · 38 pts
SeverityFileLineSnippetContext
LOWagent-approval-check/agent_approval_check.py693def get_latest_review_per_user(reviews: list[dict]) -> dict[str, dict]:CODE
LOWagent-approval-check/agent_approval_check.py799def load_agent_config_from_env(repo: str) -> AgentConfig:CODE
LOWagent-approval-check/agent_approval_check.py979def collect_approval_reactions(CODE
LOWagent-approval-check/agent_approval_check.py1034def find_notification_comment(comments: list[dict]) -> dict | None:CODE
LOWagent-approval-check/agent_approval_check.py1041def find_stale_notification_for_commit(CODE
LOWagent-approval-check/agent_approval_check.py1052def find_old_stale_notifications(comments: list[dict], latest_sha: str) -> list[dict]:CODE
LOWagent-approval-check/agent_approval_check.py1062def generate_notification_comment(CODE
LOWagent-approval-check/agent_approval_check.py1144def generate_stale_notification(stale_approvals: list[dict], latest_sha: str) -> str:CODE
LOWagent-approval-check/agent_approval_check.py1545def format_status_description(message: str, head_sha: str) -> str:CODE
LOWtest/restore-config.test.ts455 function snapshotRegularFileContents(): string[] {CODE
LOWtest/restore-config.test.ts522 function countClaudePrExcludeEntries(): number {CODE
LOWbase-action/src/workload-identity.ts43export function isWorkloadIdentityConfigured(): boolean {CODE
LOWbase-action/src/parse-sdk-options.ts133function parseClaudeArgsToExtraArgs(CODE
LOWbase-action/src/prepare-prompt.ts14async function validateAndPreparePrompt(CODE
LOWbase-action/src/prepare-prompt.ts62async function createTemporaryPromptFile(CODE
LOWbase-action/src/validate-env.ts5export function validateEnvironmentVariables() {CODE
LOWbase-action/src/execution-file.ts34export function setExecutionFileOutputIfPresent(): string | undefined {CODE
LOWsrc/modes/detector.ts83function validateTrackProgressEvent(context: GitHubContext): void {CODE
LOWsrc/utils/branch-template.ts84function collapseEmptyPathSegments(branchName: string): string {CODE
LOWsrc/mcp/update-git-reference.ts30function shouldRetryGitReferenceUpdate(error: Error): boolean {CODE
LOWsrc/mcp/install-mcp-server.ts34async function checkActionsReadPermission(CODE
LOWsrc/mcp/github-file-ops-server.ts62async function getOrCreateBranchRef(CODE
LOWsrc/create-prompt/index.ts79export function buildDisallowedToolsString(CODE
LOWsrc/create-prompt/index.ts896function extractUserRequestFromContext(CODE
LOWsrc/github/context.ts279export function isPullRequestReviewCommentEvent(CODE
LOWsrc/github/token.ts28function getAppTokenExchangeErrorMessage(CODE
LOWsrc/github/token.ts34function isWorkflowValidationError(CODE
LOWsrc/github/token.ts75export function parseAdditionalPermissions():CODE
LOWsrc/github/utils/actor-filter.ts64export function shouldIncludeCommentByActor(CODE
LOWsrc/github/utils/sanitizer.ts12export function stripMarkdownImageAltText(content: string): string {CODE
LOWsrc/github/utils/image-downloader.ts39function extractSignedUrlAssetGuid(signedUrl: string): string | undefined {CODE
LOWsrc/github/utils/image-downloader.ts340function detectImageExtensionFromBuffer(buffer: Buffer): string | undefined {CODE
LOWsrc/github/operations/restore-config.ts209function ensureClaudePrExcludedFromGit(): void {CODE
LOWsrc/github/operations/git-config.ts70export async function replaceCheckoutCredentials(CODE
LOWsrc/github/operations/branch-cleanup.ts6export async function checkAndCommitOrDeleteBranch(CODE
LOWsrc/github/data/formatter.ts153export function formatChangedFilesWithSHA(CODE
LOWsrc/github/validation/permissions.ts76async function checkActorWritePermissions(CODE
LOWsrc/entrypoints/collect-inputs.ts1export function collectActionInputsPresence(): string {CODE
Magic Placeholder Names4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHCONTRIBUTING.md31 export ANTHROPIC_API_KEY="your-api-key-here"CODE
HIGHbase-action/README.md298 --mcp-config '{"mcpServers":{"server-name":{"command":"node","args":["./server.js"],"env":{"API_KEY":"your-api-keyCODE
HIGHbase-action/README.md312 "API_KEY": "your-api-key"CODE
HIGHbase-action/CONTRIBUTING.md31 export ANTHROPIC_API_KEY="your-api-key-here"CODE
Synthetic Comment Markers3 hits · 18 pts
SeverityFileLineSnippetContext
HIGHtest/validate-branch-name.test.ts58 it("should accept branch names containing + (generated by Claude Code EnterWorktree)", () => {CODE
HIGHbase-action/README.md407 body: "## Claude Code Review\n\n" + review + "\n\n*Generated by Claude Code*"CODE
HIGHsrc/github/operations/branch.ts67 // + is valid per git-check-ref-format and generated by Claude Code's EnterWorktree tool whenCOMMENT
Over-Commented Block14 hits · 14 pts
SeverityFileLineSnippetContext
LOWbunfig.toml1# Intentionally minimal. action.yml pins --config to this file so bun resolvesCOMMENT
LOWagent-approval-check/agent_approval_check.py1381 logger.warning("PR has >100 changed files - cannot verify all file paths")COMMENT
LOWdocs/usage.md21 - uses: anthropics/claude-code-action@v1COMMENT
LOWdocs/usage.md41 # trigger_phrase: "/claude"COMMENT
LOWexamples/claude.yml41COMMENT
LOWexamples/claude-wif.yml41 uses: anthropics/claude-code-action@v1COMMENT
LOWexamples/ci-failure-auto-fix.yml1name: Auto Fix CI FailuresCOMMENT
LOW.github/egress-firewall.yaml1# Hosts that jobs on GitHub's egress-firewall runner (runs-on: ubuntu-24.04-firewall)COMMENT
LOW.github/workflows/release.yml121 git tag -fa "$major_version" -m "Update $major_version tag to $next_version"COMMENT
LOW.github/workflows/release.yml141 # next_version="${{ needs.create-release.outputs.next_version }}"COMMENT
LOW.github/workflows/release.yml161 # gh release create "$next_version" \COMMENT
LOWsrc/github/operations/restore-config.ts81}COMMENT
LOWsrc/github/operations/branch.ts61 `Invalid branch name: "${branchName}". Branch names cannot contain control characters, spaces, or special git charCOMMENT
LOWsrc/entrypoints/run.ts241COMMENT
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippetContext
LOWbase-action/test-mcp-local.sh9# Check if ANTHROPIC_API_KEY is setCOMMENT
LOW.github/workflows/test-mcp-servers.yml66 # Check if mcp_servers field exists in the init eventCOMMENT
LOW.github/workflows/test-mcp-servers.yml163 # Check if mcp_servers field exists in the init eventCOMMENT
LOW.github/workflows/test-settings.yml66 # Check if the echo command workedCOMMENT
LOW.github/workflows/test-settings.yml162 # Check if the echo command workedCOMMENT
LOW.github/workflows/sync-base-action.yml65 # Check if there are any changesCOMMENT
LOW.github/workflows/test-structured-output.yml323 # Check if all passedCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml146 # # Create the version tagCOMMENT
MEDIUM.github/workflows/release.yml160 # # Create the releaseCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMexamples/pr-review-comprehensive.yml66 # Tools for comprehensive PR reviewCOMMENT
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/gh.sh7# Usage:COMMENT
LOWscripts/git-push.sh9# Usage:COMMENT
Modern Structural Boilerplate2 hits · 2 pts
SeverityFileLineSnippetContext
LOWagent-approval-check/agent_approval_check.py98logger = logging.getLogger(__name__)CODE
LOWagent-approval-check/agent_approval_check.py376 def update_comment(self, alias: str, node_id: str, body: str) -> None:CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMsrc/create-prompt/index.ts864"I'm unable to [specific action] due to [reason]. You can find more information and potential workarounds in the [FAQ](hCODE
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/entrypoints/prepare.ts40 // Step 3: Check write permissions (entity contexts and workflow_run)COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/entrypoints/prepare.ts40 // Step 3: Check write permissions (entity contexts and workflow_run)COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtest/create-prompt.test.ts42 name: "John Doe",CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOW.github/scripts/check_workflow_hardening.py231CODE