Trust Assessment
notion-md-converter received a trust score of 60/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 5 findings: 0 critical, 1 high, 4 medium, and 0 low severity. Key findings include Unsafe deserialization / dynamic eval, Missing required field: name, Unpinned npm dependency version.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings5
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | Arbitrary File Read and Exfiltration via CLI The `tools/md2notion.js` CLI tool accepts a `--file` argument which is directly used in `fs.readFileSync`. This allows an attacker to specify any file path on the local filesystem that the process has read access to. The content of this arbitrary file is then read and sent to the Notion API as the markdown content for a new page, leading to data exfiltration. Avoid directly using user-provided file paths for `fs.readFileSync` without strict validation or sandboxing. If file input is necessary, restrict paths to a designated, non-sensitive directory. Alternatively, consider having the LLM provide the file content directly rather than a path, or use a secure file picker mechanism. | LLM | tools/md2notion.js:40 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/charpup/notion-md-converter/tests/converter.test.js:108 | |
| MEDIUM | Missing required field: name The 'name' field is required for claude_code skills but is missing from frontmatter. Add a 'name' field to the SKILL.md frontmatter. | Static | skills/charpup/notion-md-converter/SKILL.md:1 | |
| MEDIUM | Unpinned npm dependency version Dependency '@notionhq/client' is not pinned to an exact version ('^5.9.0'). Pin dependencies to exact versions to reduce drift and supply-chain risk. | Dependencies | skills/charpup/notion-md-converter/package.json | |
| MEDIUM | Custom NPM Registry Mirror in Supply Chain The `package-lock.json` file indicates that dependencies are resolved from `http://mirrors.tencentyun.com/npm/` instead of the default `registry.npmjs.org`. While a mirror can improve performance, it introduces an additional trust dependency in the supply chain. If this custom mirror were compromised, it could serve malicious versions of packages, leading to a supply chain attack. Configure npm to use the default `registry.npmjs.org` or a demonstrably secure and officially sanctioned private registry. Ensure that the integrity hashes in `package-lock.json` are regularly verified against trusted sources. | LLM | package-lock.json:19 |
Scan History
Embed Code
[](https://skillshield.io/report/51e205ab85bcbd5b)
Powered by SkillShield