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}"
- BASE_SHA, TARGET_SHA
- Working tree clean? git status --porcelain
- 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 * / latest as High risk
- Flag ^ / ~ as Medium risk (explain why this matters for release determinism)
- [ ] If deps changed but
yarn.lock did 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
- [ ] Record anomalies:
resolutions, patches, non-registry sources, unexpected downloads.
Step E โ Known vulnerability scanning (best-effort)
- [ ]
yarn audit (if available) - [ ]
osv-scanner against yarn.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
/package.json:
- preinstall, install, postinstall scripts
- 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
- [ ] 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
---