Risk Assessment
Risk assessment ensures that a project team anticipates threats before they
materialize. This skill covers the full lifecycle: identifying risks across
five standard categories, scoring them on a probability × impact matrix to
derive severity, assigning mitigation owners, and maintaining a living
Markdown risk register. Rigorous risk assessment prevents surprise failures
and ensures a contingency is ready when things go wrong.
When to Use This Skill
- A plan is being created or updated and needs a
## Risks section populated.
- An existing plan has no or incomplete risk coverage.
- A project milestone is approaching and a formal risk review is needed.
- A new technical, schedule, resource, or external change has been introduced.
- A risk has materialized and the response plan must be activated.
- A stakeholder asks: "What could go wrong and what are we doing about it?"
Prerequisites
- A clear understanding of the project's goal, scope, and constraints.
- The task list and dependency map from the plan (used to identify schedule risks).
- Knowledge of the technology stack and team capabilities.
- A list of known external dependencies: third-party APIs, vendors, regulations, and cloud services.
Step-by-Step Workflow
Step 1: Brainstorm Risks Across All Five Categories
Generate risks by systematically scanning each category. Target at least 2–3 risks per category.
| Category |
Example Risks to Consider |
| Schedule |
Key engineer unavailable; dependency arrives late; task durations underestimated |
| Technical |
Third-party API breaking change; chosen library lacks a needed feature; performance bottleneck |
| Resource |
Budget reduction; team member departure; required hardware unavailable |
| External |
Regulatory change; customer requirement change mid-project; vendor discontinues a service |
| Quality |
Insufficient test coverage; integration failures discovered late; undetected security vulnerability |
Brainstorming techniques:
- Assumption inversion: List every assumption the plan makes, then invert it.
Example: "We assume the payment API is stable" → Risk: "Payment API deprecates the v2 endpoints mid-development."
- Pre-mortem: Imagine the project failed — what went wrong? List those causes as risks.
- Dependency scan: Review every external dependency in the task list. Each one is a potential risk source.
Step 2: Classify Risks with a Probability × Impact Matrix
Score each risk independently on two dimensions:
- Probability: How likely is this to occur? (Low / Medium / High)
- Impact: How severe would the consequence be if it occurs? (Low / Medium / High)
Derive Severity using this matrix:
|
Low Impact |
Medium Impact |
High Impact |
| High Probability |
Medium |
High |
High |
| Medium Probability |
Low |
Medium |
High |
| Low Probability |
Low |
Low |
Medium |
Severity response levels:
- High: Requires a mitigation plan, a contingency plan, and weekly monitoring.
- Medium: Requires a mitigation plan and bi-weekly check.
- Low: Document and monitor monthly; accept if mitigation cost exceeds probable impact.
Step 3: Write Mitigation Plans
For every risk with severity Medium or High, write an explicit mitigation strategy. A mitigation:
- Is a proactive action that reduces probability or impact before the risk occurs.
- Names an owner role responsible for executing it.
- Is stated in one concrete action sentence.
Template:
"To reduce the [likelihood/impact] of [risk], [owner] will [specific action] by [date or milestone]."
Examples:
- "To reduce the likelihood of API breakage, DevOps will pin the third-party API to a specific version tag and add changelog monitoring by Sprint 1."
- "To reduce the impact of a key engineer being unavailable, the Tech Lead will ensure all critical modules have a second engineer who has reviewed the code by the end of Sprint 2."
Step 4: Write Contingency Plans
A contingency plan is the reactive response executed if the risk materializes despite mitigation. It answers: "If this happens, what do we do next?"
Template:
"If [risk event] occurs, [owner] will [specific response action], targeting [recovery outcome] within [timeframe]."
Examples:
- "If the auth API breaks in production, DevOps will activate the cached fallback endpoint and the Backend Dev will evaluate migration to the backup provider within 2 business days."
- "If the key engineer is unavailable for more than 3 days, the Project Lead will redistribute tasks T07–T10 to the secondary engineer per the pre-agreed contingency assignments."
Step 5: Format the Risk Register
Document all risks in the standard Markdown risk register table:
## Risks
| ID | Category | Risk Description | Probability | Impact | Severity | Mitigation | Owner |
|-----|-----------|----------------------------------------------------|-------------|--------|----------|-----------------------------------------------------------|-------------|
| R01 | Technical | Third-party auth API breaking change breaks /login | Medium | High | High | Pin API to v2.3.1; monitor changelog weekly | DevOps |
| R02 | Schedule | Integration test phase underestimated, delays ship | High | Medium | High | Add 20% buffer to test estimates; daily standups in S3 | Tech Lead |
| R03 | Resource | Key backend engineer unavailable during Sprint 2 | Low | High | Medium | Cross-train secondary engineer on auth module by end S1 | Tech Lead |
| R04 | External | Security vulnerability in JWT library | Low | High | Medium | Subscribe to CVE alerts; monthly dependency review | Backend Dev |
| R05 | Quality | Insufficient coverage leads to production bug | Medium | Medium | Medium | Enforce 80% coverage gate in CI; QA review pre-deploy | QA Engineer |
Column rules:
ID: Sequential, prefix R + zero-padded two-digit number: R01, R02.
Category: ONE of: Schedule, Technical, Resource, External, Quality.
Probability, Impact, Severity: Each must be Low, Medium, or High.
Mitigation: Required for Medium and High severity. One action sentence.
Owner: Role title. Never TBD.
Step 6: Prioritize and Schedule Reviews
- Sort the risk register by Severity descending (High first, then Medium, then Low).
- For every High-severity risk, verify both a mitigation and contingency plan exist.
- Assign a review cadence: High = weekly, Medium = bi-weekly, Low = monthly.
- Add a "Risk Review" milestone to the plan's
## Milestones section with the first review date.
Examples
Good Pattern — Complete Risk Register Entry
| R01 | Technical | Third-party auth API breaking change breaks /login | Medium | High | High | Pin API to v2.3.1; monitor changelog weekly | DevOps |
- Risk is specific and linked to a concrete technical decision.
- Probability and Impact are independently scored (not both defaulted to High).
- Severity is correctly derived: Medium probability × High impact = High.
- Mitigation is proactive — a specific version pin and changelog subscription.
- Owner is a named role, not "TBD".
Bad Pattern — Incomplete Risk Register Entry
| R01 | General | Something could go wrong with the API | High | High | High | Monitor it | TBD |
Problems:
- "Something could go wrong" is not actionable — the team cannot mitigate a vague risk.
- "Monitor it" is observation, not mitigation.
- Owner is "TBD" — nobody will act on this.
- Both Probability and Impact defaulted to High without analysis.
Fix: Name the specific API, state the specific failure mode, write a precise proactive action with a target date, and assign a named owner role.
Troubleshooting
| Symptom |
Cause |
Fix |
| Risk register has "TBD" in mitigation columns |
Risk identified but not analyzed |
Block plan finalization until every High-severity risk has a completed mitigation row |
| All risks rated High severity |
Matrix not applied consistently |
Re-score each risk independently; Low-probability events are rarely High severity |
| Same risk listed twice |
Brainstorming produced duplicates |
Merge duplicates; distinguish by failure mode only if they are genuinely different scenarios |
| Mitigation strategies are vague ("monitor closely") |
Owner has not committed to a specific action |
Rewrite each mitigation as: action verb + specific artifact + owner + deadline |
| Risk register never updated after initial creation |
No review cadence established |
Add a recurring "Risk Review" milestone to the plan with a specific date |
References
1---2name: risk-assessment3description: Use when identifying, classifying, and mitigating project risks. Covers the full risk management workflow: brainstorming risks across five categories, scoring them on a probability × impact matrix, writing proactive mitigation strategies, reactive contingency plans, and maintaining a Markdown risk register.4---56# Risk Assessment78Risk assessment ensures that a project team anticipates threats before they9materialize. This skill covers the full lifecycle: identifying risks across10five standard categories, scoring them on a probability × impact matrix to11derive severity, assigning mitigation owners, and maintaining a living12Markdown risk register. Rigorous risk assessment prevents surprise failures13and ensures a contingency is ready when things go wrong.1415## When to Use This Skill1617- A plan is being created or updated and needs a `## Risks` section populated.18- An existing plan has no or incomplete risk coverage.19- A project milestone is approaching and a formal risk review is needed.20- A new technical, schedule, resource, or external change has been introduced.21- A risk has materialized and the response plan must be activated.22- A stakeholder asks: "What could go wrong and what are we doing about it?"2324## Prerequisites2526- A clear understanding of the project's goal, scope, and constraints.27- The task list and dependency map from the plan (used to identify schedule risks).28- Knowledge of the technology stack and team capabilities.29- A list of known external dependencies: third-party APIs, vendors, regulations, and cloud services.3031## Step-by-Step Workflow3233### Step 1: Brainstorm Risks Across All Five Categories3435Generate risks by systematically scanning each category. Target at least 2–3 risks per category.3637| Category | Example Risks to Consider |38|--------------|---------------------------|39| **Schedule** | Key engineer unavailable; dependency arrives late; task durations underestimated |40| **Technical**| Third-party API breaking change; chosen library lacks a needed feature; performance bottleneck |41| **Resource** | Budget reduction; team member departure; required hardware unavailable |42| **External** | Regulatory change; customer requirement change mid-project; vendor discontinues a service |43| **Quality** | Insufficient test coverage; integration failures discovered late; undetected security vulnerability |4445**Brainstorming techniques:**4647- **Assumption inversion**: List every assumption the plan makes, then invert it.48 Example: "We assume the payment API is stable" → Risk: "Payment API deprecates the v2 endpoints mid-development."49- **Pre-mortem**: Imagine the project failed — what went wrong? List those causes as risks.50- **Dependency scan**: Review every external dependency in the task list. Each one is a potential risk source.5152### Step 2: Classify Risks with a Probability × Impact Matrix5354Score each risk independently on two dimensions:5556- **Probability**: How likely is this to occur? (Low / Medium / High)57- **Impact**: How severe would the consequence be if it occurs? (Low / Medium / High)5859Derive **Severity** using this matrix:6061| | **Low Impact** | **Medium Impact** | **High Impact** |62|-----------------------|---------------|-------------------|-----------------|63| **High Probability** | Medium | High | High |64| **Medium Probability**| Low | Medium | High |65| **Low Probability** | Low | Low | Medium |6667**Severity response levels:**68- **High**: Requires a mitigation plan, a contingency plan, and weekly monitoring.69- **Medium**: Requires a mitigation plan and bi-weekly check.70- **Low**: Document and monitor monthly; accept if mitigation cost exceeds probable impact.7172### Step 3: Write Mitigation Plans7374For every risk with severity **Medium** or **High**, write an explicit mitigation strategy. A mitigation:7576- Is a **proactive action** that reduces probability or impact **before** the risk occurs.77- Names an **owner** role responsible for executing it.78- Is stated in one concrete action sentence.7980**Template:**81> "To reduce the [likelihood/impact] of [risk], [owner] will [specific action] by [date or milestone]."8283**Examples:**84- "To reduce the likelihood of API breakage, DevOps will pin the third-party API to a specific version tag and add changelog monitoring by Sprint 1."85- "To reduce the impact of a key engineer being unavailable, the Tech Lead will ensure all critical modules have a second engineer who has reviewed the code by the end of Sprint 2."8687### Step 4: Write Contingency Plans8889A contingency plan is the **reactive response** executed if the risk materializes despite mitigation. It answers: "If this happens, what do we do next?"9091**Template:**92> "If [risk event] occurs, [owner] will [specific response action], targeting [recovery outcome] within [timeframe]."9394**Examples:**95- "If the auth API breaks in production, DevOps will activate the cached fallback endpoint and the Backend Dev will evaluate migration to the backup provider within 2 business days."96- "If the key engineer is unavailable for more than 3 days, the Project Lead will redistribute tasks T07–T10 to the secondary engineer per the pre-agreed contingency assignments."9798### Step 5: Format the Risk Register99100Document all risks in the standard Markdown risk register table:101102```markdown103## Risks104105| ID | Category | Risk Description | Probability | Impact | Severity | Mitigation | Owner |106|-----|-----------|----------------------------------------------------|-------------|--------|----------|-----------------------------------------------------------|-------------|107| R01 | Technical | Third-party auth API breaking change breaks /login | Medium | High | High | Pin API to v2.3.1; monitor changelog weekly | DevOps |108| R02 | Schedule | Integration test phase underestimated, delays ship | High | Medium | High | Add 20% buffer to test estimates; daily standups in S3 | Tech Lead |109| R03 | Resource | Key backend engineer unavailable during Sprint 2 | Low | High | Medium | Cross-train secondary engineer on auth module by end S1 | Tech Lead |110| R04 | External | Security vulnerability in JWT library | Low | High | Medium | Subscribe to CVE alerts; monthly dependency review | Backend Dev |111| R05 | Quality | Insufficient coverage leads to production bug | Medium | Medium | Medium | Enforce 80% coverage gate in CI; QA review pre-deploy | QA Engineer |112```113114**Column rules:**115- `ID`: Sequential, prefix `R` + zero-padded two-digit number: `R01`, `R02`.116- `Category`: ONE of: `Schedule`, `Technical`, `Resource`, `External`, `Quality`.117- `Probability`, `Impact`, `Severity`: Each must be `Low`, `Medium`, or `High`.118- `Mitigation`: Required for Medium and High severity. One action sentence.119- `Owner`: Role title. Never `TBD`.120121### Step 6: Prioritize and Schedule Reviews1221231. Sort the risk register by Severity descending (High first, then Medium, then Low).1242. For every High-severity risk, verify both a mitigation and contingency plan exist.1253. Assign a review cadence: High = weekly, Medium = bi-weekly, Low = monthly.1264. Add a "Risk Review" milestone to the plan's `## Milestones` section with the first review date.127128## Examples129130### Good Pattern — Complete Risk Register Entry131132```markdown133| R01 | Technical | Third-party auth API breaking change breaks /login | Medium | High | High | Pin API to v2.3.1; monitor changelog weekly | DevOps |134```135136- Risk is specific and linked to a concrete technical decision.137- Probability and Impact are independently scored (not both defaulted to High).138- Severity is correctly derived: Medium probability × High impact = **High**.139- Mitigation is proactive — a specific version pin and changelog subscription.140- Owner is a named role, not "TBD".141142### Bad Pattern — Incomplete Risk Register Entry143144```markdown145| R01 | General | Something could go wrong with the API | High | High | High | Monitor it | TBD |146```147148Problems:149- "Something could go wrong" is not actionable — the team cannot mitigate a vague risk.150- "Monitor it" is observation, not mitigation.151- Owner is "TBD" — nobody will act on this.152- Both Probability and Impact defaulted to High without analysis.153154**Fix**: Name the specific API, state the specific failure mode, write a precise proactive action with a target date, and assign a named owner role.155156## Troubleshooting157158| Symptom | Cause | Fix |159|---------|-------|-----|160| Risk register has "TBD" in mitigation columns | Risk identified but not analyzed | Block plan finalization until every High-severity risk has a completed mitigation row |161| All risks rated High severity | Matrix not applied consistently | Re-score each risk independently; Low-probability events are rarely High severity |162| Same risk listed twice | Brainstorming produced duplicates | Merge duplicates; distinguish by failure mode only if they are genuinely different scenarios |163| Mitigation strategies are vague ("monitor closely") | Owner has not committed to a specific action | Rewrite each mitigation as: action verb + specific artifact + owner + deadline |164| Risk register never updated after initial creation | No review cadence established | Add a recurring "Risk Review" milestone to the plan with a specific date |165166## References167168- ISO 31000:2018 — Risk Management Guidelines.169- PMI PMBOK Guide, 7th Edition, Chapter 11 — Project Risk Management.170- OWASP Risk Rating Methodology (for software-specific technical risks): https://owasp.org/www-community/OWASP_Risk_Rating_Methodology