Back to skill

Security audit

长篇小说写作工作流

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed local novel-writing skill, but it automatically checks and applies remote self-updates at startup, so users should review it before installing.

Install only if you are comfortable with a writing skill that can contact `api.skillhub.cn` and update its own installed files automatically. Consider disabling `_meta.json` update settings (`auto_check: false` or `enabled: false`) and using manual, reviewed updates instead. The book-writing and dashboard workflows otherwise appear locally scoped, but the default updater materially expands trust in the remote package source.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (22)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill advertises a writing workflow but implicitly requires file read/write, network access, and shell execution, including startup command execution and self-update behavior. Undeclared high-risk capabilities reduce transparency and can enable unexpected code execution or modification of the local skill installation.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented behavior exceeds the declared purpose by performing remote version checks, downloading and applying updates, and invoking external tooling unrelated to ordinary novel writing. This mismatch is dangerous because users may trust the skill for content creation while it silently performs code-management operations with broader security consequences.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The README documents an automatic self-update path that contacts a remote service, compares versions, and may download and replace local skill contents. For a fiction-writing skill, this is outside the core purpose and expands the trust boundary to a remote endpoint, creating supply-chain risk and unexpected code/content mutation during normal use.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The skill metadata describes local writing-state workflows, but the README adds remote check/download/update logic that materially changes the skill's behavior and threat model. This mismatch can mislead users and hosting agents into granting broader trust than intended, enabling covert retrieval and replacement of local assets.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The skill instructs startup-time remote self-update by querying an external service and applying downloaded code to itself. Any compromise of the update source, transport, or update logic could turn ordinary use of the writing skill into arbitrary unreviewed code deployment.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
Automatic network-based self-modification is not justified by the skill's stated purpose and significantly expands the attack surface. Because the feature runs at startup and silently skips errors, it normalizes hidden network activity and code changes that a user may never notice.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The skill directs the agent to execute a Python script during startup, introducing command execution unrelated to core writing tasks. Even if the script is local, this behavior increases risk because it can trigger arbitrary code paths before the user receives writing assistance.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The file implements a self-updater that downloads a ZIP and overwrites the skill's installation directory, which is outside the declared novel-writing function and materially expands the trust boundary. Because the update path lacks any signature or digest verification, a compromised update service, malicious package, or network-level interception at the source could lead to arbitrary code or content replacement in the skill.

Context-Inappropriate Capability

High
Confidence
91% confidence
Finding
Executing external CLI tools such as skillhub to upgrade or reinstall the skill allows the script to trigger code and file changes beyond its stated writing purpose. In context, these commands are part of an automated updater, so they increase the chance of unreviewed code execution or environment modification if the external tool or package source is compromised.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The script performs network calls to fetch remote version information and uses that data to drive update behavior, despite the skill being described as a fiction-writing tool rather than a networked package client. This enlarges the attack surface and creates a dependency on remote infrastructure that can influence local behavior, especially when paired with the later download-and-overwrite logic.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill describes automatic remote update and self-modification without a strong just-in-time warning or consent gate at the moment of use. This is dangerous because users may unknowingly allow network access and local code replacement simply by invoking a writing workflow.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The rewrite workflow instructs the skill to write candidate drafts into the filesystem before explicit user confirmation, but the contract does not require a clear user-facing disclosure or consent step before that write occurs. In a multi-file authoring skill with persistent state, silent or unexpected writes can surprise users, create unintended data retention, and blur the boundary between preview and committed changes.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The workflow explicitly instructs the agent to create and overwrite multiple local project files as part of a transactional persistence process, but it does not require an explicit user confirmation or any user-facing warning before modifying data. In an agent setting, this creates a real risk of unintended or overly broad filesystem changes, especially because the workflow includes validation, snapshot creation, and synchronized updates across several files, which amplifies the blast radius of a mistaken invocation.

Vague Triggers

Medium
Confidence
82% confidence
Finding
The trigger conditions are broad enough that ordinary requests such as 'read chapters', 'view relationships', or 'open dashboard' could activate this workflow without strong confirmation of user intent. In an agent setting, this can cause unintended file operations such as locating books and copying a template into a project folder, expanding the skill's action scope beyond what the user explicitly asked for.

Vague Triggers

