{"data":{"skill":{"slug":"wshobson-godot-gdscript-patterns","name":"godot-gdscript-patterns","icon":"📦","repo":"https://github.com/wshobson/agents/tree/main/plugins/game-development/skills/godot-gdscript-patterns","status":"approved","author":"wshobson","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"33ab2435-ff2e-47e1-9ee0-0eb4f37e6aba","skill_id":"719a07cc-e40f-4d36-acc8-70da21e35225","version":5,"content_hash":"5965e0c0cafcdb43179bf28edc5af996","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":null,"manual_install_policy":null,"summary":"Static analysis reported command execution, network access, environment access, weak crypto, reconnaissance, and a critical combination heuristic. Most alerts are false positives from markdown GDScript examples, local Godot APIs, headings, and reference links. The only actionable issue is a save-system example that teaches a hardcoded encryption passphrase.","remediation":[],"risk_factor_evidence":[{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":681,"line_start":677},{"file":"SKILL.md","line_end":701,"line_start":697},{"file":"SKILL.md","line_end":723,"line_start":718}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Hardcoded Encryption Passphrase in Save Example","verdict":"TRUE_POSITIVE","locations":[{"file":"SKILL.md","line_end":680,"line_start":670}],"confidence":0.88,"description":"The save-system example defines a constant passphrase named ENCRYPTION_KEY and passes it to FileAccess.open_encrypted_with_pass. This is documentation code, not executed by the skill, but it can lead users to ship a reusable secret in game code.","confidence_reasoning":"The hardcoded passphrase and its use in the encrypted file API are visible in the save-system example. Risk is limited because the repository contains only instructional markdown, not executable tooling."}],"low_findings":[{"title":"Markdown Code Fences Flagged as Shell Backticks","verdict":"FALSE_POSITIVE","locations":[{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":131,"line_start":131},{"file":"SKILL.md","line_end":133,"line_start":133},{"file":"SKILL.md","line_end":154,"line_start":154},{"file":"SKILL.md","line_end":156,"line_start":156},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":181,"line_start":181},{"file":"SKILL.md","line_end":245,"line_start":245},{"file":"SKILL.md","line_end":247,"line_start":247},{"file":"SKILL.md","line_end":268,"line_start":268},{"file":"SKILL.md","line_end":272,"line_start":272},{"file":"SKILL.md","line_end":285,"line_start":285},{"file":"SKILL.md","line_end":287,"line_start":287},{"file":"SKILL.md","line_end":322,"line_start":322},{"file":"SKILL.md","line_end":324,"line_start":324},{"file":"SKILL.md","line_end":346,"line_start":346},{"file":"SKILL.md","line_end":350,"line_start":350},{"file":"SKILL.md","line_end":420,"line_start":420},{"file":"SKILL.md","line_end":422,"line_start":422},{"file":"SKILL.md","line_end":457,"line_start":457},{"file":"SKILL.md","line_end":461,"line_start":461},{"file":"SKILL.md","line_end":512,"line_start":512},{"file":"SKILL.md","line_end":514,"line_start":514},{"file":"SKILL.md","line_end":536,"line_start":536},{"file":"SKILL.md","line_end":538,"line_start":538},{"file":"SKILL.md","line_end":557,"line_start":557},{"file":"SKILL.md","line_end":561,"line_start":561},{"file":"SKILL.md","line_end":661,"line_start":661},{"file":"SKILL.md","line_end":665,"line_start":665},{"file":"SKILL.md","line_end":724,"line_start":724},{"file":"SKILL.md","line_end":726,"line_start":726},{"file":"SKILL.md","line_end":757,"line_start":757},{"file":"SKILL.md","line_end":761,"line_start":761},{"file":"SKILL.md","line_end":783,"line_start":783}],"confidence":0.96,"description":"The external command alerts point to markdown code fences that contain GDScript examples. No shell command runner, Ruby backtick execution, or instruction to execute host commands was found in those locations.","confidence_reasoning":"The cited lines are opening or closing markdown fences around GDScript snippets. They are documentation delimiters and do not execute commands."},{"title":"Network Alerts Are Local Loading or Reference Links","verdict":"FALSE_POSITIVE","locations":[{"file":"SKILL.md","line_end":608,"line_start":608},{"file":"SKILL.md","line_end":803,"line_start":803},{"file":"SKILL.md","line_end":804,"line_start":804},{"file":"SKILL.md","line_end":805,"line_start":805}],"confidence":0.93,"description":"The network findings are a Godot ResourceLoader.load_threaded_request call for local scene loading and three documentation links. No credential exfiltration, remote API call, or background network behavior was found.","confidence_reasoning":"The ResourceLoader call accepts a project resource path, and the remaining locations are markdown resource links. There is no code that sends data to a remote endpoint."},{"title":"Environment Access Alert Is a Variable Name","verdict":"FALSE_POSITIVE","locations":[{"file":"SKILL.md","line_end":670,"line_start":670}],"confidence":0.91,"description":"The env_access finding points to a constant named ENCRYPTION_KEY in a GDScript snippet. It does not read process environment variables or platform secrets, although the hardcoded passphrase itself is tracked separately.","confidence_reasoning":"The line declares a GDScript constant and does not use environment APIs. The naming pattern triggered the scanner, but the semantic issue is hardcoding, not environment access."},{"title":"Weak Crypto and Reconnaissance Labels Are Text Matches","verdict":"FALSE_POSITIVE","locations":[{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":281,"line_start":281},{"file":"SKILL.md","line_end":411,"line_start":410},{"file":"SKILL.md","line_end":438,"line_start":438},{"file":"SKILL.md","line_end":727,"line_start":727},{"file":"SKILL.md","line_end":799,"line_start":799},{"file":"SKILL.md","line_end":335,"line_start":335},{"file":"SKILL.md","line_end":735,"line_start":735},{"file":"SKILL.md","line_end":769,"line_start":769},{"file":"SKILL.md","line_end":788,"line_start":788},{"file":"SKILL.md","line_end":791,"line_start":791}],"confidence":0.9,"description":"The weak crypto and system reconnaissance alerts point to ordinary description text, comments, method names, and best-practice bullets. No hashing algorithm, system probing command, host inventory logic, or prompt injection attempt was found.","confidence_reasoning":"The cited lines contain words such as GDScript, description, duplicate_for_runtime, get_path, and decoupling. These are normal Godot documentation terms, not security-sensitive operations."},{"title":"Critical Combination Heuristic Not Confirmed","verdict":"FALSE_POSITIVE","locations":[{"file":"SKILL.md","line_end":806,"line_start":1}],"confidence":0.89,"description":"The scanner combined command, network, and credential indicators into a critical heuristic. Manual review found those indicators are unrelated false positives or non-executed examples, so malicious intent is not supported.","confidence_reasoning":"The full file is instructional markdown for Godot patterns. No executable skill scripts, data exfiltration flow, credential harvesting, or prompt injection language was found."}],"dangerous_patterns":[{"title":"Hardcoded Secret Pattern in Example Code","verdict":"TRUE_POSITIVE","locations":[{"file":"SKILL.md","line_end":700,"line_start":670}],"confidence":0.88,"description":"A GDScript save example stores an encryption passphrase directly in source text and reuses it for save and load operations.","confidence_reasoning":"The same constant is passed to the encrypted file API for writes and reads. The concern is instructional code quality, not active secret access by the skill."}],"files_scanned":1,"total_lines":806,"audit_model":"codex","audited_at":"2026-07-01T00:58:32.02+00:00","created_at":"2026-07-01T02:22:04.594445+00:00","static_findings":[],"finding_verdicts":[],"semantic_findings":[],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"canonical install advisories are incomplete"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":5,"agentAutoInstallPolicy":null,"manualInstallPolicy":null,"artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}