Skip to main content

Execution governor for AI-generated code — Guard, Run, and Repair in one package

Project description

Saturnday

AI-specific governance for code generated by Claude, Cursor, Copilot, and other AI coding tools.

Your team already uses AI coding tools. Saturnday makes sure what they produce is safe to ship.

What it does

Saturnday runs 18+ automated checks on every PR, catching the things AI gets wrong that humans miss:

  • Hallucinated imports — packages that don't exist on npm or PyPI
  • Fake testsassert True, empty test bodies, tests that test nothing
  • Leaked secrets — API keys, passwords, tokens hardcoded in generated code
  • Syntax errors — code that won't parse (Python and TypeScript/JavaScript)
  • Placeholder code — TODO stubs, pass-only functions, NotImplementedError bodies
  • Typosquat dependencies — suspicious package names that look like popular libraries
  • Prompt injection — system prompt leakage in generated code
  • Security vulnerabilities — via Bandit static analysis
  • Shell script issues — via ShellCheck integration
  • API version mismatches — calling methods that don't exist on the installed library version

Install

pip install saturnday

Usage

Check a PR diff

saturnday check --repo . --diff HEAD~1..HEAD

Scan an OpenClaw skill

saturnday scan --skill ./skills/my-skill/ --output ./results

Scan an entire skills corpus

saturnday scan --openclaw ./openclaw-skills/ --output ./results --format json

Run — governed execution

Turn a brief into governed tickets and execute them with your AI coder.

saturnday plan --brief "Build a calculator skill" --repo . --backend codex-cli
saturnday run --plan plan.json --repo . --backend codex-cli
saturnday resume --plan plan.json --repo . --backend codex-cli

Repair — fix findings automatically

Scan, generate repair tickets, and execute fixes.

saturnday repair --skill . --dry-run
saturnday repair --skill . --backend codex-cli

GitHub Action

Add this to .github/workflows/saturnday.yml in your repo:

name: Saturnday Governance
on:
  pull_request:
    branches: [main]

permissions:
  contents: read
  pull-requests: write

jobs:
  governance:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - uses: honouralexwill/saturnday/.github/actions/saturnday-check@master

Every PR gets scanned. Findings are posted as a PR comment. The check fails if the disposition is FAIL.

Policy configuration

Create a saturnday-policy.yaml in your repo root to customise check severity:

schema_version: "1.0.0"

checks:
  secrets: error
  hallucinated_imports: error
  fake_tests: warning
  placeholders: info
  syntax: error

scope:
  denied_paths:
    - "vendor/**"
    - "node_modules/**"

How it works

Saturnday treats AI-generated code as untrusted input. Every diff goes through deterministic verification — no LLM calls in the governance pipeline. The checks are fast, reproducible, and auditable.

Results are written to structured evidence packs that can be stored for compliance and audit purposes.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saturnday-0.3.0.tar.gz (271.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saturnday-0.3.0-py3-none-any.whl (184.5 kB view details)

Uploaded Python 3

File details

Details for the file saturnday-0.3.0.tar.gz.

File metadata

  • Download URL: saturnday-0.3.0.tar.gz
  • Upload date:
  • Size: 271.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for saturnday-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5130733ed5d00727695a5797eea97a54fa14c7216bc9c462c64462e749fda0bf
MD5 95af73987f5c18e7686792aa81dd14bb
BLAKE2b-256 332d5421bfa5b39674ce70b83ece9c4ee791ccc7c77433ecd5b1563ff814e90d

See more details on using hashes here.

File details

Details for the file saturnday-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: saturnday-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 184.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for saturnday-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fb367072be0ce53c3b16343dde4034f6a79bb07699d07145da4eca4487ebb6f
MD5 bf95ec8d0e07693899a513bdc2026089
BLAKE2b-256 7a8df27462a05df4d1f9da81d3308cde266f960993cd6cd6a1844253d693222d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page