godot-verify
15
总安装量
7
周安装量
#22370
全站排名
安装命令
npx skills add https://github.com/chen19007/my_skills --skill godot-verify
Agent 安装分布
codex
4
antigravity
3
github-copilot
3
gemini-cli
3
opencode
3
amp
2
Skill 文档
Godot Verification Skill
Validate Godot project changes using gdlint, gdformat, gdradon, godot export commands, and LSP diagnostics.
æé¤è§å
ä¸è¦æ£æ¥åå¤ç addons ç®å½ä¸ç任使件ã
addons ç®å½é常å
å«ç¬¬ä¸æ¹æä»¶æå¤é¨èµæºï¼è¿äºä»£ç ä¸ç±é¡¹ç®ç»´æ¤ï¼ä¸åºçº³å
¥é¡¹ç®ä»£ç è´¨éæ£æ¥èå´ã
æ£æ¥é¡¹
| æ£æ¥ | å½ä»¤/å·¥å · | 说æ |
|---|---|---|
| Lint | gdlint |
Lint GDScript 代ç |
| Format | gdformat |
æ ¼å¼å/æ£æ¥æ ¼å¼ |
| Metrics | gdradon cc |
ä»£ç ææ åæ |
| Export | godot --export-pack |
导åºéªè¯ |
| LSP Diagnostics | godot-lsp__diagnostics |
宿¶è¯æ³æ£æ¥ï¼éè¿ MCPï¼ |
gdradon è¾åº
gdradon cc <path>
è¾åºæ ¼å¼ï¼
F <line>:<col> <function_name> - <grade> (<cc>)
| åæ®µ | 说æ |
|---|---|
| F | 彿° (Function) |
<line>:<col> |
è¡å·ååå· |
<function_name> |
彿°å |
<grade> |
å¤æåº¦ç级: A(ç®å), B(ä¸ç), C(夿), D(é叏夿), F(æå¤æ) |
<cc> |
åå¤æåº¦æ°å¼ |
示ä¾ï¼
.\character_body_2d.gd
F 13:0 _physics_process - C (15)
使ç¨ç¤ºä¾
# Lint æ£æ¥
gdlint "D:/project/scripts/Player.gd"
# Format æ£æ¥
gdformat --check "D:/project/scripts/Player.gd"
# ä»£ç ææ
gdradon cc D:/project/scripts/
# LSP è¯æï¼DiagnosticsServer ä¸ºå¼æºèªå¯å¨æå¡ï¼
# è°ç¨ MCP å·¥å
·è·åè¯æï¼åªé uri åæ°ï¼
godot-lsp__diagnostics(uri="file:///D:/project/game/player.gd")
# LSP è¯æï¼ä¿®æ¹ä»£ç åä½¿ç¨ refresh=trueï¼
godot-lsp__diagnostics(uri="file:///D:/project/game/player.gd", refresh=true)
# 宿´æ£æ¥
gdlint D:/project/scripts/ && gdformat D:/project/scripts/ && gdradon cc D:/project/scripts/
# 导åºéªè¯
godot --headless --path "D:/project" --export-pack "Web" "D:/export.pck"
LSP Diagnostics
Godot LSP è¯ææä¾å®æ¶çè¯æ³æ£æ¥åéè¯¯æ£æµï¼ä¸ Godot ç¼è¾å¨æ¾ç¤ºçè¯æä¸è´ã
åç½®æ¡ä»¶
- Godot ç¼è¾å¨è¿è¡ï¼Godot LSP æå¡å¨å¨ç¼è¾å¨å¯å¨æ¶èªå¨å¼å¯ï¼é»è®¤ç«¯å£ 6005ï¼
- DiagnosticsServer è¿è¡ï¼å¼æºèªå¯å¨æå¡ï¼æä¾è¯æç¼åï¼
MCP å·¥å ·è°ç¨
å·¥å
·å: godot-lsp__diagnostics
åæ°:
uri(å¿ é):file://URIï¼ä¾å¦file:///D:/project/game/player.gdrefresh(å¯é): æ¯å¦å¼ºå¶å·æ°è¯æç¼åï¼é»è®¤ false
è¿å:
{
"uri": "file:///D:/project/game/player.gd",
"diagnostics": [
{
"range": { "start": { "line": 4, "character": 0 }, "end": { "line": 4, "character": 56 } },
"severity": 2,
"code": 9,
"source": "gdscript",
"message": "(SHADOWED_GLOBAL_IDENTIFIER): The constant \"AttackType\" has the same name as a global class..."
}
],
"cached": false // true 表示ä»ç¼åè¿åï¼false è¡¨ç¤ºæ°æå¼æä»¶
}
说æ:
- DiagnosticsServer ä¼èªå¨è¯»åæä»¶å
å®¹ï¼æ éä¼ é
textåæ° - 馿¬¡æ¥è¯¢ä¼æå¼æä»¶å¹¶çå¾ è¯æï¼çº¦ 500msï¼
- åç»æ¥è¯¢ç´æ¥ä»ç¼åè¿åï¼é度æ´å¿«
- ä¿®æ¹ä»£ç 忍è使ç¨
refresh=true强å¶å·æ°ç¼åï¼ç¡®ä¿è·åææ°è¯æç»æ
è¯æçº§å« (severity)
| çº§å« | å¼ | 说æ |
|---|---|---|
| Error | 1 | é误ï¼å¿ é¡»ä¿®å¤ |
| Warning | 2 | è¦åï¼å»ºè®®ä¿®å¤ |
| Information | 3 | ä¿¡æ¯ |
| Hint | 4 | æç¤º |
常è§è¯æä»£ç
| 代ç | æ¶æ¯ | 说æ |
|---|---|---|
| 1 | PARSER_ERROR |
è¯æ³é误 |
| 9 | SHADOWED_GLOBAL_IDENTIFIER |
常éåä¸å ¨å±ç±»å²çª |
| 12 | STATIC_VARIABLE_TYPE_MISMATCH |
éæåéç±»åä¸å¹é |
| 21 | RETURN_VALUE_DISCARDED |
è¿å弿ªä½¿ç¨ |
| 30 | UNSAFE_CALL |
ä¸å®å ¨ç彿°è°ç¨ |
| 40 | UNASSIGNED_VARIABLE_ACCESS |
è®¿é®æªèµå¼çåé |
HTTP APIï¼ç´æ¥è®¿é® DiagnosticsServerï¼
# è·åè¯æ
curl "http://127.0.0.1:3457/diagnostics?path=D:/project/game/player.gd"
# å·æ°è¯æ
curl -X POST "http://127.0.0.1:3457/refresh" -d "{\"path\":\"D:/project/game/player.gd\"}"
# æ¥çç¶æ
curl "http://127.0.0.1:3457/stats"
ä¸ gdlint 对æ¯
| ç¹æ§ | LSP Diagnostics | gdlint |
|---|---|---|
| 宿¶æ§ | 宿¶ï¼ç¼åï¼ | éè¦è¿è¡ |
| é误类å | è¯æ³ + è¯ä¹ | Lint è§å |
| ä¸ç¼è¾å¨ä¸è´ | å®å ¨ä¸è´ | å¯è½ä¸å |
| é度 | å¿«ï¼æç¼åï¼ | æ ¢ï¼éè§£æï¼ |
| éè¦ Godot | æ¯ | å¦ |
建议: ä½¿ç¨ LSP Diagnostics ä½ä¸ºå¿«éæ£æ¥ï¼gdlint ä½ä¸ºè¡¥å lint è§åæ£æ¥ã
Lint Rules (gdlint)
| Rule | Severity | Description |
|---|---|---|
unused-variable |
Error | Variable declared but never used |
shadowed-variable |
Error | Variable shadows member variable |
function-name |
Error | Function name violates naming convention |
constant-name |
Error | Constant name violates naming convention |
trailing-whitespace |
Warning | Lines have trailing whitespace |
missing-docstring |
Warning | Function missing documentation |
line-too-long |
Warning | Line exceeds 120 characters |
Error Handling
| Error | Solution |
|---|---|
No project.godot found |
Navigate to project root or provide absolute path |
gdlint not found |
Install: pip install gdtoolkit |
gdradon not found |
Install: pip install gdradon |
godot not found |
Add godot to PATH |
Path must be absolute |
Convert relative to absolute paths |
Common Workflows
After Code Changes
gdlint "D:/project/scripts/Player.gd"
Pre-commit Validation
gdlint D:/project/scripts/ && gdformat D:/project/scripts/
Code Metrics Analysis
gdradon cc D:/project/scripts/
è¾åºç¤ºä¾ï¼
.\character_body_2d.gd
F 13:0 _physics_process - C (15)
Export Validation
godot --headless --path "D:/project" --export-pack "Web" "D:/export.pck"
å®è£ è¦æ±
pip install gdtoolkit(gdlint, gdformat)pip install gdradon(code metrics)godotin PATH (export validation)
Tips
- Use
fileparam to check only changed files (faster) gdformat --checkshows what would change without modifyinggdradon ccshows complexity and maintainability metrics- Export validation catches dependency issues lint misses