brainstorming
Structured design dialogue that validates ideas before implementation begins.
airtable-master
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.
Full skill instructions
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.pyStructured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs