T08 · Insecure Dependencies
- Location
README.md:27- Finding
Unpinned npx Installers Retrieve and Execute Mutable Third-Party Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent Expo/React Native UI guidance skill, with install and privacy best-practice caveats but no evidence of hidden, deceptive, destructive, or exfiltrating behavior.
Install from a pinned ClawHub version or reviewed commit when possible, and review generated media code so camera and microphone permissions are requested only after a clear user action. Use the WebGPU/native-build guidance only for projects that actually need custom native graphics support.
README.md:27Unpinned npx Installers Retrieve and Execute Mutable Third-Party Content
references/webgpu-three.md:21Peer-Dependency Validation Is Bypassed for Native WebGPU Dependencies
The README instructs users to run a remote package/install command via npx add against a GitHub URL without pinning to an immutable version, tag, or commit. That creates a supply-chain risk because the referenced content can change over time, causing future installs to execute or fetch different code than originally reviewed.
Using npx clawhub@latest install native-ui pulls and executes the latest version of the installer at runtime, which is mutable and could introduce unreviewed behavior if the package is compromised or updated unexpectedly. This is a classic supply-chain exposure because the command trusts whatever code is current at execution time.
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.
From your project root:
mkdir -p .cursor/skills
cp -r ~/.ai-skills/skills/frontend/native-ui .cursor/skills/native-ui
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
From your project root:
mkdir -p .claude/skills
cp -r ~/.ai-skills/skills/frontend/native-ui .claude/skills/native-ui
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
mkdir -p ~/.claude/skills
cp -r ~/.ai-skills/skills/frontend/native-ui ~/.claude/skills/native-ui
Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.
---
name: native-ui
model: standard
version: 1.0.0
description: >
Building native mobile UIs with Expo Router and React Native. Covers routing,
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The installation command uses npx clawhub@latest install native-ui, which fetches and executes the latest published package code at runtime. Unlike the Expo examples, this directly installs the skill through a third-party package and increases supply-chain risk if the package is compromised, typosquatted, or updated maliciously.
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.
## Best Practices
- Always use SF Symbols over vector icon libraries
- Match symbol weight to nearby text weight
- Use `.fill` variants for selected/active states
- Use PlatformColor for tint to support dark mode
The guidance explicitly recommends requesting camera permission eagerly, which can normalize prompting for sensitive access before clear user intent is established. In a mobile UI skill, this is risky because downstream developers may copy the pattern and collect camera access earlier than necessary, degrading privacy expectations and increasing the chance of overbroad data access.
The microphone example requests recording permission automatically on component mount, before the user explicitly chooses to record. This is dangerous because microphone access is highly sensitive, and permission prompts triggered without user action can surprise users, encourage dark-pattern implementations, and lead developers to request recording capability more broadly than necessary.
The instruction to use this skill for 'ANY 3D graphics, games, GPU compute, or Three.js features' is extremely broad and can cause the agent to invoke the skill in contexts it was not carefully scoped for. Over-broad activation increases the chance of irrelevant or unsafe guidance being applied automatically, especially because the skill includes forceful configuration changes, custom native setup, and build commands.
The line says to 'Never use FontAwesome or Ionicons,' which is a hard natural-language prohibition on tooling choice. While not a security issue, it is a policy-like constraint stated categorically and may be inappropriate if different platforms, accessibility needs, or project contexts require alternatives and no exception path is documented.
The instruction says to "Always prefer NativeTabs ... for the best iOS experience," which imposes a fixed platform-specific choice in natural language rather than offering a user or project-context choice. This can be read as forcing a specific platform-oriented preference instead of allowing locale/platform needs to be selected explicitly.
No suspicious patterns detected.