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/anvil-toolset 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
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
Coordinate parallel code reviews across multiple quality dimensions with finding deduplication, severity calibration, and consolidated reporting. Use this skill when organizing multi-reviewer code reviews, calibrating finding severity, or consolidating review results.
tools
Knowledge base for the codebase-mapper plugin. Provides writing guidelines, tone rules, and diagram conventions for generating human-readable project guides. Referenced by all codebase-mapper agents during document generation. TRIGGER WHEN: referenced by codebase-mapper pipeline agents (codebase-explorer, overview-writer, tech-writer, flow-writer, onboarding-writer, ops-writer, config-writer, guide-reviewer) during document generation. DO NOT TRIGGER WHEN: outside the /map-codebase pipeline (general documentation work should use docs:readme-craft or codebase-mapper:docs-create).
tools
Progressive Web App knowledge base for 2025-2026: Web App Manifest, Service Workers (Workbox 7, Serwist), Web Push (VAPID, RFC 8030/8291/8292, Declarative Push for Safari 18.4+), install flows (beforeinstallprompt, Window Controls Overlay), OPFS storage, Project Fugu, Core Web Vitals (INP < 200ms), security (HTTPS, CSP, COOP/COEP), and distribution (Bubblewrap, PWA Builder MSIX, Capacitor). TRIGGER WHEN: building, auditing, or debugging PWAs, including manifest, service worker, Web Push, install flow, OPFS, Background Sync, Wake Lock, vite-plugin-pwa, Next.js Serwist, @angular/pwa, @vite-pwa/nuxt, Bubblewrap, TWA, PWA Builder, or Capacitor wrapping. DO NOT TRIGGER WHEN: the task is generic frontend styling (use frontend), React performance (use react-development:review-react), cross-platform security unrelated to PWA (use platform-engineering), Tauri or Electron wrappers (use tauri-development), or GA4 / analytics (use digital-marketing).