Nx Generate
nomcopter/react-mosaic
Generate code using nx generators. An agent skill from nomcopter/react-mosaic.
Glue's .gluj/.glsj/.glej project JSON format and how it drives Screen/Entity .Generated.cs code generation.
$ npx skills add vchelaru/FlatRedBall --skill glue-project-codegen -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vchelaru/FlatRedBall glue-project-codegen --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/glue-project-codegen .claude/skills/glue-project-codegen && 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 "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .claude/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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/glue-project-codegenType 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 glue-project-codegen -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vchelaru/FlatRedBall glue-project-codegen --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/glue-project-codegen .agents/skills/glue-project-codegen && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .agents/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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 glue-project-codegen -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vchelaru/FlatRedBall glue-project-codegen --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/glue-project-codegen .cursor/skills/glue-project-codegen && 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 "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .cursor/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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/glue-project-codegen--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 glue-project-codegen -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vchelaru/FlatRedBall glue-project-codegen --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/glue-project-codegen .gemini/skills/glue-project-codegen && 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 "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .gemini/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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 glue-project-codegenInstalls 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 glue-project-codegen -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/glue-project-codegen .github/skills/glue-project-codegen && 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 "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .github/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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 glue-project-codegen -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 glue-project-codegen --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/glue-project-codegen .opencode/skills/glue-project-codegen && 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 "glue-project-codegen" agent skill from https://github.com/vchelaru/FlatRedBall/tree/NetStandard/.claude/skills/glue-project-codegen into .opencode/skills/glue-project-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "glue-project-codegen", 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.
glue-project-codegenGlue's .gluj/.glsj/.glej project JSON format and how it drives Screen/Entity .Generated.cs code generation.
Glue Project Codegen is an agent skill from vchelaru/FlatRedBall. Glue's .gluj/.glsj/.glej project JSON format and how it drives Screen/Entity .Generated.cs code generation. Triggers: GlueProjectSave, ScreenSave, EntitySave, NamedObjectSave, CustomVariable, CodeWriter, ElementComponentCodeGenerator, .gluj, .glsj, .glej, .glux.
Its SKILL.md is about 2.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 Project scaffolding. The repository describes itself as: Cross-platform 2D game engine focused on ultimate productivity built in .NET. The licence is MIT.
Read from SKILL.md and the folder at commit fa654ab. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Glue Project Codegen loads about 2.4k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 952 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 fa654ab, republished under its MIT licence (© vchelaru). 952 words, ~2,435 tokens.
.claude/skills/glue-project-codegen/SKILL.md (or your agent's skills folder).| Extension | Contents | Format |
|---|---|---|
.glux | Legacy single-file project (whole project inline) | XML (System.Xml.Serialization) |
.gluj | Current root project file (Screens/Entities referenced by name once split) | JSON (Newtonsoft.Json) |
.glsj | One file per Screen | JSON |
.glej | One file per Entity | JSON |
*.generated.glux/*.generated.gluj | Plugin-owned partial fragments merged into the main file at load | XML/JSON |
.glux→.gluj and the later per-element split into .glsj/.glej are both GluxVersions-gated migrations — see the gluj-versions skill for the version enum and gating workflow; don't duplicate that history here.
Load entry point: GlueProjectSaveExtensions.Load in FRBDK/Glue/Glue/SaveClasses/GlueProjectSaveExtensions.cs — prefers .gluj over .glux if both exist, falls back to .glux if no .gluj (mid-migration tolerance), then loads per-element .glsj/.glej files individually if FileVersion >= SeparateJsonFilesForElements. Save entry point: SaveMainAndElementsToFile (same file) → RemoveAndSaveElements for per-element files. Both driven from FRBDK/Glue/Glue/IO/ProjectLoader.cs and GluxCommands.SaveProjectAndElements*.
Schema is a plain POCO graph, not a .schema.json — the canonical source is FRBDK/Glue/GlueCommon/SaveClasses/ (GlueProjectSave.cs, ScreenSave.cs, EntitySave.cs, GlueElement.cs, NamedObjectSave.cs, CustomVariable.cs, StateSave.cs, ReferencedFileSave.cs, PropertySave.cs, VariableDefinition.cs). A second, trimmed copy of GlueProjectSave/GluxVersions lives at FRBDK/Glue/GameCommunicationPlugin/GlueControl/Embedded/Models/GlueProjectSave.cs, compiled as source into the user's game for live in-editor editing — it's frozen at an old version and drifts from the editor's own enum; don't assume version parity between the two when touching live-edit/hot-reload code.
PropertySave.Value boxes as long/double, not int/float. Newtonsoft deserializes bare JSON numbers that way. Always read through PropertySaveListExtensions.GetValue<T> (PropertySave.cs), which special-cases the conversions — reading .Value directly and casting will throw or silently misbehave.StringEnumConverter anywhere in the save classes. Hand-editing a .gluj requires knowing the enum's underlying int value.NullValueHandling/DefaultValueHandling differ between the main file and per-element files. Main .gluj: NullValueHandling.Ignore + DefaultValueHandling.IgnoreAndPopulate. Per-element .glsj/.glej: DefaultValueHandling.Ignore only. Both live in GlueProjectSaveExtensions.cs.GlueProjectSave.cs states this explicitly, since IgnoreAndPopulate means the JSON omits anything at default and repopulates it on load. Giving a property a non-standard default silently breaks backward compatibility for every existing project file.ScreenSave/EntitySave deserialize is skipped rather than aborting the whole project load, so a single bad .glsj/.glej merge doesn't brick the project.GlueSettingsSave (user app settings, not project data) intentionally never finished migrating to JSON — still XML, with a commented-out JsonConvert call and a note that build tool associations broke under JSON (suspected TypeConverter interaction). Don't "fix" this without digging into that history first.FileWatchManager.IgnoreNextChangeOnFile(...) before writing to suppress self-triggered reload — general mechanism covered by the glue-file-watch skill.Entry points: CodeWriter.GenerateCode(GlueElement element) (FRBDK/Glue/Glue/CodeGeneration/CodeWriter.cs) builds one Screen/Entity's <ElementName>.Generated.cs; CodeGeneratorIElement.cs wraps it (GenerateElementAndDerivedCode also regenerates inheriting elements); GenerateCodeCommands (Glue/Plugins/ExportedImplementations/CommandInterfaces/GenerateCodeCommands.cs) is the public command surface, including GenerateAllCode for full-project regen.
Generation is a plugin pipeline, not one big method: each contributor subclasses ElementComponentCodeGenerator (CodeGeneration/ElementComponentCodeGenerator.cs), overriding phase methods (GenerateFields, GenerateConstructor, GenerateInitialize, GenerateAddToManagers, GenerateActivity, GenerateDestroy, GenerateEvent, HandlesVariable, …). CodeWriter's static ctor lists the built-ins in order (fields → static ctor → ctor → Initialize → AddToManagers → Activity → Destroy → additional methods): ErrorCheckingCodeGenerator, ScrollableListCodeGenerator, StateCodeGenerator, FactoryElementGeneratorEarly, FactoryElementCodeGenerator, ReferencedFileSaveCodeGenerator, NamedObjectSaveCodeGenerator, CustomVariableCodeGenerator, EventCodeGenerator, PooledCodeGenerator, IVisibleCodeGenerator, IWindowCodeGenerator, ITiledTileMetadataCodeGenerator, PauseCodeGenerator, LoadingScreenCodeGenerator. External plugins (Gum, TopDown, Platformer, RedGrin, …) contribute their own generators via ICodeGeneratorPlugin (Glue/Plugins/Interfaces/ICodeGeneratorPlugin.cs) — currently only its GenerateActivity/GenerateAdditionalMethods hooks are wired up (there's a //TODO: Add more generation types here marking the gap).
The two save-class types that map most directly to generated members:
NamedObjectSave (instance placed in a Screen/Entity) → NamedObjectSaveCodeGenerator.cs: field + constructor/Initialize instantiation + AddToManagers wiring. CodeGenerationType (Full vs OnlyContainedObjects vs Nothing) controls whether a field is generated fresh or the object is assumed already declared by an inherited base — get this wrong in a custom generator and you get duplicate-field build errors.CustomVariable (exposed/tunneled variable) → CustomVariableCodeGenerator.cs: either a new C# property or a tunneled property forwarding to a NamedObjectSave member. Base-class variables are not regenerated in derived elements unless tunneling, shared, or creating an event — overriding that precedence incorrectly silently drops the override.Regeneration is synchronous-on-edit, not file-watch or debounce driven: nearly every mutating Glue command (add/remove/rename object, variable, screen, entity, event) calls GlueCommands.Self.GenerateCodeCommands.GenerateElementCode(element) directly, queued onto TaskManager.Self to run off the UI thread in order. GenerateAllCode additionally fires on project load and via an explicit "Regenerate All Code" command.
Other gotchas:
EntireClassCodeGenerator is [Obsolete] — use FullFileCodeGenerator (Glue/Plugins/CodeGenerators/FullFileCodeGenerator.cs) for new standalone-file generators.using statements — deliberate, since multiple plugins' generators could pick conflicting types for the same short name. Use fully-qualified names in generated code.CustomInitialize, CustomActivity, CustomDestroy, CustomLoadStaticContent) lives in a sibling non-.Generated.cs partial seeded from CodeWriter.ScreenTemplateCode/EntityTemplateCode — the .Generated.cs partial calls into these at fixed points.Compiling generated code proves it resolves against the engine, not that its logic is correct. To pin
runtime behavior, build a gold project, Assembly.LoadFrom its output DLL, and reflect into the generated
type — see GoldProjectCompileTests.FormsSampleProject_WithAddedPlatformerEntity_LoadInGlue_ThenBuild_ShouldSucceed.
Landmines: constructing an entity needs FlatRedBall.FlatRedBallServices.InitializeCommandLine() first
(reflectively) or LoadStaticContent NREs; the parameterless ctor reads ScreenManager.CurrentScreen
(null headless) — use the (contentManagerName, addToManagers: false) overload; a CSV-generated custom
class emits public fields, not properties.
A tile map's data needs no GraphicsDevice: TiledMapSave.FromFile plus
ReducedTileMapInfo.FromTiledMapSave yield layer names, map dimensions, per-layer tileset image paths and
every tile position headlessly. Only LayeredTileMap's per-layer texture load
(TextureContentLoader.LoadTexture2D, which throws when Renderer.Graphics is null) needs one — assert on
the reduced info when a test cares which map loaded rather than how it rasterizes.
gluj-versions — the GluxVersions enum, FileVersion gating, and the version-bump checklist. This skill assumes that context; don't restate it here.gum-codegen — Gum standard-runtime (NineSlice/Text/Container/…) property and state codegen specifically. Separate pipeline from the general ElementComponentCodeGenerator list above.glue-file-watch — the general external-change-detection and self-save-suppression mechanism referenced above.glue-project-types — everything above is FRB1's mandatory pipeline. FRB2 projects generate nothing by default and, when opted in, use a separate generator that never goes through CodeWriter.© 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/glue-project-codegen of vchelaru/FlatRedBall.
Open the folder on GitHubat commit fa654ab
Glue Project Codegen 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 |
|---|---|---|---|---|---|---|
| Glue Project Codegen this skillvchelaru/FlatRedBall | 578 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Nx Generatenomcopter/react-mosaic | 4.8k | 7 repos | ~1.9k | Automated safety check: Pass | Custom licence | |
| PonytailDavidObando/gsharp | 564 | 8 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Run Nx Generatornrwl/nx | 29k | 2 repos | ~592 | Automated safety check: Notes | MIT | |
| Conductor Setupgemini-cli-extensions/conductor | 3.8k | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Mirage VFS Adapter Authoringstrukto-ai/mirage | 3.7k | — | ~2.5k | Automated safety check: Pass | Apache-2.0 |
nomcopter/react-mosaic
Generate code using nx generators. An agent skill from nomcopter/react-mosaic.
DavidObando/gsharp
Forces the laziest solution that actually works, simplest, shortest, most minimal.
nrwl/nx
Run Nx generators with prioritization for workspace-plugin generators.
gemini-cli-extensions/conductor
Scaffolds the project and sets up the Conductor environment.
strukto-ai/mirage
Builds or extends a custom Mirage virtual filesystem adapter for an API, database, object store or app data, with a working mount configuration and filesystem tests.
siteboon/claudecodeui
Enforces this repository's TypeScript backend module architecture under server/: feature folders, barrel exports, and where shared types and utilities belong.
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
FRB1 (engine + Glue) release runbook — gh CLI sequence for Engine.yml/glue.yml, version scheme, release notes.
vchelaru/FlatRedBall
Drafts FRB1 release notes from commits/PRs since the last release.
Categories
Glue's .gluj/.glsj/.glej project JSON format and how it drives Screen/Entity .Generated.cs code generation. Glue Project Codegen is an agent skill from vchelaru/FlatRedBall.cs code generation.
Glue Project Codegen fits situations like: tasks that involve Project scaffolding.
Run `npx skills add vchelaru/FlatRedBall --skill glue-project-codegen -a claude-code`. Or copy the skill folder (.claude/skills/glue-project-codegen in vchelaru/FlatRedBall) into .claude/skills/glue-project-codegen in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vchelaru/FlatRedBall --skill glue-project-codegen -a codex`. Or copy the skill folder (.claude/skills/glue-project-codegen in vchelaru/FlatRedBall) into .agents/skills/glue-project-codegen 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 glue-project-codegen -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/glue-project-codegen, .gemini/skills/glue-project-codegen, .github/skills/glue-project-codegen and .opencode/skills/glue-project-codegen in your project.
SKILL.md names no scripts, command-line tools or credentials: Glue Project Codegen is instructions for the agent only.
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.
Glue Project Codegen is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.7k 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 Glue Project Codegen: Nx Generate (nomcopter/react-mosaic, 4.8k stars), Ponytail (DavidObando/gsharp, 564 stars), Run Nx Generator (nrwl/nx, 29k stars) and Conductor Setup (gemini-cli-extensions/conductor, 3.8k 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 8, 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.