Agent skill

Airtable Build Collection

by mehta-lab in mehta-lab/VisCy

Query Airtable MCP to fetch experiment metadata and generate a DynaCLR collection YAML for training

BSD-3-ClauseAuto-check passedAI & LLM Engineering

Install Airtable Build Collection

skills CLI
$ npx skills add mehta-lab/VisCy --skill airtable-build-collection -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mehta-lab/VisCy airtable-build-collection --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mehta-lab/VisCy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/airtable-build-collection .claude/skills/airtable-build-collection && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
airtable-build-collection
GitHub stars
104
Token cost
~1.8k tokens
SKILL.md length
650 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Query Airtable MCP to fetch experiment metadata and generate a DynaCLR collection YAML for training

  • Works in 7 steps: Query Airtable → Group and Summarize → Determine Channels → …
  • AI & LLM Engineering work in your project
  • SKILL.md covers Airtable Configuration, Usage, Process and Important Notes
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Airtable Build Collection is an agent skill from mehta-lab/VisCy. Query Airtable MCP to fetch experiment metadata and generate a DynaCLR collection YAML for training

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in AI & LLM Engineering. It works with Airtable, Model Context Protocol and Zarr. The repository describes itself as: computer vision models for single-cell phenotyping. The licence is BSD-3-Clause.

When your agent uses it

  • AI & LLM Engineering work in your project

Example prompts

  • “/airtable-build-collection”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Query Airtable
  2. Group and Summarize
  3. Determine Channels
  4. Determine tracks_path
  5. Naming Convention
  6. Generate Collection YAML
  7. Save and Validate

What it can do on your machine

Read from SKILL.md and the folder at commit 4b62365. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Airtable Build Collection loads about 1.8k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 650 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mehta-lab/VisCy at commit 4b62365, republished under its BSD-3-Clause licence (© mehta-lab). 650 words, ~1,753 tokens.

