Tabler Backward Compatibility
tabler/tabler
Keeps changes to @tabler/core backward compatible so patch and minor releases never break projects, covering what counts as public API and how to alias renames.
Makes a Ballerina library GraalVM-compatible by running the native build/test workflow, sourcing reachability metadata, and marking the package compatible.
$ npx skills add ballerina-platform/ballerina-library --skill making-graalvm-compatible -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ballerina-platform/ballerina-library making-graalvm-compatible --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/ballerina-platform/ballerina-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .claude/skills/making-graalvm-compatible && 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 "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .claude/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatibleType 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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ballerina-platform/ballerina-library making-graalvm-compatible --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-platform/ballerina-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .agents/skills/making-graalvm-compatible && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .agents/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ballerina-platform/ballerina-library making-graalvm-compatible --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-platform/ballerina-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .cursor/skills/making-graalvm-compatible && 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 "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .cursor/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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/ballerina-platform/ballerina-library.git --path agent-skills/skills/making-graalvm-compatible--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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ballerina-platform/ballerina-library making-graalvm-compatible --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-platform/ballerina-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .gemini/skills/making-graalvm-compatible && 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 "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .gemini/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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 ballerina-platform/ballerina-library making-graalvm-compatibleInstalls 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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ballerina-platform/ballerina-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .github/skills/making-graalvm-compatible && 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 "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .github/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ballerina-platform/ballerina-library making-graalvm-compatible --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-platform/ballerina-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent-skills/skills/making-graalvm-compatible .opencode/skills/making-graalvm-compatible && 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 "making-graalvm-compatible" agent skill from https://github.com/ballerina-platform/ballerina-library/tree/main/agent-skills/skills/making-graalvm-compatible into .opencode/skills/making-graalvm-compatible/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "making-graalvm-compatible", 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.
making-graalvm-compatibleMakes a Ballerina library GraalVM-compatible by running the native build/test workflow, sourcing reachability metadata, and marking the package compatible.
Making Graalvm Compatible is an agent skill from ballerina-platform/ballerina-library. Makes a Ballerina library GraalVM-compatible by running the native build/test workflow, sourcing reachability metadata, and marking the package compatible. Use when the user wants to make a Ballerina library or package GraalVM compatible; build or test a Ballerina package with bal build --graalvm / bal test --graalvm; fix GraalVM native-image class-initialization or reflection/JNI/resource errors in a Ballerina project; run the GraalVM tracing agent for Ballerina tests or a service; pack native-image reachability…
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 46 other files, including scripts and reference files (for example `evals/README.md`, `evals/run_trigger_eval.sh` and `evals/train_queries.json`).
The repository describes itself as: The Ballerina Library. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 23999fb. 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.
Ships 4 files in scripts/ (Python and Shell, from the files we listed), which the agent can run.
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.
Making Graalvm Compatible loads about 3k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 177 tokens; SKILL.md has 671 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); the scripts in this folder are not scanned.
The full file from ballerina-platform/ballerina-library at commit 23999fb, republished under its Apache-2.0 licence (© ballerina-platform). 671 words, ~3,000 tokens.
.claude/skills/making-graalvm-compatible/SKILL.md (or your agent's skills folder). This skill also uses 43 other files; get the full folder from GitHub.An AI-assisted workflow for taking a Ballerina library to a verified, warning-free bal build --graalvm / bal test --graalvm. It builds and tests natively, resolves build-time class-initialization errors, sources native-image metadata (preferring the vetted oracle/graalvm-reachability-metadata repo over the tracing agent), packs the required config under META-INF/native-image/, and marks the package compatible in Ballerina.toml.
Based on docs/graalvm-compatibility-in-ballerina-libraries.md, with GraalVM reference material adapted from the Oracle GraalVM community skills.
Unlike a linear pipeline, this is a decision tree with loops driven by what the baseline build/test reveals:
Setup → Build & Test ─┬─ (build-time class-init errors) → fix loop → re-build
├─ (all green) ──────────────────────────────► Mark
└─ (runtime/metadata gaps) → Reachability repo
→ Trace JAR / Trace tests
→ Filter & pack → MarkEach stage is a file under stages/. Load only the active stage's file into context — do not preload all stages. Routing between stages follows references/workflow.md.
Scripts in scripts/ handle all deterministic operations (version derivation, classpath extraction, the version-sensitive BTestMain command, config filtering/packing, Ballerina.toml edits). Run them via Bash — do not reimplement their logic inline. LLM reasoning is reserved for judgment: class-init strategy, exercising a running service, choosing which configs to keep, dependency upgrades.
| Stage | File | Skip when | Key output |
|---|---|---|---|
| 0. Setup | stages/00-setup.md | never | Shared State, GraalVM/JDK check |
| 1. Build & Test | stages/01-build-and-test.md | never | baseline status + class-init fix loop |
| 2. Reachability repo | stages/02-reachability-repo.md | no third-party Java deps | repo-sourced metadata (preferred) |
| 3. Trace JAR | stages/03-trace-jar.md | no main/service, or repo covered all | traced configs (service exercised) |
| 4. Trace tests | stages/04-trace-tests.md | no tests, or tests pass | traced configs (version-aware BTestMain) |
| 5. Filter & pack | stages/05-filter-and-pack.md | nothing to pack | META-INF/native-image/<g>/<a>/ |
| 6. Mark compatible | stages/06-mark-compatible.md | never | graalvmCompatible = true + final verify |
When this skill is invoked:
Print the welcome banner:
╔════════════════════════════════════════════════════╗
║ Ballerina Library — GraalVM Compatibility Helper ║
╚════════════════════════════════════════════════════╝
I'll take your Ballerina library to a verified `bal build --graalvm`
and `bal test --graalvm`: build/test → resolve errors → source metadata
→ pack it → mark the package compatible.Read and follow stages/00-setup.md to establish all Shared State. Do this before loading any other stage file.
Run stages/01-build-and-test.md, then route to the remaining stages per the classification in references/workflow.md. Skip stages per the table above.
When any native build fails at build time with a class-initialization error, read references/class-init-fix-procedure.md and invoke it inline before proceeding.
If INTERACTIVE_MODE, pause and confirm after each stage.
Set in Setup (stage 00) and used by later stages:
| Variable | Description |
|---|---|
PYTHON_CMD | Resolved Python 3 command (python3/python/py) |
BALLERINA_DIR | Directory containing Ballerina.toml |
BALLERINA_TOML | Absolute path to that Ballerina.toml |
BAL_ORG / BAL_PACKAGE | Package org / name |
BAL_DISTRIBUTION | e.g. 2201.10.3 |
BAL_UPDATE | Update number (drives the BTestMain signature) |
REQUIRED_GRAALVM_JDK | 11 / 17 / 21 |
PLATFORM_JAVA_VERSION | java11 / java17 / java21 — the Ballerina.toml platform block |
GRAALVM_HOME / GRAALVM_JDK_ACTUAL / GRAALVM_OK | GraalVM install + detected JDK + match |
IS_ARM64_MAC | Apple Silicon flag (experimental native-image warning) |
GROUP_ID / ARTIFACT_ID | Native-image metadata coordinates |
HAS_NATIVE_MODULE / NATIVE_DIR / META_INF_DIR | Native module presence + paths |
HAS_MAIN / HAS_SERVICE / HAS_TESTS / JAR_NAME | Routing flags for tracing |
THIRD_PARTY_DEPS | [[platform.javaXX.dependency]] entries {groupId,artifactId,version,path} |
REACHABILITY_REPO_HITS | Deps with published metadata + their staging dirs |
CONFIG_DIR | Tracing-agent output directory (default config-dir) |
CLASSPATH_FILE | class-path.txt produced in Stage 04 |
KEEP_PACKAGE_PREFIXES | Prefixes kept during filtering (Stage 05) |
BUILD_STATUS / TEST_STATUS / NOT_VERIFIED_WARNING | Baseline results (Stage 01) |
GRAALVM_COMPATIBLE_ALREADY | Whether the toml already declares it |
INTERACTIVE_MODE | Pause after each stage |
Repo before tracing: prefer oracle/graalvm-reachability-metadata (vetted, deterministic) over the tracing agent; trace only for the gaps it doesn't cover.
Version sensitivity is load-bearing: the BTestMain argument signature changes at Ballerina Update 10. scripts/build_btest_command.py is the single source of truth — show its resolved branch and confirm before running.
Deterministic first: use scripts for anything mechanical. Use the LLM only for judgment — class-init strategy, exercising services, choosing configs, upgrades.
Never claim false compatibility: do not set graalvmCompatible = true unless the final native build and tests pass with no not-verified warning.
Transparency: print a status line before each sub-step. Use ✓/⚠/✗.
references/workflow.md — decision tree, stage routing, guardrails, run summaryreferences/class-init-fix-procedure.md — reusable build-time class-init fix loopreferences/tracing-agent.md — both tracing paths (JAR + version-sensitive tests)references/reachability-metadata-repo.md — using the oracle/graalvm-reachability-metadata reporeferences/reachability-metadata.md — native-image metadata JSON schema (adapted from Oracle)references/troubleshooting.md — build/runtime failure routing (adapted from Oracle)references/native-image-options.md — raw flags for --graalvm-build-options (adapted from Oracle)references/pack-and-mark.md — filtering, packing into META-INF, and marking compatibletemplates/ — Ballerina.toml platform block, metadata skeleton, native module layoutAll scripts are in <skill-root>/scripts/ and are pure Python (.py) — no shell scripts, so they run identically on macOS/Linux/Windows. Invoke with <PYTHON_CMD> (resolved in Setup Step 0), not a hardcoded python3.
# Environment + package discovery (Stage 00)
<PYTHON_CMD> scripts/check_environment.py
<PYTHON_CMD> scripts/find_ballerina_toml.py
<PYTHON_CMD> scripts/detect_package_coordinates.py "<Ballerina.toml>"
<PYTHON_CMD> scripts/detect_runnable_artifacts.py "<BALLERINA_DIR>"
# GraalVM version derivation + verification (Stage 00)
<PYTHON_CMD> scripts/derive_graalvm_requirements.py [--distribution 2201.10.3]
<PYTHON_CMD> scripts/check_graalvm_env.py --required-jdk 17
# Build/test + error classification (Stage 01)
<PYTHON_CMD> scripts/run_bal_command.py "<bal command>" "<working-dir>"
<PYTHON_CMD> scripts/parse_graalvm_errors.py "<stderr-or-output-file>"
# Reachability-metadata repo (Stage 02)
<PYTHON_CMD> scripts/lookup_reachability_metadata.py --deps-json "<deps.json>"
<PYTHON_CMD> scripts/fetch_reachability_metadata.py --group-id <g> --artifact-id <a> --metadata-version <v> --out <dir>
# Tracing agent (Stages 03/04)
<PYTHON_CMD> scripts/build_jar_trace_command.py --jar "<JAR_NAME>" --config-output-dir "<CONFIG_DIR>"
<PYTHON_CMD> scripts/extract_test_classpath.py --out class-path.txt
<PYTHON_CMD> scripts/build_btest_command.py --distribution "<BAL_DISTRIBUTION>" --config-output-dir "<CONFIG_DIR>" --classpath-file class-path.txt
# Filter + pack + mark (Stages 05/06)
<PYTHON_CMD> scripts/filter_trace_configs.py --config-dir "<CONFIG_DIR>" --out "<filtered-dir>" --keep-prefixes "<prefixes>"
<PYTHON_CMD> scripts/scaffold_native_module.py --native-dir "<NATIVE_DIR>" --group-id "<g>" --artifact-id "<a>"
<PYTHON_CMD> scripts/pack_native_configs.py --filtered-dir "<dir>" --native-dir "<NATIVE_DIR>" --group-id "<g>" --artifact-id "<a>" --merge
<PYTHON_CMD> scripts/build_native_config_jar.py --resources-dir "<NATIVE_DIR>/src/main/resources" --out "<jar>"
<PYTHON_CMD> scripts/update_ballerina_toml_graalvm.py --toml "<Ballerina.toml>" --java-version java21 --graalvm-compatible true© ballerina-platform, 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
SKILL.md and 43 other files (scripts, references) in agent-skills/skills/making-graalvm-compatible of ballerina-platform/ballerina-library.
Open the folder on GitHubat commit 23999fb
Making Graalvm Compatible 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 |
|---|---|---|---|---|---|---|
| Making Graalvm Compatible this skillballerina-platform/ballerina-library | 141 | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Tabler Backward Compatibilitytabler/tabler | 42k | — | ~4k | Automated safety check: Pass | MIT | |
| React18 Dep Compatibilitygithub/awesome-copilot | 40k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| tRPC Release Compatibility Checksuperset-sh/superset | 15k | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Java Add Graalvm Native Image Supportgithub/awesome-copilot | 40k | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Check Agent Compatibilitycursor/plugins | 11k | — | ~601 | Automated safety check: Pass | None |
tabler/tabler
Keeps changes to @tabler/core backward compatible so patch and minor releases never break projects, covering what counts as public API and how to alias renames.
github/awesome-copilot
React 18.3.1 and React 19 dependency compatibility matrix. An agent skill from github/awesome-copilot.
superset-sh/superset
Checks whether a tRPC procedure change is safe for released desktop, mobile, CLI and SDK builds, picks a compatible pattern and decides when a deprecated procedure can go.
github/awesome-copilot
GraalVM Native Image expert that adds native image support to Java applications, builds the project, analyzes build errors, applies fixes, and iterates until successful compilation using Oracle best…
cursor/plugins
Run the full repository compatibility pass: scanner score, startup path, validation loop, and docs reliability.
dotnet/skills
Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.
ballerina-platform/ballerina-library
Generate the full WSO2 Integrator connector documentation set — overview, setup guide, action reference, and a validated example guide with six low-code UI screenshots and a preserved sample project…
ballerina-platform/ballerina-library
Generates a complete Ballerina connector from an OpenAPI specification.
Makes a Ballerina library GraalVM-compatible by running the native build/test workflow, sourcing reachability metadata, and marking the package compatible. Making Graalvm Compatible is an agent skill from ballerina-platform/ballerina-library. Makes a Ballerina library GraalVM-compatible by running the native build/test workflow, sourcing reachability metadata, and marking the package compatible.
Making Graalvm Compatible fits situations like: the user wants to make a Ballerina library; package GraalVM compatible; test a Ballerina package with bal build --graalvm / bal test --graalvm; fix GraalVM native-image class-initialization.
Run `npx skills add ballerina-platform/ballerina-library --skill making-graalvm-compatible -a claude-code`. Or copy the skill folder (agent-skills/skills/making-graalvm-compatible in ballerina-platform/ballerina-library) into .claude/skills/making-graalvm-compatible in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ballerina-platform/ballerina-library --skill making-graalvm-compatible -a codex`. Or copy the skill folder (agent-skills/skills/making-graalvm-compatible in ballerina-platform/ballerina-library) into .agents/skills/making-graalvm-compatible 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 ballerina-platform/ballerina-library --skill making-graalvm-compatible -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/making-graalvm-compatible, .gemini/skills/making-graalvm-compatible, .github/skills/making-graalvm-compatible and .opencode/skills/making-graalvm-compatible in your project.
Going by SKILL.md and its folder, Making Graalvm Compatible needs Python and a shell for the scripts in its folder. Our summary lists: Python 3; A Bash shell.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Making Graalvm Compatible 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 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Making Graalvm Compatible: Tabler Backward Compatibility (tabler/tabler, 42k stars), React18 Dep Compatibility (github/awesome-copilot, 40k stars), tRPC Release Compatibility Check (superset-sh/superset, 15k stars) and Java Add Graalvm Native Image Support (github/awesome-copilot, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ballerina-platform (a GitHub organization) maintains it in ballerina-platform/ballerina-library, which has 141 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 10, 2026.
Source: ballerina-platform/ballerina-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.