Back to skill

Security audit

skill-validator-omni

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a legitimate validator, but its documented workflow repeatedly asks users to run unpinned npm CLIs that can change after review.

Review this before installing. Prefer `node scripts/validate.js <dir>` from the reviewed artifact or pin every npm CLI to an exact trusted version. Avoid running the documented unpinned npx commands on a workstation or CI runner that has broad filesystem access, repository tokens, deployment credentials, or other secrets.

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:30
Finding

Unpinned npm Packages Are Downloaded and Executed

Content
View full analysis
[--json]` (fetched from npm; needs only Node) - Local script: `node scripts/validate.js ` (needs the `yaml` package — the repo's `npm install` covers it) ``` ```markdown 1. **Validate** — `npx skill-validator-omni ` (or `node scripts/validate.js `). Read the PASS/FAIL report. Add `-s ` to run one standard (repeatable; `--list-standards` shows names; `--all` is the default). 2. **Fix failures** — each check prints the offending detail; fix frontmatter/structure and re-run until exit 0. 3. **CI gate** — `npx skill-validator-omni --json | jq -e '.ok'` (JSON report, exit 1 on failure). 4. **Verify installability for publish** — `npx skills add / --list -y` must list your skills; for Claude, confirm the marketplace/plugin layouts above. ``` ```markdown - **`yaml` package missing** — install deps: `npm install` in the skill-validator-omni repo, or use the published CLI which bundles it ``` ### Technical Analysis The documented primary workflow invokes npm packages through `npx` without specifying exact versions. When the requested package is not already available locally, `npx` can resolve the current package release from the npm registry, download it, and execute its CLI. Consequently, the code that runs may differ from the version reviewed in this audit. The `npx skills add` verification command has the same supply-chain exposure. In addition, the project does not include a `package.json` or lockfile that constrains the stated `yaml` dependency or provides reproducible dependency resolution for the local workflow. This is a supply-chain weakness rather than evidence that the currently supplied validator script is malicious. The reviewed `scrip ...[truncated 1768 chars]
Remediation
View remediation
npx --yes @ add / --list -y ``` 2. Confirm the correct package name and reviewed version for the `skills` CLI rather than relying on ambiguous registry resolution. 3. Prefer the bundled local validator when possible: ```bash node scripts/validate.js ``` 4. Add a reviewed `package.json` that pins `yaml` to an exact version and commit the generated lockfile. Use reproducible installation in automation: ```bash npm ci ``` 5. Review and verify lockfile integrity entries before release. Configure automated dependency monitoring while requiring manual review before version updates. 6. In CI, install dependencies in an isolated, least-privileged environment with minimal filesystem access, no unnecessary deployment credentials, restricted network access, and read-only source mounts where practical. 7. Consider publishing checksums, signed release provenance, or npm provenance attestations for the expected CLI artifact. Document how users can verify the package identity before execution. 8. Update all examples consistently; leaving even one unpinned `npx` command preserves the vulnerable execution path. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (34)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ll format. Ships as `npx skill-validator-omni` (Node, zero Python deps) and as `scripts/validate.js` for local use.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| OpenAgent skills.sh | discoverable layout (root `SKILL.md`, `skills/` up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index `$sche

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| OpenAgent skills.sh | discoverable layout (root `SKILL.md`, `skills/` up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index `$sche

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| OpenAgent skills.sh | discoverable layout (root `SKILL.md`, `skills/` up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index `$sche

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| OpenAgent skills.sh | discoverable layout (root `SKILL.md`, `skills/` up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index `$sche

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The skill instructs users to run npx skill-validator-omni without pinning a package version. Because npx resolves the latest published package by default, a compromised maintainer account, malicious new release, or dependency confusion event could cause users to execute unexpected code on their machines.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The 'When to Use' section lists generic terms like 'validate', 'audit', 'check', 'lint', and 'certify' as activation cues without narrowing context or providing exclusions. These words are common in ordinary conversation and could cause unintended invocation of the skill outside the intended skill/repo validation domain.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

The phrase npx skills add tells users to execute an unpinned npm package directly from the registry. This creates a supply-chain execution risk because the fetched code may change over time and can run arbitrary install/runtime logic on the user's system.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

This is another direct example of running npx skill-validator-omni without a version constraint. Repeatedly documenting unpinned remote package execution increases the chance that users will adopt an unsafe practice and execute a later malicious or breaking release.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

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.

Content

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

md
| Hermes in-repo | description <=60 + ends with `.`, version/author/license/platforms, metadata.hermes.{tags, related_skills}, required sections |
| OpenAgent skills.sh | discoverable layout (root `SKILL.md`, `skills/` up to 3 levels, agent dirs), every dir name == frontmatter name, well-known index `$schema` |
| Claude Code | `marketplace.json` (JSON + name + plugins), `plugin.json` + `<plugin>/skills/` per plugin, `.claude/skills/` project layout |
| OpenAI Codex | frontmatter limited to `name`/`description`/`license`/`allowed-tools`/`metadata` (mirrors `openai/skills` `quick_validate.py`), hyphen-case name == dir (<=64, no edge/consecutive hyphens), name/desc present, description no angle brackets <=1024 + trigger words (docs guidance), body < 500 lines, no ancillary docs (README/INSTALLATION_GUIDE/QUICK_REFERENCE/CHANGELOG), `agents/openai.yaml` keys (interface/policy/dependencies), repo `.agents/skills`/`.codex/skills`/plugin.json layout |

Every skill discovered in a repo (nested `skills/<category>/<skill>/`) gets the full suite — a broken skill can't hide inside a big repo.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

The installability guidance references npx skills add <owner/repo> without pinning the underlying package version. If users follow this documentation, they may execute modified code from npm at a later date, making the workflow vulnerable to supply-chain compromise.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

This line again promotes npx skills add as an execution path without version pinning. Although presented as normal tooling guidance, it still encourages a risky pattern in which arbitrary updated package code can be executed on demand.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The procedure step tells users to run npx skill-validator-omni <dir> directly, which is an executable supply-chain risk. In a security/audit skill especially, normalizing unpinned execution undercuts the trustworthiness of the workflow because validators are often run on developer systems and CI runners with broad filesystem and network access.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The CI gate example uses npx skill-validator-omni <dir> --json, again relying on whatever package version npm serves at execution time. In CI environments this can have broader blast radius, including secret exposure, artifact tampering, or false validation results if the fetched package is compromised.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

The publish verification step uses npx skills add <owner>/<repo> --list -y without any version pin. This creates the same remote-code execution and reproducibility risks, especially problematic in publication workflows where credentials or repository state may be accessible.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

This line references npx skills add as the distribution path for Codex installs, again without pinning. While the text is descriptive rather than imperative, it still documents a dangerous practice that could lead users to execute attacker-controlled package updates.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The verification section states that npx skill-validator-omni <dir> exits successfully on compliant input, but the command remains unpinned. Because this is presented as the authoritative verification method, users may repeatedly execute a mutable package in local and CI environments.

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.

Static analysis

No suspicious patterns detected.