ignition-scriptinglisted
Install: claude install-skill aimerfan/ignition-skills
# Ignition Scripting (Jython)
Ignition scripts run on **Jython 2.7** in one of four scopes. The single most common bug is "the script works in Designer but breaks at runtime" — almost always because the developer didn't pick the right scope for the work. This skill exists so that what Copilot produces lands in the correct scope, doesn't block UI threads, doesn't rely on Python-3 features Jython lacks, and doesn't ship SQL-injection vectors.
## Critical precondition — pick the scope first
**Before writing a single line of script, decide which scope it runs in.** The scope determines:
- Which `system.*` functions are available (and which silently no-op).
- Whether blocking is acceptable (gateway: yes, session: no — it freezes the user's tab).
- Which identity the code runs as (gateway service account vs. logged-in user).
- Whether shared library state survives across calls (yes in gateway; per-session in Perspective).
If you're writing the script and the user hasn't said the scope, **ask before writing**. Inferring is the wrong move — a script that "looks like" it should run in the gateway often actually wants to be a session message handler, and the difference shows up only in production.
The full mental model lives in [knowledge/ignition/scope-semantics.md](../../knowledge/ignition/scope-semantics.md). The summary table below is a quick reference for routing.
## Scope decision matrix
| If the script's job is… | It almost always belongs in scope |
|---|---|
| React to