Borrowing it
Nothing to install: this file belongs to ProjectSidewalk/SidewalkWebpage. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/ProjectSidewalk/SidewalkWebpage/develop/.claude/skills/onboard-city/SKILL.mdgit clone --depth 1 https://github.com/ProjectSidewalk/SidewalkWebpageWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/projectsidewalk/sidewalkwebpage/onboard-city)<a href="https://agentmods.dev/skills/projectsidewalk/sidewalkwebpage/onboard-city"><img src="https://agentmods.dev/badge/skills/projectsidewalk/sidewalkwebpage/onboard-city/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/projectsidewalk/sidewalkwebpage/onboard-city"><img src="https://agentmods.dev/badge/skills/projectsidewalk/sidewalkwebpage/onboard-city.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00070 | $0.03724 |
| Opus 5.5 | $0.00028 | $0.01490 |
| Sonnet 5.5 | $0.00014 | $0.00745 |
| Haiku 4.5 | $0.00007 | $0.00372 |
Grade A, and why
onboard-city scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 186 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Onboard a city
Two commands and this skill. Read docs/onboarding-a-city.md once; it is the runbook this skill drives.
make build-city-data id=<city-id> args="..." # tools/city/onboard_city.py → db/onboarding/<city-id>/ (QA gpkg, SQL, report, endpoints csv)
make check-imagery id=<city-id> args="--sample --<provider>" # preflight, one row per provider in preflight_report.md
make onboard-city id=<city-id> # tools/city/setup_new_city.py → configs, GA, schema, fill, scan, gradient, dump + handoff
Everything under db/onboarding/ is git-ignored. The db container sees it at /opt/onboarding/ only from the main
checkout (db/ is the bind mount), so run these from the main checkout, not a worktree.
1. Intake — ask before building
- City id. Lowercase kebab-case ending in the state for US cities (
laurens-ia), the country elsewhere (bayonne-fr). It becomesSIDEWALK_CITY_ID, the schema (sidewalk_laurens_ia), and the output dir. - Server name. The id without its suffix (
sidewalk-laurens), unless a clearly larger city shares the name (sidewalk-newport-ky). - Imagery provider.
gsvunless the partner says otherwise;mapillary/panoramax/infra3dneed the matching credentials in the web container (Panoramax needs none). If unsure, the preflight in step 3 decides. - Neighborhood boundaries, in this order of preference, and record where they came from (
--regions-source, a URL or the collaborator's email — it lands inregion.data_source):- A partner- or city-supplied dataset (any OGR format/CRS; note its name column for
--region-name-col). - The city's open-data portal (ArcGIS Hub / Socrata / CKAN / data.gouv.fr …): search "neighborhoods", "quartiers", "barrios", "council districts". Prefer official, non-overlapping polygons that tile the city.
- Let the tool fall back: OSM neighbourhood polygons (used only above 75% coverage), then US census tracts (TIGERweb), then the whole city as one region (small towns; split later in QGIS if it grows).
- A partner- or city-supplied dataset (any OGR format/CRS; note its name column for
- A one-region city takes the city's name (from
--place), not the source's — otherwise a small town is the neighbourhood "Census Tract 7801" in every mission message and API response. Use--single-region-namewith a--boundary-file, or to override. Names you chose (--regions-file,--rename-regions, a--merge-regionstarget) are left alone. - City boundary.
--place "<City, State, Country>"geocodes the OSM admin boundary; check the report's "Boundary:" line names the right place. A partner file goes in with--boundary-file. - Scope. Whole city, or a phased launch opening some regions first (
onboard-cityasks; the imagery scan covers everything either way).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +1 lines 3c3d2a47bfb1
- 1mo ago Changed · +5 lines cb04312b243f
- 1mo ago Changed · +1 lines e1725851894f
- 1mo ago Changed · +39 lines 56761c0b6908
- 1mo ago Changed · +22 lines 968ae7a3b43b
- 1mo ago Changed · +1 lines a82be89331e2
- 1mo ago Changed · +3 lines 04b6fa859a52
- 1mo ago First seen · 114 lines · 70 tokens per session scan A 15899b428b02
onboard-city is a skill published in the GitHub repository ProjectSidewalk/SidewalkWebpage (111 stars, last pushed today), licensed MIT. It adds 70 tokens to every session and 3,724 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-07.
Other skills, from other repositories
implement-github-feature
Design and implement a new feature or component from a GitHub issue. Use for net-new functionality, not bug fixes.
contributions-hub
GitHub community: discussions, moderation, contributor health, CLAs.
issue-tracker
GitHub issues: find, triage, review and respond, with written reports.
team-manager
GitHub org teams: create, staff, onboard, offboard and audit access.
fix-github-issue
Fix a GitHub issue by number. Use when asked to fix GitHub issues.
kb-open-source-accessibility-framework
Reference data, not a reviewer. Open Source Accessibility Framework: phases, action IDs and cadence, tracking issue, framing.