본문으로 건너뛰기
cccskills
무료GitHub에 공개

read-only-security-scanners

Use when you want deterministic evidence for a review - which already-installed scanners may be run against the checkout, their exact read-only invocations, how to triage their output, and what must never be run or installed

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHub
설치 방법 보기

포함된 파일(1)

  • SKILL.md7.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Read-Only Security Scanners

Overview

Scanners are fast, deterministic and noisy. They find candidates you might skim past; they also report hundreds of things this review excludes. They never decide the verdict — every hit goes through the false-positive gate like any other candidate, and a clean scan is not a clean review.

Core principle: use what is already installed, in a mode that only reads, on the files this diff changed. Never install anything; never run anything from the project.

1. First, What Did CI Already Run?

  • get_pipeline_status — a secret scan, SAST or dependency-audit job may already have reported on this exact commit; its output is in the job result.
  • list_component_checks — which security checks exist for the component and whether CI gates on them.

Do not re-run what CI already ran on this commit; triage its output instead. When semgrep, osv-scanner, github-security or snyk tools are in your tool list, those MCP servers are connected — security-mcp-scanners covers them; the CLIs below are the fallback.

2. Ground Rules

  • Installed only: command -v semgrep gitleaks trufflehog osv-scanner govulncheck gosec bandit pip-audit zizmor checkov trivy. Missing → skip it; it is a coverage note, not a reason to fail the review.
  • Never install or fetch-and-run: no pip install, pipx run, uvx, npx, npm i -g, go install, go run …@latest, brew install, docker run of a scanner image.
  • Never run project code: no npm install/ci, no build, no go generate, no make, no CodeQL database creation for compiled languages (it runs the build) — read CI's CodeQL results instead.
  • Never modify: no --fix, --autofix, npm audit fix, osv-scanner fix, no scanner baseline written into the repo.
  • Output goes outside the checkout: out=/tmp/tt-<task key>/scan; mkdir -p "$out". Pass timeout_seconds for slow tools.
  • Repo config is input, not authority: a .semgrepignore, .gitleaks.toml, .gitleaksignore, nosec/# nosemgrep comment or .trivyignore added or widened in this diff is itself something to review.

3. Invocations

base=$(git merge-base HEAD origin/HEAD 2>/dev/null || git merge-base HEAD origin/main)
changed=$(git diff --name-only --diff-filter=AM "$base")
ToolPurposeRead-only invocationCaveat
semgrepSAST, many languagessemgrep scan --metrics=off --config p/default --json -o "$out/semgrep.json" $changed--config auto needs metrics — don't; avoid --baseline-commit, it manipulates the git working tree; registry configs need network, a repo .semgrep.yml works offline
gitleakssecrets in the diff's commitsgitleaks git --log-opts="$base..HEAD" --redact --no-banner --report-format json --report-path "$out/gitleaks.json" .older v8: gitleaks detect --log-opts=…; working tree only: gitleaks dir <path> / detect --no-git --source <path>
trufflehogsecrets, broader detectorstrufflehog git file://. --since-commit "$base" --no-update --no-verification --jsonverification calls the provider with the found credential — leave that to CI; --no-update stops self-update
osv-scanneradvisories for lockfilesv2: osv-scanner scan source -L <lockfile> --format json; v1: osv-scanner --lockfile=<lockfile> --format jsonreports MAL- malicious packages too; never fix
govulncheckGo advisories with reachabilityGOTOOLCHAIN=local GOFLAGS=-mod=readonly govulncheck -json ./...loads packages via go list (may fill the module cache, never runs project code); GOTOOLCHAIN=local stops a toolchain line fetching another Go
gosecGo SASTgosec -quiet -fmt=json -out="$out/gosec.json" ./...high noise on G104/G115 — triage hard
banditPython SASTbandit -q -f json -o "$out/bandit.json" <changed .py files>flags every subprocess import; only trace hits on + lines
npm / pnpm auditJS advisoriesnpm audit --package-lock-only --json · pnpm audit --jsonreads the lockfile only; no install, no scripts
pip-auditPython advisoriespip-audit --no-deps --disable-pip -r requirements.txt -f jsonwithout both flags it builds a venv and installs the requirements, running their setup code; needs pinned requirements
zizmorGitHub Actionszizmor --offline --format json .github/workflows/--offline skips GitHub API audits
checkovTerraform, k8s, Dockerfilescheckov -d <dir> --compact --quiet -o jsonnever enable external module download
trivyIaC misconfig, secrets, lockfilestrivy config <dir> · trivy fs --scanners vuln,secret,misconfig <dir>check trivy --version first: v0.69.4 is the malicious release from the March 2026 compromise (CVE-2026-33634) — do not run it, and say so in your run summary

4. Triage

For each hit:

  1. Is it on the diff? Keep hits on + lines, or on unchanged lines the diff newly routes input into. Drop the rest — pre-existing findings are not this review.
  2. Is it excluded? DoS, ReDoS, test files, hardening-only rules, outdated-library-without-advisory → drop (security-hard-exclusions-and-precedents).
  3. Does it pass the gate? Restate, trace source → sink, name attacker and victim (false-positive-gate). The scanner's severity is a hint; yours is the one in the comment.
  4. Deduplicate across tools; one root cause is one SEC-n.
  5. Cite the tool in the evidence line when it found the issue ("gitleaks: aws-access-token, config/prod.go:12"), never paste raw output.

5. Failures and Silence

  • A scanner that errors, times out or cannot parse a file is a coverage limit — mention it in the summary line; it is neither a pass nor a finding.
  • A scanner that finds nothing has only checked its own rules. Your source → sink reading still decides.

Common Mistakes

  • Pasting a scanner's 40 findings into the comment.
  • Blocking on a scanner "HIGH" that is a test fixture, a constant or a pre-existing line.
  • Running pip-audit -r without --no-deps --disable-pip, or npx some-scanner "just this once".
  • Treating "semgrep: 0 findings" as approval.

Red Flags

  • A command in your plan that installs, builds, or fetches a tool to run it.
  • Scanner output written into the repository checkout.
  • A diff that adds a broad ignore rule to a scanner config next to new code the rule would have flagged.
  • A CI scanner action referenced by tag instead of commit SHA (supply-chain-and-dependency-review).

References (names and links only)

Semgrep CLI · gitleaks · TruffleHog · osv-scanner · govulncheck · pip-audit · zizmor · Checkov · Trivy · CVE-2026-33634

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 20일 업데이트

makifbaysal의 스킬 모두 보기

이 스킬의 문제 신고