Skip to main content

Open-source AI layer for governing, validating, and safely shipping data-orchestration jobs (Databricks, Airflow, dbt, Snowflake Tasks) with Claude Code

Project description

jobwright

CI PyPI Python License: MIT Ruff

An open-source AI layer for governing, validating, and safely shipping data-orchestration jobs with Claude Code.

jobwright treats your jobs — Databricks Jobs, Airflow DAGs, dbt jobs, Snowflake Tasks — as deployable artifacts that deserve a governed lifecycle: a catalog you can recall before you rebuild, architecture-compliance scanning, a per-job validation gate, and a deploy-safety guard that pauses for confirmation before destructive commands — so a stale-definition overwrite can't happen unattended.

Five-minute quickstart

pip install jobwright                # or: uvx jobwright
# Claude Code plugin (skills + hooks):
#   /plugin marketplace add kyle-chalmers/jobwright
#   /plugin install jobwright@jobwright

jobwright init        # the setup wizard: detects your platform, asks ≤5 questions,
                      # writes a validated jobwright.config.yaml (rest = commented defaults)
jobwright doctor      # verify config + environment (a missing CLI degrades, doesn't block)
jobwright jobs-index  # build the catalog: jobs/JOBS.md + OBJECTS.md

Then work through the front door:

/start-job BI-813 "Remitter Report"

One command owns the lifecycle — it recalls prior work from the catalog, scaffolds (or resumes) the job, drafts its documentation from the code, gates it with jobwright validate-job, and routes to /safe-deploy when it's ready to ship.

The skills

Skill What it does
/start-job the front door: recall → scaffold or open → document → build → validate → route to deploy
/setup configure a repo (the init wizard) or adopt one that already has jobs
/document-job bring a job's docs up to the gate by inspecting the code — you only answer what the code can't
/safe-deploy the only sanctioned deploy: validates first, diffs live-vs-repo, checks active runs, confirms side-effects
/triage-failure investigate a failed run, classify it, propose a scoped fix
/architecture-audit scan for deprecated-schema references and layer violations (no DB connection)
/build-jobs-index regenerate the deterministic catalog (JOBS.md + OBJECTS.md; CI-gateable with --check)

Old v0.0.x names (/onboard, /configure-workspace, /scaffold-job, /validate-job) still work as deprecated aliases — see the changelog for the rename map and upgrade path.

What keeps you safe

  • A deploy-safety guard that announces itself at session start and pauses before destructive job/SQL commands — deletes, resets, drops, destructive SQL (even hidden in a -f file). It defends against shell-quote and full-path evasion, and it fails open: it only ever adds a confirmation.
  • A validation gate a deploy can't skip. /safe-deploy runs jobwright validate-job before anything else touches the platform; the same gate runs in /start-job and CI.
  • Drift detection before overwrite. jobwright diff-job compares the live definition to the repo's before a deploy, because repo files go stale — and a stale reset has broken production jobs. On platforms that deploy straight from git it tells you so and points at git diff.
  • Graceful degradation. No platform CLI on PATH? Every file-based check (validation, catalog, compliance scan) still works; doctor names exactly what the live steps need.

Works with your platform

Databricks Jobs, Snowflake Tasks, Apache Airflow, and dbt ship as adapters; the checks and the guard are platform-agnostic. See examples/ for runnable Databricks and Airflow + BigQuery sample repos, jobwright.config.example.yaml for the full documented config, and docs/architecture.md for the two-seam model, deploy models, and how to add a platform (two files).

Complementary, not overlapping with ticketwright. ticketwright governs ticket-driven analysis work; jobwright governs the jobs themselves — definitions, compliance, and safe deploys. ticketwright's "pause before any prod job deploy" gotcha is exactly the hand-off to jobwright's /safe-deploy. Third kit in the family with streamsnow.

CLI

jobwright init [--yes] [--force] | doctor | jobs-index [--check]
          validate-job <folder> [--offline] | diff-job <job>
          check {syntax|job-defs|deps|architecture|docs} <paths>
          new-job <ticket> "<name>" | gen-agents

Status

Alpha. Publishing is gated on a security/leak review — see docs/PUBLISHING.md.

MIT licensed.

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

jobwright-0.1.0.tar.gz (80.9 kB view details)

Uploaded Source

Built Distribution

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

jobwright-0.1.0-py3-none-any.whl (58.9 kB view details)

Uploaded Python 3

File details

Details for the file jobwright-0.1.0.tar.gz.

File metadata

  • Download URL: jobwright-0.1.0.tar.gz
  • Upload date:
  • Size: 80.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jobwright-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e2f7da658e955eae69c86ab2626ff168fe4ed61e87328333a0f7d018feaae392
MD5 98d360b6b7a52e98a1c5f34442b80e10
BLAKE2b-256 dffce0acc58695566ec22fbce81c293e9b3a992fb97af3df990db6616e16e54d

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobwright-0.1.0.tar.gz:

Publisher: publish.yml on kyle-chalmers/jobwright

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jobwright-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jobwright-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 58.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jobwright-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31bd0c6b454768bb0e9bf9d108ae2cb27a6187af030210929dbb113e34e079ed
MD5 0b6552e175b5011bc0052e311b987696
BLAKE2b-256 0fcd5f6046b9be9dd00a5ff68ed956d438e39201e31de4bae64aea7d15be44d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobwright-0.1.0-py3-none-any.whl:

Publisher: publish.yml on kyle-chalmers/jobwright

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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