plugins/libgdx-development/skills/libgdx-development/SKILL.md
Comprehensive libGDX cross-platform game development knowledge base covering project generation via gdx-liftoff, the rendering pipeline, Scene2D and Ashley ECS architecture, Box2D physics, AssetManager lifecycle, Screen management, Tiled map integration, and multi-platform deployment to Desktop (LWJGL3), Android, iOS (RoboVM), and HTML5 (GWT/TeaVM). Includes libGDX 1.14.0 breaking changes and Kotlin compatibility caveats. TRIGGER WHEN: building, implementing, writing, coding, creating, optimizing, or debugging libGDX games; scaffolding or starting new libGDX projects; migrating libGDX versions; choosing libGDX architecture patterns. DO NOT TRIGGER WHEN: the task is general Java/Kotlin work unrelated to libGDX, or the engine is not libGDX (jMonkey, KorGE, Godot, Unity).
npx skillsauth add acaprino/alfio-claude-plugins libgdx-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Knowledge base for building production-grade games with libGDX, the cross-platform Java/Kotlin game framework.
Pools -> PoolManager, JsonValue case sensitivity)For 80% of new libGDX projects, follow this path:
gdx-liftoff JAR from https://github.com/libgdx/gdx-liftoff/releases, run with JDK 17 or later (Java 21 recommended):lwjgl3:run Gradle task to launch the desktop moduleGame, create MainMenuScreen + GameplayScreen, use Scene2D for UI and Ashley for entitiesTextureAtlas (2048x2048 POT), load via AssetManager, never load loose Textures per sprite.dispose() callThen harden incrementally:
Gdx.app.postRunnableGdx.input.setInputProcessor in show(), never in the constructorGroup.isTransform = false on non-rotating GroupsPoolable and clear in reset()references/setup-and-tooling.md: gdx-liftoff workflow, Gradle multi-module layout, JDK and Kotlin versions, IDE setup, libGDX 1.14.0 changelogreferences/rendering-and-performance.md: SpriteBatch batching, TextureAtlas packing, viewports, GL thread rules, frame-budget profiling, vsync ceilingreferences/architecture-patterns.md: Game + Screen pattern, Scene2D + Ashley ECS combination, Box2D fixed timestep, 3D ModelBatch basicsreferences/asset-and-lifecycle.md: AssetManager async loading, dispose discipline, Screen lifecycle, input processor management, screen transitionsreferences/deployment-platforms.md: Desktop LWJGL3, Android (minSdk/targetSdk), iOS RoboVM constraints, HTML5 GWT vs TeaVM, packaging and signing| Decision | Default | Upgrade When | |----------|---------|-------------| | Generator | gdx-liftoff | Always (gdx-setup is deprecated) | | Language | Kotlin (Java if HTML5 needed) | HTML5 target requires Java | | JDK build target | Java 21 | Java 17 minimum; iOS source level capped at 8 | | Architecture | Game + Screen + Scene2D | Add Ashley ECS for mid-size entity counts | | Physics | Box2D fixed timestep (60 Hz) | Bullet for 3D | | Asset loading | AssetManager async, pump update() per frame | Multiple update() per frame on loading screen | | Texture strategy | TextureAtlas, POT, packed via TexturePacker | Never load loose Textures per sprite | | Screen transitions | Reuse Screen instances or libgdx-screenmanager | Constructing new screens per transition is wasteful | | Input handling | Set processor in show(), null in hide() | InputMultiplexer for Stage + custom processors | | HTML5 backend | GWT | TeaVM if you need Kotlin or modern JS interop (still WIP for libGDX) |
Gdx.gl.* from a non-render threadGdx.input.setInputProcessor in Screen.show(), null it in Screen.hide()Group.isTransform = false on Scene2D Groups without rotation or scalingComponentMapper.getFor(...) references in Ashley systemsdevelopment
Quality gates for multi-reviewer code review pipelines: adversarial verification panel, completeness critic, reviewer pipeline conventions, and the context sharing pattern for parallel reviewers. TRIGGER WHEN: running /senior-review:team-review quality gates; running /senior-review:code-review Steps 4b/4c (adversarial verification and completeness check); consolidating or deduplicating findings from multiple parallel reviewers. DO NOT TRIGGER WHEN: single-reviewer style review without a consolidation phase, or generic team coordination (the upstream agent-teams skills cover that).
development
Knowledge base for pure-architecture decisions on when to unify duplicated logic into a shared abstraction versus leave it duplicated. Covers the canonical theory (Rule of Three, DRY/WET/AHA, Wrong Abstraction, Locality of Behaviour, Bounded Contexts, Tidy First options framing, CUPID vs SOLID), 12 essential-duplication patterns that justify unification, 12 wrong-abstraction patterns that justify inlining or decomposition, an operational decision frame, and a verified reading list. TRIGGER WHEN: the user is making an architectural decision about whether to centralize, extract, or remove a layer; reviewing an abstraction for premature generality; auditing scattered cross-cutting concerns; spawned by the abstraction-architect agent during /abstraction-architect:audit or as the Abstraction dimension of /senior-review:team-review or /senior-review:code-review; the user asks "should I extract this into a service" / "is this DRY enough" / "is this wrong abstraction". DO NOT TRIGGER WHEN: the task is code formatting and readability cleanup (use clean-code:clean-code), Python-specific refactoring with metrics (use python-development:python-refactor), generic dead-code removal (use senior-review:cleanup-dead-code), security review (use senior-review:security-auditor), or pure pattern-consistency review without an architecture lens (use senior-review:code-auditor).
development
Unified web frontend knowledge base covering CSS architecture, UX psychology, UI components, distinctive aesthetics, and interface design generation. TRIGGER WHEN: working on web styling, design systems, component decisions, responsive strategy, distinctive frontend aesthetics, or exploring multiple interface designs. DO NOT TRIGGER WHEN: the task is purely backend or unrelated to web frontend.
development
Stripe payments knowledge base - API patterns, checkout optimization, subscription lifecycle, pricing strategies, webhook reliability, Firebase integration, cost analysis, and revenue modeling. Loaded by stripe-integrator and revenue-optimizer agents; also consumable directly when the user asks for Stripe-specific patterns without needing an agent. TRIGGER WHEN: working with Stripe API (Payment Intents, Customers, Subscriptions, Checkout Sessions, Connect, webhooks, tax, usage-based billing), pricing strategy, or revenue modeling. DO NOT TRIGGER WHEN: payment work is non-Stripe (PayPal, Square, crypto) or the task is generic e-commerce unrelated to payments.