Tooling-first semantic platform for Overwatch Workshop.
An independent, standalone Rust toolchain for the Overwatch Workshop and OverPy ecosystem. Fast compiler, static linter, language server, and embedding APIs for developers, CI, and AI agents with zero runtime dependencies.
curl -fsSL https://raw.githubusercontent.com/wrightkit/wright/main/install.sh | bash$ wright lint src/hero.opywarning[expensive-loop-check]: geometry predicate in loop body --> src/hero.opy:24:9 |24 | while @hero.is_in_view(target): | ^^^^^^^^^^^^^^^^^^^^^^^^ = = note: evaluated on each iteration; may spike server load = rule: expensive-loop-check (stability)$ wright compile src/hero.opy -o dist/hero.txt✓ compiled 12 rules, 4 subroutines (0.018s) wright lint: static analysis with stable diagnostic codes and exact source spans.
Install Wright
Standalone wright and wright-lsp binaries for macOS, Linux, and Windows. Zero runtime dependencies — no Node.js, .NET, or external interpreters required.
brew tap wrightkit/tap
brew install wrightkit/tap/wright Installs wright and wright-lsp to your path with verified checksums.
curl -fsSL https://raw.githubusercontent.com/wrightkit/wright/main/install.sh | bashFeatures
Developer tooling — linting, diagnostics, semantic queries, editor assistance, and safe source transformations — as first-class product surfaces.
High-Performance Compiler
Compile .opy source scripts and Workshop text to optimized, localized Workshop code with deterministic output.
wright compile input.opy First-Class Static Linting
Static stability and performance analysis with configurable rules: min-wait-loop, duplicate-condition, expensive-loop-check, repeated-value, and while-without-wait.
wright lint input.opy Deterministic Diagnostics
Structured errors, warnings, and exact source spans surfaced in human-readable terminal format and machine-readable wright-result/v1 JSON.
wright check input.opy --format json Language Server (wright-lsp)
Lightweight LSP providing hover documentation, definition navigation, reference searches, project-wide identifier rename, and semantic syntax highlighting.
wright-lsp Semantic Analysis & CFG
Inspect structural models, rules, symbols, variable assignments, subroutine dependencies, and control-flow graphs.
wright analyze input.opy Embedding & Agent Tooling
Session-based driver (wright-driver) with stdio/JSON-RPC adapters (wright-serve) enabling programmatic inspection and verified refactoring.
cat input.opy | wright lint - Ecosystem Compatibility
Vanilla Workshop text is the canonical interoperability boundary and conversion hub.
Vanilla Workshop
SupportedCanonical target & interoperability layer
Native parser, localized catalog (catalog.json), validation, and deterministic emitter (wright-workshop). Supports rules, actions, values, events, enums, variables, subroutines, and custom-game-settings.
OPY / OverPy
SupportedNative compatible semantic frontend
Native Rust parser (wright-opy), preprocessor (#!include, #!define), macro expansion, declarations, expressions, enums, custom-game-settings JSONC blocks, and lowering to Wright HIR and Workshop IR.
OSTW
PlannedFuture compatible semantic frontend
Planned OSTW frontend mapping into Wright HIR/WIR for standalone compilation, linting, analysis, and language services under clean-room isolation (ADR-0008).
Four-Level S/D/N/E Verification Model
Compiler compatibility is rigorously evidenced under a prioritized verification framework:
Agrees on accepting valid inputs and rejecting unsupported syntax across the corpus.
Reports structured diagnostic categories, codes, and accurate source spans for diagnosed inputs.
Produces equivalent Workshop output under versioned normalization.
High-risk runtime semantics are verified against repeatable behavioral scenarios.
System Architecture
Wright processes source code through a modular, owned pipeline with zero third-party AST leaks.
Owned Frontends
Parse .opy or Workshop text into typed representations with full source provenance.
crates/wright-opy · crates/wright-workshop
Wright HIR & WIR
Frontend-independent High-Level Intermediate Representation and target-oriented Workshop IR.
crates/wright-core · crates/wright-ir
Semantic Layer
Symbol resolution, control-flow graph (CFG) construction, reference indexing, and lint evaluation.
crates/wright-analyzer
Downstream Tooling
Deterministic Workshop text compiler, language server (LSP), and session driver with JSON-RPC.
crates/wright-lsp · crates/wright-driver · crates/wright-cli
The same interface for people and agents
If a developer can ask the tooling a question, a coding agent can ask it through the same JSON contract. No scraped logs or brittle regexes.
Structured interfaces
Transport-neutral request/response (wright-result/v1) for program summaries, rules, symbols, references, usage, control flow, and findings.
Deterministic output
Equal inputs, configuration, and toolchain produce the exact same IR, diagnostics, and snapshots.
Machine-readable diagnostics
Errors and findings carry stable codes, severity levels, and source spans so an agent or IDE can act without parsing prose.
Clean-room & reproducible checks
Isolated reference oracles, fixture corpora, and regenerable snapshots keep compatibility claims verifiable.
Open Source
Wright is open source under the AGPL-3.0-or-later license. All code, releases, and distribution packages are publicly hosted on GitHub.
- wrightkit/wright
Main compiler, linter, LSP, and CLI toolchain repository
- wrightkit/tap
Homebrew tap for macOS
- wrightkit/scoop-bucket
Scoop bucket for Windows
- workshop-md-converter
Converts the Workshop.code wiki into Markdown