Address validation
Skill goshippo/ai/providers/codex/plugin/skills/address-validation
Shippo's AI distribution surfaces: Agent Skills + plugins for Claude Code, OpenAI Codex, ClawHub, and the Claude apps.
npx -y skills add goshippo/ai --skill address-validationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Validate, parse, and standardize shipping addresses via the Shippo API
SKILL.md
4.0 KB, as published. Nobody here has run it
Address Validation
Address Field Format
The Shippo API uses v1 field names for address components in most endpoints (including CreateShipment). Always use:
| Field | Description | Example |
|---|---|---|
name | Full name | Jane Smith |
street1 | Street address line 1 | 731 Market St |
street2 | Street address line 2 (optional) | Suite 200 |
city | City | San Francisco |
state | State or province | CA |
zip | Postal code | 94103 |
country | ISO 3166-1 alpha-2 country code | US |
email | Email (required for international senders) | [email protected] |
phone | Phone (required for international senders) | +1-555-123-4567 |
Note: CreateAddress and ValidateAddress take the v2 field names (address_line_1, city_locality, state_province, postal_code), but when passing addresses inline to CreateShipment, you must use the v1 names above.
Validate a Structured Address
- Collect at minimum:
street1,city,state,zip,country(ISO 3166-1 alpha-2). - Call
CreateAddresswith the address fields. This creates the address and returns an object ID. - Call
ValidateAddresswith the address fields to get validation results. Note: this endpoint takes address fields as query parameters, not an object ID. - Check
analysis.validation_result.valuein the response. Values:"valid","invalid", or"partially_valid"(address found with corrections applied). Checkanalysis.validation_result.reasonsfor details. - Report the standardized address back. Highlight any corrected fields (listed in
changed_attributes). Noteanalysis.address_type("residential","commercial", or"unknown") -- residential classification affects carrier surcharges. - If invalid: relay the reason descriptions. If the API returns a
recommended_address, present it to the user. - If
partially_valid: show what was corrected and ask the user to confirm the corrections are acceptable.
Parse a Freeform Address
- Call
ParseAddresswith the raw string (e.g., "123 Main St, Springfield IL 62704"). - Review the structured output for completeness. The parse response uses v2 field names:
address_line_1,city_locality,state_province,postal_code. - Note: the parse response does not include
country. You must ask the user for the country or infer it, then add it before proceeding. - Validate the parsed result by passing the fields to
CreateAddressthenValidateAddress(follow the structured address workflow above from step 2).
International Addresses
- Always require the
countryfield. Do not guess. - Pass non-Latin characters as-is; the API handles encoding.
- Validation depth varies by country. US, CA, GB, AU, and major EU countries have deep validation. Others may only confirm structural completeness. Inform the user of this limitation.
Bulk Address Validation
There is no batch validation endpoint. Call CreateAddress per address. Track results (row number, valid/invalid, corrections, errors, residential classification) and report a summary when done. For 50+ addresses, set expectations about processing time and provide progress updates.
Re-validate an Existing Address
Call ValidateAddress with the address fields. This endpoint validates by address fields, not by object ID.
Duplicate Addresses
If CreateAddress returns a "Duplicate address" error, the address already exists in the account. Retrieve it via ListAddresses or proceed directly to validation.
Quick Reference
Validate an address:
CreateAddress (saves address) + ValidateAddress (validates with same fields)
Parse then validate:
ParseAddress -> add country -> CreateAddress + ValidateAddress