$npx -y skills add AlpacaLabsLLC/skills-for-architects --skill nyc-dob-permitsLook up DOB permit and job filing history for any NYC building — new-building, alteration, and demolition filings with status and dates. Use when the user asks what work was filed or permitted at an address, or to gauge renovation history during due diligence. NYC only; for open
| 1 | # /nyc-dob-permits — DOB Permit & Filing History |
| 2 | |
| 3 | Look up all DOB permits and job filings for any NYC building across both Legacy BIS and DOB NOW systems. No API key required. |
| 4 | |
| 5 | ## Usage |
| 6 | |
| 7 | ``` |
| 8 | /nyc-dob-permits 120 Broadway, Manhattan |
| 9 | /nyc-dob-permits 1000770001 (BBL) |
| 10 | /nyc-dob-permits 1001389 (BIN) |
| 11 | ``` |
| 12 | |
| 13 | ## Steps 1–2: Parse Input & Resolve BBL/BIN |
| 14 | |
| 15 | Read `../nyc-property-report/pluto-resolution.md` (shared by all 7 NYC due-diligence skills) and follow it: parse the input (address, BBL, or BIN), resolve via PLUTO, and resolve BIN via Building Footprints — **BIN is required** for every query in Step 3. |
| 16 | |
| 17 | ## Step 3: Query DOB Permits & Filings |
| 18 | |
| 19 | Dataset IDs and field names are canonical in `../nyc-property-report/socrata-reference.md` — on any disagreement, the reference wins. |
| 20 | |
| 21 | Query all 4 datasets using BIN. **IMPORTANT:** Legacy datasets use `bin__` (double underscore). DOB NOW datasets use `bin`. |
| 22 | |
| 23 | ### Legacy Permit Issuance |
| 24 | ``` |
| 25 | https://data.cityofnewyork.us/resource/ipu4-2q9a.json?$where=bin__='{BIN}'&$order=issuance_date DESC&$limit=30 |
| 26 | ``` |
| 27 | Key fields: `permit_si_no`, `job__`, `job_type`, `issuance_date`, `expiration_date`, `permittee_s_first_name`, `permittee_s_last_name`, `owner_s_first_name`, `owner_s_last_name` |
| 28 | |
| 29 | ### Legacy Job Filings |
| 30 | ``` |
| 31 | https://data.cityofnewyork.us/resource/ic3t-wcy2.json?$where=bin__='{BIN}'&$order=latest_action_date DESC&$limit=30 |
| 32 | ``` |
| 33 | Key fields: `job__`, `doc__`, `job_type`, `job_status`, `latest_action_date`, `applicant_s_first_name`, `applicant_s_last_name` |
| 34 | |
| 35 | ### DOB NOW Approved Permits |
| 36 | ``` |
| 37 | https://data.cityofnewyork.us/resource/rbx6-tga4.json?$where=bin='{BIN}'&$order=approved_date DESC&$limit=30 |
| 38 | ``` |
| 39 | Key fields: `job_filing_number`, `work_permit`, `permit_status`, `work_type`, `approved_date`, `issued_date`, `expired_date` (this dataset has NO `filing_date` or `job_type` — use `approved_date` / `work_type`) |
| 40 | |
| 41 | ### DOB NOW Job Filings |
| 42 | ``` |
| 43 | https://data.cityofnewyork.us/resource/w9ak-ipjd.json?$where=bin='{BIN}'&$order=filing_date DESC&$limit=30 |
| 44 | ``` |
| 45 | Key fields: `job_filing_number`, `filing_status`, `filing_date`, `job_type` |
| 46 | |
| 47 | ## Step 4: Print Results |
| 48 | |
| 49 | Merge all results, sort by date descending. Group by job type: |
| 50 | - **NB** = New Building |
| 51 | - **A1** = Alteration Type 1 (major — changes use/egress/occupancy) |
| 52 | - **A2** = Alteration Type 2 (multiple work types) |
| 53 | - **A3** = Alteration Type 3 (minor, one work type) |
| 54 | - **DM** = Demolition |
| 55 | - **Other** = Everything else |
| 56 | |
| 57 | ```markdown |
| 58 | ## DOB Permits & Filings — {Address} |
| 59 | |
| 60 | **Total found:** {count} ({x} legacy, {y} DOB NOW) |
| 61 | |
| 62 | ### New Building (NB) |
| 63 | | Date | Job # | Permit # | Status | Applicant | |
| 64 | |------|-------|----------|--------|-----------| |
| 65 | | ... | ... | ... | ... | ... | |
| 66 | |
| 67 | ### Alteration Type 1 (A1) |
| 68 | | Date | Job # | Permit # | Work Type | Status | Applicant | |
| 69 | |------|-------|----------|-----------|--------|-----------| |
| 70 | |
| 71 | ### Alteration Type 2-3 (A2/A3) |
| 72 | {table} |
| 73 | |
| 74 | ### Demolition (DM) |
| 75 | {table if any} |
| 76 | |
| 77 | ### Other |
| 78 | {table if any} |
| 79 | |
| 80 | **Note:** Pre-BIS records (before ~1989) are not digitized. If this building predates 1989 and few records appear, earlier permits exist only on paper. |
| 81 | |
| 82 | Source: [DOB Permit Issuance](https://data.cityofnewyork.us/Housing-Development/DOB-Permit-Issuance/ipu4-2q9a) | [DOB Job Filings](https://data.cityofnewyork.us/Housing-Development/DOB-Job-Application-Filings/ic3t-wcy2) | [DOB NOW Permits](https://data.cityofnewyork.us/Housing-Development/DOB-NOW-Build-Approved-Permits/rbx6-tga4) | [DOB NOW Filings](https://data.cityofnewyork.us/Housing-Development/DOB-NOW-Build-Job-Application-Filings/w9ak-ipjd) |
| 83 | ``` |
| 84 | |
| 85 | If no results from any dataset: "No DOB permits or filings found for this property." |
| 86 | |
| 87 | ### Conventions |
| 88 | - All dates: YYYY-MM-DD |
| 89 | - If Socrata returns empty array: "No results found" |
| 90 | - If HTTP error: note it and suggest checking the address |
| 91 | - If the user requests, write results to a file |
| 92 | - Check PLUTO `yearbuilt` — if before 1989, add the pre-BIS note |
| 93 | |
| 94 | ## Final Step: Disclaimer + Marker (required) |
| 95 | |
| 96 | This skill produces regulatory output. End every report this skill produces — printed in chat or saved to a file — with the canonical disclaimer block from `rules/professional-disclaimer.md`, followed by one blank line and the machine-readable marker, exactly as shown: |
| 97 | |
| 98 | ```markdown |
| 99 | > **Disclaimer:** This is an AI-generated analysis for preliminary planning purposes. All findings must be verified by a licensed professional before use in design, permitting, or regulatory submissions. |
| 100 | |
| 101 | <!-- architecture-studio:requires-disclaimer --> |
| 102 | ``` |
| 103 | |
| 104 | The marker is a single end-of-file sentinel — it appears exactly once, as the last line of |