{"id":"8b78685f-d0de-449d-8153-ad61fa45327b","shortId":"qNU9UG","kind":"skill","title":"godot-4-migration","tagline":"Specialized guide for migrating Godot 3.x projects to Godot 4 (GDScript 2.0), covering syntax changes, Tweens, and exports.","description":"# Godot 4 Migration Guide\n\n## Overview\n\nA critical guide for developers transitioning from Godot 3.x to Godot 4. This skill focuses on the major syntax changes in GDScript 2.0, the new `Tween` system, and `export` annotation updates.\n\n## When to Use This Skill\n\n- Use when porting a Godot 3 project to Godot 4.\n- Use when encountering syntax errors after upgrading.\n- Use when replacing deprecated nodes (like `Tween` node vs `create_tween`).\n- Use when updating `export` variables to `@export` annotations.\n\n## Key Changes\n\n### 1. Annotations (`@`)\n\nGodot 4 uses `@` for keywords that modify behavior.\n- `export var x` -> `@export var x`\n- `onready var y` -> `@onready var y`\n- `tool` -> `@tool` (at top of file)\n\n### 2. Setters and Getters\n\nProperties now define setters/getters inline.\n\n**Godot 3:**\n```gdscript\nvar health setget set_health, get_health\n\nfunc set_health(value):\n    health = value\n```\n\n**Godot 4:**\n```gdscript\nvar health: int:\n    set(value):\n        health = value\n        emit_signal(\"health_changed\", health)\n    get:\n        return health\n```\n\n### 3. Tween System\n\nThe `Tween` node is deprecated. Use `create_tween()` in code.\n\n**Godot 3:**\n```gdscript\n$Tween.interpolate_property(...)\n$Tween.start()\n```\n\n**Godot 4:**\n```gdscript\nvar tween = create_tween()\ntween.tween_property($Sprite, \"position\", Vector2(100, 100), 1.0)\ntween.parallel().tween_property($Sprite, \"modulate:a\", 0.0, 1.0)\n```\n\n### 4. Signal Connections\n\nString-based connections are discouraged. Use callables.\n\n**Godot 3:**\n```gdscript\nconnect(\"pressed\", self, \"_on_pressed\")\n```\n\n**Godot 4:**\n```gdscript\npressed.connect(_on_pressed)\n```\n\n## Examples\n\n### Example 1: Typed Arrays\n\nGDScript 2.0 supports typed arrays for better performance and type safety.\n\n```gdscript\n# Godot 3\nvar enemies = []\n\n# Godot 4\nvar enemies: Array[Node] = []\n\nfunc _ready():\n    for child in get_children():\n        if child is Enemy:\n            enemies.append(child)\n```\n\n### Example 2: Awaiting Signals (Coroutines)\n\n`yield` is replaced by `await`.\n\n**Godot 3:**\n```gdscript\nyield(get_tree().create_timer(1.0), \"timeout\")\n```\n\n**Godot 4:**\n```gdscript\nawait get_tree().create_timer(1.0).timeout\n```\n\n## Best Practices\n\n- ✅ **Do:** Use `@export_range`, `@export_file`, etc., for better inspector UI.\n- ✅ **Do:** Type all variables (`var x: int`) for performance gains in GDScript 2.0.\n- ✅ **Do:** Use `super()` to call parent methods instead of `.function_name()`.\n- ❌ **Don't:** Use string names for signals (`emit_signal(\"name\")`) if you can use the signal object (`name.emit()`).\n\n## Troubleshooting\n\n**Problem:** \"Identifier 'Tween' is not a valid type.\"\n**Solution:** `Tween` is now `SceneTreeTween` or just an object returned by `create_tween()`. You rarely type it explicitly, just use `var tween = create_tween()`.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["godot","migration","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-godot-4-migration","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/godot-4-migration","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34768 github stars · SKILL.md body (3,114 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T18:51:24.271Z","embedding":null,"createdAt":"2026-04-18T21:38:08.126Z","updatedAt":"2026-04-23T18:51:24.271Z","lastSeenAt":"2026-04-23T18:51:24.271Z","tsv":"'-4':2 '0.0':214 '1':103,243 '1.0':207,215,299,309 '100':205,206 '2':131,282 '2.0':16,51,247,336 '3':9,36,70,141,174,188,228,259,292 '4':14,24,40,74,106,157,194,216,236,263,302 'annot':58,100,104 'array':245,250,266 'ask':432 'await':283,290,304 'base':221 'behavior':112 'best':311 'better':252,321 'boundari':440 'call':341 'callabl':226 'chang':19,48,102,169 'child':271,276,280 'children':274 'clarif':434 'clear':407 'code':186 'connect':218,222,230 'coroutin':285 'cover':17 'creat':91,183,198,297,307,386,397 'criteria':443 'critic':29 'defin':137 'deprec':85,181 'describ':411 'develop':32 'discourag':224 'emit':166,355 'encount':77 'enemi':261,265,278 'enemies.append':279 'environ':423 'environment-specif':422 'error':79 'etc':319 'exampl':241,242,281 'expert':428 'explicit':392 'export':22,57,96,99,113,116,315,317 'file':130,318 'focus':43 'func':150,268 'function':346 'gain':333 'gdscript':15,50,142,158,189,195,229,237,246,257,293,303,335 'get':148,171,273,295,305 'getter':134 'godot':1,8,13,23,35,39,69,73,105,140,156,187,193,227,235,258,262,291,301 'guid':5,26,30 'health':144,147,149,152,154,160,164,168,170,173 'identifi':368 'inlin':139 'input':437 'inspector':322 'instead':344 'int':161,330 'key':101 'keyword':109 'like':87 'limit':399 'major':46 'match':408 'method':343 'migrat':3,7,25 'miss':445 'modifi':111 'modul':212 'name':347,352,357 'name.emit':365 'new':53 'node':86,89,179,267 'object':364,383 'onreadi':119,122 'output':417 'overview':27 'parent':342 'perform':253,332 'permiss':438 'port':67 'posit':203 'practic':312 'press':231,234,240 'pressed.connect':238 'problem':367 'project':11,71 'properti':135,191,201,210 'rang':316 'rare':389 'readi':269 'replac':84,288 'requir':436 'return':172,384 'review':429 'safeti':256,439 'scenetreetween':379 'scope':410 'self':232 'set':146,151,162 'setget':145 'setter':132 'setters/getters':138 'signal':167,217,284,354,356,363 'skill':42,64,402 'skill-godot-4-migration' 'solut':375 'source-sickn33' 'special':4 'specif':424 'sprite':202,211 'stop':430 'string':220,351 'string-bas':219 'substitut':420 'success':442 'super':339 'support':248 'syntax':18,47,78 'system':55,176 'task':406 'test':426 'timeout':300,310 'timer':298,308 'tool':125,126 'top':128 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'transit':33 'treat':415 'tree':296,306 'troubleshoot':366 'tween':20,54,88,92,175,178,184,197,199,209,369,376,387,396,398 'tween.interpolate':190 'tween.parallel':208 'tween.start':192 'tween.tween':200 'type':244,249,255,325,374,390 'ui':323 'updat':59,95 'upgrad':81 'use':62,65,75,82,93,107,182,225,314,338,350,361,394,400 'valid':373,425 'valu':153,155,163,165 'var':114,117,120,123,143,159,196,260,264,328,395 'variabl':97,327 'vector2':204 'vs':90 'x':10,37,115,118,329 'y':121,124 'yield':286,294","prices":[{"id":"ebcc3bfd-113b-420b-bbd4-7726eb39c378","listingId":"8b78685f-d0de-449d-8153-ad61fa45327b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:38:08.126Z"}],"sources":[{"listingId":"8b78685f-d0de-449d-8153-ad61fa45327b","source":"github","sourceId":"sickn33/antigravity-awesome-skills/godot-4-migration","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/godot-4-migration","isPrimary":false,"firstSeenAt":"2026-04-18T21:38:08.126Z","lastSeenAt":"2026-04-23T18:51:24.271Z"}],"details":{"listingId":"8b78685f-d0de-449d-8153-ad61fa45327b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"godot-4-migration","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"ac316c1dac0f14a62fbb3f3f33bc099cfafdfa7a","skill_md_path":"skills/godot-4-migration/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/godot-4-migration"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"godot-4-migration","description":"Specialized guide for migrating Godot 3.x projects to Godot 4 (GDScript 2.0), covering syntax changes, Tweens, and exports."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/godot-4-migration"},"updatedAt":"2026-04-23T18:51:24.271Z"}}