| name | run-gdlint |
| name_pretty | GDScript Toolkit Executor |
| description | Comprehensive Type 2 executable skill implementing full GDScript toolkit integration. Runs gdlint, gdformat, gdparse, and gdradon with structured JSON output for automated remediation. Reduces complex GDScript analysis knowledge to deterministic code. |
| command | scripts/run_gdscript_toolkit.py |
| version | 2.0.0 |
Run GDLint - Code Style Validation
Instructions for QAEngineer Agent
To validate code style, you MUST use the scripts/run_gdlint.py skill.
This skill will execute the gdlint binary via subprocess.
It will not return raw text. It will return a structured JSON object or LintError dataclass containing the parsed filepath, line, Error, and rule-name for each violation.
If this skill returns errors, you MUST append this structured data to the ## Feedback section of the Markdown Contract.
When to Use
Use this skill during the Validate phase of any task that involves GDScript code generation or modification.
Expected Behavior
The skill implements the GodotProject.lint() method which:
- Executes gdlint using subprocess.run(..., capture_output=True, text=True)
- Defines a regular expression to parse the filepath:line: Error: Message (rule-name) output
- Iterates through the stdout lines, applies the regex, and populates a list of LintError dataclasses or dictionaries
- Returns the structured failure data via print(json.dumps([error.to_dict() for error in errors]))
Expected Output Format
[
{
"filepath": "res://scripts/ship_controller.gd",
"line": 42,
"column": 15,
"error": "Variable 'target_pos' not typed",
"rule": "typing-required",
"severity": "error"
},
{
"filepath": "res://scripts/weapon_system.gd",
"line": 128,
"column": 1,
"error": "Line too long (145 > 120 characters)",
"rule": "line-length",
"severity": "warning"
}
]
Integration with Automated Remediation Loop
This skill is a critical component of the "Agentic Immune System":
- QAEngineer executes the run-gdlint skill after code implementation
- Skill returns structured JSON (not raw text)
- PostToolUse hook captures the JSON output
- Hook appends structured data to task's ## Feedback section
- Original engineer receives explicit, actionable fix instructions
Usage Pattern
# In QAEngineer agent workflow
def validate_task(task_id: str):
# Run gdlint
lint_results = godot_project.lint()
if lint_results:
# Append to task feedback
append_to_task_feedback(task_id, {
"type": "gdlint_violations",
"errors": lint_results
})
return False # Validation failed
return True # Validation passed
Critical Requirements
- Structured Output Only: Never return raw gdlint text output
- Complete Parsing: Parse all lines, not just first N errors
- Consistent Schema: Always return the same JSON structure
- Rule Names: Include the specific gdlint rule name for each violation
- Line Numbers: Accurate line and column numbers for each error
No Resources Required
This skill does not require a resources/ directory as it implements the core validation logic directly in the Python script.
This skill transforms the reactive style-guide enforcement into structured, actionable data that enables the automated remediation loop to function effectively.