Agent skill

Pure Lsp Go

by finos in 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…

Apache-2.0Auto-check passedTesting & QA

Install Pure Lsp Go

skills CLI
$ npx skills add finos/legend-engine --skill pure-lsp-go -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install finos/legend-engine pure-lsp-go --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
pure-lsp-go
GitHub stars
113
Token cost
~1.8k tokens
SKILL.md length
856 words
Files
1
Skills in repo
15
Repo updated
First seen
Licence
Apache-2.0

At a glance

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…

  • Works in 2 steps: Edit welcome.pure's go() body with what… → Execute it, passing the file so it is…
  • The user wants to run/execute/try a Pure function
  • SKILL.md covers The mental model, Steps, Things worth knowing and Execution routing: interpreted…
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “can I just run this Pure code”
  • “s output with sample inputs, or mentions the LSP”
  • “Use the pure-lsp-go skill to execute Pure code through the running Legend Pure LSP bridge as a fast REPL-style dev loop — compiles everything…”
  • “/pure-lsp-go”

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Edit welcome.pure's go() body with what you want to run (add any missing import; comment out
  2. Execute it, passing the file so it is (re)compiled atomically before go() runs

What it can do on your machine

Read from SKILL.md and the folder at commit e60ab67. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~184
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from finos/legend-engine at commit e60ab67, republished under its Apache-2.0 licence (© finos). 856 words, ~1,836 tokens.

Download SKILL.mdSave it as .claude/skills/pure-lsp-go/SKILL.md (or your agent's skills folder).
name
pure-lsp-go
description
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 run/execute/try a Pure function or snippet quickly, asks 'can I just run this Pure code', wants to sanity-check a Pure function's output with sample inputs, or mentions the LSP's execute/go/REPL capability.

Execute Pure code via the LSP bridge's go()

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.

The mental model

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:

pure
function myCustomFunction(x:Integer[1], y:Integer[1]):Integer[1]
{
  $x + $y;
}

function go():Any[*]
{
  print('result = ' + myCustomFunction(19, 23)->toString(), 1);
}

Steps

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.

  1. 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).

  2. Execute it, passing the file so it is (re)compiled atomically before go() runs:

    bash
    pure-lsp go $LEGEND_ENGINE_ROOT/welcome.pure

    Returns {"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.

Multi-file: compile several files, then execute, in one call

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:

bash
pure-lsp go Main.pure Helper.pure OtherHelper.pure

One 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.

Things worth knowing

  • 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.
  • On failure, 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.
Show full SKILL.md (310 more words)Show less

Execution routing: interpreted vs. plan-gen + backend Server

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:

  • Not set → fully interpreted, no plan generation. This is the default. Note that some store paths (e.g. RFPM relational graph-fetch) are simply unimplemented in the interpreted executor and will fail here even though they work in the real engine — that's a signal to use the server path, not a bug in your code. (The fallback also hardcodes noDebug().)
  • Set → 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:

  • Out of the box (no options set, no backend wired in) go() is fully interpreted.
  • The fast dev-loop combination is 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

Files

Just SKILL.md in plugins/pure-dev/skills/pure-lsp-go of finos/legend-engine.

Open the folder on GitHubat commit e60ab67

Compare with similar skills

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.

Pure Lsp Go compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pure Lsp Go this skillfinos/legend-engine113—~1.8kAutomated safety check: PassApache-2.0
Debug Playwright Prowquay/quay2.8k—~2.2kAutomated safety check: PassApache-2.0
Quay Prow Triagequay/quay2.8k—~2.9kAutomated safety check: PassApache-2.0
Shopware CLIshopware/shopware-cli124—~4.9kAutomated safety check: PassMIT
Blue Teamgaasher/Agent-Loop-Skills174—~3.6kAutomated safety check: PassMIT
Debug Surefireeclipse-rdf4j/rdf4j420—~2.4kAutomated safety check: PassBSD-3-Clause

Similar skills

  • 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…

    2.8k GitHub stars~2.2k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • 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…

    2.8k GitHub stars~2.9k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Shopware CLI

    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…

    124 GitHub stars~4.9k tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Blue Team

    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…

    174 GitHub stars~3.6k tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Debug Surefire

    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)…

    420 GitHub stars~2.4k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Debug E2E Pipeline

    kubernetes-sigs/cloud-provider-azure

    Official

    Fetch and analyze Prow e2e pipeline failures for cloud-provider-azure.

    294 GitHub stars~3.4k tokensUpdated 2 days ago
    Testing & QAAuto-check passed

More from finos/legend-engine

All 15 skills in this repo
  • Pure Backend Start

    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.

    113 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Pure Chain Update

    finos/legend-engine

    Procedure for git-syncing and rebuilding a local legend-pure + legend-engine checkout, in dependency order, with pinned dependency versions resynced.

    113 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Pure Code Style

    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…

    113 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Pure Lsp Check

    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…

    113 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Pure Lsp Connect

    finos/legend-engine

    Attaches the pure-lsp HTTP bridge to an LSP daemon that is ALREADY running (e.g.

    113 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Pure Lsp Execute

    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.

    113 GitHub stars~883 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Pure Lsp Go

What does Pure Lsp Go do?

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.

When should I use Pure Lsp Go?

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.

How do I install Pure Lsp Go in Claude Code?

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.

How do I install Pure Lsp Go in Codex?

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.

Can I use Pure Lsp Go in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Pure Lsp Go need to run?

SKILL.md names no scripts, command-line tools or credentials: Pure Lsp Go is instructions for the agent only.

Does Pure Lsp Go access the network?

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.

Is Pure Lsp Go safe to install?

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.

What licence does Pure Lsp Go use?

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.

How many tokens does Pure Lsp Go use?

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.

What are the alternatives to Pure Lsp Go?

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.

Who maintains Pure Lsp Go?

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.