Debug Playwright Prow
quay/quay
Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…
Executes Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything currently loaded and runs a function literally named go():Any[], instead of writing…
$ npx skills add finos/legend-engine --skill pure-lsp-go -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install finos/legend-engine pure-lsp-go --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .claude/skills/pure-lsp-go && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .claude/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-goType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add finos/legend-engine --skill pure-lsp-go -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install finos/legend-engine pure-lsp-go --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .agents/skills/pure-lsp-go && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .agents/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add finos/legend-engine --skill pure-lsp-go -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install finos/legend-engine pure-lsp-go --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .cursor/skills/pure-lsp-go && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .cursor/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/finos/legend-engine.git --path plugins/pure-dev/skills/pure-lsp-go--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add finos/legend-engine --skill pure-lsp-go -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install finos/legend-engine pure-lsp-go --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .gemini/skills/pure-lsp-go && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .gemini/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install finos/legend-engine pure-lsp-goInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add finos/legend-engine --skill pure-lsp-go -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .github/skills/pure-lsp-go && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .github/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add finos/legend-engine --skill pure-lsp-go -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install finos/legend-engine pure-lsp-go --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/legend-engine.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/pure-dev/skills/pure-lsp-go .opencode/skills/pure-lsp-go && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pure-lsp-go" agent skill from https://github.com/finos/legend-engine/tree/master/plugins/pure-dev/skills/pure-lsp-go into .opencode/skills/pure-lsp-go/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pure-lsp-go", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pure-lsp-goExecutes Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything currently loaded and runs a function literally named go():Any[], instead of writing…
Pure Lsp Go is an agent skill from finos/legend-engine. Executes Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything currently loaded and runs a function literally named go():Any[], instead of writing a full PCT/JUnit test just to try something out. Returns BOTH the function's return value (typed, in returnValue — primitives, enums and collections of those need no print()) and anything it printed (in output); only complex returns like a Class instance or Relation still need print(). Use whenever the user wants to…
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Unit testing. It works with JUnit. The licence is Apache-2.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e60ab67. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and pure).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pure Lsp Go loads about 1.8k tokens when it runs. Until then it costs about 184 tokens; SKILL.md has 856 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from finos/legend-engine at commit e60ab67, republished under its Apache-2.0 licence (© finos). 856 words, ~1,836 tokens.
.claude/skills/pure-lsp-go/SKILL.md (or your agent's skills folder).Requires a running bridge (pure-lsp health) — and never curl it, pure-lsp is the only
reliable client. See references/lsp-devloop-usage-rules.md for both, plus the welcome.pure and
database-setup conventions this skill assumes.
There's exactly one designated entry point: a function literally named go, with signature
go():Any[*] (or go():String[*] / go():String[1]). It's not "call any function with
arguments" — it's "run this one zero-argument function." To exercise your actual function with
specific inputs, write go() as a thin wrapper around it:
function myCustomFunction(x:Integer[1], y:Integer[1]):Integer[1]
{
$x + $y;
}
function go():Any[*]
{
print('result = ' + myCustomFunction(19, 23)->toString(), 1);
}Use the repo-root welcome.pure ($LEGEND_ENGINE_ROOT/welcome.pure) as the go() host — a
git-ignored REPL file that already defines function go():Any[*]. Do not create a fresh
/tmp/<name>.pure per run: it collides with orphan overlays, and a file outside a registered repo
is silently ignored (No go() function found in compiled sources). Full reasoning:
references/lsp-devloop-usage-rules.md.
Edit welcome.pure's go() body with what you want to run (add any missing import; comment out
pre-existing scaffolding lines that fail locally, e.g. the getTestConnection(DatabaseType.Snowflake)
line).
Execute it, passing the file so it is (re)compiled atomically before go() runs:
pure-lsp go $LEGEND_ENGINE_ROOT/welcome.pureReturns {"success": bool, "error": str|null, "output": str} plus return-value fields.
output is whatever go() printed via print(...); its return value arrives separately in
returnValue, with returnKind / returnType / returnSize / returnTruncated alongside it.
So go() does not need to print a primitive result to make it visible — returning it is enough.
Only a complex return (a Class instance, Relation or lambda) still needs print(): those
report their type and size with a null value rather than having their object graph walked.
See the pure-lsp-execute skill for the full field table.
To unload a pushed file (an orphan go() overlay, say): POST /delete {"uri": ...} — deleting it
on disk does not clear the overlay. See the conventions reference.
When go() and the function(s) it calls live in separate files (or you're validating several
related changes at once), pass the files straight to go instead of check-ing each one first:
pure-lsp go Main.pure Helper.pure OtherHelper.pureOne atomic compile of the whole batch, then go() — argument order is irrelevant, and a single
broken file rolls the whole thing back (success: false, errorUri naming the real culprit) so
go() never runs against a partial model. Always pass every edited file in one call rather
than checking them one at a time; that's rule 2 in references/lsp-devloop-usage-rules.md.
go recompiles the entire session, not just the file you just checked. If some unrelated
file already loaded into this session has a compile error, go() will fail even though your
new snippet is perfectly fine — read the error's source file/location before assuming your code
is broken.go runs on the interpreted engine. By default that means no plan generation — a plain
execute() runs fully interpreted (see "Execution routing" below for how to change that). A
successful interpreted go() is a fast dev-loop signal, not proof the compiled engine (or PCT)
will agree — but with a backend Server wired in you can make it exercise the real plan-gen +
execute path.output/error includes whatever was printed before the crash plus either a Pure
stack trace (for a Pure-level exception) or a raw Java stack trace (for anything else) — read
the whole message, the useful part isn't always at the top.meta::pure::router::execute(...) (in core/pure/router/router_entry.pure) wraps the query in the
mayExecuteLegendTest(serverFn, interpretedFallbackFn) native, which branches on whether the LSP
JVM has the legend.test.server.* system properties set:
noDebug().)legendExecute/alloyExecute in
core/pure/protocol/vX_X_X/invocations/execution.pure: the real plan-gen + execute path, the same
one Test_*_UsingPureClientTestSuite uses. go() output then shows the routing trace and the
generated SQL. How to get them set: see the conventions reference.Which branch you get, and what happens inside legendExecute once you're on the server path, is
governed by Pure options (ForceInterpreted, ExecPlan, PlanLocal, FullInteractiveExec,
ExecDebug, ShowLocalPlan) that you can flip live with no restart.
Those options are documented in one place: the pure-lsp-set-option skill — what each one does,
its default, how they interact, and which combination to set for interpreted vs local/remote
plan-gen (including how to check the backend is actually wired in, rather than silently falling
back to interpreted).
Only the go()-relevant summary is repeated here:
go() is fully interpreted.ExecPlan + PlanLocal + FullInteractiveExec: plan generation
runs locally against your live Pure graph and only executePlan($host,$port) goes to the backend,
so a Pure-only edit needs no jar rebuild and no server restart.ForceInterpreted is the only reliable way to stay interpreted once a backend is configured — it
short-circuits before mayExecuteLegendTest is reached.Quick recipe for a server-routed go(): pure-lsp-launch-engine does it in one step (backend +
jvm-args, on by default). Then follow the database-setup convention
(createTablesAndFillDb() first, meta::pure::router::execute not meta::pure::mapping::execute)
from references/lsp-devloop-usage-rules.md.
© finos, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/pure-dev/skills/pure-lsp-go of finos/legend-engine.
Open the folder on GitHubat commit e60ab67
Pure Lsp Go next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pure Lsp Go this skillfinos/legend-engine | 113 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Debug Playwright Prowquay/quay | 2.8k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Quay Prow Triagequay/quay | 2.8k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Shopware CLIshopware/shopware-cli | 124 | — | ~4.9k | Automated safety check: Pass | MIT | |
| Blue Teamgaasher/Agent-Loop-Skills | 174 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Debug Surefireeclipse-rdf4j/rdf4j | 420 | — | ~2.4k | Automated safety check: Pass | BSD-3-Clause |
quay/quay
Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…
quay/quay
Diagnose any Quay Prow job failure end to end: prowjob.json - top-level build log - JUnit - resolved failing step - Playwright results.json when the failing step is Playwright, continuing through…
shopware/shopware-cli
Use Shopware CLI for Shopware project, extension, and account workflows — create and install new projects (project create, project dev install), validate projects or extensions (with…
gaasher/Agent-Loop-Skills
A skill your agent uses when the user has concrete failing cases in code or a guardrail/classifier/filter/prompt/API they own — a red-team failure catalogue OR a CI/CD test-failure report (failing…
eclipse-rdf4j/rdf4j
Debug Maven Surefire unit tests by running them in JDWP "wait for debugger" mode (-Dmaven.surefire.debug) and attaching to the forked test JVM using jdb (preferred for CLI/agent debugging)…
kubernetes-sigs/cloud-provider-azure
Fetch and analyze Prow e2e pipeline failures for cloud-provider-azure.
finos/legend-engine
Starts (or confirms) the standalone legend-engine backend - engine Server + H2 + local metadata server on fixed ports 9095/9092 - so a Pure LSP started with -Dlegend.test.
finos/legend-engine
Procedure for git-syncing and rebuilding a local legend-pure + legend-engine checkout, in dependency order, with pinned dependency versions resynced.
finos/legend-engine
Reformats a .pure file (or a block of Pure code) to a consistent house style: 2-space indentation with no column-aligned hanging indents, tight colons in type annotations, spaced pipes on…
finos/legend-engine
Compiles/checks a single .pure file against the already-running Legend Pure LSP bridge and reports diagnostics (errors/warnings) in under a second, as a fast alternative to a full mvn test/mvn…
finos/legend-engine
Attaches the pure-lsp HTTP bridge to an LSP daemon that is ALREADY running (e.g.
finos/legend-engine
Runs exactly ONE existing Pure function by path (signature, mangled id or bare path) through the running Legend Pure LSP bridge, without a go() wrapper, and returns its typed value in returnValue.
Works with
Categories
Executes Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything currently loaded and runs a function literally named go():Any[], instead of writing…. Pure Lsp Go is an agent skill from finos/legend-engine. Executes Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything currently loaded and runs a function literally named go():Any[], instead of writing a full PCT/JUnit test just to try something out.
Pure Lsp Go fits situations like: the user wants to run/execute/try a Pure function; snippet quickly; asks can I just run this Pure code; wants to sanity-check a Pure functions output with sample inputs.
Run `npx skills add finos/legend-engine --skill pure-lsp-go -a claude-code`. Or copy the skill folder (plugins/pure-dev/skills/pure-lsp-go in finos/legend-engine) into .claude/skills/pure-lsp-go in your project. Claude Code loads it when a task matches its description.
Run `npx skills add finos/legend-engine --skill pure-lsp-go -a codex`. Or copy the skill folder (plugins/pure-dev/skills/pure-lsp-go in finos/legend-engine) into .agents/skills/pure-lsp-go in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add finos/legend-engine --skill pure-lsp-go -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pure-lsp-go, .gemini/skills/pure-lsp-go, .github/skills/pure-lsp-go and .opencode/skills/pure-lsp-go in your project.
SKILL.md names no scripts, command-line tools or credentials: Pure Lsp Go is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Pure Lsp Go is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pure Lsp Go: Debug Playwright Prow (quay/quay, 2.8k stars), Quay Prow Triage (quay/quay, 2.8k stars), Shopware CLI (shopware/shopware-cli, 124 stars) and Blue Team (gaasher/Agent-Loop-Skills, 174 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
finos (a GitHub organization) maintains it in finos/legend-engine, which has 113 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 10, 2026.
Source: finos/legend-engine on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.