Back to skill

Security audit

novel-weaver

Security checks across malware telemetry and agentic risk

Overview

This is mostly a local novel-writing workflow, but it needs review because it under-discloses optional package/model downloads that can execute third-party model code.

Review before installing. Use it only if you want a local, stateful novel-project manager, and avoid the optional model installation commands unless you accept third-party package and model downloads, including remote model code execution via trust_remote_code=True. Check where its project data and caches will be stored, and be aware that generic writing prompts may trigger the workflow.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • 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 (9)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill documentation instructs the agent to run shell commands, read project state, and write chapter/state files, yet the metadata does not declare corresponding permissions. This creates a capability-transparency gap: a user or platform may treat the skill as lower risk than it actually is, while it can still drive filesystem and shell operations over persistent project data.

Intent-Code Divergence

Medium
Confidence
96% confidence
Finding
The module claims atomic writing, but it writes the target file in two separate steps: first overwriting content, then reopening to append the marker. If the process crashes, is interrupted, or another process reads the file between those operations, consumers can observe a partially written or internally inconsistent file, which can bypass pipeline assumptions and corrupt workflow state.

Intent-Code Divergence

High
Confidence
98% confidence
Finding
The code under `if __name__ == "__main__":` calls `load_context(...)` and then continues to execute additional logic that references variables such as `data`, `chapter`, `sub_key`, and `subs` that are local to `load_context` and not defined in module scope. This creates a deterministic crash path in the main entrypoint, turning the tool into a denial-of-service condition for normal use and making its documented behavior inconsistent with actual execution.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
The skill is presented as a local novel-writing assistant, but the file includes instructions and supporting code for fetching a large external model from Hugging Face mirrors with `trust_remote_code=True`. That creates an undeclared supply-chain and privacy boundary expansion: users may unexpectedly contact third-party endpoints and execute model repository code when trying to enable this feature.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
This code enables outbound access to Hugging Face mirror and primary endpoints for repository enumeration and file download, extending a writing-assistant skill into network-capable software supply-chain behavior. Combined with later use of `trust_remote_code=True`, a compromised or spoofed model repository could lead to execution of untrusted code or loading of malicious artifacts, and outbound requests may also leak environment metadata or usage patterns.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The trigger phrases are broad enough to match many generic writing requests, which can cause unintended activation of a high-capability workflow that performs shell and file operations. In this skill, accidental invocation is more dangerous because activation leads directly into project discovery, persistent state handling, and enforced command-based workflow steps.

Vague Triggers

Medium
Confidence
84% confidence
Finding
The documented activation examples are ambiguous and overlap with normal writing assistance, making it easy for the skill to engage outside its intended narrow use case. Because the skill couples activation with local state inspection, chapter file writes, and optional package/model installation commands, ambiguous scope increases the chance of unnecessary sensitive operations.

Vague Triggers

Medium
Confidence
97% confidence
Finding
The trigger list includes broad natural-language phrases such as '写文章' and '我想写个故事' that are common in ordinary user conversations, making accidental or unintended activation likely. In a skill framework, overbroad activation can route unrelated prompts into this skill, causing prompt hijacking of normal workflows, user confusion, and unexpected processing under the skill's strong behavioral constraints.

Session Persistence

Medium
Category
Rogue Agent
Content
- **[强制] 核心规划字段保护 + 串行阻断** — `novel_state_manager.py` 对核心字段做 MD5 指纹校验,LLM 不可更新。context_loader 检测上一子结构是否为 completed,否则 HOOK-BLOCK 阻断。串行写入,一次只改一个子结构
- **[强制] 串行阻断** — context_loader 加载子结构上下文时检测上一子结构 state 是否为 completed。若为 pending 则输出 HOOK-BLOCK 并给出 write-sub 修复命令,强制走管道完成标记后才能继续。子结构写作必须串行
- **[必须] 先确认+规划再写作** — 场景配置和大纲必须经用户确认,每章先 `plan-chapter`(含必填 writing_prompt + 情绪 tone + 可选 emotions)→ 因果链验证 → 通过串行阻断检查,才可开始写作
- **[必须] 写作规范** — 每段 ≤200行(自然段落结束),atomic write 逐行 fsync,正文禁止 `L##S##` 标记行(会被阻断)
- **[强制] 写作中登记** — 新角色出场时 `novel_state_manager.py add-char`。**plan-chapter 已加硬阻断**:sub_structures 中出现未登记角色名时 HOOK-BLOCK,必须先 add-char 才能写入。
- **[强制] 每章六检 + 自动完结** — 写完所有子结构后 **write-sub 自动触发 finalize-chapter**(不再需手动执行):章内连通性 → 跨章承诺链 → 风格校验 → 逻辑检查 → **语义检查** → **推理审核** → 聚合硬性问题并阻断。通过后自动推进 phase。
- **[必须] 全文三检** — 全文完成后必须:`novel_fidelity.py`(大纲忠实度)+ `verify-ending`(结尾收束验证)+ `set-phase stage3_ready`
Confidence
80% confidence
Finding
The skill is designed around persistent per-project state, chapter files, reports, and cached path metadata, which creates session persistence across interactions. While persistence is functionally intended, it still carries security and privacy risk because story content, character data, and workflow state may be retained and reused without clear retention limits or consent boundaries.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.