Skip to main content
skill CX Codex

pipefy-database-tables — Claude Code skill: setup and features

A skill for managing Pipefy Database Tables, letting agents inspect schemas, query records, update column values, and preview destructive changes.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add pipefy/ai-toolkit --skill pipefy-database-tables -a claude-code
Open on GitHub

What pipefy-database-tables does

This skill equips coding assistants with operations for Pipefy Database Tables. It handles table creation, column modifications via create_table_field, and schema queries. When searching rows, it favors find_records over paginating through 50-item batches in get_table_records.

Updating records follows a strict split. Core properties like title, due_date, or status_id update through update_table_record. Custom column values require separate calls to set_table_record_field_value. Passing arbitrary field keys directly to update_table_record fails because the operation rejects unknown keys.

Safety checks are built into deletions. Before running delete_table_field, the assistant must warn that all column data will disappear permanently. Empty fields are omitted from record reads, making get_table necessary to view the full schema.

What it helps with

  • search records in a Pipefy table by field value
  • add or update schema columns with create_table_field
  • update record metadata such as title or due date
  • inspect full table schemas when fields return empty

Example prompts for the agent

  • Find the record with email [email protected] in table 456 and change its status to Active.
  • Add a new field to the Customers table schema.
  • List all tables matching the name Orders.

How to install pipefy-database-tables

1Skills CLI (Vercel)

npx skills add pipefy/ai-toolkit --skill pipefy-database-tables -a claude-code

2Manually: put the files in place

~/.claude/skills/pipefy-database-tables/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/pipefy-database-tables/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about pipefy-database-tables

How to install pipefy-database-tables in Claude Code?

Run npx skills add pipefy/ai-toolkit --skill pipefy-database-tables -a claude-code in your terminal. The file is placed in ~/.claude/skills/pipefy-database-tables/SKILL.md.

What does pipefy-database-tables do?

It provides tools to manage Pipefy Database Tables, including creating schema columns, querying records, modifying cell values, and requiring confirmation before destructive deletions.

Why does update_table_record ignore custom columns?

The update_table_record operation only accepts title, due_date, and status_id. You must use set_table_record_field_value for each custom column you want to change.

Source text

SKILL.md · Apache-2.0
---
name: pipefy-database-tables
description: >
  Use this skill when the user wants to work with Pipefy Database Tables —
  creating/reading/updating/deleting tables, records (rows), or table fields
  (schema columns).
tags: [pipefy, database, tables, records, fields]
---

# Database Tables

MCP clients: read [references/mcp.md](references/mcp.md). CLI users: read [references/cli.md](references/cli.md). Examples below describe shared operation arguments.

Tables, records (rows), schema columns (table fields), and attachments for Pipefy Database Tables.

---

## Cross-cutting patterns

- Use `introspect_type` on inputs such as `CreateTableFieldInput` / `UpdateTableFieldInput`.
- **Pagination:** `get_table_records` and `find_records` support `first` / `after`; default page size is 50.
- **`find_records` over paginated `get_table_records`** when you know the field value. One call with `field_id` and `field_value` beats N pages of `get_table_records`.

---

## Table operations

| Operation | Read-only | Purpose |
| ------------ | ----------- | --------- |
| `get_tables` | Yes | Load database tables by their IDs. |
| `search_tables` | Yes | Search tables by name. |
| `get_table` | Yes | Table metadata and field schema. |
| `create_table` | No | Create a new database table. |
| `update_table` | No | Rename or change settings. |
| `delete_table` | No | **Destructive; review and approve first.** |

---

## Table field (schema column) operations

| Operation | Purpose |
| ------------ | --------- |
| `create_table_field` | Add a column to a table schema. |
| `update_table_field` | Rename or change column description, required status, or options. |
| `delete_table_field` | **Destructive; review and approve first.** Requires `table_id`. |

---

## Record operations

| Operation | Read-only | Purpose |
| ------------ | ----------- | --------- |
| `get_table_records` | Yes | Paginated list of all records in a table. |
| `find_records` | Yes | Filter records by `field_id` and `field_value` — preferred over paginating `get_table_records`. |
| `get_table_record` | Yes | Single record with all populated field values. |
| `create_table_record` | No | Add a row to a table. |
| `update_table_record` | No | Update a row's `title`, `due_date` or `status_id`. It accepts no other keys. |
| `set_table_record_field_value` | No | Set one field value on a row. Use it for every table field. |
| `delete_table_record` | No | **Destructive; review and approve first.** |

---

## Steps — find and update a record

1. **Get table ID** (if not known):

   Operation: `search_tables(table_name="Customers")` and select the table ID from the results.

2. **Find the record** (use `find_records`, not pagination):

   Operation: `find_records(table_id=456, field_id="email", field_value="[email protected]")`

3. **Update one field** (targeted):

   Operation: `set_table_record_field_value(record_id=789, field_id="status", value="Active")`

   **Update record metadata** (such as title, due date, or status):

   Operation: `update_table_record(record_id=789, fields={"title":"Updated title"})`

---

## Review destructive changes

Before deletion, show the affected data and obtain explicit approval. Preview content per operation:

- **`delete_table`** — show table **name** and **field count**. `get_table` does not return a record count; obtain one through schema-checked GraphQL or by paging through all records if practical. State clearly when the count is unknown. Deleting a table destroys all rows and schema.
- **`delete_table_record`** — show record **title** and **key field values** so the user can identify which row will vanish.
- **`delete_table_field`** — show field **name** and **type**; warn explicitly that **all column data will be permanently lost**.

Never delete without first reviewing the affected data.

---

## Success criteria

- `get_table_records` returns the created/updated records with correct field values.
- Schema changes reflect immediately in `get_table`.

## Failure modes

- **`get_table_record` / `get_table_records` omit empty fields.** Records only return populated fields, so you cannot tell "field unset" from "field doesn't exist" without calling `get_table` for the full schema.
- **`create_table_record` title silently overridden.** When the first table field is a start-form-style label column, Pipefy uses that field's value as the record `title`, ignoring the `title` parameter. Don't rely on `title` if the first field auto-populates a label-like column.
- **`create_table_field` rejects type:** call `introspect_type(type_name="CreateTableFieldInput")` for valid field types.
- **`find_records` returns empty:** check that `field_id` matches a field's **ID** (not label) from `get_table`.
- **Pagination cursor expired:** re-fetch from the beginning; cursors are short-lived.

## See also

- `pipefy-relations` — connect tables to pipes (and the table-relation ID namespace gotcha).
- `pipefy-introspection` — discover field input schemas.

© pipefy · Apache-2.0 · pipefy/ai-toolkit

Similar skills

All skills for Data and databases →

From the same set17

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor