GitHub Actions

Lint the
pull request.

Pin the released CLI, grant read-only permissions, and choose whether prose findings should block or only leave a report.

Blocking check

Block only strong findings.

This workflow emits native annotations and fails only on high-confidence errors. The package version is pinned so a new SlopSift release cannot change a pull request unexpectedly.

name: SlopSift

on:
  pull_request:
    paths:
      - "**/*.md"
      - "**/*.mdx"
      - "**/*.txt"

permissions:
  contents: read

jobs:
  lint-writing:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Lint high-confidence writing tells
        run: npx --yes slopsift@0.1.5 . --quiet --format github

Advisory report

Collect every signal without blocking.

--exit-zero neutralizes lint thresholds, but it deliberately preserves exit status 2 for configuration, model, and runtime failures.

name: SlopSift report

on:
  pull_request:

permissions:
  contents: read

jobs:
  review-writing:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Write a JSON Lines report
        run: npx --yes slopsift@0.1.5 . --level info --format json-lines --exit-zero > slopsift.jsonl
      - uses: actions/upload-artifact@v4
        with:
          name: slopsift-report
          path: slopsift.jsonl

Changed files

Read only what changed.

The shell array preserves spaces in filenames and skips the command when no supported writing changed. No third-party changed-files action is required.

- name: Lint changed writing
  shell: bash
  env:
    BASE_SHA: ${{ github.event.pull_request.base.sha }}
  run: |
    mapfile -d '' files < <(
      git diff --name-only -z --diff-filter=ACMR "$BASE_SHA" HEAD -- \
        "*.md" "*.mdx" "*.txt" "*.html" "*.ts" "*.tsx" "*.js" "*.jsx"
    )
    if (( ${#files[@]} )); then
      npx --yes slopsift@0.1.5 "${files[@]}" --quiet --format github
    fi

Exit codes

Keep lint failures distinct from broken runs.

0 accepted result1 lint threshold failed2 command or runtime failed

Do not append shell-level || true. That hides status 2 as well as ordinary findings. Use --exit-zero for report-only jobs.

Forks

No repository secret required.

The workflow checks out text and invokes a pinned public npm package. It needs only contents: read, so pull requests from forks do not need access to secrets.