Improve Frontend
luxury-yacht/app
A skill your agent uses when wanting to systematically improve the React/TypeScript frontend - scans for security vulnerabilities, stability risks, performance issues, and code simplification…
Upgrade the vendored third-party frontend libraries bundled into the Educates workshop dashboard theme (Bootstrap, Font Awesome, jQuery, Underscore.js, JSONForm, js-yaml).
$ npx skills add educates/educates-training-platform --skill educates-upgrade-theme-libraries -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install educates/educates-training-platform educates-upgrade-theme-libraries --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/educates/educates-training-platform.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .claude/skills/educates-upgrade-theme-libraries && 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 "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .claude/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-librariesType 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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install educates/educates-training-platform educates-upgrade-theme-libraries --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educates/educates-training-platform.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .agents/skills/educates-upgrade-theme-libraries && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .agents/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install educates/educates-training-platform educates-upgrade-theme-libraries --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educates/educates-training-platform.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .cursor/skills/educates-upgrade-theme-libraries && 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 "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .cursor/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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/educates/educates-training-platform.git --path .claude/skills/educates-upgrade-theme-libraries--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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install educates/educates-training-platform educates-upgrade-theme-libraries --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educates/educates-training-platform.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .gemini/skills/educates-upgrade-theme-libraries && 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 "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .gemini/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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 educates/educates-training-platform educates-upgrade-theme-librariesInstalls 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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/educates/educates-training-platform.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .github/skills/educates-upgrade-theme-libraries && 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 "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .github/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install educates/educates-training-platform educates-upgrade-theme-libraries --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educates/educates-training-platform.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/educates-upgrade-theme-libraries .opencode/skills/educates-upgrade-theme-libraries && 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 "educates-upgrade-theme-libraries" agent skill from https://github.com/educates/educates-training-platform/tree/develop/.claude/skills/educates-upgrade-theme-libraries into .opencode/skills/educates-upgrade-theme-libraries/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "educates-upgrade-theme-libraries", 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.
educates-upgrade-theme-librariesUpgrade the vendored third-party frontend libraries bundled into the Educates workshop dashboard theme (Bootstrap, Font Awesome, jQuery, Underscore.js, JSONForm, js-yaml).
Educates Upgrade Theme Libraries is an agent skill from educates/educates-training-platform. Upgrade the vendored third-party frontend libraries bundled into the Educates workshop dashboard theme (Bootstrap, Font Awesome, jQuery, Underscore.js, JSONForm, js-yaml). Invoke when asked to "update theme libraries", "upgrade bootstrap/font-awesome/jquery/underscore/jsonform/js-yaml", "bump the dashboard frontend libraries", or "refresh the vendored web assets".
Its SKILL.md is about 2.6k 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 Frontend & Design. It works with Kubernetes. The repository describes itself as: A platform for hosting interactive workshop environments in Kubernetes, or on top of a local container runtime. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a648c25. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashWebFetchGlobEditFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlgitnpmmakeFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comcdn.jsdelivr.netnpmjs.comregistry.npmjs.orgFrom 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.
Educates Upgrade Theme Libraries loads about 2.6k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 982 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Bash, WebFetch, Glob, EditAutomated 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 educates/educates-training-platform at commit a648c25, republished under its Apache-2.0 licence (© educates). 982 words, ~2,632 tokens.
.claude/skills/educates-upgrade-theme-libraries/SKILL.md (or your agent's skills folder).Refresh the third-party browser libraries vendored into the workshop dashboard theme. These assets are committed directly into the repository and have no build-time fetcher — this skill is how they are updated: it re-downloads a library from its upstream source and writes the files back into the tree.
If $ARGUMENTS names a specific library (e.g. bootstrap, jquery), update
only that one. With no argument, check all six for newer upstream versions and
report what's available before changing anything.
All libraries live under one directory (the educates dashboard theme's static
assets):
workshop-images/base-environment/opt/eduk8s/etc/themes/educates/static/static/libraries/Call this $LIB below. The target filenames are version-agnostic (no
version in the path), so an upgrade overwrites the existing files in place — no
renaming or git rm of old files is needed (except Font Awesome / Bootstrap if
upstream ever changes which files ship).
Two shapes: zip subset (download a release zip, extract a few files, stripping the zip's top-level folder) and single file (download one JS file directly). Versions shown are the current committed ones — confirm against the tree before bumping (see "Finding current versions").
| Library | Shape | Upstream source (version in URL) | Files written under $LIB |
|---|---|---|---|
bootstrap | zip subset | https://github.com/twbs/bootstrap/releases/download/v<VER>/bootstrap-<VER>-dist.zip | bootstrap/css/bootstrap.min.css, bootstrap/js/bootstrap.bundle.min.js |
font-awesome | zip subset | https://github.com/FortAwesome/Font-Awesome/releases/download/<VER>/fontawesome-free-<VER>-web.zip | font-awesome/css/all.min.css + font-awesome/webfonts/{fa-brands-400,fa-regular-400,fa-solid-900,fa-v4compatibility}.{woff2,ttf} (8 webfonts) |
jquery | single file | https://cdn.jsdelivr.net/npm/jquery@<VER>/dist/jquery.min.js | jquery/jquery.min.js |
underscore | single file | https://cdn.jsdelivr.net/npm/underscore@<VER>/underscore-umd-min.js | underscore/underscore-umd-min.js |
jsonform | single file | https://cdn.jsdelivr.net/npm/jsonform@<VER>/lib/jsonform.min.js | jsonform/jsonform.min.js |
js-yaml | single file | https://cdn.jsdelivr.net/npm/js-yaml@<VER>/dist/js-yaml.min.js | js-yaml/js-yaml.min.js |
For the two zip-subset libraries, only the files listed above are kept; the rest of the release archive is discarded.
These same libraries are also npm dependencies of the two bundled apps in the
base environment — workshop-images/base-environment/opt/renderer and
.../opt/gateway — which compile them into their own JavaScript via esbuild.
The vendored theme copy and the npm-bundled copy must stay on the same
version, or the dashboard's static assets drift from what the apps ship.
Whenever you change a vendored library version here, update the matching npm
dependency in each app's package.json that declares it, and vice versa:
| Theme library | npm package | renderer/package.json | gateway/package.json |
|---|---|---|---|
bootstrap | bootstrap | yes | yes |
font-awesome | @fortawesome/fontawesome-free | yes | yes |
jquery | jquery | yes | yes |
js-yaml | js-yaml | yes | yes |
underscore | underscore | yes | — |
jsonform | jsonform | yes | — |
The package.json versions are caret ranges (e.g. "bootstrap": "^5.3.2").
Set the range to the version you vendored (^<VER>), then refresh the lockfile
and rebuild so the bundle matches:
cd workshop-images/base-environment/opt/<app> # renderer and/or gateway
npm install # updates package-lock.json to the new versionThe app bundle is produced by scripts/compile.sh (tsc + esbuild); it runs
during the base-environment image build, so a make image-base-environment (or
running compile.sh in the app dir) is what proves the new version compiles and
bundles cleanly.
The committed minified files carry a version banner in their first line(s):
LIB=workshop-images/base-environment/opt/eduk8s/etc/themes/educates/static/static/libraries
head -c 200 "$LIB/bootstrap/css/bootstrap.min.css" # "Bootstrap v5.3.8"
head -c 120 "$LIB/jquery/jquery.min.js" # "jQuery v3.7.1"
head -c 200 "$LIB/font-awesome/css/all.min.css" # "Font Awesome Free 6.5.1"
head -c 200 "$LIB/underscore/underscore-umd-min.js" # underscore version
head -c 200 "$LIB/js-yaml/js-yaml.min.js"
head -c 200 "$LIB/jsonform/jsonform.min.js"https://github.com/twbs/bootstrap/releases (use the latest stable v5.x, not a beta/alpha).https://github.com/FortAwesome/Font-Awesome/releases (the asset named fontawesome-free-<ver>-web.zip).https://www.npmjs.com/package/<name> (or https://registry.npmjs.org/<name>/latest). jsDelivr serves any published npm version at the URL pattern above.Use WebFetch to read the releases/npm page and pick the latest stable version. For major-version bumps, read the changelog for breaking changes and flag them to the user before proceeding.
Set up the path and a scratch dir:
LIB=workshop-images/base-environment/opt/eduk8s/etc/themes/educates/static/static/libraries
TMP=$(mktemp -d)Just overwrite the file from the versioned jsDelivr URL. Example (jquery → <VER>):
curl -fsSL "https://cdn.jsdelivr.net/npm/jquery@<VER>/dist/jquery.min.js" -o "$LIB/jquery/jquery.min.js"Use the matching URL + target from the table for underscore, jsonform, js-yaml. Always use curl -f so a 404 (bad version/path) fails loudly instead of writing an error page into the asset.
Download the release zip, then copy only the listed files, stripping the zip's
top-level folder. Bootstrap example (<VER> e.g. 5.3.8):
curl -fsSL "https://github.com/twbs/bootstrap/releases/download/v<VER>/bootstrap-<VER>-dist.zip" -o "$TMP/bootstrap.zip"
unzip -q "$TMP/bootstrap.zip" -d "$TMP/bootstrap"
ROOT="$TMP/bootstrap/bootstrap-<VER>-dist"
cp "$ROOT/css/bootstrap.min.css" "$LIB/bootstrap/css/bootstrap.min.css"
cp "$ROOT/js/bootstrap.bundle.min.js" "$LIB/bootstrap/js/bootstrap.bundle.min.js"Font Awesome example (<VER> e.g. 6.5.1):
curl -fsSL "https://github.com/FortAwesome/Font-Awesome/releases/download/<VER>/fontawesome-free-<VER>-web.zip" -o "$TMP/fa.zip"
unzip -q "$TMP/fa.zip" -d "$TMP/fa"
ROOT="$TMP/fa/fontawesome-free-<VER>-web"
cp "$ROOT/css/all.min.css" "$LIB/font-awesome/css/all.min.css"
for f in fa-brands-400 fa-regular-400 fa-solid-900 fa-v4compatibility; do
cp "$ROOT/webfonts/$f.woff2" "$LIB/font-awesome/webfonts/$f.woff2"
cp "$ROOT/webfonts/$f.ttf" "$LIB/font-awesome/webfonts/$f.ttf"
doneBefore copying, ls "$ROOT/css" "$ROOT/webfonts" to confirm upstream still ships
these exact filenames; Font Awesome occasionally changes its webfont set across
major versions. If the set changed, update the table and the file list, and
git rm any file no longer shipped so stale assets don't linger.
Clean up: rm -rf "$TMP".
head -c 200 "$LIB/<library>/<file>"file or a
quick head should show JS/CSS/font content, not <!DOCTYPE html>.git diff --stat shows the expected files under $LIB/<library>/ and,
when the version changed, the matching package.json (+ package-lock.json)
in renderer/gateway — see "Keep aligned with the renderer and gateway
apps". A theme-only change with no package.json update is usually a drift bug.make image-base-environmentjquery.min.js,
bootstrap.bundle.min.js, underscore-umd-min.js).curl -f used)renderer/package.json and gateway/package.json (where present), with npm install run to update each lockfilegit diff --stat limited to the intended library directories plus the aligned package.json/package-lock.json files© educates, 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 .claude/skills/educates-upgrade-theme-libraries of educates/educates-training-platform.
Open the folder on GitHubat commit a648c25
Educates Upgrade Theme Libraries 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 |
|---|---|---|---|---|---|---|
| Educates Upgrade Theme Libraries this skilleducates/educates-training-platform | 161 | — | ~2.6k | Automated safety check: Notes | Apache-2.0 | |
| Improve Frontendluxury-yacht/app | 442 | — | ~1.3k | Automated safety check: Pass | GPL-3.0 | |
| FrontendIntegration YAML Generatorkubesphere/kubesphere | 17k | — | ~570 | Automated safety check: Pass | Custom licence | |
| K8s Security PoliciesCybereason-Public/owLSM | 280 | 11 repos | ~2k | Automated safety check: Pass | GPL-2.0 | |
| Kubeshark Installerkubeshark/kubeshark | 12k | — | ~3.6k | Automated safety check: Notes | Apache-2.0 | |
| KubeSphere Multi-Tenant Managementkubesphere/kubesphere | 17k | — | ~3.1k | Automated safety check: Pass | Custom licence |
luxury-yacht/app
A skill your agent uses when wanting to systematically improve the React/TypeScript frontend - scans for security vulnerabilities, stability risks, performance issues, and code simplification…
kubesphere/kubesphere
Generates canonical FrontendIntegration YAML for frontend-forge from a simplified single-menu model, using a bundled generator script instead of hand-written YAML.
Cybereason-Public/owLSM
Comprehensive guide for implementing NetworkPolicy, PodSecurityPolicy, RBAC, and Pod Security Standards in Kubernetes.
kubeshark/kubeshark
Installs and configures Kubeshark on a Kubernetes cluster, choosing between the quick CLI path and a Helm install with custom values.
kubesphere/kubesphere
Creates and queries KubeSphere users, workspaces and projects and assigns built-in roles, defaulting to least privilege and never deleting anything.
simstudioai/sim
Install, upgrade, and operate the Sim Helm chart on Kubernetes.
educates/educates-training-platform
Drives the Educates project's Gitflow-based branch and release workflow.
educates/educates-training-platform
Create release notes for an Educates version. An agent skill from educates/educates-training-platform.
educates/educates-training-platform
Upgrade a vendored upstream cluster-service Helm chart the Educates operator installs for EducatesClusterConfig — cert-manager, Contour, Kyverno, or external-dns.
educates/educates-training-platform
Upgrade the Go version across the entire educates-training-platform project.
educates/educates-training-platform
Upgrade Kubernetes version support across the educates-training-platform project.
educates/educates-training-platform
Upgrade the vcluster software version (and the Kubernetes versions the virtual cluster provisions) used by the vcluster workshop application in session-manager.
Works with
Categories
Upgrade the vendored third-party frontend libraries bundled into the Educates workshop dashboard theme (Bootstrap, Font Awesome, jQuery, Underscore.js, JSONForm, js-yaml). Educates Upgrade Theme Libraries is an agent skill from educates/educates-training-platform.js, JSONForm, js-yaml).
Educates Upgrade Theme Libraries fits situations like: frontend & Design work in your project.
Run `npx skills add educates/educates-training-platform --skill educates-upgrade-theme-libraries -a claude-code`. Or copy the skill folder (.claude/skills/educates-upgrade-theme-libraries in educates/educates-training-platform) into .claude/skills/educates-upgrade-theme-libraries in your project. Claude Code loads it when a task matches its description.
Run `npx skills add educates/educates-training-platform --skill educates-upgrade-theme-libraries -a codex`. Or copy the skill folder (.claude/skills/educates-upgrade-theme-libraries in educates/educates-training-platform) into .agents/skills/educates-upgrade-theme-libraries 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 educates/educates-training-platform --skill educates-upgrade-theme-libraries -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/educates-upgrade-theme-libraries, .gemini/skills/educates-upgrade-theme-libraries, .github/skills/educates-upgrade-theme-libraries and .opencode/skills/educates-upgrade-theme-libraries in your project.
Going by SKILL.md and its folder, Educates Upgrade Theme Libraries needs the command-line tools its instructions call (curl, git, npm and make). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash, WebFetch, Glob, Edit.
SKILL.md names 4 domains. In commands or code: github.com, cdn.jsdelivr.net, npmjs.com and registry.npmjs.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Educates Upgrade Theme Libraries 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 2.6k tokens (SKILL.md is roughly 11k 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 Educates Upgrade Theme Libraries: Improve Frontend (luxury-yacht/app, 442 stars), FrontendIntegration YAML Generator (kubesphere/kubesphere, 17k stars), K8s Security Policies (Cybereason-Public/owLSM, 280 stars) and Kubeshark Installer (kubeshark/kubeshark, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
educates (a GitHub organization) maintains it in educates/educates-training-platform, which has 161 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 3, 2026.
Source: educates/educates-training-platform on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.