agentsclimarketplace

Swmm params

Skill Zhonghao1995/agentic-swmm-workflow/skills/swmm-params

Agentic SWMM is an automated, auditable, and memory-informed framework for reproducible stormwater modelling, integrating QGIS and EPA SWMM through the aiswmm runtime, reusable Skills, and MCP interfaces, with QA verification, provenance tracking, calibration support, and Codex, Hermes, Claude code as well as OpenClaw compatibility

Install
npx -y skills add Zhonghao1995/agentic-swmm-workflow --skill swmm-params

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Deterministic mapping from land use and soil texture to SWMM runoff/subarea and Green-Ampt infiltration parameters. Use when generating first-pass subcatchment parameter tables for swmm-builder.

SKILL.md

4.1 KB, as published. Nobody here has run it

SWMM Params (MVP mapping layer)

Part of Agentic SWMM — install the project first for the executable toolchain (aiswmm CLI, SWMM solver, MCP servers).

What this skill provides

  • Transparent CSV-to-JSON mapping for:
    • land use class -> SWMM [SUBCATCHMENTS] + [SUBAREAS] defaults
    • soil texture/type -> SWMM [INFILTRATION] (Green-Ampt) defaults
  • Deterministic, auditable outputs with explicit fallback usage and unmatched-key reporting.
  • Optional merge step that emits one builder-ready JSON artifact.

Scripts

  • scripts/landuse_to_swmm_params.py
    • maps subcatchment_id + landuse_class to runoff/subarea parameters
  • scripts/soil_to_greenampt.py
    • maps subcatchment_id + soil_texture to Green-Ampt infiltration parameters
  • scripts/merge_swmm_params.py
    • merges outputs from the two mapping scripts into one JSON package for future swmm-builder

Default lookup tables

By default, scripts read bundled lookup CSVs:

  • skills/swmm-params/references/landuse_class_to_subcatch_params.csv
  • skills/swmm-params/references/soil_texture_to_greenampt.csv

You can override lookup paths with CLI flags.

Minimal input format

Land use input CSV:

  • required columns: subcatchment_id, landuse_class

Soil input CSV:

  • required columns: subcatchment_id, soil_texture

Example files are provided under examples/.

Outputs

Each mapper writes explicit JSON containing:

  • records (row-level audit trail)
  • sections (SWMM-oriented lists keyed by subcatchment)
  • unmatched_* lists (rows that used fallback)
  • counts summary

The merge script writes:

  • sections (subcatchments, subareas, infiltration)
  • by_subcatchment (combined record per subcatchment ID)
  • incomplete_ids (IDs missing one or more sections)

CLI flags

All three scripts share these optional flags:

  • --strict — fail instead of using the DEFAULT fallback row when an input key is missing from the lookup table. Useful for auditable production runs where silent fallback would mask a data gap.

landuse_to_swmm_params.py also accepts:

  • --subcatchment-column <col> — override the CSV column used as the subcatchment ID (default: subcatchment_id).
  • --landuse-column <col> — override the CSV column used as the land use class (default: landuse_class).

soil_to_greenampt.py also accepts:

  • --subcatchment-column <col> — override the CSV column used as the subcatchment ID (default: subcatchment_id).
  • --soil-column <col> — override the CSV column used as the soil texture/type (default: soil_texture).

MCP

MCP wrapper location:

  • mcp/swmm-params/server.js

Exposed tools:

  • map_landuse (inputCsvPath, optional lookupCsvPath, outputPath)
  • map_soil (inputCsvPath, optional lookupCsvPath, outputPath)
  • merge_params (landuseJsonPath, soilJsonPath, outputPath)

Quick start:

npm --prefix mcp/swmm-params install
npm --prefix mcp/swmm-params run start

Known limitations

  • Lookup mapping is key-based only (no spatial interpolation or fuzzy matching).
  • A fallback row is expected in lookup tables (DEFAULT for land use, - or DEFAULT for soil).
  • No unit conversion or calibration logic is included here.
  • This skill only maps parameters; it does not write a full SWMM .inp.

Example commands

python3 skills/swmm-params/scripts/landuse_to_swmm_params.py \
  --input skills/swmm-params/examples/landuse_input.csv \
  --output runs/swmm-params/example_landuse.json
python3 skills/swmm-params/scripts/soil_to_greenampt.py \
  --input skills/swmm-params/examples/soil_input.csv \
  --output runs/swmm-params/example_soil.json
python3 skills/swmm-params/scripts/merge_swmm_params.py \
  --landuse-json runs/swmm-params/example_landuse.json \
  --soil-json runs/swmm-params/example_soil.json \
  --output runs/swmm-params/example_builder_params.json

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.