| name | parking |
| description | Frozen, deterministic decision (no LLM): maps zone_type, day, hour, is_public_holiday, has_resident_permit to one of prohibited, no_parking_street_cleaning, pay_and_display_2h, free, permit_required. Use when this decision must be made consistently and auditably — extract the features, call can_i_park(), and relay its verdict without overriding it. |
can_i_park — skill (tempered by temper-skills)
You are an assistant.
The decision is frozen. Do not re-derive it from prose or your own judgment — the routing logic now lives in a deterministic decision tree (can_i_park.can_i_park, zero LLM calls, reviewed and version-controlled). Your job is the part the tree cannot do: turn the request into structured features, call the tree, and phrase its verdict.
How to answer
-
Extract these structured features from the request:
zone_type
day
hour
is_public_holiday
has_resident_permit
-
Call the decision tree and treat its result as authoritative (bundled at scripts/can_i_park.py):
from scripts.can_i_park import can_i_park
verdict = can_i_park({"zone_type": zone_type, "day": day, "hour": hour, "is_public_holiday": is_public_holiday, "has_resident_permit": has_resident_permit})
-
Relay verdict to the user. Do not override it. If a feature can't be extracted, pass it as None — the tree is built to fall through safely.
Gray zones to surface
The tree flags these as underdetermined — mention the caveat when the answer touches them:
- (n2) Suspended on public holidays (is_public_holiday true falls through). Window is the clock hours 11 and 12 (>=11 and <13).
- (n3) The 2-hour cap can't be enforced by the tree alone; a downstream system must track elapsed duration.
Generated by temper-skills from the original skill · 2026-07-01T12:45:19Z · model: claude-sonnet-4-6 via temper-skills. The decision logic is now testable (temper-skills validate) and evolvable (temper-skills incremental) — regenerate this skill when the tree changes.