Skip to content
screenjson

screenjson-cli

Run screenjson-cli in GitHub Actions

Validate every ScreenJSON document in your repo on every push and pull request.

Last updated January 2026

Minimal workflow

# .github/workflows/screenjson.yml
name: ScreenJSON

on:
  push:
  pull_request:

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Validate ScreenJSON files
        run: |
          docker run --rm -v "$PWD:/data" screenjson/cli \
            sh -c 'for f in /data/scripts/*.json; do
                      screenjson validate -i "$f" --strict || exit 1
                    done'

With convert + validate on every FDX

jobs:
  roundtrip:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Convert every FDX
        run: |
          docker run --rm -v "$PWD:/data" screenjson/cli \
            sh -c 'for f in /data/scripts/*.fdx; do
                      out="${f%.fdx}.json"
                      screenjson convert  -i "$f"  -o "$out"
                      screenjson validate -i "$out" --strict || exit 1
                    done'

      - name: Upload converted documents
        uses: actions/upload-artifact@v4
        with:
          name: screenjson
          path: scripts/*.json

Caching Docker pulls

      - name: Cache Docker layers
        uses: actions/cache@v4
        with:
          path: /tmp/.buildx-cache
          key: buildx-screenjson-${{ hashFiles('**/Dockerfile') }}

Next