Claude-skill-registry hecras_plan_execution
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/hecras-plan-execution-gpt-cmdr-ras-commander" ~/.claude/skills/majiayu000-claude-skill-registry-hecras-plan-execution && rm -rf "$T"
manifest:
skills/data/hecras-plan-execution-gpt-cmdr-ras-commander/SKILL.mdsource content
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.
- Complete execution mode documentation.claude/rules/hec-ras/execution.md
- Project Intelligence Report schema.claude/agents/hecras-project-inspector.md
- Mode Selection Guide.claude/skills/hecras_compute_plans/SKILL.md
- Legacy HEC-RAS (< 6.0).claude/skills/hecras_compute_rascontrol/SKILL.md
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 | | Sequential, single folder |
| Single plan, monitoring | 1 | + callback | Real-time output |
| Single plan, quick | 1 | | Simplest API |
| Multiple plans, production | 2+ | | Fastest throughput |
| Distributed infrastructure | 2+ | | Scale-out |
| HEC-RAS < 6.0 | Any | | COM-based required |
| Resume interrupted | 2+ | | Skips completed |
Input: Project Intelligence Report
Expected input from Project Inspector Agent:
## 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:
# 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
- Shared Geometry - Plans using same geometry can run in parallel
- Upstream/Downstream - Cascade models need sequential execution
- DSS Dependencies - Plans reading same DSS may conflict
Context-Specific Templates
Debugging Context
RasCmdr.compute_test_mode( plans_to_run=["01", "02", "03"], dest_folder_suffix="[Debug]", num_cores=2, verify=True )
Production Context
RasCmdr.compute_parallel( plans_to_run=["01", "02", "03"], max_workers=4, num_cores=4, verify=True )
Monitoring Context
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 |
| Results already current | Use 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
- Complete parameter documentation.claude/rules/hec-ras/execution.md
- Input format details.claude/agents/hecras-project-inspector.md
- Working parallel exampleexamples/113_parallel_execution.ipynb