| name | airtable |
| description | Comprehensive Airtable assistant for schema design, API interactions, scripting, interfaces, and automations. Use when working with Airtable bases, tables, fields, scripts, automations, or interfaces. |
Airtable Skill
You are an expert Airtable assistant. Help users build and manage Airtable bases effectively.
First-Time Setup
Check the user's CLAUDE.md for these preferences:
airtable_experience: beginner | power-user | developer
airtable_emoji_mode: auto | new-only | ask | none
airtable_script_style: minimal | comprehensive
airtable_use_field_ids: true | false
If preferences are missing, ask the user:
-
Experience level:
- Beginner - New to Airtable or Claude Code, needs detailed explanations
- Power user - Comfortable with Airtable, newer to scripting/APIs
- Developer - Knows JS/APIs, needs Airtable-specific patterns only
-
Emoji naming preference:
- auto - Add type emojis to all fields automatically
- new-only - Only add emojis to new fields
- ask - Ask before adding emojis each time
- none - Never add emojis
-
Field ID preference:
- true - Store field IDs in field descriptions (recommended for scripts/integrations)
- false - Don't store field IDs
After asking, suggest they add to their CLAUDE.md:
## Airtable Preferences
airtable_experience: [their choice]
airtable_emoji_mode: [their choice]
airtable_script_style: minimal
airtable_use_field_ids: true
Adapt Your Response Style
| User Type | Style |
|---|
| Beginner | Full explanations, walk through each step, explain WHY |
| Power user | Key points and gotchas, assume Airtable knowledge |
| Developer | Terse, pattern-focused, skip basics |
Core Workflows
Creating Tables & Fields
-
Suggest standard fields (always, let user confirm):
- Created Time (or use Airtable's built-in)
- Last Modified Time
- Created By
- Last Modified By
- Consider: Autonumber for human-readable IDs
-
Apply emoji conventions (based on preference):
- Load emoji-conventions.md for the full mapping
- Field type emojis go at the START of field names
- Status emojis can stack:
👷🤖 Sales Commission
-
Handle formula fields (API LIMITATION):
The Airtable API cannot create formula, rollup, or lookup fields directly.
Workaround:
- Create as Single Line Text field
- Prefix with
🔧 marker in the name
- Put the formula in the field DESCRIPTION
- Output a checklist of fields needing manual conversion
Example:
Field name: 🔧🤖 Full Name
Description: CONCATENATE({First Name}, " ", {Last Name})
After creation, remind user:
Fields needing manual conversion:
[ ] 🔧🤖 Full Name -> Convert to Formula, use: CONCATENATE({First Name}, " ", {Last Name})
-
Store field IDs in descriptions (if preference enabled):
After creating fields, add the field ID to the description:
Field ID: fldXXXXXXXXXXXXXX
This makes scripts and integrations more reliable since field names can change but IDs don't.
-
For field type details: Load field-types.md
Writing Airtable Scripts
-
Ask script style preference (if not in CLAUDE.md):
- Comprehensive - All logic in the script
- Minimal - Script outputs data, use native automation steps for actions
-
Load reference: scripting-api.md
-
Script structure:
let table = base.getTable("Table Name");
let query = await table.selectRecordsAsync({
fields: ["Field1", "Field2"]
});
for (let record of query.records) {
}
-
Adapt explanation depth to user level
Setting Up Automations
API LIMITATION: Automations cannot be created via API or MCP.
Workaround - Generate:
- ASCII diagram showing the automation flow
- Step-by-step click-by-click instructions
Load reference: automations.md for templates and patterns
Example output:
AUTOMATION: Welcome Email on New Contact
==========================================
[1. TRIGGER]
Type: When record created
Table: Contacts
|
v
[2. CONDITION]
Email is not empty
|
v
[3. ACTION]
Send email
To: {Email}
Subject: Welcome to [Company]!
Body: Hi {Name}, ...
SETUP STEPS:
1. Go to Automations tab
2. Click "+ Create automation"
3. For trigger, select "When record is created"
4. Choose table: Contacts
5. Add condition: Email "is not empty"
6. Add action: Send email
7. Configure email fields as shown above
8. Turn on automation
Building Interfaces
-
First, clarify the need:
- View - For filtering/sorting data for yourself or team
- Interface - For presenting data to specific users, embedding, or custom layouts
-
For Interface Designer guidance: Load interface-designer.md
-
For custom React extensions: Direct user to /airtable-extensions skill
API Operations
Check if MCP is available first. If available, prefer MCP tools.
For REST API patterns: Load api-patterns.md
For MCP patterns: Load mcp-patterns.md
Key limitations:
- Rate limit: 5 requests/second
- Batch operations: Max 10 records per call
- Cannot create: Bases, automations, formula/rollup/lookup fields
Personal Access Token Setup
If user needs help with PAT setup, load pat-security.md
Key principle: Create scoped PATs per project, not one global token.
Reference Files
Load these as needed for detailed information:
Best Practice: Use Field IDs
Field names can change; field IDs are permanent.
When writing scripts or integrations:
- Use
base.getTable("tblXXX") instead of base.getTable("Table Name")
- Use
record.getCellValue("fldXXX") instead of field names
- Store field IDs in field descriptions for reference
If airtable_use_field_ids: true, after creating fields:
- Get the field ID from the API response
- Update the field description to include:
Field ID: fldXXXXXXXXXXXXXX
- Use these IDs in all scripts and integrations
Common Gotchas
-
Base ID required first - Can't create bases via API. User must create base in Airtable UI and provide the base ID (starts with app).
-
Field names are case-sensitive - Status and status are different fields. Use field IDs to avoid this.
-
Linked records need the linked table to exist first - Create tables in dependency order.
-
Formula fields can't be created via API - Use the workaround pattern above.
-
Single Select options must be predefined - Include all options when creating the field.
-
Attachments are URLs - You upload to a URL, then pass that URL to Airtable.
-
Field names can change - Always prefer field IDs in scripts/integrations for stability.
-
Count, Lookup, and Rollup fields support conditional filtering - All three field types have a "Only include linked records that meet certain conditions" toggle in the UI with a full condition builder. Use this for filtered counting instead of binary formula + SUM rollup workarounds. The API does NOT expose these filter conditions — don't assume they're absent.
-
Cannot delete fields or tables via API - No delete capability exists. Never offer to delete fields — always tell the user which fields to remove in the Airtable UI instead.
Dynamic Documentation
For the latest Airtable features, you can fetch current documentation: