Trust Assessment
gerador-contrato-locacao-preview received a trust score of 48/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 5 findings: 1 critical, 0 high, 3 medium, and 1 low severity. Key findings include Suspicious import: requests, Unpinned npm dependency version, Node lockfile missing.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The LLM Behavioral Safety layer scored lowest at 63/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings5
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Hardcoded Google Forms ID (FORM_ID) The `FORM_ID` environment variable, declared as obligatory in the manifest, has a hardcoded default value in `scripts/main.py`. If the `FORM_ID` environment variable is not explicitly set, the skill will use this default ID (`1FAIpQLSf9KuCi47rcNOPnlC41PFJol0c97FmbOZ2vPC0M-XVh1wNT4w`). This creates a critical data exfiltration risk, as sensitive user data (email, CPF, address, etc.) could be sent to an unintended or malicious Google Form if the default ID is compromised or points to an attacker-controlled endpoint. The manifest's declaration of `FORM_ID` as obligatory is contradicted by this default, and the subsequent check for `FORM_ID`'s presence is bypassed. Remove the hardcoded default value for `FORM_ID`. Ensure the skill exits if `FORM_ID` is not provided, as stated in the manifest. For example, change `FORM_ID = os.environ.get("FORM_ID", "...")` to `FORM_ID = os.environ.get("FORM_ID")` and ensure the subsequent check `if not FORM_ID: logging.error(...); sys.exit(1)` correctly handles the absence of the environment variable. | LLM | scripts/main.py:10 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/david-evaristo/gerador-contrato-locacao-preview/scripts/main.py:8 | |
| MEDIUM | Unpinned npm dependency version Dependency 'requests' is not pinned to an exact version ('*'). Pin dependencies to exact versions to reduce drift and supply-chain risk. | Dependencies | skills/david-evaristo/gerador-contrato-locacao-preview/package.json | |
| MEDIUM | Unpinned 'requests' dependency The `package.json` specifies the `requests` library with a wildcard version (`*`). This means any version of `requests` could be installed, including future versions that might introduce breaking changes, vulnerabilities, or even malicious code (supply chain attack). Pin the `requests` dependency to a specific version or a major version range (e.g., `"requests": "~=2.28.1"` or `"requests": "^2.0.0"`) to ensure consistent and secure installations. | LLM | package.json:10 | |
| LOW | Node lockfile missing package.json is present but no lockfile was found (package-lock.json, pnpm-lock.yaml, or yarn.lock). Commit a lockfile for deterministic dependency resolution. | Dependencies | skills/david-evaristo/gerador-contrato-locacao-preview/package.json |
Scan History
Embed Code
[](https://skillshield.io/report/47fe48eb8e69aa72)
Powered by SkillShield