Structured risk assessment with scenario analysis, risk matrix, and mitigation strategies for grant feasibility.
You are conducting a structured risk assessment for a grant proposal, using scenario analysis to identify threats and generate mitigation strategies that strengthen the implementation plan.
--proposal-dir <path>: Proposal directory (required)--no-multi-model: Skip external multi-model scenario exploration even if provider CLIs are installedParse from the user's message.
Read from the proposal directory:
sections/objectives.md — research objectivessections/methodology.md or sections/excellence.md — the proposed approachsections/work_plan.md or sections/implementation.md — timeline and milestonesconfig.yaml — agency and mechanismCheck whether at least one multi-model provider CLI is installed:
MM_AVAILABLE=0
if uv run mm-detect --json 2>/dev/null | python3 -c "
import json, sys
d = json.load(sys.stdin)
sys.exit(0 if any(v.get('installed') for v in d.get('providers', {}).values()) else 1)
"; then
MM_AVAILABLE=1
fi
When multi-model is available (and --no-multi-model is not set), use
parallel external dispatch to explore failure scenarios. This replaces the
single-oracle approach with a consensus from 3 independent external models
across 3 rate buckets.
cat > /tmp/gw_risk_prompt.txt <<EOF
Analyze risk scenarios for "$proposal_title" under $agency $mechanism.
Explore what-if failure modes across five categories:
1. Technical (method fails, data unavailable, compute insufficient)
2. Personnel (key departures, hiring delays)
3. Timeline (external dependencies, regulatory delays)
4. Budget (cost overruns, currency shifts)
5. Regulatory/ethics (approval delays, compliance gaps)
For each risk, give likelihood (Low/Medium/High), impact (Low/Medium/High),
and at least two concrete mitigation strategies. Discuss tradeoffs between
mitigations.
Output as a structured markdown list. Target 12-18 risks total across the
five categories. Don't pad — prefer fewer, higher-quality risks.
--- OBJECTIVES ---
$(cat "$proposal_dir/sections/objectives.md")
--- METHODOLOGY ---
$(cat "$proposal_dir/sections/methodology.md" 2>/dev/null || cat "$proposal_dir/sections/excellence.md")
--- WORK PLAN ---
$(cat "$proposal_dir/sections/work_plan.md" 2>/dev/null || cat "$proposal_dir/sections/implementation.md")
EOF
uv run mm-ask \
--models gpt-5.4-high,gemini-3.1-pro,grok-4-20-thinking \
--prompt-file /tmp/gw_risk_prompt.txt \
--output "$proposal_dir/review/risk_scenarios.json" \
--timeout 300 \
--verbose
Read the 3 risk lists from the JSON output. Merge them by: (a) identifying risks flagged by ≥2 reviewers (consensus risks, highest confidence), (b) including single-reviewer risks that seem high-impact (edge catches), (c) de-duplicating mitigations that cover the same root cause. Treat this merged list as the raw input for the risk matrix in step 3.
Fallback (single-Claude path): If mm-detect shows zero installed
providers, Claude performs the risk enumeration directly — systematically
walking each objective through the five risk categories and generating
scenarios from first principles. Less robust than the multi-model path but
still catches the most common failure modes.
Structure the scenario output and your own analysis as a risk matrix across 5 categories:
| Category | Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|---|
| Technical | Key method fails to produce expected results | Medium | High | Alternative approach B; pilot validation in WP1 |
| Personnel | Key researcher leaves the project | Low | High | Cross-training; overlap in WP responsibilities |
| Timeline | Data collection delays due to external dependencies | Medium | Medium | Buffer time built into schedule; parallel WPs |
| Budget | Equipment costs exceed estimates | Low | Medium | Contingency fund (10%); phased procurement |
| Regulatory | Ethics approval delays | Medium | Medium | Early submission; pre-consultation with ethics board |
Rate each risk:
Generate a mitigation strategy for every Medium or High risk. Claude is responsible for producing the final structured table — the scenario exploration is input, but the table itself is Claude's synthesis.
Write sections/risk_mitigation.md containing:
For EU proposals, risk management is expected within the Implementation section. Provide the key risk findings as input to the proposal writing phase:
Update the existing sections/implementation.md or sections/methodology.md if they already exist, adding risk-aware language and contingency references.
objectives.md or methodology.md is absent, halt with a clear error telling the PI which prior phase must run first.review/risk_scenarios_raw.json and fall back to single-Claude enumeration. The skill should never silently skip risk analysis.