skills/airtable/SKILL.md
--- Skill name: airtable Skill description: Integrate with Airtable's cloud database platform API for managing bases, tables, records, and automations with powerful filtering, sorting, and real-time collaboration features. --- # Airtable API Integration This skill provides comprehensive guidance for integrating with Airtable's cloud database platform API. ## Prerequisites Create a Personal Access Token: [https://airtable.com/create/tokens](https://airtable.com/create/tokens) Create a `.env`
npx skillsauth add abhiroopb/synthetic-mind skills/airtableInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides comprehensive guidance for integrating with Airtable's cloud database platform API.
Create a Personal Access Token: https://airtable.com/create/tokens
Create a .env file to store your credentials:
mkdir -p ~/.claude/skills/airtable
cat > ~/.claude/skills/airtable/.env << 'EOF'
AIRTABLE_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN"
BASE_ID="your_base_id"
EOF
Load the environment variables before making API calls:
source ~/.claude/skills/airtable/.env
# Test authentication by listing bases
curl "https://api.airtable.com/v0/meta/bases" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
# List all records in a table
curl "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
# List records with specific fields only
curl -G "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-d "fields[]=Name" \
-d "fields[]=Status"
# List with pagination
curl -G "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-d "pageSize=10" \
-d "maxRecords=100"
# Filter by formula
curl -G "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
--data-urlencode "filterByFormula={Status}='Active'"
# Complex filter with AND/OR
curl -G "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
--data-urlencode "filterByFormula=AND({Status}='Active',{Priority}='High')"
# Sort results
curl -G "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-d "sort[0][field]=Name" \
-d "sort[0][direction]=asc"
# Create a single record
curl -X POST "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"Name": "New Record",
"Status": "Active",
"Priority": "High"
}
}'
# Create multiple records (up to 10 per request)
curl -X POST "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"records": [
{
"fields": {
"Name": "Record 1",
"Status": "Active"
}
},
{
"fields": {
"Name": "Record 2",
"Status": "Pending"
}
}
]
}'
# Update a single record (PATCH - updates only specified fields)
curl -X PATCH "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}'
# Replace a record (PUT - replaces all fields)
curl -X PUT "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}'
# Update multiple records (up to 10 per request)
curl -X PATCH "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {"Status": "Completed"}
},
{
"id": "recYYYYYYYYYYYYYY",
"fields": {"Status": "Completed"}
}
]
}'
# Delete a single record
curl -X DELETE "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}/recXXXXXXXXXXXXXX" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
# Delete multiple records (up to 10 per request)
curl -X DELETE "https://api.airtable.com/v0/${BASE_ID}/{tableIdOrName}?records[]=recXXXXXXXXXXXXXX&records[]=recYYYYYYYYYYYYYY" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
# List all accessible bases
curl "https://api.airtable.com/v0/meta/bases" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
# Get base schema (tables and fields)
curl "https://api.airtable.com/v0/meta/bases/${BASE_ID}/tables" \
-H "Authorization: Bearer $AIRTABLE_TOKEN"
filterByFormulapageSize and offsetFor detailed examples and advanced usage, see the reference documentation:
X-RateLimit-* headersfields[] parameter to retrieve only needed fieldsoffset parameter to handle large datasetsFor detailed troubleshooting guides, see the reference documentation:
testing
Track TV shows and movies with Trakt.tv. Search, get watchlist, history, up-next, recommendations, trending, calendar, ratings, stats, add/remove from watchlist, mark watched, rate, and check in. Use when asked about what to watch, TV shows, movies, watch history, or Trakt.
development
Send and receive SMS messages via Twilio API. Used for text message notifications, forwarding important alerts, and two-way SMS communication.
documentation
Organizes files in the local Downloads folder into proper folders. Use when asked to organize, sort, or file downloaded documents.
tools
Book and manage appointments on Sutter Health MyHealth Online portal. Uses browser automation via Playwright MCP to interact with the patient portal.