ZCF Release Automation
UfoMiao/zcf
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
A skill your agent uses when working on Trilium's Flathub packaging — the from-source flatpak recipe vendored in apps/desktop/flatpak/ (manifest, trilium.sh, flathub.json, .desktop, metainfo), the…
$ npx skills add TriliumNext/Trilium --skill packaging-for-flathub -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TriliumNext/Trilium packaging-for-flathub --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/packaging-for-flathub .claude/skills/packaging-for-flathub && 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 "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .claude/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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/packaging-for-flathubType 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 packaging-for-flathub -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TriliumNext/Trilium packaging-for-flathub --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/packaging-for-flathub .agents/skills/packaging-for-flathub && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .agents/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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 packaging-for-flathub -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TriliumNext/Trilium packaging-for-flathub --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/packaging-for-flathub .cursor/skills/packaging-for-flathub && 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 "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .cursor/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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/packaging-for-flathub--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 packaging-for-flathub -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TriliumNext/Trilium packaging-for-flathub --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/packaging-for-flathub .gemini/skills/packaging-for-flathub && 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 "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .gemini/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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 packaging-for-flathubInstalls 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 packaging-for-flathub -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/packaging-for-flathub .github/skills/packaging-for-flathub && 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 "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .github/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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 packaging-for-flathub -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 packaging-for-flathub --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/packaging-for-flathub .opencode/skills/packaging-for-flathub && 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 "packaging-for-flathub" agent skill from https://github.com/TriliumNext/Trilium/tree/main/.claude/skills/packaging-for-flathub into .opencode/skills/packaging-for-flathub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "packaging-for-flathub", 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.
packaging-for-flathubA skill your agent uses when working on Trilium's Flathub packaging — the from-source flatpak recipe vendored in apps/desktop/flatpak/ (manifest, trilium.sh, flathub.json, .desktop, metainfo), the…
Packaging For Flathub is an agent skill from TriliumNext/Trilium. Use when working on Trilium's Flathub packaging — the from-source flatpak recipe vendored in apps/desktop/flatpak/ (manifest, trilium.sh, flathub.json, .desktop, metainfo), the scripts/flatpak/ generators (update-repo.mts, generate-sources.mts), .github/workflows/release-flathub.yml, or the published packaging repo at ../org.triliumnotes.Trilium. Covers the settled architecture decisions (no electron-forge, no asar, sandboxed data dir, per-arch pnpm sources, build-time scripts shared with the forge build), the…
Its SKILL.md is about 4.4k 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 Development, covering Pull requests. It works with GitHub Actions and pnpm. The repository describes itself as: Build your personal knowledge base with Trilium Notes. The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 80be026. 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.
Shell commands in SKILL.md call:
pnpmnodeFrom 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.comFrom 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.
Packaging For Flathub loads about 4.4k tokens when it runs. Until then it costs about 243 tokens; SKILL.md has 2,026 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 80be026, republished under its AGPL-3.0 licence (© TriliumNext). 2,026 words, ~4,424 tokens.
.claude/skills/packaging-for-flathub/SKILL.md (or your agent's skills folder).A from-source flatpak of Trilium Desktop, built offline inside the flatpak-builder
sandbox with no Electron Forge involvement. The app is published: the submission
(flathub/flathub#10014) merged and flathub/org.triliumnotes.Trilium exists. The recipe
now lives in this repo and the packaging repo is generated from it.
The generated recipe builds on Flathub's own infrastructure. FLATHUB_PAT is in
place and the workflow's first unattended run opened
org.triliumnotes.Trilium#1:
validate-manifest passed, build-x86_64 took 8m07s and build-aarch64 10m40s, both
green. That run also carried the first prune, removing the three leftover .mts scripts.
Flathub ships the latest release and CI keeps it current, so it is the Flatpak that
apps/website/src/download-helper.ts recommends on the Linux download card; the Forge
.flatpak asset is no longer linked from the website.
Flathub bans AI-generated submissions (policy May 2026). Everything addressed to Flathub — pull request descriptions, review replies, linter-exception requests — is Elian's to author personally. Draft packaging code and manifests freely; do not write the words that go to Flathub reviewers.
apps/desktop/flatpak/ holds the manifest
(org.triliumnotes.Trilium.yml), trilium.sh, flathub.json, the .desktop file and
the metainfo. scripts/flatpak/ holds update-repo.mts (writes the manifest with the
ref and pnpm pins, copies trilium.sh + flathub.json) and generate-sources.mts
(regenerates generated-sources.json). .github/workflows/release-flathub.yml runs
both and opens the pull request, on every published non-prerelease and on a dispatched
ref. Also here:
apps/website/public/.well-known/org.flathub.VerifiedApps.txt (empty, serving 200; the
dev-portal token fills it — post-publication flow, keep the file forever)./home/elian/Projects/TriliumNext/org.triliumnotes.Trilium,
a clone of the real Flathub repo (default branch master, Elian has push). It holds
only the manifest, trilium.sh, flathub.json, generated-sources.json and a README.
Never hand-edit it — update-repo.mts overwrites everything but the sources file,
which generate-sources.mts overwrites, and deletes every other tracked file. A file
the recipe should keep but not write belongs in KEPT_FILES; master carried
flip-fuses.mts, stamp-build-info.mts and trim-locales.mts long after the manifest
moved to running the checkout's own copies, which is what that prune clears.Local flow, from this repo, in this order:
pnpm exec tsx scripts/flatpak/update-repo.mts ../org.triliumnotes.Trilium [ref]
pnpm exec tsx scripts/flatpak/generate-sources.mts ../org.triliumnotes.Triliumref defaults to HEAD; a tag pins tag: + commit:, anything else pins a bare
commit. The pinned commit must be pushed — Flathub clones TriliumNext/Trilium at
that SHA.
From source, not repackaged. The AppImage-extract fallback (Zettlr-style) exists if reviewers ever balk at build cost.
App ID org.triliumnotes.Trilium, CamelCase last element. The old
com.github.zadam.trilium gets an end-of-life-rebase to the new ID — still pending,
Elian can merge it himself; <provides>/<replaces> are already in the metainfo. The
rebase renames ~/.var/app/<id>, which the old app never used, so it moves no notes —
see "What remains" for the migration that does.
No asar, no Forge. Payload proven byte-identical to the Forge flatpak; the +11 MB is compression granularity (ostree per file vs. one asar stream). Tamper-sealing comes from content-addressed ostree, so asar integrity fuses buy nothing.
The build-time scripts are shared with the forge build, not copies. The manifest runs the checkout's own code:
pnpm chore:update-build-info --from-commit — commit date, not wall clock, so a
rebuild of the same source stamps the same bytes. The default (no flag) is what the
seven CI callers use; do not change it.apps/desktop/electron-forge/flip-fuses.ts — FUSES is the shared baseline; the
forge config spreads it and adds OnlyLoadAppFromAsar +
EnableEmbeddedAsarIntegrityValidation at the use site, because only Forge packages
an asar. RunAsNode is OFF, so ELECTRON_RUN_AS_NODE smoke tests do not work.apps/desktop/electron-forge/trim-locales.ts — one keep-list derived from LOCALES,
one walk, one completeness check (a keep-list locale missing from the package fails
the build). 55 → 21 .paks on Linux.Each has a run-as-script guard (process.argv[1] === import.meta.filename) and takes
its target as an argument. Editing them touches both the Flathub build and the
.deb/.rpm/Forge artifacts.
The desktop file and metainfo install from the pinned checkout, not from
packaging-repo copies and not from raw.githubusercontent pins. The review wanted them
in this repo; the URL-pin variant is also how the published build missed the
StartupWMClass fix for weeks. There is no separate metadata module any more —
nothing is left for it to cache-isolate. trilium.sh is the one exception, copied into
the packaging repo so a reviewer reads the sandbox behavior without opening the
checkout.
That is also why the metainfo's <releases> — the version Flathub displays — has to be
right in the commit that gets tagged. pnpm chore:update-version regenerates it from
the newest five vX.Y.Z tags, so it is never hand-edited and never accumulates drift;
the version being prepared is dated today until its own tag supplies the date.
Sandboxed data dir, narrow filesystem access. trilium.sh sets
TRILIUM_DATA_DIR to $XDG_DATA_HOME/trilium-data (i.e. inside ~/.var/app), falling
back to host ~/.local/share/trilium-data when that exists; a flatpak override wins.
--filesystem=home is gone — four read-only XDG dirs cover drag-&-drop import
(electron#30650), so the linter exception that was pending at submission is moot.
Do not grant the legacy path back, in any form. The reviewer struck
--filesystem=home (#10014),
then struck the narrowed --filesystem=~/.local/share/trilium-data:create as well
(here) — "you
have your sandboxed folder" — when told it would blank out the old app's users:
migration is upstream's job, the permission set is Flathub's. Re-adding either gets the
next packaging PR rejected. A review bot that reads trilium.sh alone flags this as a
data-loss bug (PR #11629); it is a known deferred cost, not a defect.
$HOME inside the sandbox is the real path (/home/user) whatever is mounted, so the
fallback branch turns purely on what the manifest or an override exposes. Verify with
flatpak run --nofilesystem=home --command=sh <id> -c '…' against an installed build.
Since the guard is [ ! -d "$XDG_DATA_HOME/trilium-data" ], an override added after
the first launch no longer reaches the legacy notes — the sandbox dir already exists.
pnpm 12 ships as a native binary per platform. The manifest stages
@pnpm/exe.linux-x64 / -arm64 tarballs with only-arches, because the pnpm
wrapper package's postinstall (which picks one) cannot run offline. append-path
points at flatpak-node/pnpm; the archive root holds an executable pnpm, so no
chmod/symlink step. Refs older than pnpm 12 are rejected by checkPnpmSupported —
pnpm 11 had a single wrapper tarball and the per-arch URL would 404.
The vendored manifest holds no pins of its own — __TAG__, __COMMIT__,
__PNPM_VERSION__, __PNPM_SHA256_X64__ and __PNPM_SHA256_ARM64__ are placeholders
update-repo.mts fills in from the packaged ref, fetching the two tarballs for their
hashes every run. So there is nothing to keep in step and nothing to gate: a check that
compared a vendored pin with package.json was tried and reverted, because on a
pull_request run it sees main's package.json against the branch's manifest and one
Renovate bump reddens every open pull request, none of which can fix it.
Consequences: the vendored manifest is a template, not a buildable one (it also
references a generated-sources.json that lives only in the packaging repo), and
checkPlaceholdersFilled fails the run when a new __NAME__ appears that nothing
fills — including one written inside a comment. Verify a change to the templating by
rendering into an empty directory and diffing against the packaging repo:
node --experimental-strip-types scripts/flatpak/update-repo.mts /tmp/out [ref].
Never cp -r the packaging repo to do it — its .flatpak-builder/ holds a
multi-gigabyte build tree.
flathub.json carries disable-external-data-checker: true (the checker probes
broken URLs without x-checker-data, so it would poll ~2400 generated npm sources)
and automerge-flathubbot-prs: false — the linter errors on true
(flathub-json-automerge-enabled). It only takes effect on the default branch.
No only-arches at app level: x86_64 + aarch64 both build (better-sqlite3 13 ships
arm64 prebuilds).
flatpak-node-generator pnpm <lockfile> --pnpm-store-version v11 — the flag is
mandatory. pnpm 12 still reads the v11 store layout (SQLite index.db); the
generator defaults to v10 (per-package JSON index). Verify with pnpm store path
before assuming a bump changed it. checkPnpm in generate-sources.mts guards the
major (currently 12).KeyError: electron-v44.4.1-linux-armv7l.zip, because Electron stopped publishing armv7l and only
newer generator revisions skip that arch. CI pins a master commit
(41c20aa10819cdb2a4f3ca171758a96d1955c018 or later) via pipx. The copy bundled in
org.flatpak.Builder is too old — locally, extract it and patch the guard in
flatpak_node_generator/electron.py, keeping the copy under $HOME (the sandbox cannot
see /tmp) and pointing PYTHONPATH at it through a flatpak-node-generator shim on
PATH. Drop that crutch once the Builder flatpak updates.requiresBuild: false ⇒ no dependency
lifecycle script runs. The workspace's OWN postinstall DOES run. Nothing in the
graph needs a native build.require, which
offline forbids. The manifest unzips flatpak-node/cache/electron/electron-v*-linux-*.zip
itself, renames the binary to trilium, deletes chrome-sandbox (zypak replaces the
setuid sandbox), and the wrapper runs zypak-wrapper.filterSources, which also
fails loudly if the count collapses or the Electron zip disappears. --no-devel is
unsupported for lockfile v9 and would break the build (Vite/esbuild/tsx are devDeps).Build and lint exclusively through the org.flatpak.Builder flatpak (bundles
flatpak-builder, flatpak-builder-lint, appstreamcli, ostree, jq). The host's
flatpak-builder cost two wasted investigations: NixOS ships it without appstreamcli,
and version skew produced phantom lint errors.
flatpak run org.flatpak.Builder --user --install --force-clean builddir org.triliumnotes.Trilium.yml
flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest org.triliumnotes.Trilium.yml
# Repo lint as Flathub's test pipeline judges it:
flatpak run org.flatpak.Builder --user --force-clean --default-branch=test --repo=repo builddir org.triliumnotes.Trilium.yml
flatpak run --env=REPO=https://github.com/flathub/org.triliumnotes.Trilium --command=flatpak-builder-lint org.flatpak.Builder repo repo
# Metainfo alone, no build needed (what CI does):
flatpak run --command=appstreamcli org.flatpak.Builder validate --explain apps/desktop/flatpak/org.triliumnotes.Trilium.metainfo.xmlExpected findings — do not re-investigate: runtime-update-available-… (a runtime
bump is a deliberate decision) and, on local repo lint,
appstream-remote-icon-not-mirrored (the mirroring checks string-match
dl.flathub.org/media URLs that appstreamcli never emits locally; only Flathub's own
build adjudicates it).
flathub/org.kde.kolourpaint#128 (draft: true)
produced a vorarbeiter run. Drafting costs no coverage.builds/x86_64 — an aggregate, on every app,
whether or not aarch64 built. The aarch64 result is a build-aarch64 job inside the
run the status links to (alongside validate-manifest). Never read a green check as
proof aarch64 built; open the run.builds/x86_64=failure); bot, build re-triggers and the newer run
overwrites the status.refs/pull/*/head (test, publishes nothing), master
(stable publish), beta (beta channel). A push to any other branch builds nothing — so
a pull request is the only way to get a build without publishing.master (shared update/beta
branch, superseded per run) purely for the two-arch verdict. A real beta branch is
for -rc tags with actual testers, and publishing there has no review gate.flatpak-builder --run CANNOT test zypak apps (portal Spawn needs a registered
instance). Always --install + flatpak run.XDG_DATA_DIRS of the running gnome-shell before
touching code: a re-login fixes it. Two "fixes" were nearly shipped for this non-bug.--env=TRILIUM_DATA_DIR=/tmp/....--talk-name=org.freedesktop.Notifications is NOT needed (libnotify ≥0.8 uses the
portal). The tray's org.kde.StatusNotifierWatcher has no portal equivalent and stays.
Audit a finish-arg with flatpak run --no-talk-name=… <id> and dbus-monitor..flatpak and every .deb/AppImage keep notes at host
~/.local/share/trilium-data; the new app starts on an empty
$XDG_DATA_HOME/trilium-data and says nothing about why. Until then, the User Guide's
Desktop Installation page documents copying the directory into
~/.var/app/org.triliumnotes.Trilium/data by hand. Options not yet weighed: a
first-run prompt that asks for the directory through the file portal, a documented
flatpak override --filesystem=… in the release notes, or exposing the legacy
database read-only for a one-time import. Settle it before the rebase — after it,
the old app is gone and the surprise is the user's.flathub.json with
end-of-life-rebase: org.triliumnotes.Trilium to flathub/com.github.zadam.trilium
(needs end-of-life too, or the linter errors). Old app ships 0.63.7/2024 on EOL
23.08 to ~71k installs.<branding> colors (leaf-green #cfe8c0 light / #254d18 dark;
compare peers via flathub.org/api/v2/appstream/<id> → .branding), metainfo
description refresh, and the --no-playwright-browsers flag worth filing upstream.
License stays AGPL-3.0-only until the repo reconciles package.json with the README's
v3+ grant.© 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
Just SKILL.md in .claude/skills/packaging-for-flathub of TriliumNext/Trilium.
Open the folder on GitHubat commit 80be026
Packaging For Flathub 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 |
|---|---|---|---|---|---|---|
| Packaging For Flathub this skillTriliumNext/Trilium | 38k | — | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| ZCF Release AutomationUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Babysit PR To Pass CIsgl-project/sglang | 37k | 2 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Releasemicrosoft/agent-lightning | 19k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Pull Requestspnpm/pnpm | 37k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT |
UfoMiao/zcf
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
sgl-project/sglang
Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.
microsoft/agent-lightning
Prepare and publish stable Agent Lightning releases through the repository's version bump, pull-request checks, merge, tag, PyPI trusted-publishing, and versioned-documentation workflows.
pnpm/pnpm
Take a change through a pull request in the pnpm repository — opening it, then staying with it after every push until CI is green and the review round is quiet.
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
verdaccio/verdaccio
Reviews an existing verdaccio/verdaccio pull request end to end, verifies each finding and reports whether it is mergeable, optionally fixing it on the PR branch.
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/.
Works with
Categories
A skill your agent uses when working on Trilium's Flathub packaging — the from-source flatpak recipe vendored in apps/desktop/flatpak/ (manifest, trilium.sh, flathub.json, .desktop, metainfo), the…. Packaging For Flathub is an agent skill from TriliumNext/Trilium.Trilium.
Packaging For Flathub fits situations like: working on Triliums Flathub packaging — the from-source flatpak recipe vendored in apps/desktop/flatpak/ (manifest; the scripts/flatpak/ generators (update-repo.mts; generate-sources.mts); .github/workflows/release-flathub.yml.
Run `npx skills add TriliumNext/Trilium --skill packaging-for-flathub -a claude-code`. Or copy the skill folder (.claude/skills/packaging-for-flathub in TriliumNext/Trilium) into .claude/skills/packaging-for-flathub in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TriliumNext/Trilium --skill packaging-for-flathub -a codex`. Or copy the skill folder (.claude/skills/packaging-for-flathub in TriliumNext/Trilium) into .agents/skills/packaging-for-flathub 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 packaging-for-flathub -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/packaging-for-flathub, .gemini/skills/packaging-for-flathub, .github/skills/packaging-for-flathub and .opencode/skills/packaging-for-flathub in your project.
Going by SKILL.md and its folder, Packaging For Flathub needs the command-line tools its instructions call (pnpm and node).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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.
Packaging For Flathub 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 4.4k tokens (SKILL.md is roughly 18k 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 Packaging For Flathub: ZCF Release Automation (UfoMiao/zcf, 6.1k stars), Babysit PR To Pass CI (sgl-project/sglang, 37k stars), Release (microsoft/agent-lightning, 19k stars) and Pull Requests (pnpm/pnpm, 37k 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,265 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 10, 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.