plans-kanban
Warn
Audited by Gen Agent Trust Hub on Mar 29, 2026
Risk Level: MEDIUMEXTERNAL_DOWNLOADSDATA_EXFILTRATIONPROMPT_INJECTIONCOMMAND_EXECUTION
Full Analysis
- [EXTERNAL_DOWNLOADS]: The skill depends on the external npm package
gray-matter(version 4.0.3) for parsing frontmatter in plan files, as documented inpackage.jsonandSKILL.md. - [DATA_EXFILTRATION]: The HTTP server implementation in
scripts/lib/http-server.cjsexposes a/file/endpoint that serves local files. While theisPathSafefunction attempts to prevent path traversal, the server allows access to any file within the current working directory (cwd) and theplansDir. TheSKILL.mdinstructions explicitly suggest binding the server to0.0.0.0for remote access, which would make all files in the workspace accessible to any device on the local network. - [COMMAND_EXECUTION]: In
scripts/lib/http-server.cjs, the server attempts to dynamically load modules from a sibling directory (../../../markdown-novel-viewer) using computed paths inrequire()calls. This pattern is used to integrate with another skill but introduces a risk of loading and executing code from arbitrary locations if the directory structure is manipulated. - [PROMPT_INJECTION]: The skill is vulnerable to Indirect Prompt Injection via a Cross-Site Scripting (XSS) flaw in the dashboard. The
renderDashboardfunction inscripts/lib/dashboard-renderer.cjsinjects the plan data into a<script>tag usingJSON.stringifywithout escaping HTML script terminators like</script>. A maliciously craftedplan.mdfile with a title or description containing</script>could execute arbitrary JavaScript in the user's browser. - Ingestion points:
plan.mdfiles discovered and parsed byscripts/lib/plan-scanner.cjsandscripts/lib/plan-parser.cjs. - Boundary markers: Absent; untrusted data from files is directly interpolated into HTML templates and script blocks.
- Capability inventory: The skill possesses the capability to read any file in the workspace, serve files over HTTP, and render a dynamic web dashboard.
- Sanitization: While basic HTML escaping is used for some display elements, the JSON data injection into the client-side script is not properly sanitized for the script context.
Audit Metadata