Back to skill

Security audit

frontend-design-ultimate

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent frontend site-building helper, but users should be aware that its setup scripts run mutable npm tooling from the network.

Before installing, treat this as a frontend generator workflow that may run npm package downloads and CLIs on your machine. Run the initializer in a clean project or sandbox, review generated files before committing or deploying, and consider pinning npm/npx versions if you need reproducible or higher-assurance builds.

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 (3)

T08 · Insecure Dependencies

Warning
Location
scripts/init-vite.sh:19
Finding

Vite initializer downloads and executes mutable npm packages

Content
View full analysis
.nvmrc echo "📦 Installing dependencies..." # Install Tailwind CSS npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p # Install animation library npm install framer-motion # Install shadcn/ui base dependencies npm install tailwindcss-animate class-variance-authority clsx tailwind-merge npm install lucide-react npm install @radix-ui/react-slot ``` The initializer later executes another mutable package: ```bash # Install common components via shadcn CLI npx shadcn@latest add button badge card accordion dialog navigation-menu tabs sheet separator avatar alert -y || { echo "⚠️ Warning: Some shadcn components may not have installed. Run 'npx shadcn@latest add [name]' manually." } ``` ### Technical Analysis The initializer downloads packages without exact versions and directly executes packages selected through the mutable `latest` tag. It also does not rely on a committed lockfile or verified integrity values. `npm create` and `npx` execute package-provided code. In addition, `npm install` can run lifecycle scripts from direct or transitive dependencies. Consequently, the effective executable code can change after this repository has been reviewed. This is not evidence that the currently referenced packages are malicious. The vulnerability is the absence of controls that bind execution to reviewed package versions. ### Attack Path 1. An upstream package, package maintainer account, or transitive dependency is compromised. 2. A malicious release is published under a version matched by `latest` or an unbounded dependency range. 3. A user invokes `bash scripts/ ...[truncated 899 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/init-nextjs.sh:19
Finding

Next.js initializer executes unpinned remote package releases

Content
View full analysis
.nvmrc echo "📦 Installing additional dependencies..." # Install animation library npm install framer-motion # Install shadcn/ui echo "📦 Initializing shadcn/ui..." npx shadcn@latest init -y -d # Install common components echo "📦 Installing common components..." npx shadcn@latest add button badge card accordion dialog navigation-menu tabs sheet separator avatar alert -y || { echo "⚠️ Warning: Some shadcn components may not have installed. Run 'npx shadcn@latest add [name]' manually." } # Install lucide icons npm install lucide-react ``` ### Technical Analysis The script directly executes `create-next-app@latest` and `shadcn@latest`, while other dependencies are installed without exact version constraints. The code executed by these commands is resolved from the npm registry at runtime and can differ between invocations. No repository-controlled lockfile, exact CLI version, integrity verification, or prohibition of lifecycle scripts constrains this execution. A later compromised release could therefore execute even though the Skill repository itself remains unchanged. ### Attack Path 1. An attacker compromises an upstream package, maintainer account, publishing token, or transitive dependency. 2. The attacker publishes a malicious release selected by `@latest` or by an unpinned dependency range. 3. A user follows the documented Next.js workflow and runs the initializer. 4. `npx` retrieves and executes the affected CLI package. 5. The malicious package executes with the invoking user's privileges. 6. It may ...[truncated 685 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/bundle-artifact.sh:25
Finding

Bundling workflow installs and executes unpinned build tools

