frb-build-verification

Verifies FlatRedBall still compiles shared Gum source after cross-repo changes.

614|78|Updated Mar 11, 2015
One-click install
npx skills add https://github.com/vchelaru/Gum --skill frb-build-verification
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: frb-build-verification
Source: https://github.com/vchelaru/Gum/tree/main/.claude/skills/frb-build-verification
Command: npx skills add https://github.com/vchelaru/Gum --skill frb-build-verification

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Gum source is compiled directly into FlatRedBall (FRB1) via shared .projitems files under a net6.0 target with the FRB constant defined, so a change that builds cleanly in the Gum solutions can silently break the FRB build. This Skill catches those breaks by building the correct FRB canary project before they ship.

Core Features & Use Cases

  • Canary Selection: Maps the changed source directory (GumCommon/, MonoGameGum/Forms/, SkiaInGumShared) to the exact .csproj that must be built, and tells you which repo that project lives in.
  • Projitems Sync Guidance: Explains which shared .projitems file must be updated when .cs files are added, renamed, moved, or deleted, including PackageReference propagation to FRB-side projects.
  • Guard and Multi-Target Rules: Covers #if !FRB guard symmetry, net6.0 BCL gating with #if NET7_0_OR_GREATER, and baseline-first error attribution so pre-existing failures are not misattributed.
  • Use Case: After adding a new file under MonoGameGum/Forms/Controls/, use this Skill to update FlatRedBall.Forms.Shared.projitems in the sibling FlatRedBall checkout and build FlatRedBall.Forms.DesktopGlNet6 to confirm nothing broke.

Quick Start

Check whether a FlatRedBall checkout exists as a sibling of the Gum repo, then build the canary project matching the files I just changed and report only the new errors compared to the base branch.

Frequently Asked Questions about frb-build-verification

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I verify FlatRedBall still builds after changing Gum source?

Build the canary project matching your change: GumCore.DesktopGlNet6.csproj in the Gum repo for GumCommon changes, or FlatRedBall.Forms.DesktopGlNet6.csproj in the FlatRedBall sibling repo for MonoGameGum/Forms changes. Build the base branch first to capture baseline errors, then attribute only new errors to your change.

How do I add a new shared .cs file so FlatRedBall compiles it?

Add a Compile Include entry to GumCoreShared.projitems for files under GumCommon/ or MonoGameGum/, or a Compile Include plus Link pair in FlatRedBall.Forms.Shared.projitems for MonoGameGum/Forms files. If the file uses a new NuGet package, add matching PackageReferences to every FRB-side csproj importing the projitems.

Why does my Gum change break FlatRedBall with CS0246 or CS0103?

The usual cause is a member guarded by #if !FRB being called from unguarded shared code, since FRB compiles with the FRB constant defined. Guard the call site too, or provide a same-named shim such as an FRB-only extension method on GraphicalUiElement.

Can I run FRB build verification without a FlatRedBall checkout?

No. The cross-repo csproj imports are sibling-relative, so a FlatRedBall checkout must sit beside the Gum repo. If the sibling is absent, skip FRB verification entirely; it is not a failure and the maintainer or CI covers it.

Why does a net8.0 API break FlatRedBall when GumCommon builds fine?

FRB1 multi-targets the same shared source down to net6.0, so BCL APIs added after net6.0 compile in GumCommon but break FRB. Gate the usage with #if NET7_0_OR_GREATER or #if NET8_0_OR_GREATER and provide a NotSupportedException fallback for older targets.

Which Gum directories does FlatRedBall not compile?

FRB1 does not compile GueDeriving runtime classes, MonoGameGum/Renderables, MonoGameGum/ExtensionMethods, MonoGameGum/Input drivers, or Forms DefaultVisuals runtimes, since it generates its own. Grep the exact filename against the projitems file to confirm before requiring a canary build.