Back to skill

Security audit

Rock Paper Scissors Lizard Spock Game

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real Rock Paper Scissors Lizard Spock game skill, but it needs Review because its setup guidance uses an unsafe Python package installation command that can alter protected system packages.

Review the install instructions before using this skill. Prefer running it in a virtual environment with a pinned `rich` version, and avoid `--break-system-packages`. Also note that terminal-mode statistics are stored locally at `~/.rpsls_stats.json` and can be deleted if you do not want retained game history.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:891
Finding

Unpinned Dependency Installation Bypasses System Package Protections

Content
View full analysis
Remediation
View remediation
" ``` 3. Pin `rich` and any transitive dependencies to versions that have been reviewed and tested. 4. Maintain dependency constraints in a version-controlled requirements or lock file. 5. For stronger supply-chain integrity, record approved package hashes and install with hash verification: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 6. Avoid recommending unconditional upgrades. Review and test dependency updates before changing pinned versions. 7. Apply the corrected installation guidance consistently in `SKILL.md`, `README.md`, `QUICKSTART.md`, and `EXAMPLES.md`. 8. If statistics are the only terminal feature requiring enhanced formatting, consider providing a standard-library fallback so the game can run without installing a third-party package. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Rogue AgentSelf-Modification, Session Persistence
Findings (17)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · README.md (reported line 15)May include surrounding context.

md
- 📊 **Persistent Statistics**: Track all-time wins, losses, and ties
- 🏆 **Win Streak Tracking**: Monitor your best and current streaks
- 📈 **Choice Analysis**: See which moves you use most
- 🎯 **In-Game Rules**: Display rules anytime during play
- 💾 **Auto-Save Stats**: Statistics saved to `~/.rpsls_stats.json`
- 🎭 **Animated Results**: Shake animations and colorful feedback

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · SKILL.md (reported line 839)May include surrounding context.

md
- "Play again" → Start new round
- "Show stats" → Display statistics
- "Reset score" → Clear session stats
- "Explain the rules" → Show rules table
- "What beats rock?" → Explain game logic

## Game Strategy Tips

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The example promotes persistent session/statistics tracking as a default enhancement for a simple game skill. In context, persistence is not inherently malicious, but it expands retention of user interaction data beyond what is necessary for one-off gameplay and makes the other undisclosed file access issues more consequential.

Content

Scanner excerpt · EXAMPLES.md (reported line 9)May include surrounding context.

md
**User**: "Let's play rock paper scissors lizard spock"

**Claude**: "I'll create a beautiful terminal version of Rock Paper Scissors Lizard Spock for you! 🎮

This enhanced version includes:
- ✨ Colored terminal UI with emojis

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The example introduces persistent writes to ~/.rpsls_stats.json even though the stated skill scope is simply playing the game. Expanding behavior to local file storage without explicit disclosure or consent creates an unnecessary data-handling capability that could surprise users and normalize broader filesystem access.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This example claims the skill reads ~/.rpsls_stats.json to answer a user request, adding local file-access behavior not disclosed in the skill metadata. Undeclared read access is risky because it broadens the skill's effective privileges and may encourage agents to access local data without sufficient transparency.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The troubleshooting example instructs environment inspection and package installation commands unrelated to the core game-play purpose, including pip installation with --break-system-packages. This broadens the skill from a game into system modification guidance, increasing the chance of unsafe changes or misuse under the guise of support.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · QUICKSTART.md (reported line 14)May include surrounding context.

"Let's play rock paper scissors lizard spock"

text

Claude will create the game for you instantly!

### Option 2: Install the Skill

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · QUICKSTART.md (reported line 124)May include surrounding context.

bash
# Check permissions
touch ~/.rpsls_stats.json
chmod 644 ~/.rpsls_stats.json

Issue: No colors in terminal

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The quick-start repeatedly suggests very generic phrases like "Let's play rock paper scissors lizard spock," which are natural conversational inputs a user might say outside an explicit skill-selection flow. In agent environments that route on natural language, broad invocation phrasing can cause unintended triggering or confusion about whether the model is acting as a general assistant versus invoking installed skill behavior.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 50)May include surrounding context.

text
"Show me the RPSLS GUI"
"Play RPSLS with a visual interface"
"Create an interactive RPSLS game"

Quick Commands

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 383)May include surrounding context.

For GUI Mode:

Create an interactive HTML artifact:

html
<!DOCTYPE html>

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The example states that user statistics are auto-saved to disk without warning the user that local data will be written. Even if the data is low sensitivity, silent persistence is a transparency and consent issue that can violate user expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The example shows reading a local stats file without first warning that local user data will be accessed. This is dangerous primarily because it normalizes silent file access and weakens user awareness of when personal or session data is being read.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation advertises persistent statistics and later references ~/.rpsls_stats.json, but the quick-start does not clearly warn users up front that gameplay history is stored on disk. This creates a transparency/privacy issue because users may not realize the skill persists local behavioral data across sessions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README explicitly states that gameplay statistics are automatically and persistently saved to a file in the user's home directory, but it does not clearly warn about local data retention, file location, or privacy implications before use. While the stored data appears low sensitivity, undisclosed persistence can surprise users and leave artifacts on shared or managed systems.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill explicitly saves persistent game statistics to ~/.rpsls_stats.json but does not instruct the user that gameplay data will be written to their home directory. While the data is low sensitivity, silent persistence can violate user expectations and creates an unnecessary privacy/transparency issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language policy applies to all file types, including code snippets embedded in markdown. Setting the document language to English hard-codes a locale preference, and the file does not offer an opt-in or explain that the skill is intentionally English-only for a justified regional reason.

Content

No source excerpt is available for this finding.