Audits security and supply-chain risk between two git refs, 预发布安全审计
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: auditing-pre-release-security description: Audits security and supply-chain risk between two git refs, 预发布安全审计
Pre-Release Security Audit (Between Any Two Git Refs)
This skill compares any two git refs (tag/branch/commit SHA) and audits:
- Source-code diffs for security regressions
- Dependency changes (direct + transitive) and lockfile determinism
- Newly introduced package behaviors inside
node_modules - CI/CD workflow risks in
.github/workflowsand build configs (Expo/EAS)
The output is a Chinese Markdown report, with a unique title and filename containing the refs to avoid overwrites.
0) Mandatory: confirm audit range (BASE_REF, TARGET_REF)
Ref rules
- Accepted: tag / branch / commit SHA
BASE_REF= starting point,TARGET_REF= ending point (release candidate)
If refs are not explicitly provided by the user
Ask exactly once before doing any work:
Which two git refs should I compare? (e.g. v5.19.0 → release/v5.20.0, or main → feature/xxx)
If only one ref is provided
Ask for the missing ref. Do not assume defaults unless the user explicitly says:
- “latest tag → HEAD”
- or provides an equivalent instruction.
1) Output requirements (hard constraints)
- Report language: Chinese
- Report filename must include refs to avoid collisions:
security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.mdBASE_REF_SAFE/TARGET_REF_SAFEmust replace/with__(or-) for filesystem safety.
- Report title must include refs:
# 安全预审报告(${BASE_REF} → ${TARGET_REF})
- Evidence must be traceable: file path + line numbers (when possible) + short snippet.
2) Safety rules (must follow)
- Never print or paste secrets: mnemonics/seed phrases, private keys, signing payloads, API keys, tokens, cookies, session IDs.
- If command outputs may contain secrets (env dumps, logs), redact before writing to the report.
- Prefer short excerpts; do not paste large bundles.
3) Execution checklist
Step A — Verify refs and collect context
- Verify both refs exist:
git rev-parse --verify "${BASE_REF}^{commit}"git rev-parse --verify "${TARGET_REF}^{commit}"
- Record:
- BASE_SHA, TARGET_SHA
- Working tree clean?
git status --porcelain
- List changed files:
git diff --name-status "${BASE_REF}..${TARGET_REF}"
Step B — Collect key diffs
Focus on:
- Source:
**/*.{js,ts,tsx} - Dependencies:
**/package.json,yarn.lock - CI:
.github/workflows/** - Expo/EAS configs:
eas.json,app.json,app.config.*, build scripts
Step C — Dependency delta (direct deps)
- For each changed
package.json, compute:- Added / removed / updated deps (include workspace path)
- Version range policy checks:
- Flag
*/latestas High risk - Flag
^/~as Medium risk (explain why this matters for release determinism)
- Flag
- If deps changed but
yarn.lockdid not, flag as High risk.
Step D — Lockfile determinism (best-effort)
- Detect Yarn flavor:
yarn -v - Try one:
- Yarn Berry:
yarn install --immutable - Yarn Classic:
yarn install --frozen-lockfile
- Yarn Berry:
- Record anomalies:
resolutions,patches, non-registry sources, unexpected downloads.
Step E — Known vulnerability scanning (best-effort)
-
yarn audit(if available) -
osv-scanneragainstyarn.lock(if available) - If missing tools, note “not run + reason”.
Step F — New dependency deep inspection (node_modules)
For each newly added direct dependency:
- Inspect
<pkg>/package.json:preinstall,install,postinstallscripts- entry points (
main,module,exports) - binary/native artifacts (
bin/,.node)
- Keyword scan (case-insensitive) in its installed code:
- Sensitive:
privateKey|mnemonic|seed|keystore|passphrase - Storage:
localStorage|indexedDB|AsyncStorage|keychain|keystore - Network:
fetch|axios|XMLHttpRequest|http|https|WebSocket|ws - Dynamic exec:
eval|new Function|child_process|spawn|exec - Install hooks:
preinstall|install|postinstall
- Sensitive:
- If hits exist: include path + line + short snippet and explain expected vs suspicious behavior.
- Assign risk rating: Low / Medium / High.
Step G — Source diff security review (AI reasoning step)
Within ${BASE_REF}..${TARGET_REF} diffs, prioritize:
- signing flows / key handling / mnemonic
- network layer / RPC / telemetry
- storage layer (local/secure storage)
- logging / analytics / error reporting Output: suspicious changes list (each with summary, impact, evidence excerpt).
Step H — CI/CD & build pipeline risks
Inspect .github/workflows/** and build configs:
- Flag
uses: ...@latest(High) - Flag floating tags not pinned to SHA (Medium, note risk)
- Check
permissions:for over-broad scopes - Flag remote script execution patterns (curl|bash, remote downloads)
- Note install safety (
--ignore-scripts, etc.) - Expo/EAS: flag hooks that download remote code, run arbitrary scripts, or leak env into logs
4) Report template (must follow; Chinese output)
Write the report to:
security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.md
More by OneKeyHQ
View allFilters specific errors from Sentry reporting in this OneKey monorepo. Use when needing to ignore/suppress/filter Sentry errors, add error exclusions, or stop certain errors from being reported. Handles platform-specific filtering (desktop/mobile/web/extension).
Helps fix ESLint errors and warnings in the OneKey codebase. Use when running yarn lint and encountering warnings, cleaning up code before committing, or fixing spellcheck, unused variable, or other ESLint warnings.
Guide for adding new blockchain chains to OneKey. Use when implementing new chain support, adding blockchain protocols, or understanding chain architecture. Triggers on chain, blockchain, protocol, network, coin, token, add chain, new chain.
Creates test version branches for testing app upgrade functionality. Use when preparing upgrade test builds, testing version migration, or when the user mentions test version, 9005.x.x version numbers, upgrade testing, or version upgrade QA. Automates branch creation, version bumping, and build number hardcoding for upgrade flow verification.