Download SKILL.mdSave it as .claude/skills/airtable-build-collection/SKILL.md (or your agent's skills folder).
name
airtable-build-collection
description
Query Airtable MCP to fetch experiment metadata and generate a DynaCLR collection YAML for training

Build Collection from Airtable

Build a collection YAML for DynaCLR training by querying the Computational Imaging Database on Airtable.

Airtable Configuration

  • Base ID: app8vqaoWyOwa0sB5 (Computational Imaging Database)
  • Table ID: tblaFzrDMlVZHPZIj (Datasets)

Key fields in the Datasets table:

FieldDescription
datasetExperiment name (e.g. 2025_07_24_A549_SEC61_TOMM20_G3BP1_ZIKV)
well_idWell path (e.g. B/2)
fovFOV identifier
cell_stateCondition label (e.g. infected, uninfected)
markerProtein marker (e.g. SEC61B, TOMM20, pAL10)
organelleTarget organelle
perturbationPerturbation applied
hours_post_perturbationHPI at imaging start
moiMultiplicity of infection
time_interval_minMinutes between frames
data_pathPath to HCS OME-Zarr store (FOV-level — extract zarr root by trimming well/fov)
tracks_pathPath to tracking zarr (may be absent)
channel_0_name .. channel_N_nameZarr channel names
channel_0_marker .. channel_N_markerProtein marker for each channel
t_shape, c_shape, z_shape, y_shape, x_shapeArray dimensions
pixel_size_xy_um, pixel_size_z_umPhysical pixel sizes

Usage

The user will describe what they want in natural language, e.g.:

  • "fetch the dataset from 2025_07_24 with all the organelles from that experiment"
  • "build a collection with the SEC61 and TOMM20 experiments from July 2025"
  • "make a collection for all ZIKV infection datasets"

Process

Step 1: Query Airtable

Search for matching records using mcp__airtable__list_records with filterByFormula.

Common filter patterns:

  • By dataset name: SEARCH("2025_07_24", {dataset})
  • By organelle: {organelle} = "SEC61"
  • By perturbation: {perturbation} = "ZIKV"
  • Combined: AND(SEARCH("2025_07", {dataset}), {organelle} = "TOMM20")

Use mcp__airtable__list_records with filterByFormula for precise filtering. Use mcp__airtable__search_records for fuzzy text matching.

Step 2: Group and Summarize

Group records by dataset. If a single dataset contains multiple markers/organelles (different marker values across wells), split it into one experiment entry per marker. The experiment name gets a _{MARKER} suffix (e.g. 2025_07_24_A549_SEC61_TOMM20_G3BP1_ZIKV_TOMM20). All split entries share the same data_path and tracks_path but have different perturbation_wells, marker, and organelle.

This is handled automatically by build_collection() in packages/viscy-data/src/viscy_data/collection.py via the _group_records() helper.

Present a summary table to the user showing:

  • Dataset names found (with split entries if multi-organelle)
  • Number of FOVs per dataset
  • Organelles and markers
  • Channel names and markers
  • Conditions (inferred from perturbation field — see note below)
  • Wells per condition
  • Whether tracks_path is available

Note on cell_state: In Airtable, cell_state is typically "Live" for all records. Infer infection status from the perturbation field: wells with a perturbation value are "infected", wells without are "uninfected".

Ask the user to confirm which datasets to include.

Show full SKILL.md (282 more words)Show less
Step 3: Determine Channels

Each experiment entry has a channels list where each entry maps a zarr channel name to a protein marker:

yaml
channels:
  - name: "Phase3D"           # zarr channel name
    marker: "Phase3D"         # protein marker / semantic label
  - name: "raw GFP EX488 EM525-45"
    marker: "SEC61B"

Rules for mapping:

  1. channel_X_name from Airtable → name field (the zarr channel name)
  2. channel_X_marker from Airtable → marker field (the protein marker)
  3. Only include channels relevant to the experiment — typically Phase3D (labelfree) and the fluorescence channel(s) for the marker of interest

Present the proposed channel mapping to the user for confirmation:

Channels per experiment:
  2025_07_24_SEC61:
    - Phase3D → Phase3D
    - raw GFP EX488 EM525-45 → SEC61B
  2024_08_14_ZIKV:
    - Phase3D → Phase3D
    - MultiCam_GFP_BF → pAL10
Step 4: Determine tracks_path

Check the tracks_path field in Airtable. If missing, ask the user.

Step 5: Naming Convention

Collection filenames follow: {cell_line}_{perturbation}_{organelle}.yml

  • Single organelle: use the organelle name, e.g. A549_ZIKV_SEC61.yml
  • Multiple organelles: use multiorganelle, e.g. A549_ZIKV_multiorganelle.yml
  • No version suffix — versioning is handled by git history
  • The name field inside the YAML should match the filename (without .yml)
Step 6: Generate Collection YAML

Use the Collection schema from packages/viscy-data/src/viscy_data/collection.py.

The current schema uses per-experiment channels (list of {name, marker} entries), NOT source_channels:

yaml
name: <filename without .yml>
description: "<what this collection contains>"

provenance:
  airtable_base_id: app8vqaoWyOwa0sB5
  airtable_query: "<the filter formula used>"
  record_ids: []
  created_at: "<ISO 8601 timestamp>"
  created_by: "<user name if known>"

experiments:
  - name: <dataset_name or dataset_marker split name>
    data_path: <zarr store root — trim well/fov from airtable data_path>
    tracks_path: <from airtable or user>
    channels:
      - name: <zarr_channel_name>
        marker: <protein_marker>
      - name: <zarr_channel_name>
        marker: <protein_marker>
    perturbation_wells:
      uninfected:
        - <well_id>
      <perturbation_name>:
        - <well_id>
    interval_minutes: <time_interval_min>
    start_hpi: <hours_post_perturbation or 0.0>
    marker: <primary marker>
    organelle: <organelle>
    moi: <moi or 0.0>
    pixel_size_xy_um: <from airtable>
    pixel_size_z_um: <from airtable>

Key notes:

  • data_path should be the zarr store root (up to .zarr), NOT the FOV-level path from Airtable
  • perturbation_wells uses uninfected / <perturbation> keys inferred from the perturbation field
  • channels lists only the channels needed for training (not all channels in the zarr)
  • marker at the experiment level is the primary marker for this experiment entry
Step 7: Save and Validate
  1. Save to applications/dynaclr/configs/collections/<name>.yml
  2. Validate by loading with viscy_data.collection.load_collection(path) using a quick Python check
  3. Show the user the final YAML and validation result

Important Notes

  • interval_minutes must be > 0
  • perturbation_wells must not be empty
  • Zarr channel names in channels[].name must match actual zarr channel names
  • For multi-marker datasets, split into separate experiment entries per marker
  • Reference existing collections in applications/dynaclr/configs/collections/ for format examples

© mehta-lab, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/airtable-build-collection of mehta-lab/VisCy.

Open the folder on GitHubat commit 4b62365

Compare with similar skills

Airtable Build Collection next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Airtable Build Collection compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Airtable Build Collection this skillmehta-lab/VisCy104—~1.8kAutomated safety check: PassBSD-3-Clause
Codebase Managementgiancarloerra/SocratiCode3.3k1 repos~1.8kAutomated safety check: PassAGPL-3.0
Vexor CLIscarletkc/vexor2443 repos~1.2kAutomated safety check: PassMIT
Agent Squad Python Guide2FastLabs/agent-squad7.8k—~4.7kAutomated safety check: PassApache-2.0
Agents Best PracticesDenisSergeevitch/agents-best-practices2.4k—~7.4kAutomated safety check: PassMIT
SynalinksSynaLinks/synalinks-skills907—~4.8kAutomated safety check: PassApache-2.0

Similar skills

  • Codebase Management

    giancarloerra/SocratiCode

    Set up, index, and manage SocratiCode codebase indexing. An agent skill from giancarloerra/SocratiCode.

    3.3k GitHub starsUsed in 1 repo~1.8k tokens
    AI & LLM EngineeringAuto-check passed
  • Vexor CLI

    scarletkc/vexor

    Semantic file discovery via vexor. An agent skill from scarletkc/vexor.

    244 GitHub starsUsed in 3 repos~1.2k tokens
    AI & LLM EngineeringAuto-check passed
  • Agent Squad Python Guide

    2FastLabs/agent-squad

    Map of the agent-squad Python framework for async multi-agent orchestration: which agent, classifier, storage and tool provider to pick, and the pitfalls to avoid.

    7.8k GitHub stars~4.7k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Agents Best Practices

    DenisSergeevitch/agents-best-practices

    A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.

    2.4k GitHub stars~7.4k tokensUpdated 5 days ago
    AI & LLM EngineeringAuto-check passed
  • Synalinks

    SynaLinks/synalinks-skills

    A skill your agent uses for anything involving the Synalinks neuro-symbolic LM framework (Keras-inspired): DataModel/Field/Input, JSON operators (+ & | ^ ~), synalinks.ops…

    907 GitHub stars~4.8k tokensUpdated 12 days ago
    AI & LLM EngineeringAuto-check passed
  • AgentSquad for Swift

    2FastLabs/agent-squad

    Guides building on-device multi-agent apps in Swift with the AgentSquad framework: which agent, orchestrator, classifier, storage or voice type fits each situation.

    7.8k GitHub stars~3.5k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed

More from mehta-lab/VisCy

  • Airtable Register

    mehta-lab/VisCy

    Register zarr positions into the Computational Imaging Database on Airtable, write channelsmetadata/experimentmetadata to zarr .zattrs, or bulk-update Airtable records via MCP.

    104 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Prepare Dataset

    mehta-lab/VisCy

    Prepare datasets for training on VAST storage (NFS - VAST rechunked zarr v3 pipeline).

    104 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Hf Dynacell

    mehta-lab/VisCy

    Develop, deploy, and maintain the DynaCell virtual-staining HuggingFace demo hosted at biohub/dynacell (ZeroGPU).

    104 GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Questions about Airtable Build Collection

What does Airtable Build Collection do?

Query Airtable MCP to fetch experiment metadata and generate a DynaCLR collection YAML for training. Airtable Build Collection is an agent skill from mehta-lab/VisCy.

When should I use Airtable Build Collection?

Airtable Build Collection fits situations like: AI & LLM Engineering work in your project.

How do I install Airtable Build Collection in Claude Code?

Run `npx skills add mehta-lab/VisCy --skill airtable-build-collection -a claude-code`. Or copy the skill folder (.claude/skills/airtable-build-collection in mehta-lab/VisCy) into .claude/skills/airtable-build-collection in your project. Claude Code loads it when a task matches its description.

How do I install Airtable Build Collection in Codex?

Run `npx skills add mehta-lab/VisCy --skill airtable-build-collection -a codex`. Or copy the skill folder (.claude/skills/airtable-build-collection in mehta-lab/VisCy) into .agents/skills/airtable-build-collection in your project. Codex loads it when a task matches its description.

Can I use Airtable Build Collection in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mehta-lab/VisCy --skill airtable-build-collection -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/airtable-build-collection, .gemini/skills/airtable-build-collection, .github/skills/airtable-build-collection and .opencode/skills/airtable-build-collection in your project.

What does Airtable Build Collection need to run?

SKILL.md names no scripts, command-line tools or credentials: Airtable Build Collection is instructions for the agent only. Our summary lists: Python 3.

Does Airtable Build Collection access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Airtable Build Collection safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Airtable Build Collection use?

Airtable Build Collection is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Airtable Build Collection use?

About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Airtable Build Collection?

Skills that share tags, products or a category with Airtable Build Collection: Codebase Management (giancarloerra/SocratiCode, 3.3k stars), Vexor CLI (scarletkc/vexor, 244 stars), Agent Squad Python Guide (2FastLabs/agent-squad, 7.8k stars) and Agents Best Practices (DenisSergeevitch/agents-best-practices, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Airtable Build Collection?

mehta-lab (a GitHub organization) maintains it in mehta-lab/VisCy, which has 104 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.

Source: mehta-lab/VisCy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.