Skip to main content

Cross-platform diagnostics for engineers — one toolkit, every OS.

Project description

opskit

Cross-platform diagnostics for engineers — one toolkit, every OS.

CI CodeQL OpenSSF Scorecard OpenSSF Best Practices Quality Gate Status Known Vulnerabilities Reviewed by CodeRabbit License: MIT Python

opskit gives engineers, developers, and operations teams one consistent set of read-only troubleshooting commands that behave identically on Windows, macOS, and Linux — so you stop juggling nslookup vs dig vs PowerShell cmdlets. It's a CLI and an importable Python library, is pure-Python (nothing to shell out to), and never phones home.

⚠️ Early development. Ships DNS and TLS diagnostics today; network / AD categories follow.


Contents


Install

pip install opskit            # once published
# or, from source:
git clone https://github.com/Prabhakar-cg/opskit && cd opskit
uv sync                       # or: pip install -e .

Everything lives under a single command; each category is a sub-command group:

opskit --help                 # top-level help
opskit dns --help             # the DNS command group
opskit dns lookup --help      # a specific command (grouped options + examples)

Commands

Each command group is self-contained and documented in its own README next to the code:

Command group What it does Docs
opskit dns Read-only DNS diagnostics — forward/reverse lookups, multi-resolver diff, iterative trace, watch dns/README.md
opskit tls TLS verification — layered endpoint checks, certificate/chain inspection, expiry warnings, private-PKI trust tls/README.md
opskit net Network reachability (TCP connect, port checks) — the connect primitive already ships as the opskit.net library planned
opskit ad Directory (LDAP/AD) queries planned

Quick taste of the DNS group:

opskit dns lookup example.com                    # A records, pretty table
opskit dns lookup example.com --all              # every common record type at once
opskit dns reverse 8.8.8.8                       # PTR (IP → hostname)
opskit dns lookup example.com --diff -s 1.1.1.1 -s 8.8.8.8   # compare resolvers

See the DNS command reference for every option, mode, and the importable Python API.

Why opskit

  • One tool, every OS. Identical behavior and output on Windows, macOS, and Linux — no more remembering which flag nslookup uses versus dig versus Resolve-DnsName.
  • CLI and library. Every capability is importable, typed, and API-first; the CLI is a thin client over it. Ships py.typed.
  • Scriptable by design. A stable, versioned --json envelope, NDJSON --jsonl, and structured exit codes make it safe to build automation on.
  • Read-only & private. Only performs the diagnostic you asked for; no telemetry, no phoning home, no offensive/abuse features.

Output & exit codes

Every command shares one output contract:

  • Human (default): colorized tables, auto-plain when piped; honors NO_COLOR and --no-color.
  • --json: a stable, versioned envelope (schema_version, command, query, result, error, elapsed_ms); an array for batches.
  • --jsonl: NDJSON — one envelope per line, ideal for jq / streaming.
  • Exit codes are documented and scriptable (0 success, 2 usage error, 7 partial, plus category-specific codes). See each command's README for the full table.

Development

Built to a high bar: src/ layout, uv, Ruff, mypy --strict + pyright, pytest with ≥90% coverage, and a hardened CI/CD pipeline (see docs/PLAN.md and the project constitution in .specify/memory/constitution.md).

uv sync --extra dev
uv run opskit dns lookup example.com     # run the CLI
uv run ruff format --check . && uv run ruff check .   # format + lint
uv run mypy && uv run pyright                         # types
uv run pytest                            # tests (coverage ≥ 90%)

These are exactly the gates CI runs on every pull request — see .github/workflows/ci.yml.

Contributions go through PRs into a protected main (squash-merge, Conventional Commits).

Security

Report vulnerabilities privately — see SECURITY.md. Every PR is gated by a full scanner suite (pip-audit, Ruff S, CodeQL, secret scanning, dependency review, SonarCloud, Snyk).

License

MIT © prabhakar-cg. Provided as-is, without warranty.

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

opskit-0.1.1.tar.gz (295.1 kB view details)

Uploaded Source

Built Distribution

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

opskit-0.1.1-py3-none-any.whl (56.4 kB view details)

Uploaded Python 3

File details

Details for the file opskit-0.1.1.tar.gz.

File metadata

  • Download URL: opskit-0.1.1.tar.gz
  • Upload date:
  • Size: 295.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for opskit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 87af08c18943e660e1e1e438cc3dd0e3674c17040c5049ef9bfaf298f0ca8f8e
MD5 4bf9b50246d3880963b445bfa9afcb9e
BLAKE2b-256 b02dc05989c8619e9711ea372c5c2356e858b68cccecb47a8bb7c96210e5ec9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.1.tar.gz:

Publisher: release.yml on Prabhakar-cg/opskit

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

File details

Details for the file opskit-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: opskit-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 56.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for opskit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 173422a0cac597339ecd68f1c390ca4b76523c8faea938a512bb28401ff83fb8
MD5 a237d6255c2f2d9aaf16b30dcd5db3d2
BLAKE2b-256 5e644c12ca1a7a7779122d9b48b70a75254d101436ffc84a66f010b25390702c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.1-py3-none-any.whl:

Publisher: release.yml on Prabhakar-cg/opskit

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