suggestion-bot
suggestion-bot submits code reviews with suggestions based on your diffs.

Usage: cli.js [options] [diff | file]
Submit code reviews with suggestions based on your diffs
Arguments: diff | file the diff or file containing diff to create suggestions from
Options: -h, --help display this help message -v, --version display version number -m, --message <msg> use the specified message as the PR comment -f, --fail fail if comments could not be posted
Examples: # Submit current changes as suggestions GITHUB_TOKEN=<secret> suggestion-bot "$(git diff)"
# Alternatively, pipe to suggestion-bot # to avoid escape character issues git diff | GITHUB_TOKEN=<secret> suggestion-botIf your CI is hosted by Azure DevOps, replace GITHUB_TOKEN with
AZURE_PERSONAL_ACCESS_TOKEN.
Requirements
Section titled “Requirements”- Host your code on GitHub
GITHUB_TOKENpermissions:pull-requests: write— required for creating code reviewsissues: write— fallback in case creating a review fails
– or –
- Host your code on Azure DevOps
- An Azure DevOps personal access token
Recipes
Section titled “Recipes”- Using
suggestion-botwith GitHub Actions - Using
suggestion-botwithclang-format - Using
suggestion-botwith Prettier
Using suggestion-bot with GitHub Actions
Section titled “Using suggestion-bot with GitHub Actions”-
Install
suggestion-botin your projectTerminal window yarn add suggestion-bot --dev -
Configure your GitHub workflow so
suggestion-botcan access theGITHUB_TOKENsecret provided by GitHub via an environment variable with the same name:.github/workflows/build.yml jobs:lint:runs-on: ubuntu-lateststeps:- name: Set up Node.jsuses: actions/setup-node@v6with:node-version: 24- name: Checkoutuses: actions/checkout@v6- name: Installrun: yarn- name: ClangFormatif: ${{ github.event_name == 'pull_request' }}env:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}run: scripts/clang-format-diff.sh | yarn suggestion-bot
Using suggestion-bot with clang-format
Section titled “Using suggestion-bot with clang-format”Use clang-format-diff to format only changed files:
curl --silent --show-error --remote-name https://raw.githubusercontent.com/llvm/llvm-project/release/10.x/clang/tools/clang-format/clang-format-diff.pygit diff --unified=0 --no-color @^ \ | python clang-format-diff.py -p1 -regex '.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hh|hpp|m|mm|inc)' -sort-includes \ | yarn suggestion-botUsing suggestion-bot with Prettier
Section titled “Using suggestion-bot with Prettier”We must first write a script that pipes Prettier’s output to diff so we
can feed it to suggestion-bot later.
#!/usr/bin/env node
import { spawnSync } from "node:child_process";import * as fs from "node:fs";import * as prettier from "prettier";import suggest from "suggestion-bot";
const diff = process.argv.slice(2).reduce((diff, filepath) => { const source = fs.readFileSync(filepath, { encoding: "utf8" }); const { stdout } = spawnSync("diff", ["--unified", filepath, "-"], { input: prettier.format(source, { filepath }), encoding: "utf-8", }); return diff + stdout;}, "");
suggest(diff);Save the script somewhere, e.g. scripts/prettier-diff.mjs, then invoke it with
Node:
node scripts/prettier-diff.mjs $(git ls-files '*.js')