migrate-sdk6-to-sdk7

Migrate legacy Decentraland SDK6 scenes to the SDK7 ECS architecture.

1|Updated Apr 4, 2026
One-click install
npx skills add https://github.com/stom66/dcl-bowling --skill migrate-sdk6-to-sdk7-stom66
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: migrate-sdk6-to-sdk7
Source: https://github.com/stom66/dcl-bowling/tree/main/agent/skills/migrate-sdk6-to-sdk7
Command: npx skills add https://github.com/stom66/dcl-bowling --skill migrate-sdk6-to-sdk7-stom66

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Porting a Decentraland scene from SDK6 to SDK7 requires rewriting class-based entity code into the new ECS model, updating dependencies, reorganizing assets, and converting dozens of APIs — a process where silent failures (unmutated components, missing colliders, unplayed animations) are common and hard to debug. ## Core Features & Use Cases - SDK6 Verification: Confirms a project is truly SDK6 by checking package.json dependencies, scene.json runtimeVersion, and source code patterns before starting any work. - Complete API Mapping: Provides a comprehensive SDK6-to-SDK7 conversion table covering entities, components, systems, Transforms, GLTF models, materials, animations, pointer events, input, audio, timers, and trigger areas. - Step-by-Step Migration Workflow: Guides an 11-step ordered process from auditing the old project through porting components, systems, entities, input, animations, and sounds, ending with grep-based verification checks. - Use Case: A developer has an old Decentraland game built on decentraland-ecs with @Component classes and ISystem implementations. Use this Skill to convert it to @dcl/sdk with engine.defineComponent, free-function systems, and pointerEventsSystem handlers while preserving scene.json's main field. ## Quick Start Migrate my existing Decentraland SDK6 scene in this project to SDK7, converting all components, systems, and pointer events to the new @dcl/sdk APIs.

Frequently Asked Questions about migrate-sdk6-to-sdk7

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

FAQPage Schema
How do I migrate a Decentraland SDK6 scene to SDK7?▼

Follow an ordered workflow: verify SDK6 signals, replace decentraland-ecs with @dcl/sdk, move assets under assets/, then port components, systems, entities, input handlers, animations, and sounds. Finish with grep checks confirming no SDK6 symbols remain and a successful sdk-commands build.

How to convert SDK6 @Component classes to SDK7?▼

Replace each @Component class with engine.defineComponent(name, schema, defaults) using Schemas types. Component methods like reset() must become free functions, and nested types like Vector2 should be flattened into separate Schemas.Number fields.

Why is my SDK7 component mutation not working?▼

Component.get() returns a read-only reference, so mutating it silently fails. Use Component.getMutable(entity) whenever writing data, and reserve .get() for read-only access to avoid unnecessary CRDT sync deltas.

Does SDK7 OnPointerDown work the same as SDK6?▼

No. SDK6 attached OnPointerDown as a component; SDK7 uses pointerEventsSystem.onPointerDown({entity, opts}, handler) registered once at setup. The entity also needs a CL_POINTER collider via MeshCollider or visibleMeshesCollisionMask on GltfContainer.

Should I change scene.json main when migrating to SDK7?▼

No. Keep the existing main value (typically bin/game.js) because sdk-commands build writes the bundle to whatever path scene.json main specifies. Only add runtimeVersion: "7" and remove ECS6-specific fields.

Why does Animator.playSingleAnimation do nothing after migration?▼

playSingleAnimation returns false and no-ops if the clip name is not already listed in the Animator's states array. Collect every clip name used in the SDK6 source and include all of them in states when calling Animator.create.