upstash/skills| 认证等级 | L2 |
| 验证状态 | self-declared(单方声明,待独立验证) |
| 验证方法 | 未登记 structured verifiedBy |
| 运行级实测 | 未做运行级实测 |
| 内容锚 | git commit 363a8260700f · upstash/skills · git ls-remote / clone 复现可对账 |
| DID | did:cha2a:package:upstash/skills |
| 身份锚点 | npm 未声明 GitHub 仓库——装前请自行核验来源 |
| 来源 | git |
| 插件版本 | — |
| 安装 | dsh plugin add github:upstash/skills |
| 扫描日期 | 2026-08-27(36 天前) |
| 扫描层级 | 静态扫描(自研规则 + GuardDog 复核 + OSV 依赖) |
| 扫描器版本 | dshlib-scan v0.1 · GuardDog 3.2.0 · OSV.dev |
自研扫描:⚠️ 待审 · GuardDog 复核:未扫描 · OSV 依赖:未扫描
True
{'excessive_permissions': [{'file': 'skills-main/scripts/check.mjs', 'line': 3, 'match': 'execSync(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-js/SKILL.md', 'line': 433, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-js/SKILL.md', 'line': 441, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-js/SKILL.md', 'line': 632, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-py/SKILL.md', 'line': 460, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-py/SKILL.md', 'line': 468, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-box-py/SKILL.md', 'line': 668, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-cli/SKILL.md', 'line': 88, 'match': 'exec (', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/advanced-features/pipeline-and-transactions.md', 'line': 33, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/advanced-features/pipeline-and-transactions.md', 'line': 42, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-ioredis.md', 'line': 119, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-ioredis.md', 'line': 130, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-redis-node.md', 'line': 159, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-redis-node.md', 'line': 169, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/patterns/leaderboard.md', 'line': 122, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/patterns/session-management.md', 'line': 152, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/patterns/session-management.md', 'line': 204, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/performance/batching-operations.md', 'line': 61, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/performance/pipeline-optimization.md', 'line': 56, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/performance/pipeline-optimization.md', 'line': 70, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/performance/pipeline-optimization.md', 'line': 77, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash-redis-js/performance/pipeline-optimization.md', 'line': 95, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-js/overview.md', 'line': 424, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-js/overview.md', 'line': 432, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-js/overview.md', 'line': 623, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-py/overview.md', 'line': 451, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-py/overview.md', 'line': 459, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-box-py/overview.md', 'line': 659, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-cli/overview.md', 'line': 79, 'match': 'exec (', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/advanced-features/pipeline-and-transactions.md', 'line': 33, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/advanced-features/pipeline-and-transactions.md', 'line': 42, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-ioredis.md', 'line': 119, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-ioredis.md', 'line': 130, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-redis-node.md', 'line': 159, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-redis-node.md', 'line': 169, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/patterns/leaderboard.md', 'line': 122, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/patterns/session-management.md', 'line': 152, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/patterns/session-management.md', 'line': 204, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/performance/batching-operations.md', 'line': 61, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md', 'line': 56, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md', 'line': 70, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md', 'line': 77, 'match': 'exec(', 'label': '命令执行'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md', 'line': 95, 'match': 'exec(', 'label': '命令执行'}], 'data_exfiltration': [{'file': 'skills-main/skills/upstash-blob-js/SKILL.md', 'line': 209, 'match': 'token) throw a `TypeError` where they are written, not a `BlobError` per request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash-box-js/SKILL.md', 'line': 704, 'match': 'secret headers into matching outbound HTTPS request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash-box-py/SKILL.md', 'line': 740, 'match': 'secret headers into matching outbound HTTPS request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash-qstash-js/advanced/multi-region/summary.md', 'line': 96, 'match': 'token for outgoing request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash-ratelimit-js/algorithms.md', 'line': 63, 'match': 'tokens that refill at a defined rate. Each request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash-ratelimit-js/features.md', 'line': 70, 'match': 'tokens to subtract per request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-blob-js/overview.md', 'line': 200, 'match': 'token) throw a `TypeError` where they are written, not a `BlobError` per request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-box-js/overview.md', 'line': 695, 'match': 'secret headers into matching outbound HTTPS request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-box-py/overview.md', 'line': 731, 'match': 'secret headers into matching outbound HTTPS request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-qstash-js/advanced/multi-region/summary.md', 'line': 96, 'match': 'token for outgoing request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-ratelimit-js/algorithms.md', 'line': 63, 'match': 'tokens that refill at a defined rate. Each request', 'label': '凭据字段进入网络请求'}, {'file': 'skills-main/skills/upstash/upstash-ratelimit-js/features.md', 'line': 70, 'match': 'tokens to subtract per request', 'label': '凭据字段进入网络请求'}], 'hardcoded_secrets': [{'file': 'skills-main/skills/upstash-qstash-js/advanced/multi-region/summary.md', 'line': 158, 'match': 'token: "custom_token"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-qstash-js/fundamentals/local-development.md', 'line': 102, 'match': 'token: "eyJVc2VySUQiOiJkZWZhdWx0VXNlciIsIlBhc3N3b3JkIjoiZGVmYXVsdFBhc3N3b3JkIn0=', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-redis-js/SKILL.md', 'line': 30, 'match': 'token: "UPSTASH_REDIS_REST_TOKEN"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-ioredis.md', 'line': 70, 'match': 'password: "your-password"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-redis-js/migrations/from-redis-node.md', 'line': 83, 'match': 'password: "your-password"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-workflow-js/features/flow-control.md', 'line': 20, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-workflow-js/features/flow-control.md', 'line': 128, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-workflow-js/features/invoke.md', 'line': 85, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash-workflow-js/features/wait-for-event.md', 'line': 74, 'match': 'token: "<WORKFLOW_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-qstash-js/advanced/multi-region/summary.md', 'line': 158, 'match': 'token: "custom_token"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-qstash-js/fundamentals/local-development.md', 'line': 102, 'match': 'token: "eyJVc2VySUQiOiJkZWZhdWx0VXNlciIsIlBhc3N3b3JkIjoiZGVmYXVsdFBhc3N3b3JkIn0=', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-ioredis.md', 'line': 70, 'match': 'password: "your-password"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/migrations/from-redis-node.md', 'line': 83, 'match': 'password: "your-password"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-redis-js/overview.md', 'line': 21, 'match': 'token: "UPSTASH_REDIS_REST_TOKEN"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-workflow-js/features/flow-control.md', 'line': 20, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-workflow-js/features/flow-control.md', 'line': 128, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-workflow-js/features/invoke.md', 'line': 85, 'match': 'token: "<QSTASH_TOKEN>"', 'label': '明文凭据'}, {'file': 'skills-main/skills/upstash/upstash-workflow-js/features/wait-for-event.md', 'line': 74, 'match': 'token: "<WORKFLOW_TOKEN>"', 'label': '明文凭据'}], 'manifest_contract': [{'file': 'package.json', 'line': 0, 'match': 'patch: dsh-plugin/cordis.patch.yml', 'label': 'dsh.bundle.patch 引用「dsh-plugin/cordis.patch.yml」不存在——插件树加载会失败'}]}git-refresh
main
未复核。
未查询。