Start with an AI-assisted climate-risk demonstration, route into the relevant
playbook, and only then descend into the open
crc-sdk and
crc-framework implementation.
Each open CRC baseline has a higher-calibre VELO/CDT enterprise twin.
Every completed skill run produces both an immediate visual result and a reusable output bundle: source-of-truth data, an analysis-ready table, spatial data when available, and a report containing a decision table, chart, and map.
- Link
RiskThinking/crc-docsinto an AI tool that can reference repository files - Start with only the skill name; the AI will ask for the minimum information it needs
- Optionally include the target or advanced assumptions you already know
The table uses Codex's $skill-name selector. In ChatGPT, select the skill with
@; in Claude Code, use /skill-name. Plain language such as
Use the crc-screen-mortgage-flood skill is the portable fallback and works
everywhere, with or without a selector.
If your AI tool has no repository connector (for example, you only pasted this repo's URL into a chat with no file access — a bare URL is not enough for most tools to read its contents), ask it to fetch the raw skill file and follow it directly:
Fetch https://raw.githubusercontent.com/RiskThinking/crc-docs/main/.agents/skills/crc-screen-mortgage-flood/SKILL.md
and follow it as your operating instructions for the rest of this conversation.
This works with any tool that has a URL-fetch or browsing capability, Claude
included. Swap in the path to any skill under .agents/skills
(see AGENTS.md for the full list).
Note: to run an enterprise twin, connect the CDT Express MCP server in your AI tool using https://mcp.riskthinking.ai/mcp, complete the VELO OAuth flow, and enable its tools for the chat. Do not paste an API key into the conversation. OpenAI reads the dependency from each enterprise skill's agents/openai.yaml; Claude Code reads the project-level .mcp.json. Each skill discovers the connected tool schemas and guides the relevant read-only calls.
| Decision | Open CRC baseline | VELO/CDT enterprise twin |
|---|---|---|
| Mortgage / collateral | Start: Use $crc-screen-mortgage-flood.Optional: Use $crc-screen-mortgage-flood for Toronto, Canada. |
Start: Use $velo-underwrite-property-climate.Optional: Use $velo-underwrite-property-climate for 392 Markham Street, Toronto. |
| Insurance | Start: Use $crc-model-flood-insurance-loss.Optional: Use $crc-model-flood-insurance-loss for Rotterdam using my attached portfolio and approved depth-damage curve. |
Start: Use $velo-triage-portfolio-insurability.Optional: Use $velo-triage-portfolio-insurability for Example Insurance Holdings. |
| Corporate finance / investment | Start: Use $crc-assess-asset-portfolio-risk.Optional: Use $crc-assess-asset-portfolio-risk for Frankfurt, with flood and drought. |
Start: Use $velo-assess-company-climate-risk.Optional: Use $velo-assess-company-climate-risk for the S&P 500. |
After running both sides for the same real target:
Use $compare-crc-velo-assessments.
The skill will use the paired outputs already in the conversation when they are unambiguous. Advanced users can attach or name the two artifacts explicitly.
The chat response shows a compact, unit-labelled results table and at least one decision-relevant chart. It also shows a map whenever the source contains coordinates or geometry; missing locations are reported rather than invented. Downloadable artifacts retain the full rows and provenance for secondary analysis—typically Parquet or JSON plus CSV, GeoJSON, visual files, and an HTML report. Enterprise artifacts remain private to the authorized workspace.
If you want the AI to choose for you, begin with:
Which CRC/VELO skill should I use for my climate-risk question?
- ChatGPT/Codex: the canonical skills live under
.agents/skills;agents/openai.yamladds OpenAI presentation metadata and the enterprise MCP dependency. - Claude Code:
.claude/skillspoints to the same canonical folders, so the skills are auto-discovered without duplicated playbooks, once this repository is your working directory. The rootCLAUDE.mdimportsAGENTS.md(via@AGENTS.md) so the skill list and invocation conventions load into context automatically too. Approve the project MCP server and use/mcponce to complete VELO OAuth. - Other file-aware agents (Cursor, Aider, Amp, etc.):
AGENTS.mdis the generic entry point most of these tools auto-read from the repository root; it points at the same canonical.agents/skillsfolders. - claude.ai: upload the desired canonical skill folder as a custom Skill and add CDT Express as a custom connector for enterprise runs. Project
.mcp.jsonapplies to Claude Code, not the claude.ai upload. - Any chat-only tool with no repository connector: a bare URL mention does not give most AI tools file access. Use the raw-file fetch prompt above — it works wherever the tool can fetch a URL, regardless of platform.
A bare skill invocation starts a guided intake. The selected SKILL.md owns the
workflow, guardrails, scripts, and safe defaults—including source, bounds,
scenario discovery, and demo configuration—so non-experts are not asked for
technical parameters the AI can determine. Any values supplied by an advanced
user override those defaults when valid. An agent should load the selected
pair—not every skill in the repository—and add the comparison skill only after
both outputs exist.
| Decision | Load these playbooks |
|---|---|
| Mortgage / collateral | crc-screen-mortgage-flood → velo-underwrite-property-climate |
| Insurance | crc-model-flood-insurance-loss → velo-triage-portfolio-insurability |
| Corporate finance / investment | crc-assess-asset-portfolio-risk → velo-assess-company-climate-risk |
| Reconciliation / sales engineering | compare-crc-velo-assessments |
For an open baseline without supplied files, the AI should:
- Resolve and show narrow WGS84 bounds for the requested area.
- Materialize the applicable JRC source through the mature CRC adapter: EFAS for European flood, GloFAS for global flood, or EDO for drought. When no high-level adapter exists, use CRC's Zarr, GeoTIFF/raster, NetCDF, Parquet/Arrow, JSON, DuckDB, H3, and fitting primitives to create a canonical hazard dataset with explicit provenance.
- Query the latest Overture Places STAC release for relevant categories and confidence, filtering candidates to modeled hazard geometry. Preserve the required Overture attribution.
- State that Overture candidates establish geographic locations only—not ownership, portfolio membership, collateral, occupancy, replacement value, or insurable interest. Uncovered or excluded candidates are not “no risk.”
- Read scenario, units, support, and source version from canonical JRC metadata before evaluation; never guess or silently combine them.
The VELO/CDT twins do not need local CSV or Parquet inputs. Prefer the remote
CDT Express MCP server at https://mcp.riskthinking.ai/mcp; its OAuth flow
authorizes access without exposing a CDT key to the AI tool. The skills discover
companies, indices, assets, pathways, and horizons from available tool schemas
and responses. velo-sdk remains a local fallback for capabilities not exposed
by the connected MCP version. Never paste CDT_API_KEY or
RISKTHINKING_API_KEY into a chat or substitute synthetic JSON for live
evidence.
The runner executes the same acquisition path for Cologne: JRC EFAS first, Overture candidates inside modeled coverage second, then the mortgage, insurance-loss, portfolio, and comparison workflows.
uv sync
./ai-playbooks/examples/run-open-demo.shThe first run needs network access and can take several minutes; later runs
reuse the source cache. Generated files land under the gitignored
pipeline_output/ai-playbooks/ directory:
| Output | Meaning |
|---|---|
jrc_depths_by_cell.parquet |
Canonical JRC flood curves with embedded provider, release, pathway, horizon, units, support, and spatial metadata. |
overture-assets.csv |
Covered candidate locations with Overture IDs, names, categories, confidence, release, and attribution. |
mortgage-flood.parquet |
Return-period flood depths at candidate coordinates. |
flood-loss.parquet |
Damage ratios from the explicitly illustrative demo curve—not pricing, reserving, or capital. |
portfolio/flood.parquet |
Per-location CRC flood evaluation. |
comparison-inventory.json |
A file-shape smoke test beside synthetic VELO-shaped JSON—not a live, target-aligned comparison. |
To change the geography, have the AI resolve and show bounds, choose EFAS or GloFAS, and pass both to the runner. For example:
./ai-playbooks/examples/run-open-demo.sh \
glofas -79.42 43.63 -79.36 43.68 \
pipeline_output/ai-playbooks-torontoFor a decision-facing assessment, replace Overture candidates with an authorized asset or exposure export while retaining the canonical hazard acquisition and provenance checks.
CRC provides a transparent, extensible baseline over open or user-authorized data. VELO/CDT adds proprietary asset and ownership intelligence, broader and finer hazard coverage, future pathways and horizons, multi-factor modelling, aggregation, and benchmarks.
The comparison playbook keeps the relationship credible: it aligns common dimensions, labels capability lift, and refuses to equate metrics whose semantics differ. CRC is the target open foundation for an increasing share of the VELO/CDT pipeline; this repository does not claim complete implementation parity.
Use the local environment to inspect provenance, substitute data, tune assumptions, extend a workflow, or understand how a playbook maps to CRC primitives and VELO/CDT calls.
Install the open examples:
uv syncAdd proprietary velo-sdk examples when authorized:
uv sync --extra veloNotebooks expect their working directory to be notebooks/; headless pipelines
run from the repository root:
uv run jupyter lab notebooks/
uv run python pipelines/asset_portfolio_pipeline.pyThese workflows acquire and canonicalize hazard data for a selected geography.
| Notebook | Pipeline twin | What it shows |
|---|---|---|
notebooks/flood_risk_by_province.ipynb |
pipelines/flood_admin_pipeline.py |
EFAS area selection → pinned AOI cache → canonical curves → H3/admin join → Overture places → PMTiles |
notebooks/jrc_global_flood_hazard.ipynb |
pipelines/jrc_flood_pipeline.py |
EFAS/GloFAS selection → pinned AOI cache → fitted curves → return-period evaluation |
notebooks/jrc_edo_drought_index.ipynb |
pipelines/jrc_drought_pipeline.py |
EDO SMI area/year selection → annual-minimum AOI cache → lower-tail curves → support-aware evaluation |
This ordered technical track uses checked-in Cologne fixtures so the core CRC mechanics can be studied offline. Those fixtures are regression and learning inputs; the user-facing AI playbooks above acquire Overture and JRC data.
| # | Notebook | Pipeline twin | What it shows |
|---|---|---|---|
| 1 | notebooks/hurdle_fit_primer.ipynb |
— | Reconstruct a canonical hurdle + sample diagnostics |
| 2 | notebooks/asset_portfolio_evaluation.ipynb |
pipelines/asset_portfolio_pipeline.py |
HazardDataset portfolio return-period evaluation |
| 3 | notebooks/portfolio_impact.ipynb |
pipelines/portfolio_impact_pipeline.py |
Event-aligned PiecewiseLinearImpact → damage ratio and derived currency damage |
| 4 | notebooks/portfolio_risk_metrics.ipynb |
pipelines/portfolio_risk_pipeline.py |
Microscores → portfolio VaR / CVaR + attribution |
| 5 | notebooks/multi_scenario_portfolio.ipynb |
pipelines/multi_scenario_pipeline.py |
Historical vs transparent local tail stresses in one evaluation |
Change the geography, portfolio, canonical hazard input, impact function, or scenario assumptions while preserving provenance, units, probability semantics, coverage diagnostics, and non-equivalence warnings.
These are specialist references rather than required reading for a first run:
- Product strategy: open foundation, enterprise lift, and domain prioritization.
- Capability matrix: verified open and proprietary surfaces plus important non-equivalences.
- Gap backlog: low-hanging CRC and VELO/CDT workflow improvements.
- Dogfood verification: target flexibility, regression coverage, and live open-bootstrap evidence.
Cached notebook outputs under notebooks/data/ and pipeline outputs under
pipeline_output/ are gitignored. GitHub cannot execute notebook JavaScript, so
locally executed Plotly figures include a static PNG fallback through Kaleido.