godot-task
단일 태스크 실행기 — GDScript 코드 작성, 씬 수정, 사운드 연결, Godot 4 함정 회피
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
단일 태스크 실행기 — GDScript 코드 작성, 씬 수정, 사운드 연결, Godot 4 함정 회피
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Phase 0 — 게임 콘셉트 확장, 비주얼 타겟 생성, PLAN/STRUCTURE/ASSETS.md 작성, 사용자 승인
완성된 Godot 게임을 UX 디자이너, 게임 디자이너, 기술 리뷰어(Godot 전문) 3관점으로 병렬 평가한다.
Godot 게임 인터랙티브 테스트 — 입력 주입, 상태 검증, 스크린샷 캡처를 자동화하는 테스트 스킬
Phase 1 — 프로젝트 스캐폴딩 + 스크립트 스텁 + 씬 생성 + 에셋 생성 (이미지/사운드/음악)
Phase 2 — PLAN.md 태스크를 순서대로 구현. godot-task 스킬로 각 태스크 실행, compile-check + 스크린샷
Phase 4 — 디버그 코드 제거, 코드 정리, 게임플레이 비디오 캡처
| name | godot-task |
| description | 단일 태스크 실행기 — GDScript 코드 작성, 씬 수정, 사운드 연결, Godot 4 함정 회피 |
PLAN.md의 단일 태스크를 구현합니다. 스텁을 실제 코드로 채우고, 씬을 수정/연결합니다.
progress JSON에서 현재 태스크 정보 읽기:
title: 무엇을 구현하는지description: 상세 설명outputs: 생성/수정할 파일 목록deps: 의존 태스크 (이미 done)구현 전 반드시 읽을 파일:
Read ${CLAUDE_PLUGIN_ROOT}/skills/godot-task/quirks.md # Godot 4 함정
Read ${CLAUDE_PLUGIN_ROOT}/skills/godot-task/gdscript.md # GDScript 레퍼런스
스텁의 pass를 실제 코드로 교체합니다.
이동 (CharacterBody2D):
func _physics_process(delta: float) -> void:
var direction := Input.get_vector("move_left", "move_right", "move_up", "move_down")
velocity = direction * speed
move_and_slide()
플랫포머 점프:
func _physics_process(delta: float) -> void:
if not is_on_floor():
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_force
var direction := Input.get_axis("move_left", "move_right")
velocity.x = direction * speed
move_and_slide()
시그널 연결 (코드에서):
func _ready() -> void:
health_changed.connect(_on_health_changed)
# 또는 다른 노드의 시그널
%Player.died.connect(_on_player_died)
시그널 연결 (씬에서):
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
기존 .tscn에 노드/리소스를 추가하거나, 새 씬을 생성합니다.
새 노드 추가 (.tscn 편집):
[node name="HitBox" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="HitBox"]
인스턴스 (씬을 다른 씬에 배치):
[ext_resource type="PackedScene" path="res://scenes/player.tscn" id="2"]
[node name="Player" parent="." instance=ExtResource("2")]
position = Vector2(640, 360)
# 씬에 AudioStreamPlayer2D 추가 후:
@onready var jump_sound: AudioStreamPlayer2D = $JumpSound
func _jump() -> void:
velocity.y = jump_force
jump_sound.play()
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-gate.sh compile-check
에러 발생 시:
quirks.md 참조 (알려진 함정인지)compile-check 통과 후, 관련 시나리오가 있으면 인터랙티브 테스트를 실행합니다.
# 이동 구현 → basic-movement 시나리오
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-test-runner.sh \
--inject-autoloads \
--scenario basic-movement \
--output-dir test_output
시나리오 선택 기준:
basic-movementjump-teststart-gamepause-resume결과 확인:
Read test_output/shot-{scenario}.png로 시각 확인Read test_output/state-{scenario}.json으로 상태 확인Read test_output/errors-{scenario}.json (있으면 첫 에러만 수정)상세 규칙은 rules/testing-rules-godot.md 참조.
필요시 다음을 Read로 로드:
${CLAUDE_PLUGIN_ROOT}/skills/godot-task/quirks.md — Godot 4 함정 모음${CLAUDE_PLUGIN_ROOT}/skills/godot-task/gdscript.md — GDScript 레퍼런스${CLAUDE_PLUGIN_ROOT}/skills/godot-task/scene-generation.md — 씬 생성 가이드${CLAUDE_PLUGIN_ROOT}/skills/godot-task/script-generation.md — 스크립트 생성 가이드${CLAUDE_PLUGIN_ROOT}/skills/godot-task/coordination.md — 씬 간 조정${CLAUDE_PLUGIN_ROOT}/skills/godot-task/capture.md — 스크린샷 캡처${CLAUDE_PLUGIN_ROOT}/skills/godot-task/visual-qa.md — VQA 도구${CLAUDE_PLUGIN_ROOT}/skills/godot-testing/SKILL.md — 인터랙티브 테스트${CLAUDE_PLUGIN_ROOT}/rules/testing-rules-godot.md — 테스팅 규칙코드 작성 시 다음을 반드시 적용하여 테스트 자동화와 호환되게 합니다:
add_to_group("player"), 적 → add_to_group("enemies"), GameManager → add_to_group("game_manager")game_mode: String, score: int (StateReporter가 읽음)move_left, move_right, move_up, move_down, jump, attack, pause 등 표준 이름