Content
View full analysis
/dev/null 2>&1; then echo "📦 Installing bundling dependencies..." npm install -D parcel @parcel/config-default parcel-resolver-tspaths html-inline fi # Create .parcelrc if it doesn't exist if [ ! -f ".parcelrc" ]; then echo "⚙️ Creating Parcel config..." cat > .parcelrc << 'EOF' { "extends": "@parcel/config-default", "resolvers": ["parcel-resolver-tspaths", "..."] } EOF fi # Build with Parcel echo "🔨 Building with Parcel..." npx parcel build index.html --no-source-maps --dist-dir dist-parcel # Inline all assets echo "📄 Inlining assets into single HTML..." npx html-inline -i dist-parcel/index.html -o bundle.html -b dist-parcel ``` ### Technical Analysis The bundling script installs Parcel, its configuration package, a resolver, and `html-inline` without exact versions. It then executes the resolved binaries through `npx`. Build tools process attacker-influenced project files and operate with local filesystem access. A compromised package or transitive dependency could execute during installation, through a lifecycle script, or when the build command is invoked. The resulting `bundle.html` could also be silently modified to contain malicious client-side code. ### Attack Path 1. An attacker compromises one of the bundling packages or a transitive dependency. 2. A malicious compatible release is published to the npm registry. 3. A user runs `scripts/bundle-artifact.sh` in a project where Parcel is not already installed. 4. The script installs the compromised package without an exact-version or lockfile constraint. 5. npm executes malicious lifecycle code, or `npx parcel`/`npx html-inline` executes the compromised binary. 6. The payload accesses user-level resources or modifies `bu ...[truncated 734 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The description presents a site-generation skill that can turn plain-text requirements into bold, memorable static web UIs across both Vite and Next.js workflows. The supplied code only scaffolds a Next.js project, installs Tailwind/shadcn/ui/framer-motion/lucide, and creates a very basic starter page and config. While this is related to the general tech stack, the primary behavior is project initialization, not design generation. Key advertised capabilities—plain-text-to-site generation, anti-AI-slop aesthetics, broad static-site creation, Vite support, and single-file bundling—are absent from the code. Therefore the description materially overstates and misrepresents the actual behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The code’s real function is environment/project scaffolding: it creates a Vite React TypeScript app, installs Tailwind and shadcn-related packages, writes config/CSS/component files, and adds common shadcn components. That is related to the technology stack mentioned in the description, but it falls well short of the declared behavior. There is no logic for turning plain-text requirements into a completed static site, no page generation, no design synthesis, no Next.js setup path, and no single-file bundling behavior. So the description materially overstates and mischaracterizes the skill’s primary purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a full site-generation skill with design synthesis and framework-specific workflows. The actual code chunk is just a TypeScript configuration file for site content. It contains no code for generating UI, creating distinctive designs, bundling output, handling React/Tailwind/shadcn/ui, or supporting Vite/Next.js. This is a material mismatch in primary purpose and capabilities, not merely an implementation detail.

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 · README.md (reported line 3)May include surrounding context.

md
# Frontend Design Ultimate

🎨 Create distinctive, production-grade static sites with React, Tailwind CSS, and shadcn/ui — no mockups needed.

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
[![ClawHub](https://img.shields.io/badge/ClawHub-frontend--design--ultimate-purple)](https://clawhub.ai/skills/frontend-design-ultimate)

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest description says to use the skill when building landing pages, marketing sites, portfolios, dashboards, or 'any static web UI,' which is a very broad scope without clear trigger boundaries or exclusions. In a manifest file, this can cause unintended activation for many ordinary web-development requests because it does not define specific invocation phrases or negative examples.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding

The unpinned npx shadcn reference appears twice in the findings because the same command pattern was matched multiple times, but the underlying issue is still real. Running unversioned npx commands in setup instructions is risky because it delegates trust to whatever package version is current at execution time.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

Using npx parcel without explicitly pinning a version can cause the script to execute whatever parcel version is resolved at runtime, including a freshly downloaded package if the dependency is absent or altered. In a build script, this creates supply-chain risk and reduces reproducibility, since a compromised or unexpected package version could run arbitrary code during bundling.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

Using npx html-inline without a pinned version allows runtime resolution of an unpinned package, which may download and execute an unexpected release. Because this script is intended to process project artifacts automatically, a compromised or malicious package update could execute arbitrary code in the developer environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The script executes npx create-next-app@latest, which fetches and runs whatever code is currently published under that package tag at execution time. Using @latest makes builds non-reproducible and creates a supply-chain risk: a compromised publisher account, malicious release, or breaking upstream change would run arbitrary code on the developer's machine during project initialization.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

npx shadcn@latest init -y -d downloads and executes the latest published CLI code with no version pinning. Because this is an initialization command that writes files and can run install steps, a malicious or compromised upstream release could execute arbitrary code and alter the generated project.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The npx shadcn@latest add ... command pulls remote CLI code at runtime and then uses it to modify the project by adding components. An attacker controlling the package release path or the latest tag could introduce arbitrary code execution or silently inject malicious source files into the generated frontend.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
76% confidence
Finding

This occurrence is inside an echo statement that only prints guidance to the user and does not itself execute npx shadcn@latest. While it still encourages insecure operational practice by recommending an unpinned command, the line alone is not direct code execution and is therefore lower severity than the actual invoked commands.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

This script executes npx shadcn@latest add ..., which pulls and runs the latest CLI code at execution time. That creates a supply-chain risk: if the package is compromised or a breaking/malicious release is published, anyone running the initializer will execute unreviewed code on their machine.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file includes a code example that embeds a YouTube iframe, which would cause a client to contact a third-party service and potentially share user metadata when used. The surrounding documentation does not mention the privacy implications or that external content is being loaded.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.