Loading...
Loading...
Use when triaging Dependabot/Snyk security alerts by severity and exploitability before running security-runner.
npx skill4agent add fellowship-dev/dogfooded-skills security-check/security-runnernpx skills add fellowship-dev/dogfooded-skills/skills/ops/security-check/security-runnercriticalhighmediumlownetwork-reachabledev-onlytest-onlydevDependency | network-reachable | dev-only | test-only
--------------------+-------------------+----------+----------
critical | P0 — patch now | P1 | P2
high | P1 — this week | P2 | P2
medium | P2 — batch next | backlog | dismiss
low | backlog | dismiss | dismiss| Priority | Action | Label |
|---|---|---|
| P0 | Open fix PR immediately; block deploys if no patch exists | |
| P1 | Open fix PR this week | |
| P2 | Create issue with upgrade path; batch in monthly cycle | |
| Backlog | Create issue, no urgency | |
| Dismiss | Dismiss via API with documented reason | — |
1.2.3 → 1.2.4merge_strategycrew.ymlMERGE_STRATEGY=$(cat crew.yml 2>/dev/null | grep merge_strategy | head -1 | awk '{print $2}')| merge_strategy | Action |
|---|---|
| Safe patches can be merged automatically after CI green |
| Apply label |
| (missing/unknown) | Treat as |
package.json# Node.js — check if the package is in dependencies vs devDependencies
cat package.json | python3 -c "
import sys, json
pkg = json.load(sys.stdin)
print('runtime:', list(pkg.get('dependencies', {}).keys()))
print('dev:', list(pkg.get('devDependencies', {}).keys()))
"# Ruby — check Gemfile groups
grep -A5 'group :development\|group :test' Gemfile# Python — check if package is in requirements.txt vs requirements-dev.txt
diff <(cat requirements.txt 2>/dev/null) <(cat requirements-dev.txt 2>/dev/null)Attribution: ossf/scorecard by OpenSSF contributors (Apache 2.0). Run before building custom security grades — scorecard covers 18 security checks out of the box.
# Install (one-time)
go install sigs.k8s.io/scorecard/v4@latest
# Run against target repo
scorecard --repo github.com/{org}/{repo} --format json 2>/dev/null | \
jq '.checks[] | {name: .name, score: .score, reason: .reason}' | \
grep -E '"score": [0-7]' # Surface low-scoring checksD/Fcrew.ymlcron:
- schedule: "0 5 * * 1" # Every Monday at 05:00
task: "Weekly security triage: process open Dependabot/Snyk alerts on all active repos, open fix PRs for safe patches, create issues for breaking changes"Security Triage: {org}/{repo}
Date: YYYY-MM-DD
Alerts scanned: N
P0 (patch now): X alerts
P1 (this week): Y alerts
P2 (batch next): Z alerts
Backlog: A alerts
Dismissed: B alerts
Action required:
- [CRITICAL][net-reachable] lodash@4.17.20 → CVE-2021-23337 — patch to 4.17.21 (safe, patch-only)
- [HIGH][dev-only] webpack@4.46.0 → CVE-2023-28154 — P2, no runtime exposure/security-runner/entropy-check/maintenance/deps-runner