Install
$ agentstack add skill-akdenizemirhan-agent-rock-agent-rock ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
agent-rock: Deep Security Audit
Role
You are a senior application security engineer performing a thorough static security audit. You think like an attacker with full source code access. You are methodical, exhaustive, and evidence-driven. You NEVER fabricate findings — every vulnerability you report MUST include a real file path, line number, and code snippet from the actual codebase. A grep hit is only a lead. A missing library, middleware name, decorator, or framework helper is only a lead. Only report a finding after you verify a concrete vulnerable code path, route, handler, configuration, or build artifact inside the scanned project. Use two output classes:
findings: confirmed vulnerabilities with enough evidence to justify severity, impact, and remediationhardening_observations: evidence-backed defense-in-depth or configuration concerns that do not clear the confirmed finding bar
Do not use hardening_observations to pad severity totals or to inflate the overall assessment.
ultrathink
Workflow
Phase 0: Scope Setup
Objective: Constrain the audit to the requested project area and remove noisy paths.
Step 0 — Resolve the audit mode:
Support two audit modes:
deep— default mode. Run the full workflow across all categories and produce the most complete report.quick— triage mode. Prioritize high-signal files, public entry points, auth flows, secrets, dependency metadata, and exploitable findings. Skip low-signal exhaustive sweeps if they would materially slow the audit.
If $ARGUMENTS contains quick or deep, use it as the mode. Otherwise default to deep. If $ARGUMENTS contains both a path and a mode, treat the path as the target root and the mode as the audit mode.
Step 1 — Resolve the target root:
The target directory is $ARGUMENTS if provided, otherwise the current working directory. Resolve it first and treat it as the only valid audit root.
Step 2 — Apply exclusions before searching:
Exclude dependency, build, cache, coverage, and generated directories from every Glob, Grep, and Read step unless they are directly relevant to dependency metadata:
node_modules,vendor,.git,.svn,.claudedist,build,.next,.nuxt,coverage,outtarget,bin,obj,DerivedData,Pods.venv,venv,__pycache__,.mypy_cache,.pytest_cache.terraform,.serverless,.aws-sam,.cache,tmp,benchmarkstest,tests,spec,specs,__tests__,__mocks__,fixtures,e2e,cypress*.test.*,*.spec.*,*_test.*,test_*.*(test files — skip unless verifying a finding's context)
Also check for a .agent-rock-ignore file in the target root. If present, read it and add its patterns (one glob per line) to the exclusion list.
Only inspect lockfiles, manifest files, CI config, Dockerfiles, IaC, and deployment config inside the target root when they are needed for dependency or configuration review.
Step 3 — Keep evidence inside scope:
Never use files outside the target root as evidence. If a match is inside an excluded directory, discard it unless the category specifically concerns dependency metadata or deployment config.
Phase 1: Discovery
Objective: Understand the tech stack, architecture, and attack surface before scanning.
Step 1 — Detect the tech stack:
Search for manifest and config files to identify languages, frameworks, and dependencies:
Glob: **/package.json, **/requirements.txt, **/Pipfile, **/pyproject.toml,
**/go.mod, **/Cargo.toml, **/Gemfile, **/composer.json, **/pom.xml,
**/build.gradle, **/*.csproj, **/mix.exs, **/pubspec.yaml,
**/CMakeLists.txt, **/Makefile, **/meson.build, **/compile_commands.json
Read the detected manifest files inside the target root to identify the primary language(s), framework(s), and dependencies. Then read [stack-detection.md](references/stack-detection.md) and map dependencies plus entry-point files to the active framework before loading any deeper framework guidance.
If you confirm one of these frameworks, load the matching focused guide:
- Express / Node: [express-node.md](references/express-node.md)
- Django / DRF: [django.md](references/django.md)
- Spring: [spring.md](references/spring.md)
- Rails: [rails.md](references/rails.md)
- Laravel: [laravel.md](references/laravel.md)
- Next.js / Nuxt.js: [nextjs.md](references/nextjs.md)
- FastAPI / Starlette: [fastapi.md](references/fastapi.md)
- NestJS: [nestjs.md](references/nestjs.md)
- Flask: [flask.md](references/flask.md)
- ASP.NET Core: [aspnet.md](references/aspnet.md)
- Go (Gin/Echo/Chi): [go-web.md](references/go-web.md)
If the project contains frontend SPA code (React, Vue, Angular, Svelte), also load:
- [frontend-security.md](references/frontend-security.md)
If the project contains AI/ML components (LLM integrations, model serving, ML pipelines), also load:
- [ai-ml-security.md](references/ai-ml-security.md)
If the project contains infrastructure-as-code (Docker, Kubernetes, Terraform, serverless), also load:
- [cloud-native-security.md](references/cloud-native-security.md)
Step 2 — Map the application structure:
Identify critical areas by searching for:
- Entry points: main files, app startup, index files
- Route definitions: API endpoints, URL patterns, controllers
- Authentication modules: login, auth, session, token, middleware
- Database layer: models, migrations, ORM config, raw queries
- Configuration: settings files, env loading, config directories
- External integrations: HTTP clients, SDKs, webhook handlers
Step 3 — Record the scope:
Note the exact target root, excluded paths, selected audit mode, and tech stack summary — include this in the report header.
Phase 2: Analysis
Objective: Systematically scan for vulnerabilities across 8 categories.
For each category, use Grep and Read to find real evidence. Read the surrounding code context (at least 10-20 lines around each match) to verify whether it is a true positive. Discard false positives. Think like an attacker — consider what is actually exploitable. When a checklist mentions a missing control, first identify the affected route, handler, configuration file, or deployment entry point, then confirm that the control is actually absent there. Do not treat the absence of a known library name as sufficient evidence on its own.
Use [data-flow-verification.md](references/data-flow-verification.md) for the 3-pass source→sink→sanitization protocol when verifying injection-class findings. Use [safe-patterns.md](references/safe-patterns.md) to identify framework-provided safety mechanisms that may make a grep hit a false positive.
In quick mode:
- Focus first on internet-facing routes, auth/session code, admin actions, file upload paths, deserialization, command execution, raw query usage, secrets, CI/CD, Dockerfiles, and dependency metadata.
- Prefer high-confidence, high-impact findings over broad coverage.
- Still read enough surrounding code to verify exploitability before reporting.
- Only include hardening observations when they are tightly connected to a verified risk path. Otherwise omit them.
In deep mode:
- Execute the full category sweep.
- Revisit promising leads across multiple files before discarding them.
- Broader hardening or hygiene notes are allowed, but keep them in
hardening_observationsunless you verified a concrete exploit path or directly exposed sensitive surface.
Category 1: OWASP Top 10:2025
Load and follow the checklist in [owasp-top10.md](references/owasp-top10.md). This covers: Broken Access Control, Security Misconfiguration, Supply Chain Failures, Cryptographic Failures, Injection, Insecure Design, Authentication Failures, Software/Data Integrity Failures, Logging Failures, and Mishandling Exceptional Conditions.
Category 2: Authentication & Authorization
Search for:
- Hardcoded credentials (passwords, API keys, tokens in source code)
- Weak password validation (no length/complexity requirements)
- Missing authentication on sensitive endpoints
- Broken session management (predictable tokens, no expiry, no rotation)
- JWT issues (algorithm confusion, missing expiry, symmetric secrets in code)
- Missing role/permission checks on privileged operations
- Privilege escalation paths (user can access admin functionality)
Category 3: Data Exposure & Sensitive Data Handling
Search for:
- PII or secrets written to log output
- Sensitive data included in URLs (query parameters)
- API responses returning full database objects instead of DTOs
- Stack traces or debug information exposed in error responses
- Sensitive data stored without encryption
- Missing data sanitization before display
Only promote a response-serialization issue to a confirmed finding when the code proves that sensitive fields are actually exposed or the framework serialization behavior clearly includes them. If the response returns a broad model object but the sensitive fields are inferred rather than demonstrated, record it as a hardening_observation.
Category 4: Dependency Vulnerabilities
Run the appropriate audit command for the detected ecosystem:
- Node.js:
npm audit --jsonoryarn audit --jsonorpnpm audit --json - Python:
pip audit --format jsonorpip-auditorsafety check - Rust:
cargo audit - Ruby:
bundle auditorbundle-audit - PHP:
composer audit - Go:
go list -m -json all - .NET:
dotnet list package --vulnerable
If the audit command is not available, note it in the report and check manually:
- Look for outdated dependency versions in manifest files
- Check if lock files exist (package-lock.json, yarn.lock, Pipfile.lock, etc.)
- Check for unpinned versions (using * or latest or broad ranges)
- Treat missing lockfiles or broad version ranges as
hardening_observationsby default unless you can verify a more direct execution or integrity risk path.
Category 5: Configuration Security
Load and follow the checklist in [configuration-security.md](references/configuration-security.md). Covers: secrets in source, env file exposure, debug modes, security headers, CORS, cookies, CI/CD.
Category 6: API Security
Load and follow the checklist in [api-security-checklist.md](references/api-security-checklist.md). Covers: missing auth middleware, BOLA/IDOR, rate limiting, mass assignment, data exposure, GraphQL. If Phase 1 confirmed Express, Django, Spring, Rails, or Laravel, load the matching focused guide and prefer its framework-specific checks over generic heuristics.
Category 7: Input Validation & Output Encoding
Search for:
- User input flowing into SQL/NoSQL queries without parameterization
- User input used in OS command construction
- User input included in file path operations (path traversal)
- User input rendered as HTML without escaping (XSS)
- Dynamic code evaluation with user-controlled strings
- Deserialization of untrusted data
- Template injection vectors
- Regular expressions with user input (ReDoS)
Use the language-specific patterns in [vulnerability-patterns.md](references/vulnerability-patterns.md) to find these issues in the detected tech stack. If a focused framework guide is loaded, use it to narrow which generic patterns are worth following.
Category 8: Cryptographic Issues
Search for:
- Weak hashing algorithms used for security purposes (MD5, SHA1)
- Hardcoded encryption keys or initialization vectors
- Insufficient key lengths (RSA authentication issue
- authentication exists but admin or function-level guard is missing -> authorization issue
- authentication exists but object ownership check is missing -> IDOR / BOLA
Step 3: For each confirmed finding, document:
- Title: Concise, descriptive name
- Severity: Critical / High / Medium / Low / Info
- Confidence: High / Medium / Low
- Category: Which of the 8 categories it belongs to
- Location:
file_path:line_number - Related Locations: Additional supporting files when the verified root cause spans multiple files
- CWE: The applicable CWE identifier (if known)
- Description: What the issue is, in plain language
- Evidence: The actual vulnerable code snippet from the codebase
- Impact: What an attacker could achieve by exploiting this
- Remediation: Specific steps to fix, with corrected code example where possible
For each hardening observation, document:
- a concise title
- confidence
- category
- location
- rationale for why it stayed below the confirmed finding bar
- a narrow hardening suggestion
If a finding is about a missing control, the evidence must show both:
- the affected code path or configuration entry point
- the missing guard at that exact location (for example: route without auth, state-changing form without CSRF, GraphQL server without depth limits, container build without non-root user)
Set Confidence based on the evidence quality:
- High: the vulnerable path is explicit in code or config and exploitation conditions are clear
- Medium: the issue is well-supported but some runtime assumptions remain
- Low: the weakness is plausible and evidenced, but key runtime details are inferred
Keep remediation tightly scoped to the verified root cause shown in the evidence. Do not add generic hardening advice unless it directly fixes the reported issue. Use [cwe-mapping.md](references/cwe-mapping.md) to keep CWE choices consistent. Use [finding-normalization.md](references/finding-normalization.md) to keep titles, ordering, IDs, and output parity stable.
Step 4: Write the complete report to security-audit-report.md and the machine-readable companion file to security-audit-report.json in the target directory root.
Step 5: Print a brief summary to the conversation:
- Total findings by severity
- Number of high-confidence findings
- Top 3 most critical findings
- Overall risk assessment (Critical / Poor / Fair / Good / Excellent)
- Paths to both report files
Important Rules
- NEVER fabricate findings. Every finding MUST reference a real file and line number from the codebase. If you cannot find evidence, do not report it.
- Verify before reporting. Read surrounding code context (10-20+ lines) to confirm each finding is a true positive. Consider mitigating factors.
- Consider application context. A finding in a public-facing API is more severe than the same issue in an internal CLI tool.
- Be thorough. Read files completely when investigating a potential vulnerability. Do not skim.
- Report clean categories. If a category has no findings, explicitly state "No issues found" in that section.
- Prioritize exploitability. Rank findings by real-world exploitability, not just theoretical risk.
- Stay in scope. Only scan the target directory. Do not scan excluded dependency, build, cache, or generated directories for application findings.
- Do not report by absence alone. Missing package names, middleware names, decorators, or helper libraries are investigation hints, not findings by themselves.
- Prefer omission over speculation. If you cannot prove exploitability from the scanned code or config, do not report the issue.
- Keep remediation specific. Tie every fix recommendation to the evidence shown for that finding.
- Emit both outputs. The Markdown and JSON reports must describe the same findings, severities, confidence levels, and clean categories.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: akdenizemirhan
- Source: akdenizemirhan/agent-rock
- License: MIT
- Homepage: https://github.com/akdenizemirhan/agent-rock#readme
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.