Trust Assessment
leadklick received a trust score of 69/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 5 findings: 0 critical, 1 high, 2 medium, and 1 low severity. Key findings include Missing required field: name, Unpinned npm dependency version, Node lockfile missing.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
Last analyzed on February 14, 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 | |
|---|---|---|---|---|
| HIGH | Supabase Service Role Key grants excessive database access The skill is configured to use a Supabase Service Role Key (`supabaseKey`), as explicitly stated in `SKILL.md` and used in `src/api.ts`. This key bypasses Row Level Security (RLS) and grants full administrative privileges to the Supabase project's database. While the `skill.json` marks this key as `secret: true`, its inherent power, combined with the skill's broad capabilities (e.g., `lead.delete`), means that if the AI agent or the skill's execution environment is compromised, an attacker could perform arbitrary read, write, or delete operations on the entire Supabase database, leading to severe data exfiltration, tampering, or loss. 1. **Least Privilege Principle**: Re-evaluate if a Service Role Key is strictly necessary. If the skill only needs to interact with specific tables or perform specific operations, consider creating a dedicated Supabase API key with Row Level Security (RLS) enabled and restricted policies that grant only the minimum required permissions (e.g., `INSERT` on `leads`, `SELECT` on `leads` for the specific `org_id`). 2. **Input Validation**: Ensure all inputs to the skill's methods are rigorously validated and sanitized to prevent any form of injection or unintended data manipulation. 3. **Access Control**: Implement strict access controls for the AI agent itself, limiting who can invoke this skill and under what conditions. | LLM | SKILL.md:15 | |
| MEDIUM | Missing required field: name The 'name' field is required for openclaw skills but is missing from frontmatter. Add a 'name' field to the SKILL.md frontmatter. | Static | skills/big-roman123/leadklick/SKILL.md:1 | |
| MEDIUM | Unpinned npm dependency version Dependency '@supabase/supabase-js' is not pinned to an exact version ('^2.39.0'). Pin dependencies to exact versions to reduce drift and supply-chain risk. | Dependencies | skills/big-roman123/leadklick/package.json | |
| 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/big-roman123/leadklick/package.json | |
| INFO | Unpinned dependencies in package.json The `package.json` file uses caret (`^`) ranges for its dependencies (`@supabase/supabase-js` and `typescript`). While common, this means that minor or patch updates could be automatically installed, potentially introducing breaking changes or new vulnerabilities without explicit review. For security-critical applications, pinning to exact versions is often preferred for deterministic builds. Pin dependencies to exact versions (e.g., `"@supabase/supabase-js": "2.39.0"`) to ensure deterministic builds and prevent unexpected changes from upstream dependencies. Regularly audit dependencies for known vulnerabilities. | LLM | package.json:12 |
Scan History
Embed Code
[](https://skillshield.io/report/fdf8ae79bc2e93be)
Powered by SkillShield