К основному содержанию
скилл CX Codex

simulation-failure-triage — скилл для Claude Code

Классифицирует сбой симуляции LAMMPS, VASP, QE или MOOSE и предлагает план повторных запусков по одному изменению за раз.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add HeshamFS/materials-simulation-skills --skill simulation-failure-triage -a claude-code
Открыть на GitHub

Что делает simulation-failure-triage

Скилл включается первым делом, когда расчёт упал или ведёт себя странно. Он разбирает сигнатуру сбоя: расходимость, NaN/Inf, взрыв энергии, неустойчивый шаг по времени, скачок давления, отсутствующий потенциал или псевдопотенциал, нехватка памяти, падение процесса, битый вывод, незавершённый прогон. На выходе — вероятные причины, немедленные действия, лестница повторных попыток и условия остановки.

Внутри один скрипт scripts/failure_triage.py. Ему передают код, стадию, симптомы, недавнее изменение и текст лога. Нужен Python 3.10+, внешних зависимостей нет, работает на Linux, macOS и Windows. Логи и входные файлы сохраняются до перезапуска — иначе исходный сбой не воспроизвести.

Повторные попытки идут строго по одному изменению на ступень. Если менять шаг, предобусловливатель и баростат сразу, результат начинает зависеть от произвольных стабилизаций — это прямое условие остановки. Разбор только возвращает расчёт в работу; проверку сохранения величин и физических границ скилл не делает, для этого есть simulation-validator.

Какие задачи решает

  • понять, почему расчёт упал с NaN или Inf
  • отличить ошибку настройки от численной неустойчивости
  • сохранить логи и входные файлы до перезапуска
  • подобрать одно изменение вместо пачки правок сразу
  • вовремя остановить перебор, когда результат теряет смысл

Примеры запросов агенту

  • Разбери падение LAMMPS: симптомы nan,pressure-blowup, недавно увеличил шаг по времени
  • Почему VASP упал с ZBRENT — вот лог, что делать дальше?
  • Прогон MOOSE убит по памяти, собери лестницу повторных попыток

Как установить simulation-failure-triage

1Через Skills CLI (Vercel)

npx skills add HeshamFS/materials-simulation-skills --skill simulation-failure-triage -a claude-code

2Вручную: положить файлы

~/.claude/skills/simulation-failure-triage/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/simulation-failure-triage/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о simulation-failure-triage

Как установить simulation-failure-triage в Claude Code?

Выполните npx skills add HeshamFS/materials-simulation-skills --skill simulation-failure-triage -a claude-code. Скилл окажется в ~/.claude/skills/simulation-failure-triage/SKILL.md.

Что делает simulation-failure-triage?

Определяет тип сбоя симуляции и выдаёт вероятные причины, немедленные действия, лестницу повторных запусков и условия остановки. Это первая реакция на упавший или подозрительный прогон.

Чем он отличается от simulation-validator?

Этот скилл только восстанавливает выполнение расчёта. Проверку сохранения величин, физических границ и вопрос «можно ли доверять числам» решает simulation-validator.

Исходный текст

SKILL.md · Apache-2.0
---
name: simulation-failure-triage
description: >
  First-response triage for cross-code (LAMMPS/VASP/QE/MOOSE) simulation
  failures: classifies the failure signature (nonconvergence, NaN/Inf,
  exploding energy, unstable timestep, pressure blow-up, missing
  potentials/pseudopotentials, memory exhaustion, process crash/segfault,
  corrupted output, incomplete runs) and proposes a SAFE one-change-at-a-time
  RETRY LADDER with explicit STOP CONDITIONS, prioritizing evidence
  preservation. Use as the immediate first response to a failed or suspicious
  run. For deep per-stage validation, conservation/physical-bounds checks, and
  "can I trust these results" analysis, defer to the simulation-validator skill.
