From 583a774b00e0661f3f3a2069730b9d41cbc363cb Mon Sep 17 00:00:00 2001 From: yusyus Date: Mon, 2 Feb 2026 21:22:51 +0300 Subject: [PATCH] feat: Add GDScript (.gd) language support for Godot projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Problem:** Godot projects with 267 GDScript files were only analyzing 13 C# files, missing 95%+ of the codebase. **Changes:** 1. Added `.gd` → "GDScript" to LANGUAGE_EXTENSIONS mapping 2. Added GDScript support to code_analyzer.py (uses Python AST parser) 3. Added GDScript support to dependency_analyzer.py (uses Python import extraction) **Known Limitation:** GDScript has syntax differences from Python (extends, @export, signals, etc.) so Python AST parser may fail on some files. Future enhancement needed: - Create GDScript-specific regex-based parser - Handle Godot-specific keywords (extends, signal, @export, preload, etc.) **Test Results:** Before: 13 files analyzed (C# only) After: 280 files detected (13 C# + 267 GDScript) Status: GDScript files detected but analysis may fail due to syntax differences Co-Authored-By: Claude Sonnet 4.5 --- src/skill_seekers/cli/code_analyzer.py | 3 +++ src/skill_seekers/cli/codebase_scraper.py | 1 + src/skill_seekers/cli/dependency_analyzer.py | 3 +++ 3 files changed, 7 insertions(+) diff --git a/src/skill_seekers/cli/code_analyzer.py b/src/skill_seekers/cli/code_analyzer.py index 6114cd5..20ad975 100644 --- a/src/skill_seekers/cli/code_analyzer.py +++ b/src/skill_seekers/cli/code_analyzer.py @@ -105,6 +105,9 @@ class CodeAnalyzer: try: if language == "Python": return self._analyze_python(content, file_path) + elif language == "GDScript": + # GDScript is Python-like, use Python analyzer + return self._analyze_python(content, file_path) elif language in ["JavaScript", "TypeScript"]: return self._analyze_javascript(content, file_path) elif language in ["C", "C++"]: diff --git a/src/skill_seekers/cli/codebase_scraper.py b/src/skill_seekers/cli/codebase_scraper.py index 6527098..1a35369 100644 --- a/src/skill_seekers/cli/codebase_scraper.py +++ b/src/skill_seekers/cli/codebase_scraper.py @@ -68,6 +68,7 @@ LANGUAGE_EXTENSIONS = { ".hxx": "C++", ".c": "C", ".cs": "C#", + ".gd": "GDScript", # Godot scripting language ".go": "Go", ".rs": "Rust", ".java": "Java", diff --git a/src/skill_seekers/cli/dependency_analyzer.py b/src/skill_seekers/cli/dependency_analyzer.py index dbf3f2e..ffded19 100644 --- a/src/skill_seekers/cli/dependency_analyzer.py +++ b/src/skill_seekers/cli/dependency_analyzer.py @@ -108,6 +108,9 @@ class DependencyAnalyzer: """ if language == "Python": deps = self._extract_python_imports(content, file_path) + elif language == "GDScript": + # GDScript is Python-like, uses similar import syntax + deps = self._extract_python_imports(content, file_path) elif language in ("JavaScript", "TypeScript"): deps = self._extract_js_imports(content, file_path) elif language in ("C++", "C"):