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/UDP port checks, ping-style probes, temporary metadata-only listener net/README.md
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.3.tar.gz (368.3 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.3-py3-none-any.whl (81.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opskit-0.1.3.tar.gz
  • Upload date:
  • Size: 368.3 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.3.tar.gz
Algorithm Hash digest
SHA256 d229d885fddc70d31bb30e2762594bed09b3025d7c5a85dcf300c52fbb7866c4
MD5 9635bf6b5228752872a140b1464fb5e6
BLAKE2b-256 e559369721e8a46d8302719fa45f5c17943335efefe910c74534d6922449b591

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: opskit-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 81.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5321daeb649476de43c3879ecb4243c660503afcc04296e68c17b97e1b1379e1
MD5 47333fa71117bb155caa3b5b458b50c2
BLAKE2b-256 6fbdc3961003ee5ccf44f62cd6dc081181d61943a9a8985990c3d0b132879bc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opskit-0.1.3-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