# indxdev/jevlint architecture

> Architecture diagram of the GitHub repository indxdev/jevlint, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/indxdev/jevlint
- Repository: https://github.com/indxdev/jevlint

## Overview

jevlint is a model-based code-quality linter: it combines measurable AST findings with model judgments, scores and ranks files, and supports change reviews and agent-assisted fixes. It also offers architecture reviews and document-to-code specification checks. The graph preserves those documented product branches; edges are limited to relationships visible in excerpts, SOURCE INDEX references, or the README, so some unsampled command and integration wiring is omitted.

Main entry points: [`src/audit.ts`](https://github.com/indxdev/jevlint/blob/main/src/audit.ts) (Repository audit), [`src/decision/decide.ts`](https://github.com/indxdev/jevlint/blob/main/src/decision/decide.ts) (Model decisions), [`src/commands/shared.ts`](https://github.com/indxdev/jevlint/blob/main/src/commands/shared.ts) (Shared commands), [`src/architecture/review.ts`](https://github.com/indxdev/jevlint/blob/main/src/architecture/review.ts) (Architecture review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User workflows"]
  node_cli["CLI entry<br/>[cli.ts]"]
  node_shared["Shared commands<br/>[shared.ts]"]
  node_config["Configuration<br/>[config.ts]"]
  node_presets["Presets and rules<br/>[presets.ts]"]
  node_agent["Coding agent<br/>[agent.ts]"]
end

subgraph group_analysis["Audit and scoring"]
  node_audit["Repository audit<br/>[audit.ts]"]
  node_files["Source discovery<br/>[files.ts]"]
  node_git["Git churn<br/>[git.ts]"]
  node_ast["AST analysis<br/>[analyze.ts]"]
  node_languages["Language grammars<br/>[languages.ts]"]
  node_generic["Generic metrics<br/>[generic.ts]"]
  node_scoring["Score calculation<br/>[scoring.ts]"]
  node_report["Audit reporting<br/>[report.ts]"]
end

subgraph group_models["Judgment and caching"]
  node_decide["Model decisions<br/>[decide.ts]"]
  node_providers["Model providers<br/>[providers.ts]"]
  node_cache[("Local decision cache<br/>[cache.ts]")]
  node_remote[("Shared cache<br/>[remote-cache.ts]")]
end

subgraph group_changes["Change and architecture review"]
  node_review["Change review<br/>[review.ts]"]
  node_architecture["Architecture review<br/>[review.ts]"]
  node_extract["Module extraction<br/>[extract.ts]"]
  node_structure["Dependency structure<br/>[structure.ts]"]
end

subgraph group_specs["Specification checks"]
  node_specload["Spec loading<br/>[load.ts]"]
  node_speccheck["Spec checks<br/>[check.ts]"]
  node_specdrift["Spec drift<br/>[drift.ts]"]
  node_specprompt["Spec prompt<br/>[prompt.ts]"]
end

node_user(("Developer"))

node_user -->|"runs commands"| node_cli
node_cli -.->|"dispatches audit"| node_audit
node_shared -->|"runs audit"| node_audit
node_shared -->|"loads config"| node_config
node_shared -->|"checks model"| node_providers
node_shared -->|"launches agent"| node_agent
node_audit -->|"discovers files"| node_files
node_audit -->|"gets churn"| node_git
node_audit -->|"loads questions"| node_presets
node_audit -->|"analyzes source"| node_ast
node_audit -->|"uses fallback metrics"| node_generic
node_audit -->|"requests judgments"| node_decide
node_audit -->|"resolves model"| node_providers
node_audit -->|"combines scores"| node_scoring
node_ast -->|"uses language specs"| node_languages
node_ast -->|"uses AST scoring"| node_scoring
node_decide -->|"uses resolved model"| node_providers
node_decide -->|"looks up results"| node_cache
node_decide -->|"reads and writes"| node_remote
node_providers -.->|"calls configured provider"| node_user
node_review -->|"audits changed files"| node_audit
node_review -->|"reads change history"| node_git
node_architecture -->|"extracts modules"| node_extract
node_architecture -->|"builds structure"| node_structure
node_architecture -->|"scores subjects"| node_decide
node_architecture -->|"loads perspectives"| node_presets
node_extract -->|"uses AST analysis"| node_ast
node_specprompt -->|"creates compile prompt"| node_user
node_speccheck -->|"loads checklist"| node_specload
node_speccheck -->|"checks repository files"| node_files
node_speccheck -->|"scores findings"| node_scoring
node_specdrift -->|"loads checklist"| node_specload
node_specdrift -->|"reads repository files"| node_files

click node_cli "https://github.com/indxdev/jevlint/blob/main/src/cli.ts"
click node_shared "https://github.com/indxdev/jevlint/blob/main/src/commands/shared.ts"
click node_config "https://github.com/indxdev/jevlint/blob/main/src/config.ts"
click node_presets "https://github.com/indxdev/jevlint/blob/main/src/presets.ts"
click node_audit "https://github.com/indxdev/jevlint/blob/main/src/audit.ts"
click node_files "https://github.com/indxdev/jevlint/blob/main/src/files.ts"
click node_git "https://github.com/indxdev/jevlint/blob/main/src/git.ts"
click node_ast "https://github.com/indxdev/jevlint/blob/main/src/ast/analyze.ts"
click node_languages "https://github.com/indxdev/jevlint/blob/main/src/ast/languages.ts"
click node_generic "https://github.com/indxdev/jevlint/blob/main/src/ast/generic.ts"
click node_scoring "https://github.com/indxdev/jevlint/blob/main/src/scoring.ts"
click node_report "https://github.com/indxdev/jevlint/blob/main/src/report.ts"
click node_decide "https://github.com/indxdev/jevlint/blob/main/src/decision/decide.ts"
click node_providers "https://github.com/indxdev/jevlint/blob/main/src/decision/providers.ts"
click node_cache "https://github.com/indxdev/jevlint/blob/main/src/cache.ts"
click node_remote "https://github.com/indxdev/jevlint/blob/main/src/remote-cache.ts"
click node_review "https://github.com/indxdev/jevlint/blob/main/src/review.ts"
click node_architecture "https://github.com/indxdev/jevlint/blob/main/src/architecture/review.ts"
click node_extract "https://github.com/indxdev/jevlint/blob/main/src/architecture/extract.ts"
click node_structure "https://github.com/indxdev/jevlint/blob/main/src/architecture/structure.ts"
click node_specload "https://github.com/indxdev/jevlint/blob/main/src/spec/load.ts"
click node_speccheck "https://github.com/indxdev/jevlint/blob/main/src/spec/check.ts"
click node_specdrift "https://github.com/indxdev/jevlint/blob/main/src/spec/drift.ts"
click node_specprompt "https://github.com/indxdev/jevlint/blob/main/src/spec/prompt.ts"
click node_agent "https://github.com/indxdev/jevlint/blob/main/src/agent.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_shared,node_config,node_presets,node_agent toneBlue
class node_audit,node_files,node_git,node_ast,node_languages,node_generic,node_scoring,node_report toneAmber
class node_decide,node_providers,node_cache,node_remote toneMint
class node_review,node_architecture,node_extract,node_structure toneRose
class node_specload,node_speccheck,node_specdrift,node_specprompt,node_user toneIndigo
```

## Components

### User workflows

- [CLI entry](https://github.com/indxdev/jevlint/blob/main/src/cli.ts): `src/cli.ts`
- [Shared commands](https://github.com/indxdev/jevlint/blob/main/src/commands/shared.ts): `src/commands/shared.ts`
- [Configuration](https://github.com/indxdev/jevlint/blob/main/src/config.ts): `src/config.ts`
- [Presets and rules](https://github.com/indxdev/jevlint/blob/main/src/presets.ts): `src/presets.ts`
- [Coding agent](https://github.com/indxdev/jevlint/blob/main/src/agent.ts): `src/agent.ts`

### Audit and scoring

- [Repository audit](https://github.com/indxdev/jevlint/blob/main/src/audit.ts): `src/audit.ts`
- [Source discovery](https://github.com/indxdev/jevlint/blob/main/src/files.ts): `src/files.ts`
- [Git churn](https://github.com/indxdev/jevlint/blob/main/src/git.ts): `src/git.ts`
- [AST analysis](https://github.com/indxdev/jevlint/blob/main/src/ast/analyze.ts): `src/ast/analyze.ts`
- [Language grammars](https://github.com/indxdev/jevlint/blob/main/src/ast/languages.ts): `src/ast/languages.ts`
- [Generic metrics](https://github.com/indxdev/jevlint/blob/main/src/ast/generic.ts): `src/ast/generic.ts`
- [Score calculation](https://github.com/indxdev/jevlint/blob/main/src/scoring.ts): `src/scoring.ts`
- [Audit reporting](https://github.com/indxdev/jevlint/blob/main/src/report.ts): `src/report.ts`

### Judgment and caching

- [Model decisions](https://github.com/indxdev/jevlint/blob/main/src/decision/decide.ts): `src/decision/decide.ts`
- [Model providers](https://github.com/indxdev/jevlint/blob/main/src/decision/providers.ts): `src/decision/providers.ts`
- [Local decision cache](https://github.com/indxdev/jevlint/blob/main/src/cache.ts): `src/cache.ts`
- [Shared cache](https://github.com/indxdev/jevlint/blob/main/src/remote-cache.ts): `src/remote-cache.ts`

### Change and architecture review

- [Change review](https://github.com/indxdev/jevlint/blob/main/src/review.ts): `src/review.ts`
- [Architecture review](https://github.com/indxdev/jevlint/blob/main/src/architecture/review.ts): `src/architecture/review.ts`
- [Module extraction](https://github.com/indxdev/jevlint/blob/main/src/architecture/extract.ts): `src/architecture/extract.ts`
- [Dependency structure](https://github.com/indxdev/jevlint/blob/main/src/architecture/structure.ts): `src/architecture/structure.ts`

### Specification checks

- [Spec loading](https://github.com/indxdev/jevlint/blob/main/src/spec/load.ts): `src/spec/load.ts`
- [Spec checks](https://github.com/indxdev/jevlint/blob/main/src/spec/check.ts): `src/spec/check.ts`
- [Spec drift](https://github.com/indxdev/jevlint/blob/main/src/spec/drift.ts): `src/spec/drift.ts`
- [Spec prompt](https://github.com/indxdev/jevlint/blob/main/src/spec/prompt.ts): `src/spec/prompt.ts`

### Other components

- **Developer**

## Connections

- Developer → CLI entry: runs commands (evidence: `README.md`)
- CLI entry → Repository audit: dispatches audit
- Shared commands → Repository audit: runs audit (evidence: `src/commands/shared.ts`)
- Shared commands → Configuration: loads config (evidence: `src/commands/shared.ts`)
- Shared commands → Model providers: checks model (evidence: `src/commands/shared.ts`)
- Shared commands → Coding agent: launches agent (evidence: `src/commands/shared.ts`)
- Repository audit → Source discovery: discovers files (evidence: `src/audit.ts`)
- Repository audit → Git churn: gets churn (evidence: `src/audit.ts`)
- Repository audit → Presets and rules: loads questions (evidence: `src/audit.ts`)
- Repository audit → AST analysis: analyzes source (evidence: `src/audit.ts`)
- Repository audit → Generic metrics: uses fallback metrics (evidence: `src/audit.ts`)
- Repository audit → Model decisions: requests judgments (evidence: `src/audit.ts`)
- Repository audit → Model providers: resolves model (evidence: `src/audit.ts`)
- Repository audit → Score calculation: combines scores (evidence: `src/audit.ts`)
- AST analysis → Language grammars: uses language specs (evidence: `src/ast/analyze.ts`)
- AST analysis → Score calculation: uses AST scoring (evidence: `src/ast/analyze.ts`)
- Model decisions → Model providers: uses resolved model (evidence: `src/decision/decide.ts`)
- Model decisions → Local decision cache: looks up results (evidence: `src/decision/decide.ts`)
- Model decisions → Shared cache: reads and writes (evidence: `src/decision/decide.ts`)
- Model providers → Developer: calls configured provider
- Change review → Repository audit: audits changed files (evidence: `src/review.ts`)
- Change review → Git churn: reads change history (evidence: `src/review.ts`)
- Architecture review → Module extraction: extracts modules (evidence: `src/architecture/review.ts`)
- Architecture review → Dependency structure: builds structure (evidence: `src/architecture/review.ts`)
- Architecture review → Model decisions: scores subjects (evidence: `src/architecture/review.ts`)
- Architecture review → Presets and rules: loads perspectives (evidence: `src/architecture/review.ts`)
- Module extraction → AST analysis: uses AST analysis (evidence: `src/architecture/extract.ts`)
- Spec prompt → Developer: creates compile prompt (evidence: `README.md`)
- Spec checks → Spec loading: loads checklist (evidence: `src/spec/check.ts`)
- Spec checks → Source discovery: checks repository files (evidence: `src/spec/check.ts`)
- Spec checks → Score calculation: scores findings (evidence: `src/spec/check.ts`)
- Spec drift → Spec loading: loads checklist (evidence: `src/spec/drift.ts`)
- Spec drift → Source discovery: reads repository files (evidence: `src/spec/drift.ts`)
