Remember
commercetools/ui-kit
Persist guidelines, conventions, and architectural decisions into the repository's knowledge base.
A skill your agent uses when analyzing the server/desktop backend bundle — "what does the server load at startup?", "is <dependency lazy on the backend?", "why is <package in the startup set?", "how…
$ npx skills add TriliumNext/Trilium --skill analyzing-backend-bundle -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TriliumNext/Trilium analyzing-backend-bundle --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/TriliumNext/Trilium.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .claude/skills/analyzing-backend-bundle && 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 "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .claude/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundleType 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 TriliumNext/Trilium --skill analyzing-backend-bundle -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TriliumNext/Trilium analyzing-backend-bundle --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TriliumNext/Trilium.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .agents/skills/analyzing-backend-bundle && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .agents/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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 TriliumNext/Trilium --skill analyzing-backend-bundle -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TriliumNext/Trilium analyzing-backend-bundle --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TriliumNext/Trilium.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .cursor/skills/analyzing-backend-bundle && 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 "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .cursor/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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/TriliumNext/Trilium.git --path .claude/skills/analyzing-backend-bundle--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 TriliumNext/Trilium --skill analyzing-backend-bundle -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TriliumNext/Trilium analyzing-backend-bundle --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TriliumNext/Trilium.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .gemini/skills/analyzing-backend-bundle && 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 "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .gemini/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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 TriliumNext/Trilium analyzing-backend-bundleInstalls 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 TriliumNext/Trilium --skill analyzing-backend-bundle -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TriliumNext/Trilium.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .github/skills/analyzing-backend-bundle && 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 "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .github/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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 TriliumNext/Trilium --skill analyzing-backend-bundle -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TriliumNext/Trilium analyzing-backend-bundle --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TriliumNext/Trilium.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/analyzing-backend-bundle .opencode/skills/analyzing-backend-bundle && 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 "analyzing-backend-bundle" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/analyzing-backend-bundle into .opencode/skills/analyzing-backend-bundle/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyzing-backend-bundle", 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.
analyzing-backend-bundleA skill your agent uses when analyzing the server/desktop backend bundle — "what does the server load at startup?", "is <dependency lazy on the backend?", "why is <package in the startup set?", "how…
Analyzing Backend Bundle is an agent skill from TriliumNext/Trilium. Use when analyzing the server/desktop backend bundle — "what does the server load at startup?", "is <dependency lazy on the backend?", "why is <package in the startup set?", "how big is the eager set?", chunk analysis after adding a dynamic-import seam, backend memory profiling (RSS, retained script source, heap), or any before/after comparison for backend lazy-loading. Records what a bundle actually loads at boot, joins it with the esbuild metafile, and explains why each package is eager. Don't write a new…
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files.
It sits in Knowledge Management, covering Web performance. The repository describes itself as: Build your personal knowledge base with Trilium Notes. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit cac2b4f. 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 script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
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.
Analyzing Backend Bundle loads about 2.6k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 1,131 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 TriliumNext/Trilium at commit cac2b4f, republished under its AGPL-3.0 licence (© TriliumNext). 1,131 words, ~2,597 tokens.
.claude/skills/analyzing-backend-bundle/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.The backend bundles (apps/server/dist, apps/desktop/dist) are esbuild ESM output with
code splitting: an entry plus chunks/, where a chunk loads only when a dynamic import()
first needs it. Every megabyte the process loads at startup costs three ways, permanently:
charset: "ascii") but emits regex literals verbatim, and one raw
Arabic digit stores the whole chunk two-byte.NODE_COMPILE_CACHE roughly halves it on warm starts.Reference points (2026-08, Node 22, real 146 MB DB, same source built both ways; the full table is in PR #11111): the monolithic 14.8 MB CJS bundle cost 207 MB RSS / 64 MB heap post-GC and 1 177 ms to first HTTP response; the split ESM build loaded 7.65 MB at startup and cost 120 MB / 42 MB and 895 ms, with the V8 parser's native peak down from 78 MB to 21 MB. ESM without seams matched CJS on every metric — splitting only pays through dynamic-import boundaries. So the question that matters is never "how big is the bundle" but "how much of it loads at startup" — and the tools here answer it with runtime evidence, not static guessing.
All in this folder, zero dependencies. record and profile-bundle boot the real server, so
they need the usual environment (adapt paths; use a scratch copy of a real document.db for
realistic becca numbers, or an empty dir for setup-mode):
ENV="TRILIUM_ENV=production TRILIUM_DATA_DIR=<scratch>/data TRILIUM_PORT=8123 \
TRILIUM_RESOURCE_DIR=$PWD/apps/server/dist"
# 1. Record which dist/ files the server loads at startup (ground truth):
env $ENV node .claude/skills/analyzing-backend-bundle/analyze-bundle.mjs record \
--bundle apps/server/dist/main.mjs --out /tmp/loaded.txt --port 8123
# 2. Join with the metafile: eager vs lazy totals, per package, biggest eager chunks:
node .claude/skills/analyzing-backend-bundle/analyze-bundle.mjs startup \
--meta <meta.json> --loaded /tmp/loaded.txt
# 3. Explain WHY a package is eager (shortest static import chain from the entry;
# --from <input> traces from a module that is itself dynamically imported):
node .claude/skills/analyzing-backend-bundle/analyze-bundle.mjs why \
--meta <meta.json> iconv-lite undici
node .claude/skills/analyzing-backend-bundle/analyze-bundle.mjs why \
--meta <meta.json> --from apps/server/src/www.ts highlight.js
# 4. Whole-bundle composition, no boot needed:
node .claude/skills/analyzing-backend-bundle/analyze-bundle.mjs packages --meta <meta.json>
# 5. After adding any lazy seam — catches the CJS interop break described below:
node .claude/skills/analyzing-backend-bundle/check-dynamic-imports.mjs apps/server/dist
# Memory numbers (RSS/heap post-GC; add --snapshot for a heap snapshot):
env $ENV node --expose-gc .claude/skills/analyzing-backend-bundle/profile-bundle.cjs \
apps/server/dist/main.mjs --port 8123 --snapshot /tmp/s.heapsnapshot
# Startup speed (spawn -> first HTTP response, median of N runs):
env $ENV node .claude/skills/analyzing-backend-bundle/bench-startup.mjs \
apps/server/dist/main.mjs 5
# What the heap actually retains (proves which chunk sources are resident):
node --max-old-space-size=8192 .claude/skills/analyzing-backend-bundle/heap-strings.mjs \
/tmp/s.heapsnapshotThe desktop bundle embeds the same server code, so server recordings generalize to it;
record/profile-bundle cannot boot apps/desktop/dist/main.mjs under plain node (it
imports electron), but packages and why work on its metafile directly.
buildBackend() writes dist/meta.json, and the last call in the app's build script
wins — after pnpm server:build it describes image_worker.cjs, not main. To get the
main bundle's metafile, temporarily leave only the main.ts buildBackend call in
apps/server/scripts/build.ts, run the build, and save dist/meta.json elsewhere before
restoring. (Making buildBackend write per-entry metafiles is the real fix if this grates.)
entryPoint (240 of 286 outputs in the first analysis), so any static
reasoning that consults entryPoint, or assumes "chunk = lazy", overcounts. Conversely the
static-reachability closure undercounts: a dynamic import executed during boot loads its
chunk anyway./mcp route registering the
MCP SDK at boot instead of on first request) — or the package is reached by an ordinary
static chain from a module that is itself dynamically imported at boot, such as
apps/server/src/www.ts. why --from apps/server/src/www.ts <pkg> shows the second kind;
the fix there is a seam somewhere along the chain it prints.why takes a package name, not a substring. A bare needle matches at
node_modules/<name>/ or a whole path segment, because plain substring matching silently
confuses a package with any file whose name merely ends the same way — "highlight.js" also
appears in postcss's terminal-highlight.js, which reads as a plausible but entirely
fictitious dependency edge.startup's biggest-chunks table shows each chunk's dominant input so
this is visible.why chain through an absurd path is a stubbing opportunity — e.g. highlight.js
reached via sanitize-html → postcss/lib/terminal-highlight (postcss's terminal error
pretty-printer). An esbuild alias to a stub kills such an edge at build level.| Situation | Fix |
|---|---|
Used only inside an async function | Move the import into it: const { x } = await import("pkg") (the pattern in pdf_processor.ts, office_processor.ts, claude_agent.ts) |
| Loaded at boot by a dynamic import | Keep the registration eager, import the payload in the request handler on first use |
| Consumed synchronously (script API, sucrase transpile) | Per-call import is impossible — preload conditionally at startup behind the feature's flag (backend scripting is off by default) |
| Pulled by a dep's edge that never runs meaningfully | esbuild alias/stub for that one file |
After any fix: re-run record + startup and compare the eager total, run
check-dynamic-imports.mjs (see below), and check no chunk in the new startup set carries
characters above U+00FF (grep -lP '[^\x00-\xFF]' over the loaded chunks; heap-strings.mjs
shows a ~2x source string when one slips through).
const { x } = await import("some-cjs-package") is silently broken in the split ESM
build. esbuild cannot know a CommonJS module's named exports, so it emits the chunk with a
single default export; destructuring names off the namespace yields undefined, and the
first call fails with something like "l is not a constructor". Unit tests do not catch it,
because a vi.mock("some-cjs-package", …) supplies whatever names the test asks for.
Write the seam through the interop instead, and give the test mock a matching default (the
real module has one — that is the shape Node's own CJS interop produces):
const mod = await import("undici");
const { Agent, fetch } = mod.default ?? mod; // works in ESM chunks, CJS output, and NodeSeams whose target is own source or a real ESM package (unpdf, the agent SDK, the MCP
SDK, core's own modules) are unaffected — they have genuine named exports. Only CJS
packages bite. check-dynamic-imports.mjs compares, for every dynamic import in the built
bundle, the names the consumer destructures against the names the target chunk exports; run
it on a clean build after adding a seam, and confirm the seam works for real (import the
emitted chunk in a scratch script and call into it) rather than trusting the unit tests.
NODE_V8_COVERAGE does not capture the loaded-script list here (the dump held only node
internals) — the module hook (loghook.cjs, preloaded by record) is the reliable tool.record does; a hand-rolled runner that waits on exit after
SIGTERM hangs and leaks an orphaned server.__dirname in ESM output is defined by the buildBackend banner and resolves to the
bundle root even inside chunks/ — bundled code locates preload.cjs,
image_worker.cjs and assets relative to the entry. Don't "simplify" the banner; which
chunk a module lands in must not change what __dirname means.--max-old-space-size=8192; write them
only when needed (--snapshot), they're ~70-90 MB on disk.Related skills: measure-startup-requests (the client-side counterpart), profiling-client-performance (renderer-side cost), developing-electron-desktop (desktop launch specifics when verifying a change in the real app).
© TriliumNext, AGPL-3.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 6 other files in .claude/skills/analyzing-backend-bundle of TriliumNext/Trilium.
Open the folder on GitHubat commit cac2b4f
Analyzing Backend Bundle 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 |
|---|---|---|---|---|---|---|
| Analyzing Backend Bundle this skillTriliumNext/Trilium | 38k | — | ~2.6k | Automated safety check: Pass | AGPL-3.0 | |
| Remembercommercetools/ui-kit | 154 | — | ~2k | Automated safety check: Notes | MIT | |
| Gitnexus ExplorerTommy-yw/RunbookHermes | 546 | 3 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Learning Visualization Skillmingchen666/Reviva | 237 | — | ~1.1k | Automated safety check: Pass | None | |
| Network Protocol Vizmingchen666/Reviva | 237 | — | ~1.1k | Automated safety check: Pass | None | |
| Data Structure Visualizationmingchen666/Reviva | 237 | — | ~1.1k | Automated safety check: Pass | None |
commercetools/ui-kit
Persist guidelines, conventions, and architectural decisions into the repository's knowledge base.
Tommy-yw/RunbookHermes
Index a codebase with GitNexus and serve an interactive knowledge graph via web UI + Cloudflare tunnel.
mingchen666/Reviva
Generate single-file HTML visual explanations for learning and review.
mingchen666/Reviva
Generate single-file HTML animations that teach network protocols and packet flow.
mingchen666/Reviva
A skill your agent uses whenever the user wants visual learning for data structures, algorithms, trees, graphs, sorting, searching, hashing, recursion, complexity analysis, 408 data structure…
makeplane/plane
Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
TriliumNext/Trilium
A skill your agent uses when working on the Trilium Electron desktop app (apps/desktop) — adding or changing an electronApi method / IPC channel, touching preload.ts, main.ts, services/window.ts or…
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
TriliumNext/Trilium
A skill your agent uses when adding, moving, or wiring an internal REST endpoint in Trilium (a new /api/ route) — choosing between a core-shared handler (packages/trilium-core/src/routes/index.ts…
TriliumNext/Trilium
A skill your agent uses when adding, changing, or reviewing an LLM/MCP tool in Trilium (the defineTools definitions under packages/trilium-core/src/services/llm/tools/ —…
TriliumNext/Trilium
Write, extend, and review CKEditor 5 plugins in the Trilium (TriliumNext Notes) monorepo — the rich-text-note editor under packages/ckeditor5, whose plugins live in src/plugins/.
Categories
A skill your agent uses when analyzing the server/desktop backend bundle — "what does the server load at startup?", "is <dependency lazy on the backend?", "why is <package in the startup set?", "how…. Analyzing Backend Bundle is an agent skill from TriliumNext/Trilium.", chunk analysis after adding a dynamic-import seam, backend memory profiling (RSS, retained script source, heap), or any before/after comparison for backend lazy-loading.
Analyzing Backend Bundle fits situations like: analyzing the server/desktop backend bundle — what does the server load at startup?; is <dependency lazy on the backend?; why is <package in the startup set?; how big is the eager set?.
Run `npx skills add TriliumNext/Trilium --skill analyzing-backend-bundle -a claude-code`. Or copy the skill folder (.claude/skills/analyzing-backend-bundle in TriliumNext/Trilium) into .claude/skills/analyzing-backend-bundle in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TriliumNext/Trilium --skill analyzing-backend-bundle -a codex`. Or copy the skill folder (.claude/skills/analyzing-backend-bundle in TriliumNext/Trilium) into .agents/skills/analyzing-backend-bundle 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 TriliumNext/Trilium --skill analyzing-backend-bundle -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/analyzing-backend-bundle, .gemini/skills/analyzing-backend-bundle, .github/skills/analyzing-backend-bundle and .opencode/skills/analyzing-backend-bundle in your project.
Going by SKILL.md and its folder, Analyzing Backend Bundle needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and pnpm). Our summary lists: Node.js.
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.
Analyzing Backend Bundle is published under the AGPL-3.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 10k 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 Analyzing Backend Bundle: Remember (commercetools/ui-kit, 154 stars), Gitnexus Explorer (Tommy-yw/RunbookHermes, 546 stars), Learning Visualization Skill (mingchen666/Reviva, 237 stars) and Network Protocol Viz (mingchen666/Reviva, 237 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TriliumNext (a GitHub organization) maintains it in TriliumNext/Trilium, which has 38,248 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 8, 2026.
Source: TriliumNext/Trilium on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.