csml-rpi/ai-cfd-scientist/cfd-interpret
Claude Code and agent skill by csml-rpi/ai-cfd-scientist
- community
Checking that the SKILL.md file is still in the repository.
Per-case decision agent — PROCEED, REVISE, or RERUN. Reads run_result.json + diagnostic figures, judges physics plausibility through a vision-LLM pass, returns decision.json. Self-contained — embeds ResultsInterpreterAgent.interpretation_* and vision_* prompts verbatim.
Install
npx vskill@latest install csml-rpi/ai-cfd-scientist/cfd-interpretSKILL.md
cfd-interpret
⚠ HARD STOP — read this before any other step
If <case_dir>/figs/ does not contain at least one .png, STOP. The orchestrator chain enters this skill only after cfd-viz mode=interpret has produced per-case PyVista renders. Return to Skill cfd-skills/cfd-viz with mode=interpret case_dir=<case_dir>, then come back. Authoring decision.json from run_result.json + numerics alone is forbidden — vision-LLM judgment over rendered flow fields is the entire point of this skill.
After cfd-experiment runs a case, decide whether the result is acceptable, needs a tweaked rerun (numerical), or needs the requirement revised (physics).
Inputs
out-dir(required)case_id(required)- Implicit:
<case_dir>/run_result.json,<case_dir>/figs/*.png. `figs/` is a HARD precondition — the skill MUST invokecfd-viz mode=interpretfirst whenfigs/is empty, and MUST hard-fail withRERUNif viz can't produce figures. Numerics-only verdicts are forbidden. See "Hard preconditions" section below.
Output
<case_dir>/decision.json:
Decision rules
- PROCEED — physics looks sensible, requirement is satisfied. Examples: separation in expected location, residuals converged, y+ in target range, fields look smooth.
- REVISE — flow is unphysical or violates the requirement (reattachment far off, pressure profile wrong, mass not conserved, geometry/scenario in figures doesn't match what the requirement asked for). Action: regenerate the requirement (
cfd-requirementsstyle) and rerun. - RERUN — numerical issue despite valid physics: timeout, divergence, NaN, oscillating residuals. Action: apply CFL-aware tweak in
cfd-experiment, keep physics identical, rerun.
Hard preconditions (skill-mode enforcement)
This skill is vision-first. The embedded interpretation_* prompts below are multimodal — they expect rendered case figures attached to the LLM call as image inputs. Authoring a `decision.json` from numerics alone (residuals, log tail, extracted metrics) is forbidden.
Hard rules:
- `<case_dir>/figs/` MUST contain at least one `.png` before this skill writes `decision.json`. If
figs/is empty or missing, the skill MUST invokecfd-viz mode=interpretfirst (Step 1 below) and only proceed to Step 2 once at least one figure exists. - If `cfd-viz mode=interpret` returns without producing any PNG, hard-fail with
decision.json: {"status": "RERUN", "reason": "viz failed — cannot interpret without figures", "viz_failed": true, "no_figures": true}. Do NOT silently fall back to a numerics-only verdict. A numerics-only judgment is a different (weaker) check; it cannot stand in for the vision-LLM check this skill is for. - If the vision-LLM call (Step 3 below) cannot be made (e.g. provider down, auth missing):
decision.json: {"status": "RERUN", "reason": "vision-LLM call failed; retry when provider is healthy", "vision_call_failed": true}. Same principle — don't fabricate a verdict from text outputs.
These rules close the failure mode where a clean-converging RANS run gets a textual PROCEED on residuals alone, bypassing the geometry/scenario / unphysical-recirculation / wrong-patch-sampling / y+-violation checks that the vision pass is the only place to catch.
Recipe (primary, agent-driven)
Step 1 — Ensure figures (HARD PRECONDITION)
Mandatory before Step 2. Check <case_dir>/figs/:
- If it contains zero
.pngfiles (or doesn't exist), invoke `cfd-viz mode=interpret` before continuing:
``text /cfd-viz out-dir=<out-dir> mode=interpret case_dir=<case_dir> ``
- After
cfd-vizreturns, re-check<case_dir>/figs/. If still empty, apply hard rule #2 above (writeRERUNdecision.json withviz_failed=trueand stop).
cfd-viz mode=interpret produces 5–8 diagnostic PNGs sufficient for the vision-LLM physics check (mesh overview + zoomed near-wall, U-magnitude contour at latest time, pressure contour at latest time, streamlines on midplane, y+ map on no-slip walls, residual history). The PyVista call ensures these are real flow-field renders, not metrics-derived gnuplot plots.
Step 2 — Assemble context
Read:
- The case's
user_requirement_text(from<out-dir>/requirements.jsonlookup bycase_id, or from the requirement that drove the run if mesh-gate / OED). <case_dir>/run_result.json— status, error_logs, loop_count, wall_time.- The last 50 lines of
<case_dir>/log.<solver>(residual history). - The list of figure paths in
<case_dir>/figs/.
Step 3 — Vision-LLM call (interpretation prompts)
Use the embedded prompts below verbatim. They are exact copies of ResultsInterpreterAgent.interpretation_* in prompts/prompts.yaml.
System prompt (from prompts/prompts.yaml: ResultsInterpreterAgent.interpretation_system_prompt)
User prompt (from prompts/prompts.yaml: ResultsInterpreterAgent.interpretation_user_prompt)
Render with {user_requirement} = the case's full requirement text. Attach all images from <case_dir>/figs/*.png as multimodal inputs to the LLM call.
Step 4 — Optional deep vision pass
For tricky cases (run completed but interpretation is ambiguous, or the user is generating a paper and needs richer per-case analysis), follow up with the deeper vision-analyzer prompt below. This produces a structured per-figure flow-field analysis used by cfd-paper's Writer for narrative content. Use it only when:
- The interpretation step returned
requirement_met=trueANDsimulation_success=true(so we want to enrich, not block). - The downstream caller is
cfd-analyzeorcfd-paper. - Otherwise skip; the basic interpretation prompts above are sufficient for the PROCEED/REVISE/RERUN decision.
System prompt (from prompts/prompts.yaml: ResultsInterpreterAgent.vision_system_prompt)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingcfd-skills/cfd-interpret/SKILL.md
Popularity
- Repository stars
- 51
- Repository forks
- 6
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/csml-rpi/ai-cfd-scientist/cfd-interpret)