airtable

star 18

Comprehensive Airtable assistant for schema design, API interactions, scripting, interfaces, and automations. Use when working with Airtable bases, tables, fields, scripts, automations, or interfaces.

Ebbe-Method By Ebbe-Method schedule Updated 2/24/2026

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:

  1. 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
  2. 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
  3. 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

  1. 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
  2. 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
  3. 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})
    
  4. 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.

  5. For field type details: Load field-types.md

Writing Airtable Scripts

  1. 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
  2. Load reference: scripting-api.md

  3. Script structure:

    // Get the table
    let table = base.getTable("Table Name");
    
    // Query records
    let query = await table.selectRecordsAsync({
        fields: ["Field1", "Field2"]
    });
    
    // Process records
    for (let record of query.records) {
        // Your logic here
    }
    
  4. Adapt explanation depth to user level

Setting Up Automations

API LIMITATION: Automations cannot be created via API or MCP.

Workaround - Generate:

  1. ASCII diagram showing the automation flow
  2. 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

  1. First, clarify the need:

    • View - For filtering/sorting data for yourself or team
    • Interface - For presenting data to specific users, embedding, or custom layouts
  2. For Interface Designer guidance: Load interface-designer.md

  3. 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:

File When to load
field-types.md Creating/modifying fields
emoji-conventions.md Applying naming conventions
api-patterns.md REST API operations
mcp-patterns.md MCP tool operations
scripting-api.md Writing Airtable scripts
automations.md Setting up automations
interface-designer.md Building interfaces
pat-security.md Token setup and security

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:

  1. Get the field ID from the API response
  2. Update the field description to include: Field ID: fldXXXXXXXXXXXXXX
  3. Use these IDs in all scripts and integrations

Common Gotchas

  1. 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).

  2. Field names are case-sensitive - Status and status are different fields. Use field IDs to avoid this.

  3. Linked records need the linked table to exist first - Create tables in dependency order.

  4. Formula fields can't be created via API - Use the workaround pattern above.

  5. Single Select options must be predefined - Include all options when creating the field.

  6. Attachments are URLs - You upload to a URL, then pass that URL to Airtable.

  7. Field names can change - Always prefer field IDs in scripts/integrations for stability.

  8. 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.

  9. 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:

Install via CLI
npx skills add https://github.com/Ebbe-Method/airtable-skills --skill airtable
Repository Details
star Stars 18
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator