From Trello
Creates and updates Trello cards, manages boards, lists, labels, checklists, and searches. Useful when a user wants to organize tasks or boards.
How this skill is triggered — by the user, by Claude, or both
Slash command
/trello:trelloThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
_Independent, unofficial connector for Trello. Not affiliated with, endorsed by, or sponsored by Trello. "Trello" is a trademark of its owner, used only to identify the service this connector works with._
CHANGELOG.mdLICENSENOTICEREADME.mdcli.jscli.tsconnections.tsevals/evals.jsonindex.tslib/trello.tspackage.jsonreferences/trello-api-gotchas.mdscripts/addCardAttachment.tsscripts/addCardLabel.tsscripts/addCardMember.tsscripts/addChecklistItem.tsscripts/addMemberToBoard.tsscripts/archiveCard.tsscripts/closeBoard.tsscripts/completeChecklistItem.tsIndependent, unofficial connector for Trello. Not affiliated with, endorsed by, or sponsored by Trello. "Trello" is a trademark of its owner, used only to identify the service this connector works with.
Scripts for working with Trello against the Trello REST API (https://api.trello.com/1): create and move cards, manage boards and lists, labels and checklists, comments and attachments, member lookups, and search. 44 scripts across boards, lists, cards, labels, checklists, members, and search.
This is an agentskills.io skill.
If this connector is already exposed to you as callable tools (e.g. mcp__trello__<tool>), that's a valid path — call them directly. Everything below is only for standalone terminal use when no such tools are loaded.
If the connector has not been installed as a skill yet, install it first with npx skills zapier/connectors --skill trello (or your harness's own skill-install mechanism), then continue here.
The connector runs on Node.js 22.18+ and needs a one-time npm install in this directory. cli.js is the entry point — list every script with node cli.js --help, then learn a script's inputs and connections with node cli.js run <script> --help. On older Node, run node cli.js --help anyway: it detects your runtime and prints how to run without upgrading (the prebuilt npm package, or another runtime) — don't skip the connector just because Node is old.
cli.js self-checks readiness before running: if dependencies aren't installed it exits non-zero with the exact install command (it disambiguates a read-only directory from a sandbox-blocked package cache). Run that, then re-run your command.
One file per script in scripts/; each script's inputSchema / outputSchema (Zod) in the script file is the source of truth for its contract. Shared helpers live in lib/trello.ts. All scripts use the single connection trello.
| Script | Script name | Connections | Description |
|---|---|---|---|
scripts/createBoard.ts | createBoard | Single (trello) | Create a new board in a workspace |
scripts/copyBoard.ts | copyBoard | Single (trello) | Copy a board, optionally keeping cards |
scripts/closeBoard.ts | closeBoard | Single (trello) | Archive (close) a board |
scripts/getBoard.ts | getBoard | Single (trello) | Get a board by id |
scripts/listBoards.ts | listBoards | Single (trello) | List boards the authenticated member can access |
scripts/findBoard.ts | findBoard | Single (trello) | Find boards by name |
scripts/listBoardMembers.ts | listBoardMembers | Single (trello) | List members of a board |
scripts/addMemberToBoard.ts | addMemberToBoard | Single (trello) | Add a member to a board by id or email |
scripts/createList.ts | createList | Single (trello) | Create a list on a board |
scripts/getList.ts | getList | Single (trello) | Get a list by id |
scripts/listLists.ts | listLists | Single (trello) | List all lists on a board |
scripts/findList.ts | findList | Single (trello) | Find lists on a board by name |
scripts/createCard.ts | createCard | Single (trello) | Create a card on a list with optional members, labels, and attachments |
scripts/updateCard.ts | updateCard | Single (trello) | Update card fields (name, description, due, cover, list) |
scripts/archiveCard.ts | archiveCard | Single (trello) | Archive (close) a card |
scripts/moveCard.ts | moveCard | Single (trello) | Move a card to another list or board |
scripts/getCard.ts | getCard | Single (trello) | Get a card by id |
scripts/listCards.ts | listCards | Single (trello) | List cards on a board with optional filters |
scripts/searchCards.ts | searchCards | Single (trello) | Search cards using Trello query DSL or structured filters |
scripts/createComment.ts | createComment | Single (trello) | Add a comment to a card |
scripts/getAction.ts | getAction | Single (trello) | Get an action (activity) by id |
scripts/listCardAttachments.ts | listCardAttachments | Single (trello) | List attachments on a card |
scripts/addCardAttachment.ts | addCardAttachment | Single (trello) | Add a URL attachment or link a remote file to a card |
scripts/createLabel.ts | createLabel | Single (trello) | Create a label on a board |
scripts/getLabel.ts | getLabel | Single (trello) | Get a label by id |
scripts/listLabels.ts | listLabels | Single (trello) | List labels on a board |
scripts/findLabel.ts | findLabel | Single (trello) | Find labels on a board by name |
scripts/addCardLabel.ts | addCardLabel | Single (trello) | Add an existing label to a card |
scripts/removeCardLabel.ts | removeCardLabel | Single (trello) | Remove a label from a card |
scripts/createChecklist.ts | createChecklist | Single (trello) | Create a checklist on a card |
scripts/getChecklist.ts | getChecklist | Single (trello) | Get a checklist by id |
scripts/deleteChecklist.ts | deleteChecklist | Single (trello) | Delete a checklist |
scripts/findChecklist.ts | findChecklist | Single (trello) | Find checklists on a card by name |
scripts/addChecklistItem.ts | addChecklistItem | Single (trello) | Add an item to a checklist |
scripts/getChecklistItem.ts | getChecklistItem | Single (trello) | Get a checklist item by id |
scripts/findChecklistItem.ts | findChecklistItem | Single (trello) | Find checklist items by name |
scripts/completeChecklistItem.ts | completeChecklistItem | Single (trello) | Mark a checklist item complete or incomplete |
scripts/getCurrentMember.ts | getCurrentMember | Single (trello) | Get the authenticated member |
scripts/getMember.ts | getMember | Single (trello) | Get a member by id |
scripts/findOrganizationMember.ts | findOrganizationMember | Single (trello) | Find members in a workspace |
scripts/getOrganization.ts | getOrganization | Single (trello) | Get a workspace by id |
scripts/listOrganizations.ts | listOrganizations | Single (trello) | List workspaces the member belongs to |
scripts/addCardMember.ts | addCardMember | Single (trello) | Add a member to a card |
scripts/listCustomFields.ts | listCustomFields | Single (trello) | List custom field definitions on a board |
Resolve ids before writes. Trello ids are 24-character hex strings. When the user names a board, list, or label, call the matching find* or list* script first and pass the returned id into create/update/move scripts — never guess ids.
Always learn a script's input contract before calling it — never guess field names, casing, or types. Run node cli.js run <script> --help (or ./scripts/<script>.ts --help), which renders inputSchema as JSON Schema and lists the connection(s) and available resolvers. Guessing the payload just produces a ZodError and wastes a round-trip.
Pass auth as one connection string with --connection [<resolver>:]<value>. The value is a selector, not the secret; the <resolver>: prefix is optional (a bare value goes to the first resolver that claims it). Each script declares the connections it needs and the resolvers each accepts — always run node cli.js run <script> --help to see them rather than relying on this file.
Trello uses OAuth 1.0a — every request carries an Authorization: OAuth oauth_consumer_key="…", oauth_token="…" header built from an API key plus access token. One connection slot (trello) holds both values. Two resolvers, Zapier-first:
zapier:<connection-id> (recommended) — route through a Zapier Trello connection. Prerequisite: a Zapier account (free signup at https://zapier.com, ~1 minute). The user authorizes Trello once via Zapier's OAuth flow; token refresh is handled for you. A bare UUID auto-claims this resolver. Find the ID with the Zapier SDK CLI: npx zapier-sdk list-connections TrelloAPI (run login first if unauthenticated; add --json for machine output).env:TRELLO (fallback) — read credentials from TRELLO_API_KEY and TRELLO_TOKEN environment variables (both required; the prefix TRELLO maps to those two keys). Export both before calling — the secrets stay in env, never on argv.If no connection is passed the script fails with an actionable error telling you to Pass --connection [<resolver>:]<value> and lists the resolvers in match order.
After npm install, run a script by name with node cli.js run <script>, or execute its file directly — both take the same arguments and both accept --help. Always run a script's --help first to learn its exact input schema and connections, then invoke it:
# default — via the entry point; self-checks readiness and prints friendly diagnostics
node cli.js run <script> '<input-json>' --connection [<resolver>:]<value>
# shorthand — runs the script file directly (same args, same Node 22.18+ need, no readiness check)
./scripts/<script>.ts '<input-json>' --connection [<resolver>:]<value>
When a harness can't execute scripts directly, fall back to MCP — node cli.js mcp serves every script as a tool over stdio. Register it as a local MCP server in your client: the stanza is harness-specific (an mcpServers entry in Claude Desktop, Cursor, Claude Code, …) with command: "node", args: ["cli.js", "mcp"], run from this directory. Run node cli.js mcp --help for auth options. Add the stanza yourself if you can edit the client's MCP config; otherwise guide the user. If a local server isn't possible, guide the user to use Zapier's remote MCP servers at https://mcp.zapier.com instead.
Every script returns a { data, meta } envelope:
data — the script's result (the shape its outputSchema declares; run the script's --help to see that exact schema).meta.outputDataValidation — what validating data did:
{ skipped: false, droppedPaths: null } — validated, nothing removed.{ skipped: false, droppedPaths: [...], instruction } — validated, but those paths were stripped from data: fields the script returned from the API that the outputSchema doesn't declare. If you need them, re-run with output validation skipped.{ skipped: true } — validation was bypassed; data is the raw, unchecked script output.Reading dropped fields / skipOutputDataValidation. To receive the raw, unvalidated result, append --skipOutputDataValidation to the script invocation. Input validation is never skipped.
Trimming the result / filterOutputData. To shrink a large result down to the fields you need, append --filterOutputData '<jq>' — a jq expression that post-processes data. The jq runs against data only, NOT the { data, meta } envelope, so write it rooted at data (run the script's --help to see its output schema). The transformed value replaces data, meta is preserved, and the result is NOT re-validated against the output schema.
Disambiguation before a write. Before writing to a board, list, card, label, or checklist you looked up by name (e.g. create a card on a list found via findList, or add a label found via findLabel), count the exact case-insensitive name matches:
Unsupported operations — say so and stop; don't fake it with another script. This catalog deliberately does not:
addCardAttachment accepts a URL or remote file URL only — not a local path or base64 payload.closeBoard and archiveCard archive (soft-close) resources; there is no hard-delete script.If asked for any of these, tell the user it's unsupported and stop — don't reach for an unrelated script to approximate it.
Load the matching reference file before working in that area:
| Reference | Covers | Load it when |
|---|---|---|
| references/trello-api-gotchas.md | Trello API behavior, id resolution patterns, rate limits, and search DSL quirks | Before search-heavy flows, rate-limit-sensitive loops, or any write that needs id resolution (lists, boards, labels) |
npx claudepluginhub zapier/marketplace --plugin trelloAutomates Trello boards, cards, lists, members, labels, and workflows via Rube MCP (Composio). Guides tool sequences for creating cards with checklists, searching boards, and managing structures.
Automates Trello boards, cards, and workflows via Composio Rube MCP integration for card creation, list management, member assignment, and board search.
Automates Trello board management, card creation, and team workflows via Rube MCP integration. Create cards, manage lists, assign members, and search across boards programmatically.