For Overwatch Workshop and OverPy
Workshop code, checked.
Stop guessing where the server-load risks are. Wright statically analyzes Workshop and OverPy code and points every problem to a line.
curl -fsSL https://install.wrightkit.dev/wright/install.sh | bash $ wright lint rules.txtWARN lint 2 finding(s) across 6 rule(s)warning[min-wait-loop]: loop body waits at the workshop minimum rate; the loop runs at maximum frequency --> rules.txt:18:3info[expensive-loop-check]: geometry predicate evaluated inside a loop body may be expensive per iteration --> rules.txt:20:4Copy. Save. Check.
- 1
Copy from the game
Copy your rules or full game settings, the same way you would to share them.
- 2
Paste into a file
Save it as a text file, such as rules.txt. English and Chinese client code both work.
- 3
Run Wright
Each finding points to a line in the file. Fix it, then paste it back into the game.
wright lint rules.txt
What it catches.
Typos
A misspelled action or value, caught before you paste the code back.
Heall(Event Player, Null, 10);error[unknown-action]: unknown action spelling 'Heall'
While without Wait
A loop that never pauses can overload the server.
While(Is Alive(Event Player)); Heal(Event Player, Null, 10); End;warning[while-without-wait]: loop body contains no wait call
Waiting 0.016 seconds
The loop runs as fast as the game allows.
While(Is Alive(Event Player)); Wait(0.016, Ignore Condition); Heal(Event Player, Null, 10); End;warning[min-wait-loop]: loop body waits at the workshop minimum rate
Line of sight in a loop
A geometry check repeated on every pass can get expensive.
While(Is Alive(Event Player)); Wait(0.25, Ignore Condition); If(Is In Line of Sight(Event Player, Vector(0, 0, 0), Barriers Do Not Block LOS)); Heal(Event Player, Null, 10); End; End;info[expensive-loop-check]: geometry predicate evaluated inside a loop body
More tools.
Analyze
Your most complex rules and the variables most rules share.
wright analyzeInspect
Every rule, variable, and reference in a project.
wright inspectEditor
Errors as you type, plus go to definition, completion, and rename, in editors that support language servers. No VS Code extension yet.
wright-lspCI
Run Wright in GitHub Actions and findings show up on the pull request.
wright lint
Workshop, OverPy, and OSTW.
Workshop
SupportedFull native syntax. Code from the English or Chinese client works as is.
workshop-rsOverPy
PartialKeep your .opy files. Wright checks them and compiles them to Workshop, with output held to the original OverPy compiler.
opy-rsOSTW
In developmentdeltin-rs is in progress. Wright support follows.
deltin-rs
Built for coding agents, too.
JSON output
Add --format json to any command. One versioned schema.
Stable codes
Diagnostic codes, rule IDs, and exit codes an agent can rely on.
Agent Skill
Teach your agent Wright with the skill in wrightkit/skills.
- Request to change
- Checked edits
- Project queries
- Cost estimates
Get Wright.
wright and wright-lsp, in one install.
Homebrew
Apple silicon & Intelbrew install wrightkit/tap/wright Installs the released wright and wright-lsp binaries.
Installer script
curl -fsSL https://install.wrightkit.dev/wright/install.sh | bash Release archives and checksums for every platform are on the GitHub Releases page.