GreptimeDB Release Runbook
GreptimeTeam/greptimedb
Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.
FRB1 (engine + Glue) release runbook — gh CLI sequence for Engine.yml/glue.yml, version scheme, release notes.
$ npx skills add vchelaru/FlatRedBall --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vchelaru/FlatRedBall release --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/vchelaru/FlatRedBall.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && 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 "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/releaseType 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 vchelaru/FlatRedBall --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vchelaru/FlatRedBall release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vchelaru/FlatRedBall.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 vchelaru/FlatRedBall --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vchelaru/FlatRedBall release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vchelaru/FlatRedBall.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release .cursor/skills/release && 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 "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/vchelaru/FlatRedBall.git --path .claude/skills/release--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 vchelaru/FlatRedBall --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vchelaru/FlatRedBall release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vchelaru/FlatRedBall.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release .gemini/skills/release && 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 "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 vchelaru/FlatRedBall releaseInstalls 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 vchelaru/FlatRedBall --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vchelaru/FlatRedBall.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release .github/skills/release && 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 "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 vchelaru/FlatRedBall --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vchelaru/FlatRedBall release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vchelaru/FlatRedBall.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release .opencode/skills/release && 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 "release" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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.
releaseFRB1 (engine + Glue) release runbook — gh CLI sequence for Engine.yml/glue.yml, version scheme, release notes.
Release is an agent skill from vchelaru/FlatRedBall. FRB1 (engine + Glue) release runbook — gh CLI sequence for Engine.yml/glue.yml, version scheme, release notes. Triggers: cutting a release, IsBeta, BuildServerUploaderConsole, NuGet publish, changeengineversion.
Its SKILL.md is about 3.5k 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 DevOps & Cloud, covering Runbooks and postmortems and Changelog and release notes. The repository describes itself as: Cross-platform 2D game engine focused on ultimate productivity built in .NET. The licence is MIT.
11 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f30172a. 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:
ghdotnetgitFrom 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.comAlso links to:
docs.flatredball.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BAD_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release loads about 3.5k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 1,790 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 vchelaru/FlatRedBall at commit f30172a, republished under its MIT licence (© vchelaru). 1,790 words, ~3,513 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).Releasing FRB1 (engine + Glue/FRBDK) is semi-automated: gh CLI triggers and watches the two release workflows, but every hard-to-reverse step (a workflow run that publishes to nuget.org or pushes to the prod FTP, and publishing the GitHub release) needs explicit user go-ahead first — treat each CHECKPOINT below as a stop, not a formality.
| File | Role |
|---|---|
.github/workflows/Engine.yml | "Build Engine DLLs" — bumps engine version, builds+publishes engine NuGets across 5 platforms |
.github/workflows/glue.yml | "FlatRedBall Editor" — bumps FRBDK version, builds Glue, zips+FTPs FRBDK.zip |
FRBDK/BuildServerUploader/BuildServerUploaderConsole/Program.cs | The actual tool both workflows shell out to (changeengineversion, changefrbdkversion, zipanduploadtemplates, zipanduploadfrbdk, ...) |
Processes/UpdateAssemblyVersions.cs | Version-bumping logic — see Version scheme below |
Processes/CopyFrbdkAndPluginsToReleaseFolder.cs (DownloadGum) | Pulls Gum's latest GitHub release Gum.zip asset and bundles it into FRBDK — see Gum dependency below |
| docs.flatredball.com/flatredball/contributing/builds | The narrative doc — kept current, cross-check before deviating from this skill |
Both workflows are workflow_dispatch-only, run against whatever is currently on the default branch (not a tag/push trigger) — confirm local NetStandard matches origin/NetStandard before dispatching. The default branch is NetStandard, not main.
glue.yml runs the Glue unit tests and the Category=BuildSmoke new-project builds before the FTP upload, so a red test fails the release rather than shipping — expect it to take longer than a pure build, and read a failure as a real gate.
git status, git fetch, confirm local NetStandard == origin/NetStandard. If this release needs a new Gum tool version, publish it first via Gum's own release process (gum-release/gum-monthly-release skills in the Gum repo) — see Gum dependency below.
Then run scripts/Test-DownstreamBuilds.ps1, which compiles the games and in-repo projects the checklist names against the working tree, and dry-run the template steps (see below). The GitBook puts this smoke test before any workflow dispatch, which is the safer order — nuget.org publishes can't be revoked.
Also run the slow gate the fast unit run skips, since it covers what a user's first five minutes actually exercise: dotnet test "FRBDK/Glue/Glue with All.sln" -c Debug --filter "Category=BuildSmoke" (new-project creation + build, and the Gum runtime contract sweep).-beta NuGet packages, not revocable.
gh workflow run Engine.yml -f IsBeta=truegh run list --workflow=Engine.yml --limit 1 → grab the run id → gh run watch <id> --exit-status.-beta NuGet version and sanity-check it. Claude can't drive this step.gh workflow run Engine.yml -f IsBeta=falsegh run list --workflow=Engine.yml --limit 1 → gh run watch <id> --exit-status.gh workflow run glue.ymlgh run list --workflow="FlatRedBall Editor" --limit 1 → gh run watch <id> --exit-status..csproj picked up the new engine version, and build it. Then run the smoke-test games — Test-DownstreamBuilds.ps1 only proves they compile, never that they play.
The wizard's friendly names don't match the internal template folder names — pick "Desktop GL .NET 9 (Windows, Mac, Linux) - MonoGame", which is FlatRedBallDesktopGlMonoGameTemplate. The Net6 spelling surviving in the engine package ids is deliberate: renaming a published package id strands every existing project on the old one. The wizard's list (FRBDK/Glue/NpcWpfLib/Data/EmptyTemplates.cs) and the engine list in AllData.cs are maintained separately by hand and drift both ways; NewProjectTemplateListTests fails if a template is offered with no engine, or shipped with no wizard entry.gh release create <tag> --draft --notes-file <path> --title "<Month DD, YYYY>", review, then gh release edit <tag> --draft=false.
The release ends at step 11. The GitBook's checklist continues into announcements (Discord, Twitter/X) — those are the maintainer's own call, so don't run them and don't close out by prompting for them.The two workflows ship disjoint artifacts, so a hotfix usually needs only one of them:
| Fix touches | Re-run | Leaves alone |
|---|---|---|
Engines/** (runtime) | Engine.yml | FRBDK |
FRBDK/Glue/**, incl. all Gum codegen | glue.yml | engine NuGet packages |
A codegen bug reaches users through FRBDK.zip, not through the engine packages — re-running Engine.yml for one is pure churn, and it mints a new version string that supersedes the one you just announced. Relatedly, a failed IsBeta=false run that got as far as the NuGet push leaves those packages published; the re-run publishes a second, higher version rather than replacing them. The stranded set is harmless (identical content, and NuGet resolves to newest), so unlisting it is optional tidiness, not a correctness fix.
Engine/FRBDK versions are date+time based, not semver: yyyy.M.d + . + minutes-since-midnight, e.g. a run at 2:03am → <year>.<month>.<day>.123. This is what makes same-day re-runs not collide.
IsBeta=true) appends -beta to that string, and skips AssemblyInfo.cs entirely — only the .csproj <Version> and template NuGet PackageReference versions are touched, since beta is NuGet-only.changefrbdkversion (glue.yml) always calls UpdateAssemblyVersions with isBeta:false hardcoded — Glue/FRBDK itself never gets a beta version, only the engine can be beta.Engine.yml builds each enabled platform Debug and Release — but only Debug is published to NuGet today; Release is built and uploaded as a workflow artifact only (the YAML comment literally says "we don't (yet?) publish any release nuget packages"). Don't expect a Release NuGet to show up.
| Platform | Framework |
|---|---|
| Web (Kni) | net8.0 |
| FNA | net7.0 |
| DesktopGL | net6.0 |
| iOS | net8.0 — can't build, see below |
| Android | net8.0 — can't build, see below |
The mobile targets are net8.0-ios/net8.0-android, whose workloads are past end of life and are no longer on the GitHub runner image. setup-dotnet installs SDKs, not workloads, so the build fails with NETSDK1140 — "1.0 is not a valid TargetPlatformVersion for ios. Valid versions include: None." Suppressing the EOL check (CheckEolWorkloads=false) only surfaces that underlying error; there is no workload to build against either way. Retargeting the mobile projects off net8 is the only real fix. Read Engine.yml itself for which platforms are currently wired up — the disabled steps are commented in place with restore instructions rather than deleted.
All five NuGet pushes happen in a single step after every platform has compiled, so the matrix is all-or-nothing — a build failure on any platform means nothing reaches nuget.org. Don't reintroduce per-platform publishing; dotnet nuget push can't be undone, and interleaving it is what makes a mid-matrix failure leave a half-shipped release.
glue.yml's build matrix only runs Debug (Release is commented out).
Program.cs also has a zipanduploadgum command wired into the manual/debug code path, but no workflow in this repo calls it — it uploads Gum to FRB's FTP, a path that's no longer used (see Gum dependency below).
Glue.csproj is just the core editor lib/exe (GlueFormsCore.exe) — it does not reference plugin projects like GumPlugin.csproj. Plugins are separate projects built independently and copied into Glue/Glue/bin/<Config>/Plugins/<PluginName>/<PluginName>.dll, which is where Glue actually loads them from at runtime. dotnet build FRBDK/Glue/Glue/Glue.csproj silently leaves that Plugins folder untouched — no error, no warning, just a stale plugin DLL sitting next to a freshly-built exe. If you're testing a plugin change (e.g. anything in GumPlugin), you must build either the whole solution (dotnet build "FRBDK/Glue/Glue with All.sln") or that plugin's .csproj explicitly — building Glue.csproj alone is not enough and will make it look like your fix "didn't work."
*.Generated.cs is gitignored repo-wide, with Samples/BeefballKni and Samples/EditorTest1 the only !-exceptions. Any project that depends on Glue codegen therefore cannot build from a clean checkout — including Tests/TestProjectDesktopNet6 (the checklist's "Automated Test Project") and every sample but BeefballKni. Locally they build fine off untracked generated files already on disk, so adding one to a workflow produces a green local run and a red CI run.
The split this forces: pr-tests.yml gates what a clean checkout can build (Glue, Tests/EngineUnitTests, Forms under DebugAutoBuild); scripts/Test-DownstreamBuilds.ps1 covers what needs a developer's machine (codegen-dependent projects plus the sibling game checkouts).
DebugAutoBuild/ReleaseAutoBuild are worth knowing separately: they're the configurations Glue uses to rebuild the engine during live edit, and the only ones where FlatRedBall.Forms references SkiaGum. Plain Debug/Release — all Engine.yml builds — never evaluate that reference, so breakage there is invisible to the release pipeline.
copytotemplates and zipanduploadtemplates run only when IsBeta=false, and they run after the NuGet push — so a beta run cannot exercise them and a failure there lands with packages already public. Dry-run them locally instead. From the directory containing the FlatRedBall and Gum checkouts (the file paths in AllData.cs are relative to that parent, not to the repo root):
dotnet build -c Debug Engines/Forms/FlatRedBall.Forms/<Web|FNA|DesktopGLNet6>.sln # and -c Release
dotnet build -c Debug FRBDK/BuildServerUploader/BuildServerUploader.sln
./FlatRedBall/FRBDK/.../BuildServerUploaderConsole.exe copytotemplates
./FlatRedBall/FRBDK/.../BuildServerUploaderConsole.exe zipanduploadtemplates BAD_USER BAD_PASSWORDDummy credentials are the point: everything local (copy-to-release-folder, zip) executes for real and only the final SFTP fails with SshAuthenticationException, which is the pass condition. Afterwards git checkout -- Templates/ && rm -f Templates/*.zip — the template DLLs are tracked, so a dry run dirties ~90 files.
AllData.cs's per-engine file lists are hand-maintained literal paths with no build-time validation, which is what makes this dry run worth doing: a project that moves on disk breaks the release and nothing else notices. SkiaInGum is the standing example — FRB forked it into Engines/SkiaGum/, and it is pulled from that project's own bin rather than the Forms output folder because Forms only references it under the AutoBuild configurations.
glue.yml bundles Gum into FRBDK by downloading whatever GitHub currently reports as Gum's latest release (https://github.com/vchelaru/Gum/releases/latest/download/Gum.zip) — Gum is released on GitHub only, not FTP. This means running glue.yml before a needed Gum change has been released on GitHub silently bundles the previous Gum build, with no error. If this release depends on new Gum functionality, publish Gum's release first (Gum repo's Build and Release Gum Tool workflow) and confirm it's visible at gh release view --repo vchelaru/Gum before running glue.yml here.
NUGET_APIKEY, FTPUSERNAME, FTPPASSWORD are GitHub Actions repo secrets — never passed via gh workflow run, never inspectable. "Did it actually publish" is inferred from workflow run success (the dotnet nuget push/FTP steps fail the job on error) — there's no separate nuget.org query scripted here; check nuget.org's listing page by hand if you want to confirm directly.
Drafting the notes is its own skill — see [[release-notes]] (fan-out over commits since the last tag, hybrid curated + full changelog format). This skill's step 10 just invokes it and takes the resulting markdown file as gh release create's --notes-file.
Tags follow Release_<Month>_<Day>_<Year> (e.g. Release_September_23_2025); some older tags drop the Release_ prefix. This naming is unrelated to the NuGet version string above — don't conflate the two.
docs.flatredball.com/flatredball/contributing/builds is the narrative release doc (source at contributing/builds/README.md and contributing/builds/gum.md in the separate FlatRedBallDocs GitBook repo, not this one) — it's the place to update the step-by-step checklist itself; this skill should stay a pointer + landmine list, not a second copy of it.
© vchelaru, MIT. 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/release of vchelaru/FlatRedBall.
Open the folder on GitHubat commit f30172a
Release 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 |
|---|---|---|---|---|---|---|
| Release this skillvchelaru/FlatRedBall | 578 | — | ~3.5k | Automated safety check: Pass | MIT | |
| GreptimeDB Release RunbookGreptimeTeam/greptimedb | 6.7k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Create Docavibebuilder/claude-prime | 120 | — | ~812 | Automated safety check: Pass | MIT | |
| Utility Pm Release Conductorproduct-on-purpose/pm-skills | 715 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| SaaS Documentationhashgraph-online/awesome-codex-plugins | 1.2k | — | ~834 | Automated safety check: Pass | MIT | |
| Releasing Blancbnfy/blanc | 111 | — | ~2.9k | Automated safety check: Notes | MIT |
GreptimeTeam/greptimedb
Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.
avibebuilder/claude-prime
A skill your agent uses when the user wants to save knowledge as a file so others don't have to rediscover it — "turn this into a doc", "write this up", "document how X works", "we figured this out…
product-on-purpose/pm-skills
Walk the guided 6-gate release runbook (G0 readiness, G1 adversarial review, G2 version bump and CHANGELOG, G2.5 commit and re-verify, G3 tag and push, G4 post-tag hygiene) via the…
hashgraph-online/awesome-codex-plugins
Plan and write SaaS documentation for managed services, continuous releases, provider/customer responsibility boundaries, UI/browser constraints, runbooks, support enablement, and release readiness.
bnfy/blanc
Full runbook for cutting a Blanc desktop release — scripts/release.sh mechanics and its required BLANCRELEASE env vars, macOS notarization via 1Password, the Touch ID provisioning profile and…
moeru-ai/airi
Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.
vchelaru/FlatRedBall
Testing GlueControl's embedded runtime (CommandReceiver, GlueControlManager) against a real running game process.
vchelaru/FlatRedBall
Bootstrapping GlueUnitTests that touch GlueState.Self/GlueCommands.Self/ProjectManager.
vchelaru/FlatRedBall
A skill your agent uses when adding, modifying, or reasoning about Gluj/Glux file format versions, the GluxVersions enum, FileVersion checks, or anything that gates behavior on the version of a…
vchelaru/FlatRedBall
A skill your agent uses when working on Glue's Gum code generation — adding/removing/version-gating generated properties on Gum standard runtime types (NineSlice, Text, Container, Sprite, etc.), or…
vchelaru/FlatRedBall
Drafts FRB1 release notes from commits/PRs since the last release.
vchelaru/FlatRedBall
Creates and updates skill files (.claude/skills//SKILL.md). An agent skill from vchelaru/FlatRedBall.
FRB1 (engine + Glue) release runbook — gh CLI sequence for Engine.yml/glue.yml, version scheme, release notes. Release is an agent skill from vchelaru/FlatRedBall.yml, version scheme, release notes.
Release fits situations like: tasks that involve Runbooks and postmortems; tasks that involve Changelog and release notes.
Run `npx skills add vchelaru/FlatRedBall --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in vchelaru/FlatRedBall) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vchelaru/FlatRedBall --skill release -a codex`. Or copy the skill folder (.claude/skills/release in vchelaru/FlatRedBall) into .agents/skills/release 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 vchelaru/FlatRedBall --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (gh, dotnet and git) and credentials named BAD_PASSWORD.
SKILL.md names 2 domains. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.flatredball.com. 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.
Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k 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 Release: GreptimeDB Release Runbook (GreptimeTeam/greptimedb, 6.7k stars), Create Doc (avibebuilder/claude-prime, 120 stars), Utility Pm Release Conductor (product-on-purpose/pm-skills, 715 stars) and SaaS Documentation (hashgraph-online/awesome-codex-plugins, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vchelaru (a GitHub user) maintains it in vchelaru/FlatRedBall, which has 578 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 2, 2026.
Source: vchelaru/FlatRedBall on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.