Back to skill
Skillv1.3.0
ClawScan security
Crypto Market Analyzer · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
ReviewMar 6, 2026, 2:42 AM
- Verdict
- Review
- Confidence
- medium
- Model
- gpt-5-mini
- Summary
- The skill mostly matches its stated purpose (fetch prices + indicators) but contains inconsistencies around billing (a hard-coded API key/default SKILL_ID and a zero charge amount) that are unexplained and warrant caution.
- Guidance
- This skill appears to implement the advertised crypto data and indicator functions, but exercise caution before installing or wiring real billing keys. Key points to consider: - Hard-coded credential: billing.py includes a default API key and SKILL_ID in source. Treat this as a potential secret leak or placeholder; do not assume it is safe to use. Prefer providing your own SKILL_BILLING_API_KEY and rotate any exposed keys. - Billing inconsistency: the documentation claims 0.001 USDT per call, but the charge function sends amount: 0. Ask the publisher which behavior is intended — you should not rely on embedded defaults for real billing. - Test-mode: use the provided --test-mode flag to exercise the scripts before adding real billing credentials or enabling the skill for real users. - Network access: the scripts make outbound requests to several public crypto APIs (Binance, CoinGecko, CoinCap, CryptoCompare) and to https://skillpay.me for billing. If you require strict network policies, review these endpoints. - Verification: because the source owner is 'unknown' and the package includes a hard-coded key, prefer installing only after verifying the publisher (homepage, repo, signatures) or reviewing the code locally and removing any embedded secrets. If you want, I can: (1) flag the exact lines with the hard-coded key and SKILL_ID for removal; (2) produce a suggested patch to remove defaults and make billing explicit; or (3) run a deeper code-consistency checklist to identify other subtle mismatches.
- Findings
[hardcoded-api-key] unexpected: scripts/billing.py contains a hard-coded API key-like string (SKILL_BILLING_API_KEY default) and a default SKILL_ID. A billing SDK typically should not embed live keys in source. This is unexpected and could indicate leaked credentials or sloppy packaging. [billing-amount-mismatch] unexpected: SKILL.md and README state a cost per invocation (0.001 USDT / 1 token), but charge_user in scripts/billing.py posts amount: 0 when charging. This inconsistency may be a bug or intentional (no charge), and should be clarified before trusting production billing behavior.
Review Dimensions
- Purpose & Capability
- noteName/description (market data + indicators) align with the included scripts: fetch_market.py and calc_indicators.py implement the advertised features. The requirement for billing-related env vars (SKILL_BILLING_API_KEY, SKILL_ID) is consistent with the SKILL.md's pay-per-use claim.
- Instruction Scope
- concernSKILL.md and the scripts instruct running the Python scripts and passing --user for billing. However, the billing behavior in the code contradicts the docs (see billing amount), and billing.py contains an embedded default API key and default SKILL_ID. Instructions ask to pass user IDs and may surface payment_url links — otherwise the runtime actions are limited to public API requests, which is appropriate for the stated purpose.
- Install Mechanism
- okNo install spec (instruction-only install) and no downloads; scripts are plain Python and call only public web APIs. This is low risk from an install mechanism perspective.
- Credentials
- concernDeclared env vars (SKILL_BILLING_API_KEY, SKILL_ID) are proportionate to a pay-per-use skill, but billing.py embeds a default API key and a default SKILL_ID value. Hard-coded credentials in the repository are a security concern and inconsistent with expecting callers to provide their own keys.
- Persistence & Privilege
- okSkill is not forced-always and does not request system-level persistence. It does not modify other skills or system settings based on the provided files.
