Decision support for HEC-RAS execution strategy. Analyzes project inspector output to recommend which plans to run, execution mode, and optimal parameters. Provides structured execution plans with dependency ordering, prerequisite validation, and resource-aware parameter recommendations. Use when planning execution strategy, selecting execution mode, determining plan order, validating prerequisites, or optimizing parallel execution parameters. Triggers: plan execution, execution strategy, whi...
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: hecras_plan_execution
description: |
Decision support for HEC-RAS execution strategy. Analyzes project inspector output
to recommend which plans to run, execution mode, and optimal parameters. Provides
structured execution plans with dependency ordering, prerequisite validation, and
resource-aware parameter recommendations.
Use when planning execution strategy, selecting execution mode, determining plan
order, validating prerequisites, or optimizing parallel execution parameters.
Triggers: plan execution, execution strategy, which plans to run, execution order,
parallel vs sequential, compute_plan, compute_parallel, mode selection, prerequisites,
dependencies, runnable plans, blocked plans, execution plan, batch strategy.
---
# Planning HEC-RAS Execution
Decision support for selecting optimal HEC-RAS execution strategy. Analyzes Project Inspector output and generates actionable execution plans.
## Primary Sources
**DO NOT duplicate content from primary sources. This skill is a lightweight navigator.**
- **`.claude/rules/hec-ras/execution.md`** - Complete execution mode documentation
- **`.claude/agents/hecras-project-inspector.md`** - Project Intelligence Report schema
- **`.claude/skills/hecras_compute_plans/SKILL.md`** - Mode Selection Guide
- **`.claude/skills/hecras_compute_rascontrol/SKILL.md`** - Legacy HEC-RAS (< 6.0)
---
## Mode Selection Decision Tree
```
1. Is HEC-RAS version < 6.0?
YES -> Use RasControl (hecras_compute_rascontrol skill)
NO -> Continue
2. How many runnable plans?
ZERO -> Report blockers, stop
ONE -> compute_plan() [+ stream_callback if monitoring needed]
MULTIPLE -> Continue to step 3
3. Multiple Plan Decision:
Debugging/diagnosing? -> compute_test_mode()
Have remote workers? -> compute_parallel_remote()
Production/batch? -> compute_parallel()
```
### Mode Selection Matrix
| Context | Plans | Mode | Rationale |
|---------|-------|------|-----------|
| Debugging | Any | `compute_test_mode()` | Sequential, single folder |
| Single plan, monitoring | 1 | `compute_plan()` + callback | Real-time output |
| Single plan, quick | 1 | `compute_plan()` | Simplest API |
| Multiple plans, production | 2+ | `compute_parallel()` | Fastest throughput |
| Distributed infrastructure | 2+ | `compute_parallel_remote()` | Scale-out |
| HEC-RAS < 6.0 | Any | `RasControl` | COM-based required |
| Resume interrupted | 2+ | `compute_parallel(skip_existing=True)` | Skips completed |
---
## Input: Project Intelligence Report
Expected input from Project Inspector Agent:
```markdown
## Plans Analysis
| Plan | Title | Status | Geometry | Flow | Issues |
|------|-------|--------|----------|------|--------|
| 01 | Baseline | Runnable | g01 | u01 | None |
| 02 | Future | Missing geom | g03 (MISSING) | u02 | Geometry file not found |
### Execution Readiness
- **Ready to Run**: 01, 03
- **Blocked**: 02 (missing geometry g03)
```
---
## Output: Execution Plan
Generate structured execution plans in this format:
```markdown
# Execution Plan
## Recommended Mode
`compute_parallel()` - Multiple runnable plans, production context
## Execution Order
1. Plan 01 (Baseline) - Ready
2. Plan 03 (Modified) - Ready
[Skip: Plan 02 - blocked by missing geometry g03]
## Parameters
```python
RasCmdr.compute_parallel(
plans_to_run=["01", "03"],
max_workers=2,
num_cores=4,
force_rerun=False,
verify=True
)
```
## Prerequisites
- None for runnable plans
## Blockers (Cannot Run)
| Plan | Issue | Resolution |
|------|-------|------------|
| 02 | Missing geometry g03 | Create geometry file or fix reference |
## Warnings
- Plan 02 blocked until g03 is created
```
---
## Parameter Recommendation
### Worker/Core Allocation
| System Cores | Model Type | `max_workers` | `num_cores` |
|--------------|------------|---------------|-------------|
| 4-8 | 1D | 2-4 | 2 |
| 8-16 | 2D | 2-4 | 4 |
| 16+ | Mixed | 4-6 | 4 |
**Formula**: `max_workers = min(num_plans, total_cores // num_cores)`
### Geometry Flags
| Scenario | `clear_geompre` | `force_geompre` |
|----------|-----------------|-----------------|
| Geometry unchanged | `False` | `False` |
| Minor edits (Manning's n) | `True` | `False` |
| Major changes (new mesh) | `False` | `True` |
| Geometry corruption | `False` | `True` |
### Skip/Rerun Flags
| Scenario | `force_rerun` | `skip_existing` |
|----------|---------------|-----------------|
| Normal (smart skip) | `False` | `False` |
| Force fresh results | `True` | `False` |
| Resume interrupted | `False` | `True` |
---
## Dependency Analysis
### Check for Blockers
```python
def get_runnable_plans(plan_df):
"""Identify which plans can execute."""
runnable, blocked = [], {}
for _, plan in plan_df.iterrows():
plan_num = plan['plan_number']
geom_ok = Path(plan['Geom Path']).exists() if plan.get('Geom Path') else True
flow_ok = Path(plan['Flow Path']).exists() if plan.get('Flow Path') else True
if geom_ok and flow_ok:
runnable.append(plan_num)
else:
blocked[plan_num] = "Missing geometry" if not geom_ok else "Missing flow"
return runnable, blocked
```
### Dependencies to Consider
1. **Shared Geometry** - Plans using same geometry can run in parallel
2. **Upstream/Downstream** - Cascade models need sequential execution
3. **DSS Dependencies** - Plans reading same DSS may conflict
---
## Context-Specific Templates
### Debugging Context
```python
RasCmdr.compute_test_mode(
plans_to_run=["01", "02", "03"],
dest_folder_suffix="[Debug]",
num_cores=2,
verify=True
)
```
### Production Context
```python
RasCmdr.compute_parallel(
plans_to_run=["01", "02", "03"],
max_workers=4,
num_cores=4,
verify=True
)
```
### Monitoring Context
```python
from ras_commander.callbacks import ConsoleCallback
RasCmdr.compute_plan(
"01",
stream_callback=ConsoleCallback(verbose=True),
verify=True
)
```
---
## Common Blockers
| Blocker | Resolution |
|---------|------------|
| Missing geometry file | Create geometry or fix .prj reference |
| Missing flow file | Create flow file or fix reference |
| Missing DSS file | Download/create DSS or update path |
| Geometry HDF outdated | Run with `force_geompre=True` |
| Results already current | Use `force_rerun=True` if needed |
| HEC-RAS < 6.0 | Use RasControl skill instead |
---
## Integration
### Upstream Skills
- **hecras-project-inspector** - Generates intelligence report
- **dss_read_boundary-data** - Validates boundary conditions
- **qa_repair_geometry** - Fixes geometry blockers
### Downstream Skills
- **hecras_compute_plans** - Runs the execution plan
- **hecras_compute_remote** - Distributed execution
- **hecras_extract_results** - Post-execution analysis
- **hecras_parse_compute-messages** - Interpret execution results
---
## See Also
- **`.claude/rules/hec-ras/execution.md`** - Complete parameter documentation
- **`.claude/agents/hecras-project-inspector.md`** - Input format details
- **`examples/113_parallel_execution.ipynb`** - Working parallel example
No comments yet. Be the first to comment!