peakoss/anti-slop

A GitHub action that detects and automatically closes low-quality and AI slop PRs.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Apr 15, 2026
License
AGPL 3.0

Pinned Snippet

workflow.ymlSHA-pinned
uses: peakoss/anti-slop@57858eead489d08b255fab2af45a506c2ca6eab2 # v0.3.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
github-tokenGitHub token used to authenticate API requests.yes${{ github.token }}
max-failuresNumber of check failures needed before failure actions are triggered.no4
allowed-target-branchesNewline-separated target branch patterns to allow. Empty allows all branches.no""
blocked-target-branchesNewline-separated target branch patterns to block.no""
allowed-source-branchesNewline-separated source branch patterns to allow. Empty allows all branches.no""
blocked-source-branchesNewline-separated source branch patterns to block.nomain master
max-changed-filesMaximum number of changed files allowed in the PR. 0 disables this check.no50
max-changed-linesMaximum number of changed lines (additions + deletions) allowed in the PR. 0 disables this check.no10000
max-negative-reactionsMaximum number of negative reactions (thumbs down + confused) allowed on the PR. 0 disables this check.no0
require-maintainer-can-modifyRequire the PR to allow maintainers to push to the source branch.notrue
require-conventional-titleRequire PR titles to follow Conventional Commits format (e.g. 'feat:', 'fix:', 'feat(scope):').nofalse
require-descriptionRequire a non-empty PR description.notrue
max-description-lengthMaximum character length for the PR description. 0 disables this check.no2500
max-emoji-countMaximum number of emojis allowed in the PR title and description. 0 disables this check.no2
max-code-referencesMaximum number of code references (file paths, function/method calls) allowed in the PR description. 0 disables this check.no5
require-linked-issueRequire the PR to reference at least one issue in the PR description.nofalse
blocked-termsNewline-separated list of terms blocked from appearing in the PR description.no""
blocked-issue-numbersComma-separated list of issue numbers blocked from being referenced in the PR description.no""
require-pr-templateRequire the PR description to follow the repository PR template structure.nofalse
strict-pr-template-sectionsComma-separated PR template section headings (without '#') classified as strict. All checkboxes must be present and checked. Only applies when require-pr-template is enabled.no""
optional-pr-template-sectionsComma-separated PR template section headings (without '#') classified as optional. Can be removed from the description without failing the check. Only applies when require-pr-template is enabled.no""
max-additional-pr-template-sectionsMaximum number of additional sections not in the template that are allowed in the PR description. 0 disables this check.no0
max-commit-message-lengthMaximum character length for individual commit messages. 0 disables this check.no500
require-conventional-commitsRequire all commit messages to follow Conventional Commits format (e.g. 'feat:', 'fix:', 'feat(scope):').nofalse
require-commit-author-matchRequire every commit in the PR to be authored by the same GitHub user who opened the PR.notrue
blocked-commit-authorsComma-separated list of blocked commit author usernames.no""
allowed-file-extensionsComma-separated list of allowed file extensions (e.g. '.ts,.js') for changed files. Empty allows all.no""
allowed-pathsNewline-separated file or folder paths to allow for changed files. Entries ending with '/' match folders. Empty allows all.no""
blocked-pathsNewline-separated file or folder paths to block for changed files. Entries ending with '/' match folders.noREADME.md SECURITY.md LICENSE CODE_OF_CONDUCT.md
require-final-newlineRequire all changed files to end with a newline character.notrue
max-added-commentsMaximum number of added comments in all changed files. 0 disables this check.no10
detect-spam-usernamesDetect usernames that match common spam patterns.notrue
min-account-ageMinimum GitHub account age in days. 0 disables this check.no30
max-daily-forksMaximum number of repositories forked by the user in any 24-hour window. 0 disables this check.no6
require-public-profileRequire the PR author to have a public GitHub profile.notrue
min-profile-completenessMinimum number of profile signals (name, email, bio, etc.) the user must have to pass. 0 disables this check.no4
min-repo-merged-prsMinimum number of merged PRs in this repository from the author. 0 disables this check.no0
min-repo-merge-ratioMinimum merge/close PR ratio percentage in this repository. 0 disables this check.no0
min-global-merge-ratioMinimum merge/close PR ratio percentage across all repositories. 0 disables this check.no30
global-merge-ratio-exclude-ownExclude PRs to the author's own repositories from the global merge ratio calculation.nofalse
exempt-draft-prsExempt draft PRs from all checks.nofalse
exempt-botsNewline-separated list of bot usernames exempt from all checks.noactions-user autofix-ci[bot] dependabot[bot] renovate[bot] github-actions[bot]
exempt-usersComma-separated list of GitHub usernames exempt from all checks.no""
exempt-author-associationComma-separated list of GitHub author associations exempt from all checks.noOWNER,MEMBER,COLLABORATOR
exempt-labelLabel name that exempts PRs and Issues from all checks when it is present.noexempt
exempt-pr-labelLabel name that exempts PRs from all checks when it is present.no""
exempt-all-milestonesExempt all PRs and Issues that are assigned to any milestone.nofalse
exempt-all-pr-milestonesExempt all PRs that are assigned to any milestone.nofalse
exempt-milestonesComma-separated list of milestone titles. PRs and Issues assigned to any listed milestone are exempt.no""
exempt-pr-milestonesComma-separated list of milestone titles. PRs assigned to any listed milestone are exempt.no""
success-add-pr-labelsComma-separated list of labels to add to the PR on success.no""
failure-remove-pr-labelsComma-separated list of labels to remove from the PR on failure.no""
failure-remove-all-pr-labelsRemove all labels from the PR on failure.nofalse
failure-add-pr-labelsComma-separated list of labels to add to the PR on failure.no""
failure-pr-messageComment posted on the PR when the maximum number of failures is reached. Empty posts no comment.no""
close-prClose the PR when the maximum number of failures is reached.notrue
lock-prLock the PR conversation after closing.nofalse
namedescription
total-checksTotal number of checks that were run.
failed-checksNumber of checks that failed.
passed-checksNumber of checks that passed.
resultOverall result: 'passed', 'failed', or 'skipped'.