AC security-testing
Test application security against OWASP Top 10 (2025) with automated CI tooling: OWASP ZAP (DAST), dependency/supply-chain scanning (OSV-Scanner, SBOM, provenance), Semgrep SAST, auth/session tests (JWT, OAuth, RBAC), and XSS/CSRF/SQLi/SSRF Playwright patterns. Use when: "security test," "OWASP," "vulnerability," "ZAP," "XSS," "SSRF," "dependency scan," "auth testing," "OWASP LLM Top 10." Scope is automated scanning + negative-path security tests in CI, not manual penetration testing. Not for: mapping security controls to regulations (SOC 2, HIPAA, PCI, GDPR) — use compliance-testing; pipeline stage wiring and deploy gating mechanics — use ci-cd-integration; purely functional API auth/input tests with no attacker model — see api-testing; testing your product's own LLM features or defending the agent itself (prompt-injection detector, indirect injection, jailbreak red-teaming) — use ai-system-testing. Related: ci-cd-integration, compliance-testing, api-testing, shift-left-testing, ai-system-testing.
Test application security against OWASP Top 10 (2025) with automated CI tooling: OWASP ZAP (DAST), dependency/supply-chain scanning (OSV-Scanner, SBOM…
As a process C 56/100 · Has gaps — weak spots: result and completion, inputs and preconditions, running it twice
How to improve
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 6
✓ No critical or high findings
Medium and low: 6
-
low Secrets in code
secret-password-literalreferences/auth-tests.md:11Hard-coded password / key literal (may be an example) (test fixture / example file)data: { email: 'te…@….com', password: 'vali…rd1!' },fixture -
low Risky intent
intent-offensive-securityreferences/owasp-tests.md:21Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (test fixture / example file)IDOR, vertical privilege escalation, CORS, and SSRF (now treated as an access-control failure when the server is induced to reach internal resources).
fixture -
low Risky intent
intent-offensive-securityreferences/owasp-tests.md:32Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (test fixture / example file)// Vertical privilege escalation: regular user hits admin endpoint
fixture -
low Secrets in code
secret-password-literalreferences/owasp-tests.md:148Hard-coded password / key literal (may be an example) (test fixture / example file)data: { email: 'te…@….com', password: 'vali…rd1!' },fixture -
low Risky intent
intent-offensive-securitySKILL.md:8Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (detector / deny-list definition)"auth testing," "OWASP LLM Top 10." Scope is automated scanning + negative-path security tests in CI, not manual penetration testing.
detector -
low Risky intent
intent-offensive-securitySKILL.md:45Offensive-security / dual-use content (legitimate for authorised testing; review intended use) (detector / deny-list definition)1. **Security is continuous, not a phase.** Scans run in CI on every PR, not as a quarterly penetration test. A vulnerability caught on the PR that introduced it costs minutes; the same vulnerability
detector
Files scanned: 4. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
✓ No remarks against the Agent Skills spec
Process rating: all ten parameters 56/100
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Progress reporting. Says nothing while it works
- 30Running it twice. 10 mutating operations with no state check
- 40Result and completion. Does not say what the result is
- 50When it triggers. No condition that starts the skill
- 55Failures and branches. 1 branches
- 60Tools and files. Uses tools (web, node) that frontmatter does not declare
- 70Execution cost. Instruction body is 4575 tokens
- 100Steps. 45 steps
- 100Consistency. Name and required fields are in place
- low 12 top-level sections: this looks like several domains in one skill
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +3Description length 1013: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- -2localhost URLs: will not work for another user
- +2Single-language instructions
- +5Description quotes 6 example trigger phrases
- +4Description says when NOT to use the skill
- +4Structure: 22 headings
- +3Step-by-step instructions: 45 items
- +4Has examples (1 code blocks)
- +4Reference files are cited in the instructions (3 of 3)
- +1License stated
Quality base 70; lint remarks subtract, signals add up to 100. Result: 93.