GitHub Action: Run eslint with reviewdog
May 18, 2026 ยท View on GitHub
This action runs eslint with reviewdog on pull requests to improve code review experience.
Inputs
github_token
Required. Default is ${{ github.token }}.
level
Optional. Report level for reviewdog [info,warning,error].
It's same as -level flag of reviewdog.
reporter
Reporter of reviewdog command [github-pr-check,github-check,github-pr-review].
Default is github-pr-review.
It's same as -reporter flag of reviewdog.
github-pr-review can use Markdown and add a link to rule page in reviewdog reports.
tool_name
Optional. Tool name to use for reviewdog reporter. Default is eslint.
This becomes the check/run name on GitHub (e.g., for github-check/github-pr-check) and the tool label in review comments.
Useful when running in a matrix to distinguish checks, e.g. eslint-${{ matrix.node_version }}.
filter_mode
Optional. Filtering mode for the reviewdog command [added,diff_context,file,nofilter].
Default is added.
fail_level
Optional. If set to none, always use exit code 0 for reviewdog. Otherwise, exit code 1 for reviewdog if it finds at least 1 issue with severity greater than or equal to the given level.
Possible values: [none, any, info, warning, error]
Default is none.
fail_on_error
Deprecated, use fail_level instead.
Optional. Exit code for reviewdog when errors are found [true,false]
Default is false.
reviewdog_flags
Optional. Additional reviewdog flags
eslint_flags
Optional. Flags and args of eslint command. Default: '.'
workdir
Optional. The directory from which to look for and run eslint. Default '.'
node_options
Optional. The NODE_OPTIONS environment variable to use with eslint. Default is ''.
only_changed
Optional. Run eslint only on changed (and added) files, for speedup [true, false]. Default: false.
Will fetch the tip of the base branch with depth 1 from remote origin if it is not available.
If you use different remote name or customize the checkout otherwise, make the tip of the base branch available before this action.
Example usage
You also need to install eslint.
# Example
$ npm install eslint -D
You can create eslint config and this action uses that config too.
.github/workflows/reviewdog.yml
name: reviewdog
on: [pull_request]
jobs:
eslint:
name: runner / eslint
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: reviewdog/action-eslint@2fee6dd72a5419ff4113f694e2068d2a03bb35dd # v1.33.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review # Change reporter.
eslint_flags: "src/"
You can also set up node and eslint manually like below.
name: reviewdog
on: [pull_request]
jobs:
eslint:
name: runner / eslint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
with:
node-version: "20"
- run: yarn install
- uses: reviewdog/action-eslint@2fee6dd72a5419ff4113f694e2068d2a03bb35dd # v1.33.2
with:
reporter: github-check
eslint_flags: "src/"
Matrix example with unique tool name
name: reviewdog
on: [pull_request]
jobs:
eslint:
runs-on: ubuntu-latest
strategy:
matrix:
node: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- uses: reviewdog/action-eslint@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-check
tool_name: eslint-node-${{ matrix.node }}
eslint_flags: "src/"

