Skip to main content

Dextora

A Python CLI toolkit for diagnosing project setup, dependencies, environment configuration, and common development issues.

Note: Dextora was formerly developed under the initial development name KLYRO.

Dextora helps developers instantly answer three questions:

  1. What is wrong with my project setup?
  2. Why is it happening?
  3. How can I fix it?

Features & Core Capabilities

  • Intelligent Project & Framework Classification:
    • Python: Recognizes Django, FastAPI, Flask, and standard Python projects based on declared dependencies and manifests.
    • JavaScript / TypeScript: Recognizes Vue, Nuxt, Svelte, SvelteKit, Angular, Astro, Next.js, React, and generic Node.js projects.
    • Fullstack Combinations: Identifies combined backend/frontend architectures (e.g. Fullstack (FastAPI + Next.js), Fullstack (Django + React)).
    • Preserves base types for generic directories and unrecognized structures.
  • Root-Cause Analysis Engine: Deterministically identifies causal relationships among diagnostic findings (e.g. merge conflicts causing parser errors, missing .gitignore causing tracked secrets) and groups them with clear confidence levels (confirmed vs probable) without deleting or altering underlying findings.
  • Context-Aware Remediation: Provides exact, safe remediation commands tailored to the detected package manager (pnpm, yarn, bun, npm, poetry, pipenv, pip) and marks complex migrations as requiring manual review.
  • Python Environment Verification: Detects standard virtual environments (.venv, venv, env), verifies interpreter executables, checks Python version compatibility (requires-python), and checks site-packages status.
  • Dependency Diagnostics: Detects missing lockfiles (Pipfile without Pipfile.lock), orphaned lockfiles (poetry.lock without pyproject.toml), conflicting package managers, duplicate dependencies, and unpinned packages in requirements.txt.
  • Environment & Secret Safety: Validates .env variables against .env.example/.env.sample templates without ever reading, logging, or exposing secret values in findings, remediations, or JSON outputs.
  • Version Control Diagnostics: Detects Git status, .gitignore presence and coverage, unmerged Git conflict markers (<<<<<<<), and verifies whether sensitive files are tracked by Git.
  • JavaScript/TypeScript Diagnostics: Detects package.json syntax errors, flags conflicting lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb), and checks lockfile presence with packageManager field awareness.
  • Strict Read-Only Safety: Diagnostic commands never modify scanned files, never execute arbitrary project scripts, never execute suggested remediation commands, and safely bypass ignored directories (.git, node_modules, .venv, dist, build, caches).

Implemented Diagnostic Codes

Code Severity Description
STR000 ERROR Target path does not exist or is not a directory
STR001 WARNING Scanned directory is empty
STR002 SUCCESS Standard project manifest detected
STR003 INFO Generic directory without standard manifest
PY000 SUCCESS Active virtual environment located
PY001 WARNING No Python virtual environment found in standard locations
PY002 WARNING Incomplete or broken virtual environment
PY003 WARNING Running Python version does not satisfy project requirement
PY004 INFO Virtual environment exists but site-packages appears empty
DEP001 WARNING Pipfile found without corresponding Pipfile.lock
DEP002 ERROR Orphaned poetry.lock found without pyproject.toml
DEP004 WARNING Conflicting dependency managers detected (Pipenv + Poetry)
DEP005 INFO Multiple dependency definitions present (Pipfile + requirements.txt)
DEP006 ERROR Malformed pyproject.toml TOML syntax
DEP007 WARNING Malformed requirement or duplicate packages in requirements.txt
DEP008 INFO Unpinned dependencies detected in requirements.txt
DEP009 WARNING pyproject.toml lacks standard build-system or project tables
ENV000 SUCCESS .env variables fully synchronized with template
ENV001 WARNING .env.example template present but .env is missing
ENV002 WARNING Missing environment variables declared in template
ENV003 WARNING Malformed .dextora.toml syntax
ENV004 SUCCESS Valid .dextora.toml loaded
GIT000 INFO Target directory is not a Git repository
GIT001 WARNING No .gitignore file found in Git repository
GIT002 WARNING .env exists but is not listed in .gitignore
GIT003 ERROR Sensitive file tracked in Git index
GIT004 INFO Git author identity (user.name/user.email) not configured
GIT005 ERROR Unresolved Git merge conflict markers detected
JS000 SUCCESS Consistent JavaScript package manager lockfile detected
JS001 ERROR Malformed package.json syntax
JS002 WARNING Multiple conflicting JavaScript lockfiles detected
JS003 INFO package.json has dependencies but no lockfile found

