[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FVH892Q86NF0FDWAXR1KAF":3,"skill-same:01M6FVH892Q86NF0FDWAXR1KAF":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":14,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6FVH892Q86NF0FDWAXR1KAF","godot-4-migration",null,"Specialized guide for migrating Godot 3.x projects to Godot 4 (GDScript 2.0), covering syntax changes, Tweens, and exports.","reikiplanet\u002Fdaoskills","reikiplanet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96377599?v=4","01M6CVWCMD740YHQDK7E9QYBW4","Reiki Planet","01M6CVWCS4KXVA2CWFVJ43EAXK",0,"MIT","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fdevelopment\u002Fgodot-4-migration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"migration","godot 4 migration","godot","safe","projects","syntax","specialized","guide","community","2026-11-10 10:12:30",false,"---\nname: godot-4-migration\ndescription: Specialized guide for migrating Godot 3.x projects to Godot 4 (GDScript 2.0), covering syntax changes, Tweens, and exports.\nrisk: safe\nsource: community\n---\n\n# 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\u002Fgetters 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","# 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\u002Fgetters 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",{"name":5,"risk":22,"source":27,"description":7},"master","dff58085da947e81e8418c922055644bf0082b1b","development\u002Fgodot-4-migration","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills","https:\u002F\u002Fgithub.com\u002Freikiplanet","https:\u002F\u002Fwww.reiki-planet.com","Reiki Planet Game","2026-03-29 06:02:29",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add reikiplanet\u002Fdaoskills --skill godot-4-migration",{"tool":47,"command":48},"bunx","bunx skills add reikiplanet\u002Fdaoskills --skill godot-4-migration",{"tool":50,"command":51},"pnpm","pnpm dlx skills add reikiplanet\u002Fdaoskills --skill godot-4-migration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fdevelopment\u002Fgodot-4-migration\u002FSKILL.md",true,[],[56,82,94,108,128,151],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":28},"01M6G614JTEQJHPT8AKK3YQ18S","web-games","Web browser game development principles. Framework selection, WebGPU, optimization, PWA.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fweb-games\u002FSKILL.md",[],[63,64,65,66,67,68,27,69,70,71,72,73,74,75,76,77,78,79,80,81],"games","web games","web","grep","principles","selection","framework selection","edit","write","read","pwa","game","web browser","game development","Optimization","framework","browser","development","webgpu",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":28},"01M6G611H2YGV0GZFP90D38ZMJ","vr-ar","VR\u002FAR development principles. Comfort, interaction, performance requirements.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fvr-ar\u002FSKILL.md",[],[89,90,80,91,92,27,70,71,72,66,93,67],"ar","vr ar","interaction","requirements","performance",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":28},"01M6G60XNMHAMV1SV0EJ1CX0AY","templates","Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Ftemplates\u002FSKILL.md",[],[96,101,102,103,104,105,27,106,72,23,107,66],"project scaffolding","From Scratch","tech","project","scaffolding","use","applications",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":28},"01M6G60T0GATMK3Q5H8GDC1Z8S","wcag-audit-patterns","Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing ac...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fwcag-audit-patterns\u002FSKILL.md",[],[115,116,117,118,119,27,120,121,122,123,106,124,125,126,127],"wcag audit patterns","wcag audit","patterns","WCAG","audit","manual","with","automated testing","guidance","remediation","verification","accessibility","testing",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":28},"01M6G60PMCHW1FRZ63F931QK3R","vulnerability-scanner","Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fvulnerability-scanner\u002FSKILL.md",[],[135,136,137,138,139,140,141,142,27,72,66,143,67,144,145,146,147,148,149,150],"scanner","vulnerability scanner","vulnerability","prioritization","2025","mapping","chain","supply chain","Bash","analysis","risk","owasp","supply chain security","security","supply","advanced",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":28},"01M6G60JZBB8DK0W3DSG1WNMZK","threat-modeling-expert","Expert in threat modeling methodologies, security architecture review, and risk assessment. Masters STRIDE, PASTA, attack trees, and security requirement extraction. Use for security architecture r...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fthreat-modeling-expert\u002FSKILL.md",[],[158,159,160,161,162,163,164,165,148,106,166,167,168,27,169,170,171,145,172,173],"modeling","threat modeling expert","threat modeling","expert","threat","risk assessment","architecture review","architecture","security architecture review","trees","security architecture","security requirement extraction","assessment","extraction","review","stride"]