Upbit Trading Skill
Analysis
This crypto trading bot is mostly aligned with its stated purpose, but it runs an unbundled shell helper and passes financial account/position data through high-risk paths that should be reviewed before use.
Findings (5)
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
`cd ${__dirname}/../zai && ./ask.sh "${prompt.replace(/"/g, '\\"')}" glm-4.7`The bot runs a shell command for GLM analysis. Only double quotes are escaped, while prompt content can include local position data, so shell metacharacters or command substitution could cause unintended local command execution.
./ask.sh "${prompt.replace(/"/g, '\\"')}" glm-4.7The runtime delegates GLM calls to a '../zai/ask.sh' helper that is not included in the provided file manifest or install specification, so a component executed during normal use is not reviewable from the supplied artifacts.
mainLoop(); ... setInterval(mainLoop, CONFIG.priceCheckInterval);
The bot starts immediately and continues running every 10 seconds until interrupted. This matches the disclosed real-time monitoring purpose, but it is still persistent activity while the process is alive.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
const ACCESS_KEY = process.env.UPBIT_ACCESS_KEY; const SECRET_KEY = process.env.UPBIT_SECRET_KEY; ... axios.get('https://api.upbit.com/v1/accounts'The skill reads Upbit API credentials from environment variables and uses them to query account balances. This is purpose-aligned for an Upbit tool, but the registry metadata declares no credentials or required environment variables.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
const prompt = `당신은 암호화폐 트레이딩 봇입니다.\n포지션: ${pos.market}\n진입가: ${entryPrice}원\n현재가: ${currentPrice}원\n손익: ${(pnlPercent * 100).toFixed(2)}%`; ... const response = askGLM(prompt);The bot packages local trading position, price, and PnL information into a prompt and sends it to the GLM helper during recurring analysis, but the artifacts do not define the provider identity, retention, or data boundary.
