00-system/skills/airtable/airtable-master/SKILL.md
Shared resource library for Airtable integration skills. DO NOT load directly - provides common references (setup, API docs, error handling, field types) and scripts used by airtable-connect, airtable-query, and airtable-sync.
npx skillsauth add abdullahbeam/nexus-design-abdullah airtable-masterInstall 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 is NOT a user-facing skill. It's a shared resource library.
Provides shared resources to eliminate duplication across:
airtable-connect - Connect to bases, discover schemaairtable-query - Query records with filtersairtable-sync - Import/export recordsInstead of loading this skill, users invoke the specific skill above.
Problem solved: Multiple Airtable skills would have duplicated content (setup instructions, API docs, error handling).
Solution: Extract shared content into references/ and scripts/.
Result: Single source of truth, reduced context per skill.
setup-guide.md - Complete setup wizard
api-reference.md - API patterns
error-handling.md - Troubleshooting
field-types.md - Field type reference
check_airtable_config.py - Pre-flight validation
python check_airtable_config.py [--verbose] [--json]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --verbose / -v | No | False | Show detailed output |
| --json | No | False | Output structured JSON for AI consumption |
Exit codes: 0=configured, 1=partial (no bases), 2=not configured
When to Use: Run this FIRST before any Airtable operation. Use to validate PAT is configured, test API connection, check base access, or diagnose authentication issues.
setup_airtable.py - Interactive setup wizard
python setup_airtable.py [--non-interactive] [--api-key KEY]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --non-interactive | No | False | Skip prompts (requires API key) |
| --api-key | No | - | API key for non-interactive mode |
Default: Runs interactively. Guides through PAT creation, tests connection, saves to .env, auto-runs base discovery.
When to Use: Use when Airtable integration needs initial setup, when check_airtable_config.py returns exit code 2, or when user needs to reconfigure credentials or switch workspaces.
discover_bases.py - Base discovery (GET /meta/bases)
python discover_bases.py [--refresh] [--json] [--with-schema]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --refresh | No | False | Force re-discovery even if cache exists |
| --json | No | False | Output as JSON only (no progress messages) |
| --with-schema | No | False | Also fetch table schemas (slower) |
Saves to: 01-memory/integrations/airtable-bases.yaml
When to Use: Use when user asks "what bases do I have", "list my airtable bases", "show tables", after adding new bases, or when base/table name resolution fails (--refresh to update cache).
query_records.py - Query records from table (GET /{baseId}/{tableIdOrName})
python query_records.py --base BASE --table TABLE [--filter FORMULA] [--fields FIELDS] [--view VIEW] [--sort FIELD] [--limit N] [--json] [--verbose]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| --base | Yes | - | Base ID (appXXX) or name |
| --table | Yes | - | Table ID (tblXXX) or name |
| --filter | No | - | Airtable formula filter |
| --fields | No | - | Comma-separated field names to retrieve |
| --view | No | - | View ID or name |
| --sort | No | - | Sort field (prefix with - for descending) |
| --limit | No | - | Max records to return |
| --json | No | False | Output as JSON |
| --verbose / -v | No | False | Show debug info |
Filter Formula Examples:
--filter "{Status}='Active'"
--filter "AND({Status}='Active', {Priority}='High')"
--filter "SEARCH('john', LOWER({Name}))"
--filter "{Due Date} < TODAY()"
When to Use: Use when user wants to read records from a table, search with filters, list data from Airtable, or retrieve specific records. Supports Airtable formula syntax for complex filters.
manage_records.py - CRUD operations (POST/PATCH/PUT/DELETE /{baseId}/{tableIdOrName})
# Create record(s)
python manage_records.py create --base BASE --table TABLE --data JSON [--file FILE] [--typecast] [--json] [--verbose]
# Update record(s)
python manage_records.py update --base BASE --table TABLE --record RECID --data JSON [--file FILE] [--typecast] [--replace] [--json] [--verbose]
# Delete record(s)
python manage_records.py delete --base BASE --table TABLE --record RECID [--file FILE] [--json] [--verbose]
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| action | Yes | - | Action: create, update, delete (positional) |
| --base | Yes | - | Base ID (appXXX) or name |
| --table | Yes | - | Table ID (tblXXX) or name |
| --record | No* | - | Record ID (for update/delete single record) |
| --data | No* | - | JSON data for fields |
| --file | No* | - | JSON file with record(s) data |
| --typecast | No | False | Enable automatic type conversion |
| --replace | No | False | Replace mode for update (PUT vs PATCH) |
| --json | No | False | Output as JSON |
| --verbose / -v | No | False | Show debug info |
*For create: --data or --file required
*For update: --record + --data or --file required
*For delete: --record or --file required
Usage Examples:
# Create a single record
python manage_records.py create --base "My CRM" --table "Contacts" \
--data '{"Name": "John Doe", "Email": "[email protected]"}'
# Create multiple records from file
python manage_records.py create --base appXXX --table tblYYY --file records.json
# Update a record
python manage_records.py update --base "Tasks" --table "Tasks" \
--record recXXX --data '{"Status": "Done"}'
# Delete a record
python manage_records.py delete --base "Tasks" --table "Tasks" --record recXXX
# Batch operations with typecast
python manage_records.py create --base "CRM" --table "Leads" \
--file leads.json --typecast
Batch Limits: Max 10 records per API call (script handles batching automatically)
When to Use: Use create when user wants to add new records, update to modify existing records (PATCH=partial, PUT=replace), delete to remove records. Supports batch operations from JSON files.
When an Airtable skill fails due to missing configuration, the AI should:
python 00-system/skills/airtable/airtable-master/scripts/check_airtable_config.py --json
ai_action FieldThe JSON output includes an ai_action field that tells the AI what to do:
| ai_action | What to Do |
|-----------|------------|
| proceed_with_operation | Config OK, continue with the original operation |
| proceed_with_warning | Partial config (API works but no bases accessible) |
| prompt_for_api_key | Ask user: "I need your Airtable API key. Get one at https://airtable.com/create/tokens" |
| run_setup_wizard | Run: python 00-system/skills/airtable/airtable-master/scripts/setup_airtable.py |
If ai_action is prompt_for_api_key:
.env:
# Edit .env file to add:
AIRTABLE_API_KEY=pat.their_token_here
{
"status": "not_configured",
"exit_code": 2,
"ai_action": "prompt_for_api_key",
"missing": [
{"item": "AIRTABLE_API_KEY", "required": true, "location": ".env"}
],
"fix_instructions": [...],
"env_template": "AIRTABLE_API_KEY=pat.YOUR_TOKEN_HERE",
"setup_wizard": "python 00-system/skills/airtable/airtable-master/scripts/setup_airtable.py"
}
Each skill loads shared resources only when needed (progressive disclosure):
airtable-connect uses:
check_airtable_config.py (validate before connection)discover_bases.py (find and cache bases)api-reference.md (schema endpoints)error-handling.md (troubleshooting)airtable-query uses:
check_airtable_config.py (validate before query)query_records.py (list/filter records)api-reference.md (query patterns)field-types.md (interpret results)airtable-sync uses:
check_airtable_config.py (validate before sync)manage_records.py (CRUD operations)api-reference.md (batch patterns)error-handling.md (recovery)User says: "query my Projects base in Airtable"
What happens:
airtable-connect (NOT airtable-master)airtable-connect SKILL.md says: "Run check_airtable_config.py first"python 00-system/skills/airtable/airtable-master/scripts/check_airtable_config.py --jsonpython 00-system/skills/airtable/airtable-master/scripts/query_records.py --base "Projects"airtable-master/references/error-handling.mdairtable-master is NEVER loaded directly - it's just a resource library.
| Aspect | Airtable | Notion | |--------|----------|--------| | Auth | Personal Access Token (PAT) | Integration Token | | Rate Limit | 5 req/s per base | 3 req/s | | Batch Size | 10 records | Variable | | Pagination | Offset-based | Cursor-based | | Field Types | 20+ types | 20+ property types |
Version: 1.3 Created: 2025-12-11 Updated: 2025-12-11 Status: Production Ready
Changelog:
--json support, added setup_airtable.pydevelopment
Load when user says "mental model", "think through this", "structured thinking", "help me decide", "analyze this problem", "first principles", "pre-mortem", "stakeholder mapping", "what framework should I use", or any specific model name. Provides 59 thinking frameworks for decision-making, problem decomposition, and strategic analysis.
development
Generate comprehensive philosophy and standards documents for any domain (UX design, landing pages, email outbound, API design, etc.). Load when user says "create philosophy doc", "generate standards for [domain]", "build best practices guide", or "create benchmarking document". Conducts deep research, synthesizes findings, and produces structured philosophy documents with principles, frameworks, anti-patterns, checklists, case studies, and metrics.
development
Validate Nexus-v3 system integrity and fix common issues automatically. Load when user mentions "validate system", "check system", or "fix problems". Runs comprehensive checks on folder structure, metadata files, and framework consistency with auto-repair capabilities.
development
Load when user says "validate docs", "check documentation consistency", "docs vs implementation", or "find documentation mismatches". Systematically compares implementation code against documentation to identify and fix inconsistencies.