T01 · Skill Instruction Hijacking
- Location
SKILL.md:146- Finding
Mutable Remote Markdown Is Trusted as Agent Instructions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent web project generator, but it asks agents to run unpinned remote scaffolding tools, fetch mutable remote Markdown, and ships an under-disclosed local Claude settings file.
Install only if you are comfortable with a skill that can scaffold a project, install npm packages, and fetch remote design/docs content. Before running generation, review the exact commands, prefer pinned package versions, avoid arbitrary or internal URLs, treat fetched DESIGN.md as untrusted design data, and check why the bundled Claude settings file disables figma-developer-mcp.
SKILL.md:146Mutable Remote Markdown Is Trusted as Agent Instructions
SKILL.md:138Unpinned Package Runners Execute Mutable Third-Party Code
SKILL.md:140Free-Form Values May Be Interpolated into Shell Commands Without Validation
SKILL.md:91Arbitrary User-Supplied URLs May Be Fetched Without Destination Restrictions
The manifest describes a project generator but does not disclose that the skill may run scaffolding CLIs, install dependencies, fetch remote content, and write files into the project directory. This mismatch undermines informed consent and can cause users or orchestrators to invoke a much more powerful skill than they expect, increasing the risk of unsafe automated execution.
The activation scope is broad enough to match generic requests like 'build a demo' or 'create a web project', which can trigger the skill in contexts where the user did not intend command execution, dependency installation, or remote fetches. Overbroad routing increases the chance that risky actions are invoked unexpectedly under benign-seeming prompts.
The skill explicitly allows users to provide arbitrary reference URLs and instructs the agent to fetch them for design analysis. This broadens the skill from local project generation into unrestricted external network access, creating SSRF, data exfiltration, and retrieval of malicious content risks.
The skill directs the agent to run shell commands that scaffold a project, install packages, and modify the filesystem. This materially expands capability beyond merely providing project guidance: if auto-executed, it can perform arbitrary code execution through package scripts and cause persistent local changes.
The skill executes npx create-next-app@latest, which pulls and runs remote code at execution time without pinning to a specific trusted version. This creates supply-chain and reproducibility risk: behavior can change unexpectedly, and a compromised upstream package or malicious release could execute arbitrary code on the agent host.
The instruction npx shadcn@latest init fetches and runs the latest upstream package code at runtime. Because it is unpinned, the skill inherits supply-chain risk and non-deterministic behavior, which is especially dangerous in an agent workflow that may run commands automatically.
The command npx shadcn@latest add [components] again executes remote code from an unpinned package, compounding the supply-chain risk. Since component names may vary by prior user selections, this also expands the range of code and files modified by the command in a way that is not strictly controlled.
The template recommends executing npx create-next-app@latest, which fetches and runs the latest remote package version at execution time. In an agent skill that may be used to scaffold projects automatically, this creates a supply-chain risk because behavior can change unexpectedly or a compromised upstream release could be executed without review.
The skill instructs use of npx shadcn@latest init, which executes code from an unpinned remote package. Because this is part of a reusable agent workflow, an upstream package compromise or breaking change could directly affect generated projects or the execution environment.
The document instructs users to include a third-party remote script from at.alicdn.com directly in the app without discussing integrity, privacy, CSP, or self-hosting tradeoffs. This creates a client-side supply-chain risk: whoever controls that script or the network path can affect every visiting user's browser.
This blueprint includes npx create-next-app@latest in a project generation path, again relying on execution of the current upstream release. In the context of an agent skill, repeated encouragement of unpinned execution increases supply-chain exposure across every generated project.
The npx shadcn@latest init command is unpinned and runs remote code during scaffolding. This is risky in an automated or semi-automated skill because it delegates trust to the package registry at run time.
npx shadcn@latest add ... fetches executable package code without version pinning. Since the skill is meant to guide or automate project setup, this could introduce malicious or changed behavior into multiple downstream projects.
This instance of npx create-next-app@latest has the same supply-chain weakness: it executes whatever upstream version is current when invoked. In a template library, this undermines reproducibility and increases the blast radius of any compromised release.
npx shadcn@latest init pulls and executes the latest package code on demand. This creates avoidable risk for a build-generating skill, especially if end users may trust and run its commands without scrutiny.
The command npx shadcn@latest add ... is another unpinned remote execution point. The cumulative pattern across the document suggests convenience was prioritized over integrity and reproducibility.
The finding notes npx astro without a pinned version in the generic command table. Although the detailed example elsewhere uses npm create astro@latest, this command still encourages fetching and executing a moving upstream target, creating similar supply-chain risk.
This npx create-next-app@latest command executes unreviewed latest code during SaaS app scaffolding. Because the skill may be repeatedly used to create production-like apps, a compromised release could affect many consumers quickly.
npx shadcn@latest init is an unpinned code execution path. Within an agent skill, users may assume these are safe defaults and run them automatically, magnifying the risk.
The unpinned npx shadcn@latest add ... command inherits the same supply-chain exposure. The skill context makes this more dangerous because it systematizes the insecure pattern across multiple templates.
This content-site scaffold again uses npx create-next-app@latest, which is a moving trust boundary. If executed in CI, by an agent, or by users following the skill, it can introduce malicious or breaking behavior unexpectedly.
npx shadcn@latest init executes the current release from the registry and is not reproducible. In a template repository, this is a real operational and supply-chain weakness rather than a harmless style issue.
This npx shadcn@latest add ... command again trusts remote latest code at runtime. A malicious package update could alter generated files, introduce backdoors, or exfiltrate local environment data during execution.
The tool template includes npx create-next-app@latest, another unpinned remote execution step. Given the skill's purpose is project generation, these commands are likely to be run, making the issue practical rather than theoretical.
npx shadcn@latest init fetches and runs whatever the current release is. In agent-assisted workflows, this reduces user visibility into code provenance and increases exposure to supply-chain attacks.
No suspicious patterns detected.