swmm-design-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited swmm-design-review (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Evaluates a completed SWMM run against a configurable rulebook of design checks. Reads the run's existing artifacts (manifest.json + model.rpt + model.inp) — SWMM is never re-run. Classifies each rule as pass, fail, warn, or needs-data and writes 09_review/design_review.json + 09_review/design_review.md into the run directory.
This skill is decision-support only. It never certifies regulatory compliance.
# Standalone script
python3 skills/swmm-design-review/scripts/design_review.py \
--run-dir <path> # required: directory with model.rpt, manifest.json, model.inp
[--rpt <path>] # override: explicit model.rpt path
[--inp <path>] # override: explicit model.inp path
[--manifest <path>] # override: explicit manifest.json path
[--rules <rulebook>] # override rulebook YAML/JSON (repeatable for multiple books)
[--out-dir <dir>] # default: <run-dir>/09_review/
[--no-inp] # skip INP-derived metrics (slope, diameter)
# CLI verb (registered in aiswmm CLI)
aiswmm review --run-dir <path> [--rules <rulebook.yaml>] [--out-dir <dir>]Exit codes: 0 = pass/warn/needs-data only; 1 = any FAIL; 2 = script/input error.
review_runRegistered in AgentToolRegistry. Direct handler (not MCP-routed) — writes 09_review/design_review.json + 09_review/design_review.md into the run dir.
review_run(run_dir="runs/my_run/")
review_run(run_dir="runs/my_run/", rules="skills/swmm-design-review/rulebooks/gb50014_template.yaml")is_read_only=False — QUICK profile prompts the user (tool writes files).
python3 skills/swmm-design-review/scripts/design_review.py \
--run-dir tests/fixtures/design_review \
--manifest tests/fixtures/design_review/sample_manifest.json \
--rpt tests/fixtures/design_review/sample_mini.rpt \
--inp tests/fixtures/design_review/sample_mini.inp \
--rules tests/fixtures/design_review/sample_rules.yaml \
--out-dir /tmp/design_review_out
# Exit 1 = FAIL (1 pass, 1 fail, 0 warn, 1 needs-data)
# Report: /tmp/design_review_out/design_review.mdTo check return-period adequacy (RETURN_PERIOD_ADEQUACY rule):
generate_design_storm with the target return period P.build_inp to integrate the design storm into the model.run_swmm_inp --storm-return-period-yr P to propagate provenance to manifest.design_review.py --run-dir <path> — extractor reads manifest.metadata.storm_return_period_yr.Until step 3 is wired (separate PR), RETURN_PERIOD_ADEQUACY returns needs-data.
| Metric | Source |
|---|---|
run.peak_flow | manifest.json |
run.continuity_error_pct | manifest.json |
link.max_velocity | rpt Link Flow Summary |
link.max_full_flow_ratio | rpt Link Flow Summary |
link.max_full_depth_ratio | rpt Link Flow Summary |
link.peak_flow | rpt Link Flow Summary |
outfall.max_flow | rpt Outfall Loading Summary |
node.flow_balance_error_pct | rpt Node Inflow Summary |
conduit.slope_pct | INP [CONDUITS] + [JUNCTIONS]/[OUTFALLS] join |
conduit.diameter_m | INP [XSECTIONS] GEOM1 (CIRCULAR only) |
conduit.roughness | INP [CONDUITS] |
Metrics returning needs-data until PR2: node.surcharge_hours, node.max_depth_m, node.flooding_hours, node.flooding_volume_m3, junction.freeboard_m, run.return_period_yr.
<run-dir>/09_review/design_review.json — machine-readable results (schema_version 1.0)<run-dir>/09_review/design_review.md — human report with disclaimer and sign-off tableWhen presenting review results, the agent must:
compliance with any drainage standard."_
verify: true precisely because they must be confirmed by the user.
Write a YAML file following the schema in rulebooks/gb50014_template.yaml. Every rule must have:
id (SCREAMING_SNAKE_CASE, unique)metric (named extractor from the table above)operator (lte / lt / gte / gt / eq / neq / between)threshold (float, SI) or threshold_low + threshold_high for betweenunits: SIseverity: FAIL or severity: WARNcitation — clause reference or "TODO: cite local standard"verify: true unless you have personally confirmed the threshold against theapplicable edition of the standard
Honesty rule: a rule MUST NOT have verify: false while citation is still "TODO: cite local standard". The test suite enforces this invariant.
Issue #249 capability backlog — design-review / code-compliance checker. PR1: extractor layer + evaluator + rulebook + reports + tests. PR2 (upcoming): ToolSpec wiring, CLI verb, rpt_summary extensions.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.