Dangerous exec
- Finding
- Shell command execution detected (child_process).
Security checks across static analysis, malware telemetry, and agentic risk
The skill mostly matches its reminder-report purpose, but the bundled script contains live-looking Google/Discord defaults and credential use that could send employee data to the wrong place if not reconfigured.
Install only if you control the Google Sheet, Google auth account, Discord bot, and destination channel. Before any send or scheduler mode, explicitly set PLAN_A_SHEET_ID, GOG_ACCOUNT, DISCORD_CHANNEL_ID, and DISCORD_BOT_TOKEN, run preview/json first, and remove or override the packaged defaults.
VirusTotal findings are pending for this skill version.
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
A user or agent could run the workflow with embedded defaults and read or post using unintended Plan A resources.
The package documents concrete operational defaults for a real-looking sheet, channel, and account, while SKILL.md says these should be deployment config kept outside the skill package.
## Mặc định hiện tại - Sheet ID: `17JU1m6rBOhlD7vqSTrMOSPcEQehO04HnYg7oMeDXnn8` - Discord channel: `1483444824895000697` - Gog account: `vinhtamforwork@gmail.com`
Remove hardcoded operational IDs from the package, require explicit local configuration, and make the setup docs match the actual runtime behavior.
The workflow can act with the privileges of the local Google account and Discord bot, including reading staff sheets and posting messages to a channel.
The script uses a Google account selected through local gog authentication and a Discord bot token to access and post data, but registry metadata declares no primary credential or required env vars.
gogAccount: process.env.GOG_ACCOUNT || 'vinhtamforwork@gmail.com', ... const fullArgs = ['--account', CONFIG.gogAccount, ...args]; ... Authorization: `Bot ${CONFIG.discordBotToken}`Declare required credentials and env vars in metadata, require the user to set the Google account and Discord destination explicitly, and document the minimum needed Google/Discord permissions.
Employee birthday and event information could be posted to an unintended Discord channel if configuration is not carefully overridden.
The report includes employee names/departments and is sent to Discord; this is purpose-aligned, but the destination has a hardcoded default and the data boundary is not declared in metadata.
for (const item of data.birthdaysToday) lines.push(`- 🎂 Sinh nhật: ${item.name} (${item.dept || 'Chưa rõ bộ phận'})`); ... fetch(`https://discord.com/api/v10/channels/${CONFIG.discordChannelId}/messages`, ... body: JSON.stringify({ content }))Require explicit confirmation of the destination channel before live sends, use a test channel for validation, and avoid defaulting to real channel IDs.
Running the script will use the local gog installation and whatever Google auth profile is available for the configured account.
The skill invokes the external gog CLI to read Google Sheets. This fits the stated purpose and uses execFileSync without a shell, but it relies on local CLI behavior and authentication.
const out = execFileSync('gog', fullArgs, { encoding: 'utf8' });Install gog only from a trusted source, verify the selected account, and run preview/json modes before enabling any send mode.
A user may install the skill without realizing additional local tooling and auth setup are needed.
The docs require Node.js and gog, but registry requirements list no required binaries. This is an under-declared setup dependency rather than evidence of hidden installation.
## Runtime requirements - Node.js - gog CLI + Google auth
Add Node.js/gog requirements and credential expectations to the registry metadata and keep dependency provenance documented.
If scheduled, the workflow can keep posting daily reports until the scheduler or script is disabled.
The wrapper is designed to run the production send flow using local environment configuration, consistent with the documented scheduled daily report workflow.
source ./.env.plan-a /usr/bin/env node plan-a-demo.js prod-send
Do not enable the scheduler until preview output, sheet ID, account, Discord channel, and duplicate-send state behavior have all been verified.