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.2.tar.gz (368.2 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.2-py3-none-any.whl (81.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opskit-0.1.2.tar.gz
  • Upload date:
  • Size: 368.2 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.2.tar.gz
Algorithm Hash digest
SHA256 080457f1160fc5d44953e2804a25a46446dd12b35118ea7dbe502577f2653907
MD5 6c978da26cddfdbf7e5c5d402c167a5f
BLAKE2b-256 39bc59c4edbfe7532e197b0d83570c14f88e34958a0a8f3eccd434c6f9a57a67

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opskit-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7186b6ee55b08a247cebd65f94553496fd62b760a77658490139dd1d659fab0c
MD5 54b7f5dc8a56a2357b564fd75b7a01eb
BLAKE2b-256 339e553a246cbec5f9142e008699c7734762677a60abb61d8f1b1492c2af72bf

See more details on using hashes here.

Provenance

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