Skip to content

skills/trello: requires.bins gates on jq but every body example also needs curl #94727

Description

@berkgungor

Summary

The bundled skills/trello/SKILL.md body uses curl in every example, but its requires.bins only declares ["jq"]. On a system without curl, the doctor / openclaw skills check will mark the Trello skill as ready, but the very first command the agent issues from it will fail at the shell. The gating disagrees with the body.

Affected versions

Reproduced on openclaw@2026.6.8 (HEAD c33cec04d9 on main). The gap was introduced in commit 1bf7d2f3bd (docs: update trello skill requirements), which added "jq" to requires.bins but did not add "curl". Every code example in the SKILL.md body — both before and after that commit — uses curl.

Repro (source-level)

  1. Open skills/trello/SKILL.md on main (HEAD c33cec04d9). Frontmatter:
    requires: { "bins": ["jq"], "env": ["TRELLO_API_KEY", "TRELLO_TOKEN"] }
    (skills/trello/SKILL.md:10)
  2. Count curl invocations in the body:
    $ grep -c '^curl\|^\s*curl' skills/trello/SKILL.md
    10
    
  3. Every documented command — list boards, list lists in a board, list cards in a list, create card, move card, update card — starts with curl. None of them are reachable without curl on $PATH.
  4. Compare against sibling skills that also use curl:
    • skills/notion/SKILL.md:9"requires": { "anyBins": ["ntn", "curl"] }
    • skills/openai-whisper-api/SKILL.md"requires": { "bins": ["curl", "node"], ... }
      Both correctly include curl in their gating. Trello is the only bundled skill with this mismatch.

Expected

Either:

  • skills/trello/SKILL.md frontmatter declares curl (preferred — matches the actual body), or
  • The body switches curl calls to a binary that is actually gated on.

Actual

openclaw skills check reports Trello as ready on a curl-less system; the agent only discovers the missing dep when it runs the first command and bash returns command not found: curl.

Suggested fix

One-line change to skills/trello/SKILL.md:10:

-        "requires": { "bins": ["jq"], "env": ["TRELLO_API_KEY", "TRELLO_TOKEN"] },
+        "requires": { "bins": ["curl", "jq"], "env": ["TRELLO_API_KEY", "TRELLO_TOKEN"] },

Optionally also add a curl install entry to the install array alongside jq, mirroring notion's pattern. On macOS and most Linux distros curl is already preinstalled, so an install entry is nice-to-have rather than required.

Notes

  • Diamond-lobster shape: source-reproducible (file + line + commit cited), narrow blast radius (one line of metadata in one bundled skill), zero behavior change for users who already have curl (i.e. ~everyone on macOS/Debian/Ubuntu/Fedora), single failure mode prevented for the rare-but-real Alpine / minimal-container case.
  • I am happy to send the one-line PR; filing the issue first per CONTRIBUTING's "bugs and small fixes → open a PR" guidance felt borderline because the change is so small, but the gating drift is a genuine inconsistency worth recording.
  • AI-assisted issue (Claude) — wrote and verified the repro from the source tree at c33cec04d9.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions