brainstorming
“You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.”
scripts
aipkg.jsonLICENSE.txtREADME.mdscripts/frame-template.htmlscripts/helper.jsscripts/server.cjsscripts/start-server.shscripts/stop-server.shSKILL.mdspec-document-reviewer-prompt.mdvisual-companion.md- 01SDI-185%MEDIUM
scripts/helper.js:2
detailhide
The skill establishes a WebSocket connection to an arbitrary server without disclosure or user consent. This enables real-time exfiltration of user interactions (clicks, choices) and allows remote code injection via the 'reload' handler. The brainstorming skill description does not justify this capability, making it a significant privilege escalation.
1(function() {2 const WS_URL = 'ws://' + window.location.host;3 let ws = null;4 let eventQueue = [];fix Remove all WebSocket communication code. If backend communication is genuinely required, add explicit manifest declarations, require user consent, use HTTPS/WSS only, implement certificate pinning, and validate all server responses. Document the feature transparently to users.
- 02SDI-190%MEDIUM
scripts/helper.js:16
detailhide
The ability to reload the page via remote command is a critical vulnerability. An attacker controlling the WebSocket server can inject arbitrary code or redirect the user at any time. This is particularly dangerous because it executes without user interaction and violates the skill's stated purpose of brainstorming.
14 ws.onmessage = (msg) => {15 const data = JSON.parse(msg.data);16 if (data.type === 'reload') {17 window.location.reload();18 }fix Remove the reload message handler entirely. If page synchronization is needed, use explicit user actions or implement a safer confirmation mechanism that requires active user consent before any page modifications.
- 03SQP-290%MEDIUM
scripts/helper.js:2
detailhide
User interaction data (clicks, selected choices, timestamps, element IDs) is transmitted via WebSocket to an unauthenticated server without explicit user disclosure or consent. This creates a surveillance vector and enables behavior tracking. The skill's manifest and description make no mention of data transmission, violating user trust.
1(function() {2 const WS_URL = 'ws://' + window.location.host;3 let ws = null;4 let eventQueue = [];fix Add explicit, prominent disclosure in the skill documentation about what data is collected and transmitted. Implement user opt-in/opt-out controls. Use encrypted channels (WSS). Validate server identity. Implement data minimization—only transmit absolutely necessary information. Consider whether data transmission is required at all for a brainstorming skill.
- 04SQP-275%MEDIUM
scripts/stop-server.sh:46
detailhide
The script silently deletes session directories in /tmp without any user confirmation, warning, or logging of what will be deleted. While the directory restriction mitigates risk, accidental deletion of user data is possible if the script is invoked incorrectly. The lack of confirmation for destructive operations is a safety concern.
44 fi4546 rm -f "$PID_FILE" "${STATE_DIR}/server.log"4748 # Only delete ephemeral /tmp directoriesfix Add user confirmation prompt before deletion: require explicit acknowledgment or add a --force flag for destructive operations. Add verbose logging showing what will be deleted before proceeding. Consider implementing a dry-run mode with --dry-run flag.