Medium
Confidence
85% confidence
Finding
The 'when to invoke' guidance is permissive and encourages activation 'on demand' for several loosely defined requests, plus automatic use during new/import flows. Because it also authorizes injecting the dashboard template when missing, an agent may perform unintended write actions during unrelated workflows, increasing the risk of surprise side effects and overbroad tool use.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The trigger condition is broad enough that ordinary user statements like an idea, title, genre, or a casual request to write a novel could activate this workflow without strong confirmation. In a skill that performs persistent filesystem-like project creation and state initialization, accidental invocation can create unwanted directories, overwrite user intent, or start long-lived stateful operations from ambiguous input.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger phrases are broad, conversational expressions such as '换个方向' and '下一章要写……', which can overlap with ordinary discussion rather than an explicit request to invoke this workflow. In a stateful writing skill, accidental activation can cause unintended updates to focus, chapter intent, or canon-management steps, creating integrity issues in long-running project state.

External Transmission

Medium
Category
Data Exfiltration
Content
版本控制逻辑:
- 本地版本存储在 `_meta.json` 的 `version` 字段
- 远程版本从 `https://api.skillhub.cn/api/v1/search?q=d-writer` 获取(slug=`d-writer`)
- 语义化版本对比(`x.y.z`):本地 < 远程时执行更新
- 更新方式:优先 `skillhub` CLI,回退到直接下载 zip(官方端点 `https://api.skillhub.cn/api/v1/download?slug={slug}`)
- 任何错误均跳过,不中断 skill 运行
Confidence
91% confidence
Finding
The documented update process transmits information to an external domain and depends on remote version metadata to decide whether to fetch updates. Even if only version queries are sent, this introduces external communication and a supply-chain dependency that could be abused if the endpoint, transport, or returned artifacts are compromised.

External Transmission

Medium
Category
Data Exfiltration
Content
- 本地版本存储在 `_meta.json` 的 `version` 字段
- 远程版本从 `https://api.skillhub.cn/api/v1/search?q=d-writer` 获取(slug=`d-writer`)
- 语义化版本对比(`x.y.z`):本地 < 远程时执行更新
- 更新方式:优先 `skillhub` CLI,回退到直接下载 zip(官方端点 `https://api.skillhub.cn/api/v1/download?slug={slug}`)
- 任何错误均跳过,不中断 skill 运行
- **git 工作树保护**:安装目录是 git 工作树且有未提交改动时跳过覆盖(防抹掉源码工作),可用 `--force` 覆盖
Confidence
92% confidence
Finding
The README explicitly describes downloading a ZIP from a remote endpoint as a fallback update mechanism. Remote artifact download tied to installation or startup can lead to arbitrary content replacement if the source or delivery path is tampered with, especially when errors are suppressed and operation is framed as automatic.

External Transmission

Medium
Category
Data Exfiltration
Content
- 无新版本 / 已是最新时静默通过。
- 任何网络错误、API 不可达、下载失败均**自动跳过**(`skip_on_error=true`),不中断 skill 运行。

版本号规则:语义化版本 `x.y.z`(如 `3.2.0`)。本地版本 < 远程版本才执行更新;本地无 `_meta.json` 或无 `version` 字段视为需要更新。远程版本来源:`https://api.skillhub.cn/api/v1/search?q=d-writer`(slug=`d-writer`)。

> **关闭启动期自动检查**:编辑 `_meta.json` → `update.auto_check: false`。**完全禁用更新**:`update.enabled: false`。
Confidence
91% confidence
Finding
The skill performs outbound communication to an external API as part of its update workflow, which is unnecessary for a local writing-assistance skill. External connectivity introduces supply-chain and privacy risk, especially when paired with automatic download and application of updates.

External Transmission

Medium
Category
Data Exfiltration
Content
"homepage": "https://api.skillhub.cn/user_59dee265/d-writer",
  "update": {
    "enabled": true,
    "check_url": "https://api.skillhub.cn/api/v1/search?q=d-writer",
    "install_dir": ".",
    "auto_check": true,
    "skip_on_error": true
Confidence
95% confidence
Finding
The update configuration enables automatic remote checks to an external endpoint and installs into the current directory, creating a supply-chain and privacy risk. Even though this file does not show code execution directly, auto-checking a remote service can leak environment usage metadata and may facilitate malicious updates or unsafe overwrite behavior if the update mechanism is weak.

External Transmission

Medium
Category
Data Exfiltration
Content
# 直接下载地址模板:skillhub 官方下载端点(匿名可访问,返回含全部技能文件的 zip)。
# 注意:不是旧版硬编码的 COS 桶地址(已 404)。
DIRECT_DOWNLOAD_URL_TEMPLATE = "https://api.skillhub.cn/api/v1/download?slug={slug}"


def load_meta() -> Dict[str, Any]:
Confidence
78% confidence
Finding
The hardcoded external endpoint enables transmission to a remote service and, in this file, it is used to download update packages that can replace local files. External communication is not inherently unsafe, but in this context it supports a self-update mechanism without visible integrity verification, making the transmission path security-relevant.

Static analysis

No suspicious patterns detected.