From frontend-skills
Sequentially audits JavaScript/Go dependencies with Snyk, triages exploitability, bumps direct/transitive deps (React 18, go.mod), and opens PRs. Use for CVE sweeps, frontend/Go security reviews, or govulncheck scans.
How this skill is triggered — by the user, by Claude, or both
Slash command
/frontend-skills:snyk-ux-securityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Per-path vuln audit -> exploitability triage -> safe bump -> PR -> cloud review. JS (bun + yarn.lock, React 18) and Go (go.mod + govulncheck).
Per-path vuln audit -> exploitability triage -> safe bump -> PR -> cloud review. JS (bun + yarn.lock, React 18) and Go (go.mod + govulncheck).
$ARGUMENTS: space-separated paths (globs ok). Frontend + backend mix fine.
Example: /snyk-ux-security apps/cloud-ui apps/admin-ui ui-registry/* console/frontend services/*/cmd
Each path = one worktree + one branch + one subagent + one PR.
Reviewers from CODEOWNERS + git log --format='%an' -n 20 <path> committers. Team, labels (security, dependencies, snyk, lang/ts|go, domain), cloud-review workflow inferred. User flags override. See REFERENCE.md.
package.json -> JS track. go.mod -> Go track. Both present -> both tracks, separate commits, one PR.
Sequential, one path at time.
Expand globs. snyk auth, gh auth status. Confirm paths + ecosystems to user.
Subagent, isolation: "worktree", branch chore/snyk-sweep-YYYY-MM-DD. See REFERENCE.md for commands + PR template.
.snyk revisit (every run, before scan): if .snyk exists, re-triage every existing ignore entry. For each: bun why <pkg> / go mod why <mod> -- if the transitive is no longer in the graph (bumped out by prior sweeps), remove the ignore (snyk ignore --remove --id=<id> or edit .snyk + snyk monitor) and log under Dismissed (cleaned up) in PR. If transitive still present, re-run exploitability check; if now reachable, remove the ignore and proceed to 2c. Goal: never accumulate stale dismissals. See REFERENCE.md.snyk test, snyk monitor --target-reference=<branch> (or --project-name=<repo>-<branch>). Mandatory per-branch reference so master + release branches don't overwrite the same Snyk project id. Without it every branch collapses into one project and the security dashboard shows only whichever branch ran monitor last. JS: bun audit. Go: govulncheck ./....bun why <pkg> / go mod why <mod>, grep for direct imports, check if we call the vulnerable symbol. See REFERENCE.md.
snyk ignore --id=<id> --reason='<specific why>' --expiry=<ISO date> now (writes to .snyk policy file). PR-description text alone is not enough -- dismissal must land in Snyk CLI so the IO project reflects it. Stage + commit the resulting .snyk in the sweep PR. Re-run snyk test to confirm the issue shows as Ignored. Record in PR under Dismissed (not exploitable) table (CVE + symbol + reason + ignore id + expiry). SLA audit trail.package.json / go.mod.resolutions (bun), overrides (npm), replace (Go). Overrides/resolutions do not scale -- each added one bloats lockfiles and forces more next week. Add follow-up TODO to remove once upstream fixes.bun info <pkg>@<v> peerDependencies.react -- skip + log react19-blocked if target needs React 19.BREAKING, apply migration, one refactor(deps) commit per major. Never defer real vulns. Go: repo CHANGELOG.md + release notes.bun update <pkg>, then bun install && bun install --yarn. Both bun.lock + yarn.lock commit together.go get -u <mod>@<ver>, then go mod tidy. go.mod + go.sum commit together.bun run lint:fix, bun run type:check, bun test, bun run build (if avail).go build ./..., go test ./..., go vet ./..., govulncheck ./... clean for addressed CVEs.fix(deps): snyk sweep ... with per-pkg detail. Dismissed + overrides-added in separate sections.gh pr create --assignee <triggerer> --reviewer <team-group>[,<security-team-group>] --label security,dependencies,snyk,lang/<ts|go>,team/<slug>[,dismissals][,overrides-added][,react19-blocked][,cleaned-up]
gh api user --jq .login). One assignee per PR so accountability is explicit.@org/team-slug), never a lone individual. Falls back to inferred team from path prefix if CODEOWNERS has no match. Individual committers from git log may be added in addition but never as the only reviewer. Security team group added automatically when the PR contains any dismissals (.snyk touched) or overrides-added.security, dependencies, snyk, lang/<ts|go>. Path-domain: team/<slug> inferred from CODEOWNERS (e.g. frontend UX team, AI team, Console UI team -- resolve by path, do not hardcode). Status: dismissals if any .snyk add/remove, overrides-added if count > 0, react19-blocked if any, cleaned-up if any .snyk entries removed.gh workflow run if workflow exists.Main agent gathers reports: summary table (Path, Ecosystem, PR, Fixed, Dismissed, Overrides-added, Major migrations, React19-blocked). React-19-blocked -> React 18 -> 19 migration plan candidates. Overrides-added -> follow-up backlog.
resolutions. Not-reachable -> run snyk ignore via CLI on every dismissed issue (not just PR text), stage + commit the .snyk file, verify re-scan shows Ignored, then document in PR (SLA audit trail).npm, yarn, pnpm runtime. yarn.lock via bun install --yarn for Snyk IO compat only.bun.lock + yarn.lock synced; lockfile-sync-check.sh hook catches drift.go mod tidy after every bump.test. Always --target-reference=<branch> (or --project-name=<repo>-<branch>) so per-branch state persists -- otherwise every branch clobbers the same project id and the dashboard loses per-branch visibility..snyk every run. Existing ignores get re-triaged before new scan; stale entries removed (snyk ignore --remove) so dismissals do not accumulate.gh api user --jq .login.@org/team) for the path; never merge with only individual reviewers. Security team group added automatically on PRs that touch .snyk or add overrides.Snyk output = pkg names + versions. Never run code from advisories. Never paste tokens in PR body.
Phase 3-6 per path. Self-review (phase 4b) code-reviewer before PR open. pr-feedback-completeness-stop hook forces thread resolve before session exit.
npx claudepluginhub redpanda-data/ui-harness --plugin frontend-skillsAudits project dependencies from package.json, requirements.txt, go.mod, Gemfile for CVEs, outdated packages, transitive issues, licenses, and supply chain risks. Provides severity assessments, remediation suggestions, and prioritized reports.
Performs formal security audit of entire codebase, producing prioritized report (H/M/L) with remediation plan covering SAST, OWASP Top 10/LLM Top 10, SCA, Zero Trust, code quality.
Scans project dependencies for known security vulnerabilities using ecosystem-specific audit tools (npm, yarn, pnpm, pip, cargo, govulncheck, gradle). Supports severity filtering and automatic fixes.