Back to skill
Skillv1.0.0
ClawScan security
HTTP Retry Circuit Breaker · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
SuspiciousMar 4, 2026, 5:52 AM
- Verdict
- suspicious
- Confidence
- medium
- Model
- gpt-5-mini
- Summary
- The skill implements a reasonable HTTP retry + circuit-breaker, requests no credentials or installs, and contains only local code — but there are functional and documentation inconsistencies (and a runtime dependency mismatch) that make the package's behavior unreliable and worth closer review before use.
- Guidance
- This package appears to implement the advertised retry and circuit-breaker patterns and does not request credentials or external installs — but review and testing are recommended before trusting it in production. Specific things to check before installing or using: - Runtime compatibility: The code uses global fetch but package.json/manifests claim node >=14. Global fetch is available natively only in newer Node (>=18). Either run on Node >=18+ or add a fetch polyfill (e.g., node-fetch) and declare it in dependencies. - Functional bug: When response.status >= 400 the code throws a generic Error without attaching status/code. Later logic inspects error.code to decide whether to retry; as written this can prevent retries for HTTP status codes the docs say should be retryable. Review/patch executeWithRetry to propagate status or set a retryable error.code. - Documentation vs tests: Several docs claim a drop to 0.4% failure rate but test summaries and other files report different numbers (1.6%, 0.4%, etc.). Treat the performance claims as illustrative until you run your own benchmarks in your environment. - Run the included tests (npm test) in a controlled environment to validate behavior and metrics; consider adding unit tests for the retry-on-status-code behavior. - Source provenance: Registry lists repository URL but 'Source' in the metadata is unknown. If you require supply-chain assurance, verify the GitHub repo, commit history, and author's identity before deploying in sensitive systems. If you want, I can: - Suggest a minimal patch to fix the thrown-error/status propagation bug. - Produce a short checklist and test commands to validate the skill in your environment (including Node version and adding node-fetch if needed).
Review Dimensions
- Purpose & Capability
- noteName, description, and code align (HTTP client with retry + circuit breaker). There are no unrelated environment variables or external dependencies requested. However, package.json and manifest claim node >=14 while the code calls global fetch with no fetch/polyfill dependency declared — global fetch is not available on Node 14/16, so the runtime requirement is understated. Documentation also makes strong performance claims (8% → 0.4%) that are inconsistent across files and test outputs (some files show different measured improvements).
- Instruction Scope
- concernSKILL.md and README describe retry behavior for retryable HTTP status codes, but the implementation throws a generic Error for HTTP statuses without attaching status/code information. The catch path tests error.code to decide retryability, so in practice some retryable responses may not be retried as documented (functional bug). The runtime instructions expect requiring the local JS module; there is no step to install a fetch polyfill or require Node >=18. The code and docs disagree on measured results in several places (0.4% vs 1.6% etc.), which is documentation inconsistency.
- Install Mechanism
- okNo install spec (instruction-only in registry) and package.json has no dependencies — low install risk. The code is included in the skill bundle (not downloading arbitrary artifacts). The only risk is the missing declared runtime dependency (fetch) which can cause runtime failures but not an installation-time security risk.
- Credentials
- okThe skill requests no environment variables, no credentials, and references no system config paths. There is no indication of exfiltration endpoints or use of unrelated secrets — environment/credential access is proportionate to the stated purpose.
- Persistence & Privilege
- okSkill is not always-enabled and does not request elevated/persistent platform privileges. It does not attempt to modify other skills or system config. Default autonomous invocation is allowed (platform-default) but is not combined with other risky privileges here.