Installation & Setup

Prerequisites

  • Python 3.11 or newer

Local Development Setup (Windows PowerShell)

# 1. Clone or navigate to the repository
cd D:\KLYRO

# 2. Create a virtual environment
python -m venv .venv

# 3. Activate the virtual environment
.\.venv\Scripts\Activate.ps1

# 4. Install Dextora in editable mode with development dependencies
pip install -e ".[dev]"

Once installed, the dextora command is available in your shell. You can also run it directly via python -m dextora.


CLI Usage & Commands

dextora --help

Displays command overview, flags, and usage examples:

dextora --help

dextora --version

Displays installed Dextora version:

dextora --version

dextora doctor

Scans the current working directory:

dextora doctor

dextora doctor <path>

Scans a specific target project without modifying its contents:

dextora doctor C:\Users\dev\my-app

dextora doctor [path] --json

Outputs clean, machine-readable JSON (ideal for CI pipelines and scripts):

dextora doctor --json

dextora doctor [path] --strict

Exits with code 1 if any WARNING or ERROR findings are discovered (default exits 1 on ERROR only).

dextora doctor --strict

dextora init [path]

Initializes a minimal .dextora.toml configuration in the project. Refuses to overwrite existing configuration without --force:

dextora init
# Or overwrite existing:
dextora init --force

Sample Outputs

Terminal Output (dextora doctor)

+------------------------------------------------+
| Dextora v0.1.0 - Developer Diagnostics Toolkit |
| Target:       D:\Projects\sample-app           |
| Project Type: Python                           |
| Checks Run:   6                                |
+------------------------------------------------+

>>> WARNINGS (2)
----------------------------------------
[PY001] No Python virtual environment detected
  Why:      Python projects should use an isolated virtual environment to prevent dependency pollution.
  Evidence: Looked for: .venv, venv, env in project root.
  Fix:      Create a virtual environment with 'python -m venv .venv' and activate it.

[ENV001] Environment template '.env.example' present but '.env' is missing (.env.example)
  Why:      The project provides '.env.example' as an environment template, but no local '.env' file was found.
  Evidence: Template: .env.example
  Fix:      Copy '.env.example' to '.env' and fill in the required local configuration values.

>>> SUCCESSES (1)
----------------------------------------
[STR002] Project manifest detected (pyproject.toml)
  Why:      Identified Python project configuration manifests.
  Evidence: pyproject.toml
  Fix:      No action required.

 Diagnostic Summary
  Severity    Count
  Errors          0
  Warnings        2
  Info            0
  Passed          1

[!] Scan completed with 2 warning(s). Review the suggestions above.

Machine-Readable JSON Output (dextora doctor --json)

{
  "version": "0.1.0",
  "target_path": "D:\\Projects\\sample-app",
  "project_type": "Python",
  "checks_run": 6,
  "summary": {
    "ERROR": 0,
    "WARNING": 2,
    "INFO": 0,
    "SUCCESS": 1
  },
  "findings": [
    {
      "code": "PY001",
      "severity": "WARNING",
      "title": "No Python virtual environment detected",
      "explanation": "Python projects should use an isolated virtual environment to prevent dependency pollution.",
      "evidence": "Looked for: .venv, venv, env in project root.",
      "fix": "Create a virtual environment with 'python -m venv .venv' and activate it.",
      "file_path": null
    },
    {
      "code": "ENV001",
      "severity": "WARNING",
      "title": "Environment template '.env.example' present but '.env' is missing",
      "explanation": "The project provides '.env.example' as an environment template, but no local '.env' file was found.",
      "evidence": "Template: .env.example",
      "fix": "Copy '.env.example' to '.env' and fill in the required local configuration values.",
      "file_path": ".env.example"
    },
    {
      "code": "STR002",
      "severity": "SUCCESS",
      "title": "Project manifest detected",
      "explanation": "Identified Python project configuration manifests.",
      "evidence": "pyproject.toml",
      "fix": "No action required.",
      "file_path": "pyproject.toml"
    }
  ]
}

Supported Frameworks & Ecosystems

