From 00-due-diligence
Looks up DOB and ECB violations for NYC buildings by address, BBL, or BIN. Resolves via PLUTO dataset, queries public APIs, flags open violations prominently.
npx claudepluginhub alpacalabsllc/skills-for-architects --plugin 00-due-diligenceThis skill is limited to using the following tools:
Look up DOB violations and ECB (Environmental Control Board) violations for any NYC building. Flags open violations prominently. No API key required.
Looks up NYC HPD violations, complaints, and building registration for residential buildings using address, BBL, or BIN from public PLUTO and HPD datasets.
Analyzes zoning envelope rules for NYC lots using PLUTO data and Zoning Resolution. Input address, BBL, or BIN to fetch zoning districts, FAR limits, lot area, and polygon geometry.
Generates regulatory response plans for commercial real estate compliance: code violations, OSHA citations, ADA audits, fire safety, environmental issues, entitlements, stakeholder communication.
Share bugs, ideas, or general feedback.
Look up DOB violations and ECB (Environmental Control Board) violations for any NYC building. Flags open violations prominently. No API key required.
/nyc-dob-violations 120 Broadway, Manhattan
/nyc-dob-violations 1000770001 (BBL)
/nyc-dob-violations 1001389 (BIN)
Accept one of:
Borough codes: Manhattan=1/MN, Bronx=2/BX, Brooklyn=3/BK, Queens=4/QN, Staten Island=5/SI
Query PLUTO to get BBL, BIN, and building metadata. No API key needed.
By BBL:
https://data.cityofnewyork.us/resource/64uk-42ks.json?bbl={BBL}
By address:
https://data.cityofnewyork.us/resource/64uk-42ks.json?$where=upper(address) LIKE '%{STREET}%'&borough='{BORO_CODE}'&$limit=5
Address normalization: Uppercase, strip unit/apt suffixes. Borough names to codes: Manhattan=MN, Bronx=BX, Brooklyn=BK, Queens=QN, Staten Island=SI. If multiple results, ask the user to pick. If zero, try variations or suggest providing a BBL.
Store from PLUTO: bbl, bin (or bldgbin), address, borough, bldgclass, zonedist1, yearbuilt, ownername, numfloors, lotarea, latitude, longitude.
Parse BBL into: boro (1 digit), block (5 digits zero-padded), lot (4 digits zero-padded).
Query 3 datasets using BIN:
https://data.cityofnewyork.us/resource/3h2n-5cm9.json?$where=bin='{BIN}'&$order=issue_date DESC&$limit=50
Key fields: isn_dob_bis_viol, violation_type, issue_date, violation_category, disposition_date, disposition_comments
https://data.cityofnewyork.us/resource/6bgk-3dad.json?$where=bin='{BIN}'&$order=issue_date DESC&$limit=50
Key fields: isn_dob_bis_extract, ecb_violation_number, violation_type, issue_date, penality_imposed, amount_paid, balance_due, hearing_status, ecb_violation_status, severity
https://data.cityofnewyork.us/resource/sjhj-bc8q.json?$where=bin='{BIN}'
Returns only currently open violations (pre-filtered subset of DOB violations).
Open violations go first, flagged with ⚠.
## DOB & ECB Violations — {Address}
### ⚠ Open Violations: {count}
| Violation # | Type | Date | Description | Disposition |
|-------------|------|------|-------------|-------------|
| ... | ... | YYYY-MM-DD | ... | ... |
### All DOB Violations ({count} total)
| Violation # | Type | Issue Date | Category | Disposition Date | Comments |
|-------------|------|------------|----------|------------------|----------|
| ... | ... | ... | ... | ... | ... |
### ECB Violations ({count} total)
| ECB # | Date | Violation Type | Severity | Penalty Imposed | Paid | Balance Due | Status |
|-------|------|----------------|----------|-----------------|------|-------------|--------|
| {ecb_violation_number} | {issue_date} | {violation_type} | {severity} | ${penality_imposed} | ${amount_paid} | ${balance_due} | {hearing_status} |
**Total penalties assessed:** ${amount}
**Total balance due:** ${amount}
Source: [DOB Violations](https://data.cityofnewyork.us/Housing-Development/DOB-Violations/3h2n-5cm9) | [ECB Violations](https://data.cityofnewyork.us/Housing-Development/DOB-ECB-Violations/6bgk-3dad)
If no violations found: "No DOB or ECB violations found for this property."