allowed-tools: Read, Bash, Write, Grep, Glob
metadata:
  last_deterministic_eval: "2026-10-20"
  agent_evaluation_status: "not_revalidated"
  author: HeshamFS
  standards:
    - "SchedMD Slurm sbatch specification (--mem / --mem-per-cpu memory request flags)"
    - "POSIX signal semantics (SIGSEGV / signal 11, core dump) for crash classification"
    - "GNU GDB, Valgrind, and AddressSanitizer (ASan) memory-fault debugging tools"
    - "LAMMPS / VASP / Quantum ESPRESSO / MOOSE solver error diagnostics (e.g. 'Lost atoms', ZBRENT nonconvergence)"
    - "Zeller (2009), Why Programs Fail: delta debugging / one-change-at-a-time minimal reproducing case"
  version: "1.1.3"
  security_tier: high
  security_reviewed: true
  tested_with:
    - claude-code
  last_evaluated: "2026-06-23"
  eval_cases: 3
  last_reviewed: "2026-06-24"
---

# Simulation Failure Triage

## Goal

Classify common simulation failure signatures and return immediate actions, retry ladders, and stop conditions.

## Requirements

- Python 3.10+
- No external dependencies
- Works on Linux, macOS, and Windows

## Inputs to Gather

| Input | Description | Example |
|-------|-------------|---------|
| Code | Simulation code | `LAMMPS`, `VASP`, `MOOSE`, `QE` |
| Stage | Setup, runtime, postprocess | `runtime` |
| Symptoms | Failure signs | `nan,pressure-blowup` |
| Log text or file | Error evidence | `Lost atoms`, `ZBRENT` |
| Recent change | Last modified setting | `larger timestep` |

## Decision Guidance

- First preserve evidence: logs, inputs, executable version, and scheduler output.
- Separate setup errors from numerical instability and physical model issues.
- Retry with a single controlled change.
- Stop retrying when the result becomes scientifically meaningless or a required model input is missing.

## Script Outputs

`scripts/failure_triage.py` emits:

- `likely_causes`
- `immediate_actions`
- `retry_ladder`
- `stop_conditions`
- `evidence`

## Workflow

```bash
python3 skills/robustness/simulation-failure-triage/scripts/failure_triage.py \
  --code LAMMPS \
  --stage runtime \
  --symptoms nan,pressure-blowup \
  --recent-change "increased timestep" \
  --json
```

## Error Handling

Invalid stages or oversized log files stop with exit code 2. Unknown symptoms are retained as custom evidence.

## Limitations

This skill gives first-response triage. It does not guarantee that a failed simulation can be repaired.

## Verification checklist

- [ ] Recorded the preserved-evidence set BEFORE any rerun: copied logs, input decks, scheduler output, and the executable/version string (per the first `immediate_actions` item) so the original failure is reproducible.
- [ ] Quoted the FIRST warning/error from the run, not just the final crash line, and confirmed `evidence.log_excerpt` (first 500 chars, original casing) captures it; re-run with `--log-file`/`--log-text` if the excerpt misses the root signature.
- [ ] Logged every `likely_causes` entry with its `symptom`, `category`, and `first_action`, and verified no real signature landed in the `category: custom` bucket because its keyword was absent from `LOG_HINTS`/`PATTERNS`.
- [ ] Confirmed the failure category is correct rather than mislabeled: a segfault/SIGSEGV/signal 11/core-dumped maps to `crash` (not `corrupted-output`), and an OOM/`bad_alloc`/`oom-kill` maps to `out-of-memory` (not `incomplete-run`).
- [ ] Applied the `retry_ladder` strictly one change at a time, recording the single parameter changed and its effect at each rung (including the memory rung when memory-bound).
- [ ] Checked every `stop_conditions` entry and halted the retry loop instead of stacking arbitrary stabilizing tweaks when any condition is met (e.g. unverifiable potential/pseudopotential, results dependent on arbitrary stabilizers).
- [ ] After any numerical recovery, handed off to the `simulation-validator` skill for conservation / physical-bounds / "can I trust these results" checks rather than declaring success here.

