Skip to main content

risk-assessment

Security risk identification and analysis

Source facts

Repository
ffsshhttiikk/opencode-agents-skills
Last source activity
February 28, 2026 at 22:54
Detected SKILL.md language
English
Stars
3
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
risk-assessment
description
Security risk identification and analysis
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"security"}
## What I do - Identify and categorize security risks - Assess likelihood and impact of threats - Prioritize risks for remediation - Recommend mitigation strategies - Track risk over time - Quantify risk in business terms ## When to use me When evaluating security posture, planning security improvements, or conducting risk assessments for compliance. ## Risk Assessment Framework ### Risk Model ```python from enum import Enum from datetime import datetime class Likelihood(Enum): RARE = 1 UNLIKELY = 2 POSSIBLE = 3 LIKELY = 4 CERTAIN = 5 class Impact(Enum): NEGLIGIBLE = 1 MINOR = 2 MODERATE = 3 MAJOR = 4 CATASTROPHIC = 5 class RiskLevel(Enum): LOW = "low" MEDIUM = "medium" HIGH = "high" CRITICAL = "critical" class Risk: def __init__(self, id: str, name: str, description: str): self.id = id self.name = name self.description = description self.likelihood = None self.impact = None self.current_controls = [] self.residual_risk = None self.treated_risk = None def calculate_risk_level(self) -> RiskLevel: score = self.likelihood.value * self.impact.value if score >= 16: return RiskLevel.CRITICAL elif score >= 10: return RiskLevel.HIGH elif score >= 5: return RiskLevel.MEDIUM else: return RiskLevel.LOW def calculate_residual_risk(self) -> int: """Risk after current controls""" base_score = self.likelihood.value * self.impact.value control_effectiveness = sum(c.effectiveness for c in self.current_controls) reduction = min(control_effectiveness * 2, 80) # Max 80% reduction return int(base_score * (100 - reduction) / 100) ``` ### Risk Assessment Process ```python class RiskAssessment: def __init__(self, name: str): self.name = name self.created_at = datetime.now() self.risks = [] self.assets = [] def add_asset(self, asset_id: str, name: str, value: str, classification: str): """Register an asset to protect""" self.assets.append({ "id": asset_id, "name": name, "value": value, "classification": classification, "dependencies": [] }) def identify_risks(self) -> list: """Systematic risk identification""" risk_categories = [ "Physical Security", "Network Security", "Application Security", "Data Security", "Operational Security", "Business Continuity" ] for category in risk_categories: risks = self._identify_category_risks(category) self.risks.extend(risks) return self.risks def _identify_category_risks(self, category: str) -> list: """Category-specific risk identification""" templates = { "Application Security": [ ("R01", "SQL Injection", "Unsanitized database queries"), ("R02", "XSS Attack", "Unescaped user output"), ("R03", "CSRF", "Missing token validation"), ("R04", "Authentication Bypass", "Weak auth mechanisms"), ], "Data Security": [ ("R05", "Data Breach", "Unauthorized data access"), ("R06", "Data Loss", "Accidental or malicious deletion"), ("R07", "Data Exfiltration", "Unauthorized data transfer"), ] } risks = [] for risk_id, name, desc in templates.get(category, []): risk = Risk(risk_id, name, desc) risks.append(risk) return risks def assess_risk(self, risk_id: str, likelihood: Likelihood, impact: Impact): """Assess individual risk""" for risk in self.risks: if risk.id == risk_id: risk.likelihood = likelihood risk.impact = impact risk.residual_risk = risk.calculate_residual_risk() return risk raise ValueError(f"Risk {risk_id} not found") def prioritize_risks(self) -> list: """Sort risks by severity""" return sorted(self.risks, key=lambda r: r.calculate_risk_level().value, reverse=True) ``` ### Risk Treatment ```python class RiskTreatment: def __init__(self): self.treatments = [] def recommend_treatment(self, risk: Risk) -> dict: """Recommend mitigation strategy""" risk_level = risk.calculate_risk_level() if risk_level == RiskLevel.CRITICAL: treatment = "mitigate" timeline = "immediate" options = [ "Implement preventive controls", "Deploy detection mechanisms", "Transfer risk through insurance" ] elif risk_level == RiskLevel.HIGH: treatment = "mitigate" timeline = "within 30 days" options = [ "Enhance existing controls", "Add monitoring", "Implement compensating controls" ] elif risk_level == RiskLevel.MEDIUM: treatment = "accept" # with monitoring timeline = "within 90 days" options = [ "Accept with monitoring", "Implement partial mitigation" ] else: treatment = "accept" timeline = "as scheduled" options = ["Accept risk"] return { "risk_id": risk.id, "recommended_treatment": treatment, "timeline": timeline, "options": options, "cost_benefit": self._calculate_cost_benefit(risk, options) } def _calculate_cost_benefit(self, risk: Risk, options: list) -> dict: """Analyze cost vs benefit of treatment""" annual_loss_expectancy = self._calculate_ALE(risk) return { "annual_loss_expectancy": annual_loss_expectancy, "mitigation_cost": 0, # Calculate actual cost "roi": 0 # Return on investment } def _calculate_ALE(self, risk: Risk) -> int: """Annual Loss Expectancy = Likelihood * Impact""" return risk.likelihood.value * risk.impact.value * 10000 ``` ### Continuous Risk Monitoring ```python class RiskMonitor: def __init__(self): self.risk_register = {} def track_risk(self, risk: Risk): """Track risk over time""" if risk.id not in self.risk_register: self.risk_register[risk.id] = [] self.risk_register[risk.id].append({ "timestamp": datetime.now(), "likelihood": risk.likelihood, "impact": risk.impact, "residual_risk": risk.residual_risk, "controls": risk.current_controls }) def detect_risk_change(self, risk_id: str) -> dict: """Detect significant risk changes""" history = self.risk_register.get(risk_id, []) if len(history) < 2: return {"changed": False} current = history[-1] previous = history[-2] if current["residual_risk"] > previous["residual_risk"] * 1.2: return { "changed": True, "direction": "increasing", "delta": current["residual_risk"] - previous["residual_risk"] } return {"changed": False} def generate_risk_report(self) -> dict: """Generate risk status report""" return { "total_risks": len(self.risk_register), "critical_risks": 0, "high_risks": 0, "risk_trends": "stable", "recommendations": [] } ```
View on GitHub