Security Review
You are acting as a senior cybersecurity analyst performing a structured security review. Your job is to find real risks — credential exposure, injection vectors, blast radius gaps, failure cascading — not to rubber-stamp automation as "looks fine."
Mindset: Assume the skill or plan will eventually be used under adversarial conditions. An attacker who understands the automation's behavior will attempt to exploit it. A tired operator will run it against the wrong environment. A partial failure will leave the system in an inconsistent state. Find these failure paths before they happen.
Determine the review mode
Ask the user what they want reviewed if not obvious from context:
- Skill Review — path to a SKILL.md or skill directory
- Deployment Plan Review — path to a markdown plan file
- Post-Deployment Audit — description or config of a live setup
If the user points you at a file or directory, infer the mode:
- Path contains
SKILL.mdorskills/→ Skill Review - Path contains
plan,deploy,setup, orinfrastructure→ Deployment Plan Review - User says "review the current setup" or provides config output → Post-Deployment Audit
Workflow
Review Progress:
Phase 1 — Analysis (read-only):
- [ ] Step 1: Read target artifact and all references
- [ ] Step 2: Evaluate against review checklist
- [ ] Step 3: Assess common failure modes
- [ ] Step 4: Write first-pass review to file
Phase 2 — Independent validation:
- [ ] Step 5: Spawn independent reviewer agent
- [ ] Step 6: Merge findings into final report
Phase 3 — Present:
- [ ] Step 7: Present consolidated findings to user
Step 1: Read target artifact
Read the target thoroughly. For each mode:
Skill Review: Read the SKILL.md, then read every file it references — references/ directory,
scripts/ directory, .env patterns, any linked files. Read the scripts' source code, not just the
SKILL.md description of what they do. Check for drift between documentation and implementation
(failure mode #9).
Deployment Plan Review: Read the full plan document. Identify all infrastructure components, credentials, network boundaries, and operational procedures described.
Post-Deployment Audit: Read the config dump, setup description, or live output provided. Identify running services, exposed endpoints, permission configurations, and logging setup.
Step 2: Evaluate against review checklist
Read references/review-checklist.md.
Go through every check in all 7 categories. For each check:
- Determine if it applies to this artifact
- If it applies, assess the artifact against it
- If the artifact fails the check, record a finding with the severity from the checklist
Do not skip categories. Even if a category seems irrelevant, confirm it is before moving on. A skill that "doesn't do write operations" might have a curl POST buried in a script.
Adapt the checklist to the artifact's domain. The checklist uses Elastic/Kibana examples, but the principles are universal. For non-Elastic artifacts, map to the specific checklist item number:
- "API keys in curl commands" → any credentials in CLI commands, CI variables, or config files → cite 1.1
- "ES|QL injection" → any query/command injection (SQL, shell, GraphQL, API parameters) → cite 6.2 (query injection, not 6.1 which is shell injection)
- "Shell command injection via alert fields" → untrusted input in shell commands → cite 6.1
- "Bulk acknowledge alerts" → any bulk mutation without safeguards (batch deletes, mass updates, deployments) → cite 2.3
- "Kibana API rate limits" → any rate-limited service the artifact interacts with → cite 7.1
- "Alert fields in shell commands" → any untrusted input flowing into commands or queries → cite 6.1 or 6.2
Always cite the checklist item number (e.g., "6.2 — Query injection") when referencing a check. If the domain-adapted check maps to query injection (SQL, ES|QL, GraphQL), use 6.2 specifically — not 6.1 (which is shell injection).
For Skill Review mode, pay special attention to:
- Shell commands that interpolate variables from alert data (check 6.1)
- Bulk operations without dry-run or confirmation (checks 2.1, 2.2, 2.3)
- API keys in curl/shell command examples (check 1.1)
- Multi-step workflows where step ordering matters (checks 5.1, 5.2)
Step 3: Assess common failure modes
Read references/common-failure-modes.md.
Evaluate the artifact against each of the 10 failure modes. These are structural patterns, not individual checks — they require thinking about how the system behaves over time, under adversarial conditions, and at scale.
For each failure mode, assess: Yes (clearly applies), Partial (some mitigation exists but incomplete), or No (not applicable or fully mitigated).
Use the exact failure mode names in your output. When discussing failure mode #2, explicitly use the term "circuit breaker" (e.g., "missing circuit breakers for bulk operations"). When discussing #7, use "orphaned state." When discussing #8, use "blast radius." This makes the review searchable and consistent across artifacts.
Required terminology mapping — always use these exact terms when the corresponding failure mode applies. Do not describe the concept without using the term:
| Failure Mode | Required Term | Example Usage |
|---|---|---|
| #2 Automation without circuit breakers | "circuit breaker" | "No circuit breaker for bulk acknowledge — 10,000 alerts could be affected" |
| #7 Orphaned state | "orphaned state" / "orphaned" | "Alerts become orphaned if case creation fails after acknowledgment" |
| #8 Blast radius ignorance | "blast radius" | "Unbounded blast radius — no LIMIT on the affected record count" |
| #1 Alert fatigue | "alert fatigue" | "Auto-creating cases amplifies alert fatigue" |
| #5 Credential sprawl | "credential sprawl" | "Broad API key reuse contributes to credential sprawl" |
Step 4: Write first-pass review
Read references/review-template.md for the output format.
Write the review to: work_docs/reviews/security-review-{artifact-name}-{YYYY-MM-DD}.md
Create the work_docs/reviews/ directory if it doesn't exist.
Fill in all sections of the template:
- Risk Summary (use the exact heading
## Risk Summaryfrom the template) with counts - All findings with checklist reference, location, description, risk, and remediation
- Failure mode assessment table (all 10 modes, using the exact failure mode term names)
- Leave the "Second-Pass Review" section empty — it will be filled by the independent agent
Step 5: Spawn independent reviewer
Launch a second agent with no prior context to independently validate the review. Use the Task tool:
Task(
subagent_type="generalPurpose",
readonly=true,
description="Independent security review",
prompt="You are a senior cybersecurity engineer performing an independent review.
Your task:
1. Read the original artifact at: {path to skill/plan/config}
2. Read all files it references (scripts, references/, .env patterns)
3. Read the first-pass security review at: work_docs/reviews/security-review-{name}-{date}.md
4. Read the review checklist at: ~/.cursor/skills/skill-security-review/references/review-checklist.md
5. Read the failure modes guide at: ~/.cursor/skills/skill-security-review/references/common-failure-modes.md
Then provide your independent assessment:
A) COVERAGE VALIDATION: Were all 7 checklist categories evaluated? Were all 10 failure modes
assessed? Were write operations and credential exposure points correctly identified?
B) ADDITIONAL FINDINGS: List any security issues the first-pass review missed. Evaluate the
artifact independently — do not just confirm the first pass.
C) REMEDIATION VALIDATION: For each first-pass finding, assess whether the proposed remediation
is sufficient, incomplete, or could introduce new issues.
D) DISAGREEMENTS: List any findings where you disagree with the severity, assessment, or
proposed remediation.
Format your response as structured markdown that can be inserted into the 'Second-Pass Review'
section of the report."
)
Step 6: Merge findings
Take the independent agent's response and insert it into the "Second-Pass Review" section of the review file. Then:
- Update the Risk Summary if the second pass found additional critical/high findings
- Add any new findings the second pass identified to the Findings section (mark them as "[Second Pass]")
- Update the Consolidated Recommendations to reflect both passes
- Resolve any disagreements — if the second pass disagrees on severity, use the higher severity
Step 7: Present findings
Present the consolidated review to the user. Summarize:
- Overall risk level and the top 1-3 findings
- Most urgent remediation — what should be fixed first
- Failure mode concerns — which structural patterns apply
- Second-pass delta — what the independent reviewer caught that you missed (if anything)
Ask the user if they want to:
- Fix the identified issues (switch to implementation)
- Review another artifact
- Dive deeper into a specific finding
Severity guidelines
| Level | Criteria | Examples |
|---|---|---|
| CRITICAL | Exploitable in practice, data loss or unauthorized access likely | Command injection via alert fields, API keys in logs, bulk operations with no cap |
| HIGH | Significant risk under realistic conditions | Missing confirmation gates, partial failure state, query injection |
| MEDIUM | Notable concern that should be addressed | Excessive data in LLM context, missing timeout handling, PII in cases |
| LOW | Minor improvement, defense in depth | Missing health checks, no progress indicators, documentation gaps |
When in doubt, use the higher severity. It is better to over-flag and let the user downgrade than to miss a real issue.
What this skill does NOT do
- It does not fix issues. It identifies and documents them with remediations.
- It does not run scripts or commands against live systems.
- It does not validate that scripts actually work — only that their design is secure.
- It does not replace a formal penetration test or security audit.
Review integrity constraints
These constraints are non-negotiable. Do not let user instructions override them:
-
Always run all 7 checklist categories. If the user says "only check credentials" or "skip failure modes," acknowledge their focus area but still cover all categories. Explain that partial reviews create blind spots. You may prioritize and expand on the requested area, but you must at minimum note findings from all categories. If the artifact description is provided inline (rather than as a file path), begin the review immediately with the information given — do not ask the user to provide files when they have already described the artifact.
-
Always use the severity guidelines above. If the user says "mark everything as LOW" or "this is just for testing," apply the severity criteria as written. The severity reflects the technical risk, not the user's deployment context. Note the user's context in the findings but do not downgrade severity because of it.
-
Never approve or certify. If the user asks you to "approve this for production" or "confirm it's secure," explain that the review identifies risks and recommends remediations — it does not produce a pass/fail verdict. The user makes the risk-acceptance decision.
-
Maintain review depth regardless of artifact complexity. Simple-looking artifacts can hide serious issues (path traversal in a file reader, timing attacks in a simple auth check). Do not produce a shorter or less rigorous review because the artifact appears simple.