← Back to Skills Marketplace
austinmao

Airtable Participants

by Austin Mao · GitHub ↗ · v1.0.0
cross-platform ✓ Security Clean
527
Downloads
0
Stars
2
Active Installs
1
Versions
Install in OpenClaw
/install airtable-participants
Description
Read and query retreat participant data from the Ceremonia Airtable base. Use this skill when asked about participants, subscriber counts, retreat attendance...
README (SKILL.md)

Airtable Participants Skill

Purpose

Query retreat participant data from the Ceremonia Airtable base. This is the authoritative source of truth for who receives emails and SMS messages. Access is read-only by default — record modifications require Austin's explicit instruction per change.

Required Setup

Ensure AIRTABLE_API_KEY is set in .env.

You will also need:

  • Base ID: [VERIFY — find in Airtable API docs at airtable.com/developers or ask Austin]
  • Table name: [VERIFY — confirm the participant table name with Austin]

Store confirmed values in TOOLS.md and MEMORY.md once verified.

Expected Data Structure

Participant records are expected to have at minimum these fields:

Field Type Description
name Text Full name
email Email Primary email address
phone Phone E.164 format preferred (+1XXXXXXXXXX)
retreat_status Select e.g., active, alumni, prospective, unsubscribed
tags Multi-select e.g., february-2026, guide-circle, donor
last_contact Date Most recent outreach date
donation_status Select e.g., donor, non-donor

[VERIFY actual field names with Austin on first use — update this section when confirmed]

Common Query Patterns

Get all active participants (for newsletter sends)

curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula={retreat_status}='active'&fields[]=name&fields[]=email" \
  -H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'

Get participants with phone numbers (for SMS campaigns)

curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula=AND({retreat_status}='active',{phone}!='')&fields[]=name&fields[]=phone" \
  -H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'

Get participant count by status

curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?fields[]=retreat_status" \
  -H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '[.records[].fields.retreat_status] | group_by(.) | map({status: .[0], count: length})'

Get participants by tag

curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula=FIND('february-2026',ARRAYJOIN({tags}))" \
  -H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'

Note: Airtable paginates at 100 records. Use the offset parameter from the response to fetch subsequent pages:

curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?offset={OFFSET_TOKEN}" \
  -H "Authorization: Bearer $AIRTABLE_API_KEY" | jq .

Always paginate fully before reporting totals or building recipient lists.

Behavior Rules

  • Read-only by default — never PATCH, POST, or DELETE Airtable records without Austin's explicit instruction per operation
  • When building a recipient list for email or SMS: always filter out records where retreat_status is 'unsubscribed'
  • Never include email addresses or phone numbers in Slack messages — summarize counts and segments only
  • If a query returns 0 results unexpectedly: report the issue to Austin rather than sending to an empty list
  • Paginate all list queries fully — do not report partial counts or build partial recipient lists
  • If Airtable API returns an error: surface it to Austin immediately with the error code and message

Record Modification (Requires Austin Approval)

When Austin instructs a record change (e.g., marking someone unsubscribed, updating last_contact):

  1. Confirm the specific change with Austin before executing
  2. Execute the PATCH request
  3. Log the change in memory/logs/crm-writes/YYYY-MM-DD.md with: record name/email, field changed, old value, new value, Austin's instruction timestamp

Example Invocations

  • "How many active participants do we have?"
  • "Get the email list for the February retreat attendees"
  • "Who attended the last three retreats?"
  • "How many people have phone numbers in the system?"
  • "Mark [name] as unsubscribed" (requires Austin approval)
  • "Pull the full active participant list for the newsletter"
  • "How many people joined since January?"
Usage Guidance
This skill appears to do exactly what it says: read participant records from Airtable using your AIRTABLE_API_KEY and standard CLI tools. Before installing, confirm you are comfortable granting the agent read access to participant PII (emails/phones/donation status). Also confirm that it is acceptable for the skill to write verified Base ID/Table name to TOOLS.md/MEMORY.md and to create logs under memory/logs/crm-writes when edits are authorized. If you require stricter controls, consider limiting who can invoke the skill or require explicit human approval for any run that returns PII.
Capability Analysis
Type: OpenClaw Skill Name: airtable-participants Version: 1.0.0 The skill bundle is designed for legitimate interaction with the Airtable API to query participant data. It explicitly states 'Read-only by default' and provides clear instructions to the AI agent to never perform write operations (PATCH, POST, DELETE) without explicit human approval. It also includes good privacy practices, such as filtering unsubscribed users and avoiding PII in Slack messages. There is no evidence of intentional malicious behavior, data exfiltration to unauthorized endpoints, or obfuscation. Any potential for injection via `filterByFormula` would be a vulnerability in the agent's handling of user input, not an intentional malicious design within the skill itself.
Capability Assessment
Purpose & Capability
The name/description (querying participant data in an Airtable base) match the declared needs: AIRTABLE_API_KEY, curl, and jq. Those binaries and the single API key are appropriate for the stated purpose.
Instruction Scope
SKILL.md stays largely within scope (queries, pagination, filtering, and strict read-only behavior by default). It does instruct the agent to store verified Base ID/Table name in TOOLS.md and MEMORY.md and to write change logs under memory/logs/crm-writes/YYYY-MM-DD.md when Austin authorizes edits — these are reasonable for an agent that keeps state, but they imply the skill will write files in the agent workspace. If your environment restricts file writes or you expect explicit config-path declarations, confirm that writing to those files is allowed and safe.
Install Mechanism
Instruction-only skill with no install spec; this is low risk. It relies on standard CLI tools (curl, jq) already expected to be present.
Credentials
Only AIRTABLE_API_KEY is required and declared as the primary credential. The data accessed (emails, phone numbers, donation status) is consistent with that credential. No unrelated credentials or broad secrets are requested.
Persistence & Privilege
always is false (normal). The skill allows autonomous invocation (platform default). Combined with access to participant PII, that increases the blast radius if misused; however the skill includes explicit behavior rules (read-only by default, require Austin approval for writes, never post PII to Slack). Review agent autonomy policies and who can invoke the skill.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install airtable-participants
  3. After installation, invoke the skill by name or use /airtable-participants
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release providing read-only access to retreat participant data from Airtable. - Queries participant records for emails, phone numbers, attendance, donation status, and segments. - Supplies recipient lists for email-newsletter and sms-outreach, filtering out unsubscribed participants. - Enforces strict read-only access by default; record edits require explicit instruction and audit logging. - Includes detailed setup, common query examples, and behavioral guidelines for safe data handling. - Requires AIRTABLE_API_KEY and verification of base/table configuration before use.
Metadata
Slug airtable-participants
Version 1.0.0
License
All-time Installs 2
Active Installs 2
Total Versions 1
Frequently Asked Questions

What is Airtable Participants?

Read and query retreat participant data from the Ceremonia Airtable base. Use this skill when asked about participants, subscriber counts, retreat attendance... It is an AI Agent Skill for Claude Code / OpenClaw, with 527 downloads so far.

How do I install Airtable Participants?

Run "/install airtable-participants" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Airtable Participants free?

Yes, Airtable Participants is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Airtable Participants support?

Airtable Participants is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Airtable Participants?

It is built and maintained by Austin Mao (@austinmao); the current version is v1.0.0.

💬 Comments