List Entropy Data teams
Print the teams configured in Entropy Data and — if invoked from another skill — return the chosen team so the caller can fill in TEAM_NAME (for ODPS) without re-prompting the user.
How to run this skill
${PLUGIN_ROOT}below refers to the root of this plugin — the directory that containsskills/. On Claude Code it is set automatically as${CLAUDE_PLUGIN_ROOT}— use that. On any other agent (Codex, Copilot CLI, etc.) it is unset; resolve it as../..relative to thisSKILL.mdfile's directory (i.e. the grandparent ofskills/<this-skill>/).
Plan announcement (before Step 0)
Before running Step 0, print this plan to the user verbatim:
Running entropy-data-teams. I'll:
- Pre-checks: verify the
entropy-dataCLI is installed and a connection is configured.- Fetch all teams from Entropy Data (paginated).
- Apply any filter you mentioned (substring on id/name/description, or type/tag match).
- Show the team list as a Markdown table.
- If invoked as a sub-step by another skill, ask you to pick one and return both
team.idandteam.nameto the caller.
Then proceed.
Step 0 — Pre-checks
uv run --quiet entropy-data --versionsucceeds from the project root. If it fails, runuv syncand retry; if still missing, stop and surface the install line from the README. Useuv run entropy-data …for every CLI invocation in this skill.- A connection / API key is configured. If
uv run entropy-data connection listis empty, tell the user to runuv run entropy-data connection add ...first; do not try to authenticate on their behalf.
Step 1 — Fetch teams
Run:
entropy-data teams list -o json
The response is a JSON array. Each team has at least: id, name, type, description, members[], tags[], links{}, custom{}.
Pagination: teams list accepts --page <n> (0-indexed). If the response has the same length as the configured page size, fetch the next page and merge until you get a short or empty page. Keep the merged list as TEAMS.
If the call fails with auth errors, surface the CLI error and stop — do not retry silently.
Step 2 — Filter (optional)
If the user gave a hint ("show me platform teams", "find a team for finance"), filter TEAMS by:
- substring match on
id,name, ordescription, or - exact match on
type, or - substring match on any value in
tags[].
If the filter eliminates everything, show the full list and tell the user the filter matched nothing.
Step 3 — Show the list
Print a Markdown table with one row per team. Columns:
| Column | Source |
|---|---|
id |
id |
| Name | name |
| Type | type |
| Members | members.length |
| Description | first 80 chars of description |
Sort by id for stable output. If the list is longer than ~30 rows, page it — show 30 and ask whether to continue.
Step 4 — Optional detail
If the user asks about a specific team, run:
entropy-data teams get <id> -o json
and pretty-print the full record (members with roles, links, custom fields). Do not store this anywhere — the source of truth is the platform.
Step 5 — Return value (when invoked as a sub-step)
If this skill was called by another skill that needs a team for TEAM_NAME:
- After Step 3, ask the user to pick one: "Which team should own this data product? Reply with the
idfrom the table above." - Validate the reply against
TEAMS— if it does not match, list the closest 3 by string similarity and ask again. - Return both
team.idandteam.nameto the caller. The caller decides which one to write into the ODPS file.
If invoked directly by the user (not as a sub-step), stop after Step 3/4 — do not modify any local file.
When other skills should call this
dataproduct-bootstrapStep 2: when batching parameters, if the user does not provideTEAM_NAME, offer to invokeentropy-data-teamsinstead of asking for a free-text string.entropy-data-syncStep 3: same — if the project doesn't already have ateam.namein<id>.odps.yamland the user can't recall the team id, offerentropy-data-teams.
A free-text team name is still acceptable (the ODPS schema doesn't enforce that the name matches a registered team), but a value picked from this list is preferred because it stays consistent with the Entropy Data UI and team-scoped views.
Constraints
- Read-only. This skill must not create, update, or delete teams. If the user asks "create a new team", point them at
entropy-data teams putand stop. - Do not modify files. Even when invoked as a sub-step, return the choice to the caller; the caller decides whether and where to write it.
- Do not cache. Always re-fetch from the CLI — team lists change as orgs evolve, and a stale cache is worse than a fresh round-trip.
- Do not pretty-print secrets. Some
customfields may contain emails or channel identifiers; show them as-is (the data is already in the platform), but do not log them to a separate file.