Build real-time voting and polling systems with PubNub
95
65%
Does it follow best practices?
Impact
99%
1.35xAverage score across 15 eval scenarios
High
Do not use without reviewing
Security
1 high severity finding. You should review these findings carefully before considering using this skill.
The skill handles credentials insecurely by requiring the agent to include secret values verbatim in its generated output. This exposes credentials in the agent’s context and conversation history, creating a risk of data exfiltration.
Insecure credential handling detected (high risk: 1.00). The skill explicitly requires including PubNub publish/subscribe keys in SDK initialization and examples, which forces the agent to insert API key values (or request and echo them) verbatim in its output, creating an exfiltration risk.
[REDACTED]
secret · 19 sites
The plugin instructs the agent to "Include PubNub SDK initialization with publish and subscribe keys" (SKILL.md:130) and provides multiple code templates with placeholder publishKey values that the agent would substitute with real API keys, emitting them in output.
Low
Low-risk findings.
1 low severity finding. Worth noting, but not necessarily harmful.
The skill exposes the agent to untrusted, user-generated content from public third-party sources, creating a risk of indirect prompt injection. This includes browsing arbitrary URLs, reading social media posts or forum comments, and analyzing content from unknown websites.
Third-party content exposure detected (high risk: 0.90). The skill's required workflow and code explicitly subscribe to and act on PubNub channels (e.g., poll.<pollId>.votes, poll.<pollId>.results, poll.<pollId>.admin and the meta channel) which ingest untrusted, user-published messages that directly influence UI state, lifecycle transitions, and publishing behavior, enabling indirect instruction injection.
poll.<pollId>.votes channel messages
content-type · 4 sites
The votes channel subscription code is part of the plugin's subject matter (code-generation templates), not content the plugin itself fetches or reads at runtime.
references/voting-setup.md
197
`poll.${pollId}.votes`
references/voting-setup.md
204
else if (event.channel.endsWith('.votes')) logIncomingVote(event.message);
references/voting-setup.md
70
'poll.poll-2024-finale.votes'
references/voting-setup.md
76
pubnub.subscribe({ channelGroups: ['poll-2024-finale-group'] });
poll.<pollId>.results channel messages
content-type · 11 sites
The results channel subscription code is part of the plugin's subject matter (code-generation templates), not content the plugin itself fetches or reads at runtime.
poll.<pollId>.admin channel messages
content-type · 7 sites
The admin channel subscription code is part of the plugin's subject matter (code-generation templates), not content the plugin itself fetches or reads at runtime.