vestaboard
Verdict safe, but 7 findings (2 medium, 5 low), mainly data exfiltration, unauthorized tool use, policy violation. Most recent scan 2026-02-07.
The Vestaboard skill presents MEDIUM security risk primarily due to external API communication with user-provided credentials and missing implementation verification. The skill's stated purpose (controlling a Vestaboard display via cloud API) is legitimate, but several security concerns exist: (1) API tokens are required via environment variables without validation guidance, (2) network communication to third-party API cannot be verified as properly restricted, (3) missing input validation and rate limiting could enable abuse, (4) file path handling lacks documented validation, and (5) critical implementation files are missing, preventing code-level security verification. The skill would benefit from: explicit input validation, rate limiting, endpoint restriction verification, path traversal protection, and inclusion of all referenced implementation files. The missing metadata fields (license, compatibility, allowed-tools) reduce transparency but are lower severity. No evidence of prompt injection, command injection, or deliberate data exfiltration was found in the provided documentation.
Scanner's overall assessment (LLM analyzer)
Second scanner: NVIDIA SkillSpector
The two scanners disagree: Cisco found nothing and SkillSpector says do not install. One of them has a blind spot here; read the skill before trusting either. How the two scanners compare across the whole corpus: Two scanners, one corpus.
What this skill does
Read and write messages on a Vestaboard using the Vestaboard Cloud API (cloud.vestaboard.com) and optional legacy RW endpoint. Use when asked to display text on a Vestaboard, update a sign/board, show a short status message, render simple pixel-art using color/filled character codes, or retrieve the current board message.
- Package
- 19 files, 15 KB
- SKILL.md
- 124 words, 10 sections
- Code
- JavaScript (1)
SKILL.md covers: Vestaboard · Security · Constraints · Quick usage (local CLI) · from repo root · Preview formatting only · Read current message (JSON) · Write text · Write a numeric layout (6x22 array of character codes) · Sample content
Findings
MEDIUM Hardcoded API Token Environment Variable Names Data Exfiltrationllm
The skill requires API tokens via environment variables (VESTABOARD_TOKEN or VESTABOARD_RW_KEY) but provides no validation, sanitization, or secure handling guidance. While using environment variables is better than hardcoding secrets, the skill does not verify token format, implement rate limiting, or provide guidance on token rotation. The legacy fallback (VESTABOARD_RW_KEY) suggests potential use of deprecated authentication methods that may have weaker security properties.
SKILL.md
- Preferred: `VESTABOARD_TOKEN`
- Optional legacy fallback: `VESTABOARD_RW_KEY`MEDIUM External Network Communication to Third-Party API Data Exfiltrationllm
The skill makes network calls to cloud.vestaboard.com API using user-provided credentials. While this is the stated purpose, there is no implementation code provided to verify that data transmission is limited to the Vestaboard API endpoint only. The skill could potentially be modified to exfiltrate data to other endpoints, and without seeing the actual implementation (scripts/vb.js), we cannot verify proper certificate validation, request sanitization, or endpoint restriction.
SKILL.md:1
Read and write messages on a Vestaboard using the Vestaboard Cloud API (cloud.vestaboard.com)LOW Skill does not specify a license Policy Violationstatic
Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.
SKILL.md
LOW Missing Input Validation and Resource Limits Resource Abusellm
The skill accepts arbitrary text input for display on the Vestaboard without documented input validation, sanitization, or rate limiting. While the 6x22 character constraint provides some natural limitation, there is no mention of: (1) maximum input length before truncation, (2) rate limiting to prevent API abuse, (3) validation of character codes in numeric layouts, or (4) handling of malformed JSON layout files. This could lead to excessive API calls or processing of malicious layout files.
SKILL.md
Text input is formatted to 6x22 by default (uppercase + word wrap; truncates overflow)LOW Missing File Path Validation for Layout Files Unauthorized Tool Usellm
The skill references layout files in content/layouts/*.json and preview files in content/previews/*.md without documented path validation or sanitization. An attacker could potentially use path traversal (e.g., ../../etc/passwd) to read arbitrary files if the implementation does not properly validate file paths. The referenced file 'Quarterbridge.py' is not found, suggesting potential broken references or missing validation.
SKILL.md
- Numeric layouts live in `content/layouts/*.json`
- Human review previews live in `content/previews/*.md`LOW Missing Metadata Fields in Manifest Social Engineeringllm
The YAML manifest is missing several important metadata fields: license, compatibility, and allowed-tools. While allowed-tools is optional, its absence means there are no declared restrictions on which agent tools can be used. The missing license field creates legal ambiguity, and missing compatibility information prevents users from understanding platform requirements. This is informational but reduces transparency about the skill's capabilities and constraints.
SKILL.md
- license: Not specified
- compatibility: Not specified
- allowed-tools: Not specifiedLOW Missing Implementation Files Unauthorized Tool Usellm
The skill references a Node.js script (scripts/vb.js) and a Python file (Quarterbridge.py) that are not included in the analyzed package. Without the actual implementation code, it is impossible to verify: (1) proper API authentication handling, (2) input sanitization, (3) network request validation, (4) error handling, or (5) absence of malicious code. The missing files create a trust gap where the actual behavior cannot be verified against the documented behavior.
SKILL.md
node scripts/vb.js preview
Files referenced in instructions: Quarterbridge.py (not found)What is in the package
| File | Kind | Size |
|---|---|---|
ENV.md | doc | 395 B |
SKILL.md | doc | 1.2 KB |
package-lock.json | config | 639 B |
package.json | config | 259 B |
references/character-codes.md | doc | 2.0 KB |
references/formatting.md | doc | 323 B |
scripts/vb.js | script | 4.1 KB |
content/layouts/chicken-silhouette.json | config | 429 B |
content/layouts/egg-nest.json | config | 429 B |
content/layouts/forest-depth.json | config | 429 B |
content/layouts/maple-fall.json | config | 429 B |
content/layouts/pine-night.json | config | 429 B |
content/layouts/sunrise-ridge.json | config | 429 B |
content/previews/chicken-silhouette.md | doc | 636 B |
content/previews/egg-nest.md | doc | 585 B |
content/previews/forest-depth.md | doc | 653 B |
content/previews/maple-fall.md | doc | 616 B |
content/previews/pine-night.md | doc | 616 B |
content/previews/sunrise-ridge.md | doc | 592 B |
External hosts referenced
cloud.vestaboard.com docs.vestaboard.com registry.npmjs.org
Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.
Environment variables referenced
VESTABOARD_RW_KEY VESTABOARD_TOKEN VESTABOARD_API_BASE
Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.
What we checked
- Static analyzer. Pattern rules over SKILL.md and bundled files: known-bad commands, exfiltration URLs, secrets, obfuscation.
- Llm analyzer. A language model reads the skill and reports intent-level issues the rules cannot express.
- Meta analyzer. A second model pass that validates, deduplicates and re-scores the other analyzers' findings.
What we did not check
- Runtime behaviour. The skill was not executed; findings come from reading its files.
- Anything fetched at install or run time, including remote scripts, package dependencies, and URLs the skill tells the agent to open.
- Content the analyzers cannot read: images, binaries, and some non-English text.
- Known scanner bypass classes. See the methodology and limitations page.
Sources
- Repository: https://clawhub.ai/skills/vestaboard
- Raw scan result: vestaboard-scan.json
- Badge for your README:
 - Request a re-scan