## Common pitfalls & rationalizations

| Tempting shortcut | Why it's wrong / what to do |
|-------------------|-----------------------------|
| "The last line of the log is the error, so I'll fix that." | The final crash line is often a downstream symptom; the script's second `immediate_actions` item exists because the FIRST warning/error is the real cause. Capture it in `evidence.log_excerpt` and triage from there. |
| "It segfaulted, so it's a corrupted-output / disk issue." | A `crash` (SIGSEGV/signal 11/core dumped) is a memory-fault category pointing at out-of-bounds/null-pointer/ABI bugs and a gdb/valgrind/ASan repro — not I/O. Do not treat it as `corrupted-output`. |
| "The job got killed, so I'll just bump the walltime." | `killed` alone is genuinely ambiguous and stays `incomplete-run`; an OOM signature (`bad_alloc`, `oom-kill`, "out of memory") is a distinct `out-of-memory` cause needing memory reduction / `--mem` increase, not more walltime. |
| "I'll lower dt AND change the preconditioner AND adjust the barostat to get it running." | The retry ladder is one controlled change per rung; stacking fixes makes results "depend on arbitrary stabilizing changes" — an explicit `stop_conditions` trigger. Change one parameter, record its effect, then proceed. |
| "I added the missing PAIR coeff path and it ran, so the physics is fine." | A clean run after fixing `missing-potential`/`bad-pseudopotential` resolves setup, not validity; species mapping, valence, or functional may still be wrong. Run completion is not correctness. |
| "It runs now, triage is done." | Triage only restores execution. Conservation, physical bounds, and convergence are out of scope here — defer to `simulation-validator` before trusting any number. |

## Security

### Input Validation

- `--stage` is checked against a fixed allowlist (`setup`, `runtime`, `postprocess`, `unknown`); any other value exits with code 2.
- `--code` must be non-empty and at most 100 characters; an empty or oversized value exits with code 2.
- `--symptoms` are split on commas and capped at 50 entries, each at most 100 characters; exceeding either limit exits with code 2.
- Unknown symptoms are not rejected; they are retained as `custom` evidence rather than silently dropped.
- There are no numeric arguments, so no finite/positive checks apply.
- All input-validation failures (and log read errors) are caught and exit with code 2 and a stderr message.

### File Access

- The only file read is the optional `--log-file` path; when omitted, the script reads no files.
- Before reading, the log file's size is checked via `stat`; if it exceeds the 10 MB cap (`MAX_LOG_SIZE`) the script raises and exits with code 2. Both file content and `--log-text` are then truncated to 10 MB.
- The script writes no files; all results go to stdout (JSON with `--json`, otherwise plain text).
- Path-sandboxing caveat: the log path is not restricted to a working directory, so the script can read any file the invoking process has permission to read; only pass trusted paths.

### Tool Restrictions

- `allowed-tools` is `Read, Bash, Write, Grep, Glob`.
- `Bash` runs only the bundled `scripts/failure_triage.py`.
- `Read` opens the skill's own files and a user-provided log to inspect failure evidence; `Grep`/`Glob` locate log files, inputs, and prior output; `Write` records triage notes or preserved evidence at the user's direction. The bundled script itself does not write files.

### Safety Measures

- No `eval`/`exec` and no dynamic code execution; log text is treated as data and never run.
- The script spawns no subprocesses and runs no external solvers.
- Output is structured JSON (`--json`), making results machine-checkable.
- DoS caps bound resource use: 10 MB log size/text limit, 50 symptoms, and 100-character limits on `code` and each symptom.

## References

- See `references/failure_patterns.md` for common failure signatures and retry ladders.

## Version History

