Back to skill

Security audit

元呈 yotta-present

Security checks for vulnerabilities and agentic risk

Overview

This is a local output-formatting skill with broad presentation defaults and optional persistent setup, but the sensitive behavior is disclosed and gated on user consent.

Install only if you want a broad default formatter for AI responses. Review before allowing it to write MCP configuration or permanent memory, and use a scoped install target instead of global mode unless you want it available across many agents. For stricter supply-chain control, pin or review the npm package version before using npx.

Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (40)

Vague Triggers

High
Confidence
98% confidence
Finding
The README states that "by default, any final result delivered to the user goes through yotta-present," which is an extremely broad activation condition that overlaps with normal agent behavior rather than a narrowly scoped invocation. Although a few exceptions are listed, the trigger boundary remains ambiguous because it does not clearly define when presentation should not be applied beyond those examples.

Vague Triggers

High
Confidence
97% confidence
Finding
README 将触发条件描述为“凡交付给用户的 AI 输出都先经元呈”,这是一个非常宽的激活范围,接近日常通用输出路径而非明确、可判定的触发短语或边界。虽然列出了一些白名单例外,但整体仍缺少足够具体的调用约束与负例,容易造成技能被过度触发。

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The declared description focuses on runtime behavior for formatting and rendering AI responses. The supplied code chunk does not implement classification, rendering, Markdown generation, platform adaptation, channel selection, templates, or MCP integration. Instead, it is an installation utility that writes files into agent skill directories and lists supported install targets. While an installer may be related to the package operationally, this code chunk’s primary purpose is materially different from the declared skill purpose, so this is a clear description-behavior mismatch.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The declared description focuses on runtime behavior: formatting and rendering AI outputs through yotta_present CLI or an MCP interface. However, the supplied code chunk does not implement rendering, content classification, template selection, Markdown/plain-text conversion, channel adaptation, or any presentation logic. Instead, it is purely an installer that creates directories, copies files, removes .git metadata, and targets many agent-specific skill locations. While an install script can be a supporting component of a skill package, this code chunk's actual behavior is materially different from the declared purpose and introduces undeclared filesystem installation capabilities. Therefore, for this chunk, the description does not accurately represent what the code actually does.

Vague Triggers

High
Confidence
97% confidence
Finding
The description says the skill triggers whenever any AI output is delivered to the user, which overlaps with ordinary, broad assistant behavior rather than a narrow invocation context. Although exceptions are mentioned elsewhere, the top-level trigger remains extremely expansive and could cause unintended or near-universal invocation.

Vague Triggers

High
Confidence
96% confidence
Finding
The '何时使用' section defines the default behavior as routing any final user-facing result through the skill. This is an ambiguous activation boundary for a non-always-loaded skill because it lacks a precise trigger list and makes ordinary assistant responses eligible by default.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
install_to() {
  mkdir -p "$1/$SKILL_NAME"
  cp -r "$SOURCE_DIR/." "$1/$SKILL_NAME/"
  rm -rf "$1/$SKILL_NAME/.git"
  echo "installed -> $1/$SKILL_NAME"
}
Confidence
95% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Natural-Language Policy Violations

Medium
Confidence
79% confidence
Finding
This markdown file contains natural-language product descriptions in Chinese, including a line advertising a Chinese-language presentation upgrade, without indicating that language choice is optional. Under the policy, forcing a specific language or locale without user opt-in is a reportable issue unless the constraint is documented and justified.

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.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The file consistently presents the skill identity and operating instructions in Chinese and brands itself as the default presentation layer, but does not offer a user language choice or state that it is intended only for Chinese-language environments. A default locale constraint without opt-in can violate language/locale policy expectations.

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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
const AGENT_DIRS = {
  claude:    { label: 'Claude Code',      dirs: ['.claude/skills'] },
  cursor:    { label: 'Cursor',           dirs: ['.cursor/skills', '.agents/skills'] },
  codex:     { label: 'Codex',            dirs: ['.codex/skills'] }, // 特判:$CODEX_HOME/skills
  gemini:    { label: 'Gemini CLI',       dirs: ['.gemini/skills', '.agents/skills'] },
  goose:     { label: 'Goose',            dirs: ['.config/goose/skills', '.agents/skills'] },
  amp:       { label: 'Amp',              dirs: ['.config/agents/skills', '.agents/skills'] },
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.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The manifest describes a presentation-layer skill that renders output, but this code performs filesystem installation by creating directories and copying the package into agent skill paths. Modifying local agent configuration/skill directories is a separate capability from rendering output and is not clearly justified by the manifest's stated purpose.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The manifest states that first-time MCP integration, including writing MCP configuration and persistent memory guardrails, requires explicit user consent. This installer automates placement into user/project/global agent skill directories based only on CLI flags and directory detection, with no built-in consent or confirmation mechanism reflecting that documented onboarding boundary.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The --global path installs the skill into all known user-level agent directories, which is a broad file-writing operation. Although the script prints a status message, it does not ask for confirmation before modifying many locations, and the helper also removes any copied .git directory as part of installation.

Skill Enumeration

Medium
Category
Agent Snooping
Content
echo "完成。"; return
  fi
  local installed=0 d
  for d in .claude/skills .cursor/skills .codex/skills .config/goose/skills .config/agents/skills .opencode/skills .codeium/windsurf/skills .workbuddy/skills .kiro/skills .traecli/skills .gemini/skills .trae-cn/skills .qwen/skills .comate/skills .codebuddy/skills .kimi/skills .agents/skills; do
    if [ -d "$d" ]; then install_to "$d"; installed=1; fi
  done
  if [ "$installed" = "0" ]; then
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.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This markdown file contains user-facing natural-language instructions only in Chinese, and there is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The file title and the entire schema documentation are presented only in Chinese, with no indication that users may choose another language or that the skill is intentionally limited to a Chinese-language audience. Under the policy, a skill that forces a specific language without opt-in is a natural-language policy violation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The documentation instructs users or agents to run an unpinned package via `npx -y @yottameta/yotta-present`, which always resolves the latest published version. This creates a supply-chain risk: a compromised maintainer account, malicious update, or breaking release could be pulled and executed automatically without review, especially dangerous because the skill description says first use may auto-connect MCP tooling.

Static analysis

No suspicious patterns detected.