boshu2/agentops-security
Run authorized repository security scans for vulnerabilities, dependency risk, secrets, and binary policy. Triggers: "security", "run repository security scans for", "security skill".
This is a copy. The original lives at boshu2/security.
npx skills add https://github.com/boshu2/agentops --skill security
> Purpose: Run repeatable security checks across code, scripts, authorized binaries, and repo-managed prompt surfaces.
Use this skill for a caller-requested repository scan, authorized binary assurance, dependency risk, secrets, or offline prompt-surface redteam.
--require-tools when complete tool coverage is required. Why: absent evidence is not evidence of absence.risk acceptance, reruns, and promotion are caller decisions.
scripts/security-gate.sh composes available scanners for quick/full/release checks.scripts/security_suite.py provides static, dynamic, contract, baseline, and policy primitives for authorized binaries.scripts/prompt_redteam.py checks repo-owned prompt and tool-control surfaces against the attack pack.This is the canonical security runbook. Suite policy gating produces machine-consumable outputs, including policy/policy-verdict.json when a policy file is supplied.
Read the suite runbook before binary, policy, baseline, or redteam work. Use the OWASP checklist for code-level review.
Run:
scripts/security-gate.sh --mode quick
Checkpoint: preserve the exit code and verify the reported security-gate-summary.json exists and parses before triage.
Run:
scripts/security-gate.sh --mode full
Add --require-tools when skipped scanners would invalidate the assurance claim. Checkpoint: report the result as incomplete unless the selected artifact validator and process both succeed.
Scheduled automation runs the full gate against the intended branch and retains its artifact directory. A failing scheduled run creates actionable tracked work; AgentOps itself does not supply the scheduler.
For review work beyond the scripted gates (code-level or redteam passes), hunt
against the full taxonomy, not your first hunch:
the OWASP checklist (or the attack pack for
prompt surfaces) and record a per-class result: finding, clean, or
not-assessed. An unvisited class is a coverage gap, not a clean. Chasing one
suspicious lead to the exclusion of the taxonomy is the **first-scent
fixation** failure mode.
concrete input, request, or command demonstrating the behavior, captured in
the artifact. Pattern-match-only findings are reported as suspicions, ranked
below proven ones.
what happens when it errors or hangs — then probe it where safe. A control
that fails open under error is a finding even when its happy path is correct.
the effective identity is at each hop (user, service, token, hook). A hop
where identity is assumed rather than verified — the borrowed identity
failure mode — is a finding.
yields nothing new: no new finding, no new coverage gap. That quiet round is
the stop condition. Stopping after a loud round (findings still arriving) is
premature; report the hunt as unconverged if the budget ends before a quiet
round.
Artifact directory: repository gates write ${SECURITY_GATE_OUTPUT_DIR:-${TMPDIR:-/tmp}/agentops-security}/<run-id>/; composable-suite and redteam runs use their explicit --out-dir.
Filename convention: repository gates require security-gate-summary.json (and raw summary.json); suite runs require suite-summary.json; redteam runs require redteam/redteam-results.json.
Serialization/schema format: security-gate-summary.json is JSON with nonempty mode, run_id, output_dir, and gate_status, numeric missing_tool_count, boolean require_tools, and object toolchain.
Validator command: with OUT=<security-gate-run-dir>, run jq -e '(.mode|type)=="string" and (.mode|length)>0 and (.run_id|type)=="string" and (.run_id|length)>0 and (.output_dir|type)=="string" and (.output_dir|length)>0 and .gate_status=="PASS" and (.missing_tool_count|type)=="number" and (.require_tools|type)=="boolean" and (.toolchain|type)=="object"' "$OUT/security-gate-summary.json" >/dev/null.
Output: report the artifact path, command/exit code, mode, gate status,
missing-tool coverage, ranked findings, and authorization boundary. Do not add
an owner, next action, approval, release, or retry decision.
Run the skill and redteam validators:
bash skills/security/scripts/validate.sh
bash tests/scripts/test-security-suite-redteam.sh
For a bounded suite smoke test, use an owned binary and a temporary output directory as shown in the suite runbook.
| Problem | Response |
|---------|----------|
| Scanner missing/error | Record the coverage gap; install it or rerun with --require-tools when required |
| Local/CI mismatch | Compare scanner versions, config, mode, and both artifact directories |
| Suspected false positive | Reproduce narrowly; document any authorized suppression and its owner |
| Suite/baseline failure | Inspect the named compare/policy artifact; never refresh baseline reflexively |
| Redteam failure after wording change | Decide whether the control regressed or the attack-pack matcher needs intentional revision |
Take boshu2/agentops-security from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.