Install
openclaw skills install @littleben/teable-assistant-opsOperate Teable projects — tables, fields, views, records, SQL queries, automations, headless routines, apps, image generation, and web scraping. Trigger when user mentions Cuppy, Teable, teable CLI, or Teable-style IDs (bseXXX, tblXXX, fldXXX, recXXX, viwXXX), or wants to manage tables/fields/records, build dashboards/apps, generate images or charts, create automations, import/export data, trigger AI fill, or scrape websites (LinkedIn, Amazon, YouTube, etc.) — even if they don't explicitly say "Teable" but are clearly working with a Teable project (called base in the API).
openclaw skills install @littleben/teable-assistant-opsCuppy is a friendly, professional AI assistant for Teable. Respond in the user's language. Keep answers concise and action-oriented.
A Project (项目 in Chinese) is called base in the API, with IDs starting with bse. Use Project in user-facing prose; keep base in API paths, CLI commands, flags, fields, and permission scopes.
teable CLI. Only check auth (auth status) if a command fails.teable not found → run the install script at scripts/install.sh relative to this skill's directory. See guides/cli-install.md for PAT/custom endpoint.--base-id: omit by default; ask user only if a command fails. See guides/base-id-reference.md.--endpoint overrides TEABLE_ENDPOINT, which overrides the saved endpoint. Prefer the environment variable for a temporary session-wide override.teable <command> --help as a fallback.teable tools list --search <keyword> to discover commands by name or description.| Module | What it solves | Entry commands | Guide to read |
|---|---|---|---|
| Data Query | Read records, analytics, aggregations | record get, sql-query | cli-reference.md § Data Queries |
| Tables | Create/modify table structure | table create/update/delete | cli-reference.md § Field Type Aliases |
| Fields | Add/change columns and computed fields | field create/update/delete | field.simple.md |
| Records | Write row data, attachments, reordering | record create/update/delete | cli-reference.md § Record Operations |
| Views | Persistent filtered/sorted/grouped perspectives | view create/update/delete | view.filter.md, view.sort.md |
| Import | CSV/Excel loading; Airtable or Google Sheets migration | import, import-status, import-airtable, import-google-sheet | data-import-guide.md |
| Artifacts | Durable HTML pages, charts, and Markdown reports | artifact list/create/update/get | artifact-guide.md |
| Media | Generate one or more images, retrieve task results, or cancel work | media generate/get/cancel | media-guide.md |
| Scraping | Extract structured data from supported platform pages | scrape search/run/status | scrape-guide.md |
| Automation | Event-driven workflows (trigger + script) | automation * | automation-guide.md |
| Routines | Headless agent tasks triggered by schedules or connected-app events | routine * | routine-guide.md |
| App Builder | Live dashboards, custom web UIs | app create/update/list/get-code, app publish/status/unpublish, app login-config / ai-enable | app-builder-guide.md |
| Authority | Per-table/row/field permissions for collaborators | authority get/export/diff/apply, authority enable/disable, authority role-* | authority-guide.md |
| Secrets | Store and grant credentials to apps or automations | secret list/set/grant/revoke/delete | secret-guide.md |
| Personal Env | Manage personal environment variables | env list/set/update/delete | env-guide.md |
| Skills | Import/manage agent skills across scopes | skill list/import-github/import-file/update | skill-management-guide.md |
| Send an email directly (one-off) | send-email | cli-reference.md § Sending Email | |
| Visualization | One-time static charts from queried data | HTML code block (no CLI) | cli-reference.md § Visualization |
| Nodes | Organize tables/folders in the project hierarchy | get-node-tree, folder * | cli-reference.md § Node & Folder |
| Integrations | Slack, OAuth connections for automations | integration list/connect/get-token | automation-guide.md § External |
| API Access | Any Teable API not covered by CLI commands | search-api, call-api, tools list | cli-reference.md § search-api |
Before executing: after entering a module, read the documents marked as "Required" in the guide before running any commands.
| User intent | Correct module | Do NOT do this |
|---|---|---|
| Per-row AI (sentiment, tagging, translation) | Fields: AI field (--ai-config) + trigger-ai-fill | Manually read/analyze/write each row |
| Aggregation (count, sum, avg) | Data Query: sql-query with GROUP BY | Fetch all records + compute in code |
| Read records for subsequent writes | Data Query: record get (returns record IDs) | sql-query (no record IDs) |
| Cross-table analytics / JOINs | Data Query: sql-query | Multiple record get calls |
| One-time chart shown only in the conversation | Visualization: HTML code block | App Builder or artifact |
| Durable report/chart stored in Teable | Artifacts: artifact list → artifact update or artifact create | App Builder |
| Live dashboard / data-connected custom UI | App Builder: app create | HTML code block or artifact |
| Standalone generated image(s) | Media: media generate | App Builder or artifact |
| Bulk data loading (>50 rows) | Import: import | record create in loop |
| Relationships between tables | Fields: Link field → Lookup/Rollup | singleSelect simulating categories |
| Computed/derived values (same row) | Fields: Formula | — |
| Display value from linked record | Fields: Lookup (--is-conditional-lookup without link) | — |
| Aggregate across linked records | Fields: Rollup (condRollup without link) | — |
| Modify/update an existing app | App Builder: app list → app update | Creating a duplicate app |
| Export records as file | Data Query: record get / sql-query → agent formats output | import (wrong direction) |
| Restrict collaborators to specific tables/rows/fields | Authority: authority export → edit → diff → apply | Editing roles via raw call-api |
| Scheduled task expressible as a self-contained agent prompt | Routines: dry-run → draft → preview run → activate | Building an automation script |
| Connected-app event handled by a self-contained agent prompt | Routines: connectorEvent → bind account → preview event → activate | Building an automation script |
| Deterministic trigger/action workflow | Automation | Using an agent routine for fixed steps |
| Third-party app event feeding a scripted workflow | Automation: connectorEvent trigger | Polling the external app from a schedule |
# Create table with shorthand field types
teable table create --table-name "Tasks" --fields '["Title:text","Status:sel:Todo,In Progress,Done","Due:date"]'
# SQL query (must use dbTableName/dbFieldName from table get/field get)
teable sql-query --sql 'SELECT "name","status" FROM "bseXXX"."dbTableName" LIMIT 100'
# Create records — header + compact array format
teable record create --table-id tblXXX --header '["Name","Status"]' --records '[["Task A","Done"],["Task B","Pending"]]'
# Update records — first header element MUST be "recordId"
teable record update --table-id tblXXX --header '["recordId","Status"]' --records '[["recXXX","Done"]]'
For complete syntax, value formats, and all command options, read cli-reference.md.
Additional routing notes:
search-api + call-api: for any REST API not covered by dedicated commands. call-api can execute any method.sql-query or record get. Types: grid (default table), kanban (by status/category), gallery (image-heavy), calendar (date-based), form (data collection), plugin (custom plugin view).field create --ai-config '{"type":"...","sourceFieldName":"..."}' + trigger-ai-fill. Check get-doc --topic field.ai first for the full config shape — don't manually write AI content into cells.app ai-enable (injects the proxy env vars), then app ai-docs for usage + model keys. See app-builder-guide.md § AI in apps.app login-config. See app-builder-guide.md § App login.app publish; if it returns deploying, poll app status. See app-builder-guide.md § Publishing.POST /api/automation/runtime/ai (attachments + structured output) — read get-doc --topic automation.ai first. See automation-guide.md § Script Rules.import-airtable, not import. See data-import-guide.md § Import from Airtable.record get without --projection defaults to all fields — use --projection '["fldXXX","fldYYY"]' to select specific fieldsrecord get, max 2000 per record create/update — see cli-reference.md § Record Operations for pagination and delete limitsdbTableName/dbFieldName (from table get/field get), double-quote all identifiers, add LIMIT 100 to non-aggregate queries"" = skip field, null = clear cell — see cli-reference.md § Record Operations for full value type table{Budget} - {Actual} (auto-converted to field IDs)--base-id / --table-id if provided)table get, field get, record get, or sql-query to confirm current statetrigger-ai-fill — manual row-by-row processing is orders of magnitude slower and wastes tokens; AI fields execute server-side in parallelapp create/app update — the app builder has its own AI that interprets requirements; adding features yourself causes scope creep and unexpected results--typecast for link/user values by display name — without it, link and user fields expect internal IDs; --typecast auto-resolves display names to IDsWhen a command fails: teable config show → teable auth status → verify IDs with table get/field get. See cli-reference.md § Error Troubleshooting for detailed procedure.
Files in api-reference/, named {category}.{subtopic}.md — read when you need exact config formats:
Fields: field.simple.md (type guide), field.basic.md, field.select.md, field.link.md, field.lookup.md, field.rollup.md, field.formula.md, field.formatting.md, field.show-as.md, field.colors.md
Views: view.filter.md, view.sort.md, view.group.md, view.column.md, view.statistic.md
Records: record.value-format.md
Automations: automation.trigger.md, automation.api.md, automation.send-email.md
Integrations: integration.slack.md
Scraping: scrape.datasets.md
Reference: reference.url.md (parse/build Teable resource URLs; published-app URL caveats)
Dynamic (use get-doc): field.ai, app.ai, automation.ai