Back to skill
Skillv1.0.0

ClawScan security

Data Compare Engine · ClawHub's context-aware review of the artifact, metadata, and declared behavior.

Scanner verdict

SuspiciousApr 28, 2026, 5:27 AM
Verdict
suspicious
Confidence
medium
Model
gpt-5-mini
Summary
The skill's code and SKILL.md match its stated purpose (AI-assisted CSV/Excel diff + per-use billing), but registry metadata omits required env vars and there are undocumented environment uses and small implementation inconsistencies that you should review before installing.
Guidance
What to check before installing: - Metadata mismatch: The registry claims no required env vars, but SKILL.md and the code require OPENAI_API_KEY (or other AI API keys) and SKILLPAY_API_KEY. Confirm the registry entry and SKILL.md are accurate. - Data sent externally: Column names are sent to external AI endpoints (api.openai.com, api.anthropic.com, open.bigmodel.cn) for matching. The skill does not send full file contents, but column names can reveal sensitive schema or identifiers — do not run this on files with sensitive or regulated data unless you accept that exposure. - Billing calls: The skill posts billing requests to https://skillpay.me/api/v1/billing/*. It sends use_id, user_id (from SKILLPAY_USER_ID env or 'anonymous'), amount, and description. If you will use the billing feature, ensure you trust that endpoint and understand SKILLPAY_API_KEY usage. Note DEV_MODE when SKILLPAY_API_KEY is not set makes billing succeed locally (useful for testing but different from production behavior). - Undocumented env var: SKILLPAY_USER_ID is read by billing.py but not documented in SKILL.md — if you set this it will be transmitted to the billing endpoint; if you don't, 'anonymous' is used. - Run in a sandbox first: Execute locally in an isolated environment, monitor network traffic (to AI providers and skillpay.me), and inspect the outputs under /tmp/data-compare-engine. If possible, use test/demo API keys or least-privilege keys to limit blast radius. - Review code for provider compatibility: Some provider call implementations look brittle (error handling and response parsing), so be cautious about malformed responses or unexpected behavior. If you need stronger guarantees, consider modifying the code to log requests/responses locally (without sending them externally) or to run against a self-hosted/enterprise LLM. If you want, I can: (1) list all network endpoints the code calls, (2) highlight exact lines that reference undocumented env vars, or (3) produce a minimal checklist for a secure test run.

Review Dimensions

Purpose & Capability
noteThe code implements AI-powered column matching and CSV/Excel comparison, and uses an external billing service — this aligns with the skill description. However, the registry metadata claims 'Required env vars: none' while both SKILL.md and the code expect OPENAI_API_KEY (or other provider keys) and SKILLPAY_API_KEY; that mismatch is an inconsistency you should question.
Instruction Scope
noteSKILL.md and the code keep runtime actions within the advertised purpose: parsing local files, sending only column names to AI providers for matching, performing comparisons, generating reports, and calling a billing API. Items to note: (1) the code posts column lists to AI endpoints (OpenAI, Anthropic, BigModel) — it does not send full file contents, but column names may be sensitive; (2) billing uses an environment variable SKILLPAY_USER_ID (used as user_id) which is not documented in SKILL.md; (3) the skill reads files you supply and writes temp/output files under /tmp/data-compare-engine.
Install Mechanism
okThere is no external download/install spec (the package is provided as source files and requirements.txt). Dependencies (pandas, openpyxl, chardet, requests) are proportional to the task. This reduces supply-chain risk compared to remote installers, but installing third‑party Python packages still carries the usual dependency risk.
Credentials
concernThe skill requires API keys that are appropriate for its functionality (AI provider key for column matching and SkillPay key for billing). Concerns: (1) registry metadata did not declare these env vars — mismatch between declared requirements and actual. (2) SKILLPAY_USER_ID is used to identify the user in billing requests but is undocumented in SKILL.md. (3) When SKILLPAY_API_KEY is absent the code enters DEV_MODE (treating requests as free/pro), which may be surprising behavior if you expect billing enforcement. Requesting OPENAI/Claude/GLM keys and a billing key is proportionate to purpose, but the metadata/documentation inconsistencies and an undocumented env var are red flags to confirm before use.
Persistence & Privilege
okThe skill does not request elevated or permanent platform privileges (always:false). It writes temporary output to /tmp/data-compare-engine and exports CSV reports — expected for this functionality. It does not attempt to modify other skills or system-wide agent settings.