Back to skill

Security audit

daily-guide

Security checks for vulnerabilities and agentic risk

Overview

The skill is a local daily almanac and weather guide whose scripts match its stated purpose, but users should notice that it stores birth-profile data locally and calls external weather/almanac services.

Install only if you are comfortable entering birth date, time, and city for a local astrology-style profile and making weather/almanac network requests. Check ~/.daily-guide/bazi.json after setup, avoid pointing DAILY_GUIDE_BAZI at unrelated files, and remove that local profile file if you no longer want the skill to retain the data.

Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Lp3

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding
The skill documentation instructs use of shell commands and references environment-based configuration, but no permissions are declared. In a capability-gated agent environment, this creates an authorization gap: users and reviewers may not realize the skill needs command execution and environment access, increasing the chance of unintended execution or policy bypass.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The stated purpose is a simple guidance skill, but the documentation reveals materially broader behavior: collecting and persisting birth date/time/city, creating a personal profile, and contacting external services. This mismatch undermines informed consent and can expose sensitive personal data and network activity that a user would not reasonably expect from the description alone.

Intent-Code Divergence

Low
Confidence
78% confidence
Finding
The documentation says personal profile data is stored in `bazi.json` but later says it is in `memory/bazi.md`, which creates ambiguity about where sensitive birth information resides. Conflicting storage documentation weakens a user's ability to inspect, delete, protect, or audit their personal data and can lead to accidental over-retention.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The script reads a user-specific profile from the user's home directory via an environment-controlled path, which expands data access beyond the skill's own directory and creates access to sensitive personal data. Although this is aligned with the feature's personalization goal, it still introduces privacy risk because the skill can consume local files outside its published asset tree and the environment variable can redirect reads to arbitrary files.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
The legacy fallback reads a file from a relative path outside the skill tree (`.../memory/bazi.md`), giving the skill access to broader agent memory that may contain unrelated sensitive content. Even if gated by an environment variable, this is dangerous because it breaks isolation boundaries and can unintentionally ingest or expose personal data not necessary for the stated function.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"license": "ISC",
  "type": "commonjs",
  "dependencies": {
    "lunar-javascript": "^1.7.7"
  }
}
Confidence
88% confidence
Finding
The dependency is specified with a caret range (^1.7.7), which allows installation of newer compatible versions rather than a single fixed version. This can introduce supply-chain risk because future published releases could change behavior or include a compromised package without any code change in this skill.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
assets/daily-guide.js:106