From autoresearch
Iterative security audit engine. Performs STRIDE threat modeling, OWASP Top-10 checks, attack surface mapping, and mitigation proposals. Loops until coverage target is reached or budget is exhausted. TRIGGER when: user wants a security audit, threat model, vulnerability assessment, penetration test review, "is this secure", "what are the threats", STRIDE analysis, OWASP check, or security posture review.
npx claudepluginhub wjgoarxiv/autoresearch-skillThis skill is limited to using the following tools:
An autonomous security audit that applies structured threat modeling (STRIDE), OWASP Top-10 checks, and attack surface mapping. Iterates until coverage >= target or budget is exhausted. Produces a `security/` folder with actionable outputs.
Performs security audits using STRIDE threats, OWASP Top 10 risks, and 4 red-team personas. Scans deps/secrets/routes, maps assets/boundaries, requires code evidence, rates exploitability.
Audits code for security vulnerabilities including OWASP Top 10, auth flaws, injection, data exposure, and dependency risks using STRIDE threat modeling and phased reviews.
Executes STRIDE threat modeling, OWASP Top 10 vulnerability scanning, security control validation, privacy assessment, and risk-prioritized reporting for code components.
Share bugs, ideas, or general feedback.
An autonomous security audit that applies structured threat modeling (STRIDE), OWASP Top-10 checks, and attack surface mapping. Iterates until coverage >= target or budget is exhausted. Produces a security/ folder with actionable outputs.
You are an autonomous security auditor. Once the audit begins:
Before starting, establish scope:
--diff flag? If so, provide the previous security/ folder."Do NOT start Phase 1 until scope is defined.
[Scope] --> [Asset Inventory] --> [STRIDE Modeling] --> [OWASP Check]
--> [Attack Surface Mapping] --> [Mitigation Proposals]
--> [Coverage Scoring] --> [Re-audit if needed]
Define precisely what is being audited:
Log to security/threats.md under ## Scope.
Enumerate what exists in the system:
For Tier 1, scan the codebase:
# Find entry points
grep -r "app.get\|app.post\|router\|@Controller\|@Route\|def.*view\|def.*api" --include="*.py,*.js,*.ts,*.java,*.go" -l
# Find credential handling
grep -r "password\|secret\|token\|key\|auth" --include="*.py,*.js,*.ts" -l
Log to security/threats.md under ## Asset Inventory.
Read stride-model.md for full category definitions, examples, and standard mitigations.
For each of the 6 STRIDE categories, systematically apply it to every entry point and trust boundary identified in Phase 2:
For each threat found:
Threat ID: T-[category]-[sequence] (e.g., T-S-001, T-T-002)
Category: [STRIDE letter]
Target: [which asset or entry point]
Description: [specific attack scenario]
Severity: Critical / High / Medium / Low
Likelihood: High / Medium / Low
Evidence: [code reference or architectural reason]
Severity × Likelihood matrix:
| High Likelihood | Medium Likelihood | Low Likelihood | |
|---|---|---|---|
| Critical impact | P0 | P1 | P2 |
| High impact | P1 | P2 | P3 |
| Medium impact | P2 | P3 | P4 |
Log all identified threats to security/threats.md under ## STRIDE Threats.
Read owasp-checklist.md for the full checklist per category.
For each of the 10 OWASP 2021 categories, check whether the system is vulnerable:
Check result format:
[Category]: PASS / FAIL / PARTIAL / N/A
Evidence: [code reference or architectural note]
Severity: [if FAIL/PARTIAL]
Coverage rule: A category is PASS only if all check items from owasp-checklist.md are verified. PARTIAL means some items pass, some couldn't be verified. N/A means the category is structurally inapplicable (e.g., A09 Logging for a stateless function with no logs needed).
Log results to security/threats.md under ## OWASP Top-10 Results.
Synthesize findings from Phases 3–4 into an attack surface map:
Log to security/threats.md under ## Attack Surface Map.
For each threat from Phase 3 + each FAIL/PARTIAL from Phase 4, propose a concrete mitigation:
Mitigation format:
Mitigation ID: M-[ThreatID]
Threat addressed: [T-xxx or OWASP category]
Proposal: [Specific code change, configuration, or architecture change]
Implementation effort: Low (< 1 day) / Medium (1–5 days) / High (> 5 days)
Status: proposed / in-progress / implemented / accepted-risk / wont-fix
Prioritization: P0/P1 threats must have mitigations. P2+ threats should have mitigations but may be deferred.
Mitigation types:
Log to security/mitigations.md.
Coverage metric:
coverage = (threats_addressed / threats_identified) × 100
Where:
threats_identified = all STRIDE threats + all OWASP FAIL/PARTIAL findings
threats_addressed = findings with mitigation status NOT 'proposed'
(i.e., implemented, accepted-risk, or wont-fix with justification)
At the end of each iteration:
security/coverage-report.md with score + gap analysis.coverage >= target → audit complete, produce final summary.coverage < target AND budget not exhausted → begin re-audit pass.Re-audit pass: Focus on the highest-severity unaddressed threats. Propose additional mitigations or refine existing ones. Increment the pass counter.
When called with --diff, only audit what changed since the last audit:
security/threats.md and security/mitigations.md from the previous run.git diff --name-only or user-provided diff).--diff skips: All STRIDE categories for unchanged components, all OWASP checks for unaffected code paths.
security/coverage-report.md:
# Security Coverage Report
Date: [ISO date]
Pass: [N]
Target: [80]%
Current Coverage: [X]%
## Score Breakdown
- Threats identified: [N]
- Threats addressed: [M]
- Coverage: [X]%
## Status
[PASS: Target achieved] / [IN PROGRESS: X% of target]
## Unaddressed Threats (Gaps)
| Threat ID | Severity | Description | Blocker |
|-----------|----------|-------------|---------|
## Addressed Threats Summary
| Threat ID | Severity | Mitigation | Status |
|-----------|----------|------------|--------|
## Accepted Risks
[List of threats with accepted-risk status and justification]
| File | Updated | Purpose |
|---|---|---|
security/threats.md | Each phase | All identified threats (STRIDE + OWASP) |
security/mitigations.md | Phase 6 + re-audits | Proposed fixes + implementation status |
security/coverage-report.md | Phase 7 + re-audits | Coverage score, gaps, accepted risks |
| Situation | Handling |
|---|---|
| No codebase access (Tier 2/3) | Base threats on architecture description; note confidence is lower |
| STRIDE category has zero threats | Log "No threats identified for [category] — [brief reason]" |
| Coverage target unreachable | After 3 re-audit passes, produce report with "maximum achievable coverage: X%" |
| New critical threat found in re-audit | Add to threats.md, prioritize mitigation, recalculate coverage |
| All threats are accepted-risk | Coverage = 100% (accepted risk counts as addressed). Flag this prominently. |
| --diff but no previous security/ folder | Run full audit instead, warn the user |
max_audit_passes: N in the request