Dextora uses declared dependencies, manifests, and lockfiles to reliably classify projects:

Ecosystem Detected Types & Frameworks Evidence Required
Python Django django in pyproject.toml, requirements.txt, or Pipfile
Python FastAPI fastapi in pyproject.toml, requirements.txt, or Pipfile
Python Flask flask in pyproject.toml, requirements.txt, or Pipfile
Python Python (Generic) pyproject.toml, requirements.txt, or Pipfile without specialized frameworks
JavaScript / TypeScript Next.js next dependency in package.json
JavaScript / TypeScript React react dependency in package.json
JavaScript / TypeScript Nuxt nuxt dependency in package.json
JavaScript / TypeScript Vue vue dependency in package.json
JavaScript / TypeScript SvelteKit @sveltejs/kit dependency in package.json
JavaScript / TypeScript Svelte svelte dependency in package.json
JavaScript / TypeScript Angular @angular/core dependency in package.json
JavaScript / TypeScript Astro astro dependency in package.json
JavaScript / TypeScript Node.js (Generic) package.json without frontend framework dependencies
Fullstack Composite (e.g. Fullstack (FastAPI + Next.js)) Both Python and JavaScript framework manifests present
Other Rust, Go Cargo.toml, go.mod manifests
Generic Generic / Unknown Directories without recognized manifests or empty directories

Known Limitations

  • Offline-Only Analysis: Dextora performs static local analysis and does not connect to PyPI, npm, or external networks to resolve transitive dependency trees.
  • Root-Level Monorepos: Dextora primarily targets the root project directory and immediate components. Deeply nested workspace packages (e.g., Turborepo or nested multi-package monorepos) are classified from their top-level manifest rather than traversed independently.
  • Static Pattern Matching: Environment verification checks .env and .env.example keys; dynamic environment resolution injected at runtime by remote secret managers (e.g. AWS Secrets Manager, HashiCorp Vault) is outside Dextora's local static scope.

Safety Model

  1. Read-Only: Diagnostic commands (doctor) never alter project files or directory structure.
  2. Secret Privacy: Secret values from .env files are never parsed into memory for display, logged, or included in diagnostic evidence. Only variable names are compared.
  3. No Execution: Project scripts, hooks, or package installation commands are never executed during scanning.
  4. Filesystem Boundaries: Directory traversal does not follow symlinks outside target root, and skips directories known to contain large generated files (.git, node_modules, .venv, caches).
  5. Deterministic: Diagnostics produce predictable, deterministic findings based strictly on file presence and parsed content.

Development & Testing

Running Tests

Run the full pytest suite:

.\.venv\Scripts\python.exe -m pytest -v

Building the Package

To build source distribution (sdist) and binary wheel (wheel):

.\.venv\Scripts\python.exe -m build

Artifacts are produced in the dist/ directory.


Community & Contributing

  • Contributing: Please review CONTRIBUTING.md for contribution workflows and development setup.
  • Changelog: See CHANGELOG.md for release notes.
  • Security Policy: See SECURITY.md for vulnerability reporting procedures.
  • License: MIT License. See LICENSE for details.

Metadata

Release files for dextora 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dextora 0.1.0
File Size Uploaded Provenance Actions
dextora-0.1.0.tar.gz 42.4 kB With provenance Details for dextora-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dextora 0.1.0
File Interpreter ABI Platform Actions
dextora-0.1.0-py3-none-any.whl Python 3 none any Details for dextora-0.1.0-py3-none-any.whl

Total release size: 76.4 kB

Release files / dextora-0.1.0.tar.gz

Download URL dextora-0.1.0.tar.gz
Size 42.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a5238207fe4b5aa89b46e17add656d9693d79a497a69028dcfb02117e087b95e
BLAKE2b-256 checksum
How to use checksums
9df0791fb4314c4226e30bd2e2043eeb87a26cde10c005cec31b069d32d1a2c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / dextora-0.1.0-py3-none-any.whl

Download URL dextora-0.1.0-py3-none-any.whl
Size 34.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4f2a6999372ea01faa2c0b71f6690cd8371f1c9d6f2d74833e3aeac5a8a6828
BLAKE2b-256 checksum
How to use checksums
ff240bd5ed177377d989076d021b1ae5d0077664abf7161d244832f657d5b3c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for dextora 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dextora-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page