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 CodeRabbit Pull Request Reviews 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. v1 ships DNS diagnostics; network / TLS / 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.0.tar.gz (294.4 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.0-py3-none-any.whl (56.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opskit-0.1.0.tar.gz
  • Upload date:
  • Size: 294.4 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.0.tar.gz
Algorithm Hash digest
SHA256 6f84389d5b0f4d9036d7e1360b0b7748cc81b7901207a5356e8a06b1c00cf3ba
MD5 c25c0c6a0dca4daba1a683a605c6f602
BLAKE2b-256 2da7a4dffb7186a0b52730eb8973a68e8c04d98fc939fd04c8dc4619d32c670a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opskit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 56.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 61e7b97050727b418f238b1ef218a234219da47ddd2b1a47d5409eb76da546d4
MD5 1334907a4cb1dcf329895fc5e08d1452
BLAKE2b-256 bae0aa271c29b4e297768877b75d7ecd3d24694e4018ba0cd89f340f76e6daa5

See more details on using hashes here.

Provenance

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