- 1.1.3: Add `Verification checklist` (evidence-based checks tied to `failure_triage.py` outputs — preserved-evidence set, first-error excerpt, category-mislabel guards, one-change retry ladder, stop conditions, simulation-validator handoff) and `Common pitfalls & rationalizations` table covering last-line-only triage, segfault-as-I/O, OOM-vs-walltime, stacked stabilizing changes, and "it ran so it's valid".
- 1.1.1: Strengthen evals to be discriminating — each case now pins the exact `failure_triage.py` JSON output via `script_checks` (specific `category`/`first_action` strings, log-hint symptom inference, fixed retry-ladder/stop-condition text, recent-change immediate action), so the suite measures the skill's actual output rather than generic triage knowledge.
- 1.1.0: Add dedicated `out-of-memory` and `crash` (segfault) classifications; segfaults and OOM are no longer mislabeled as I/O or interrupted-execution. Preserve original-case log excerpt. Add input-validation caps (symptoms, code length). Sharpen description to defer deep validation to simulation-validator. Fix `missing-potential` eval token.
- 1.0.0: Initial cross-code simulation failure triage skill.

© HeshamFS · Apache-2.0 · HeshamFS/materials-simulation-skills

Похожие скиллы

Все скиллы по теме «Наука и исследования» →
anysearch anysearch-ai Скилл подключает поиск в интернете, тематические запросы, параллельный поиск и извлечение содержимого страниц. Пригодится, когда агенту нужны свежие сведения или нужно проверить утверждение. CX Codex +1 38 500установок academic-paper Imbad0202 Скилл разворачивает конвейер из 12 агентов для подготовки научных статей в 11 режимах. Помогает пройти путь от поиска литературы и плана до проверки цитат и ответа рецензентам. CX Codex +1 10 900установок nature-figure Yuan1z0825 Скилл собирает, правит и проверяет рисунки для научных статей на Python или R. Пригодится, когда графики идут в submission, а не в отчёт. CX Codex +1 18 800установок academic-paper-reviewer Imbad0202 Скилл имитирует коллегиальную проверку научной статьи через пять ролей. Пригодится для рецензии, повторной проверки правок и оценки методологии. CX Codex +1 9 900установок nature-polishing Yuan1z0825 Скилл для правки, перевода и сокращения готового академического текста. Держит факты, термины и границы доказательств на месте. CX Codex +1 17 500установок nature-citation Yuan1z skill, refactored into static/dynamic layers Ищет статьи из Nature и семейства CNS для подтверждения тезисов рукописи, связывает утверждения с источниками и готовит экспорт для менеджера ссылок. Пригодится, когда нужны ссылки именно из этих журналов. CX Codex +1 15 600установок

Из того же набора8

simulation-validator Три стадии проверки численных симуляций: предполётная проверка конфига, мониторинг лога и валидация результатов. Плюс разбор упавших запусков. CX Codex +1 ★ 83звёзд репо performance-profiling Находит узкие места в материаловедческих симуляциях: парсит логи времени выполнения, считает эффективность MPI-масштабирования и оценивает требования к памяти. CX Codex +1 ★ 83звёзд репо ontology-explorer Разбирает OWL/XML-файлы онтологий CMSO и ASMO, показывает дерево классов, свойства и связи domain/range. Пригодится, когда нужно подобрать термин для описания структуры или симуляции. CX Codex +1 ★ 83звёзд репо hpc-runtime-doctor Разбирает, почему уже отправленная задача на кластере упала, зависла или идёт медленно: раскладка MPI/OpenMP/GPU, модули, walltime, restart. CX Codex +1 ★ 83звёзд репо numerical-stability Проверяет условия CFL и Фурье, запускает анализ устойчивости фон Неймана и вычисляет обусловленность матриц для нестационарных задач с частными производными. CX Codex +1 ★ 83звёзд репо mesh-generation Считает шаг сетки по физическим масштабам и проверяет качество ячеек перед запуском решателя. Пригодится, когда солвер не сходится или непонятно, сколько точек класть на интерфейс. CX Codex +1 ★ 83звёзд репо convergence-study Считает наблюдаемый порядок сходимости по сгущению сетки или шага по времени, оценивает погрешность дискретизации и GCI по ASME V&V 20. CX Codex +1 ★ 83звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой