Skip to main content
Generalhashgraph-online

entropy-data-teams

List the teams configured in Entropy Data so the user can pick one as the owner (`team.name` in ODPS) of a data product. Useful when bootstrapping a new data product, integrating an existing dbt project, or just exploring who owns what. Trigger when the user asks "what teams are there", "who can own this data product", "list teams in Entropy Data", or when another skill needs to fill in `TEAM_NAME` and the user does not already know it.

Stars
336
Source
hashgraph-online/awesome-codex-plugins
Updated
2026-05-27
Slug
hashgraph-online--awesome-codex-plugins--entropy-data-teams
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/hashgraph-online/awesome-codex-plugins/HEAD/plugins/entropy-data/dataproduct-builder-dbt/skills/entropy-data-teams/SKILL.md -o .claude/skills/entropy-data-teams.md

Drops the SKILL.md into .claude/skills/entropy-data-teams.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

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 contains skills/. 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 this SKILL.md file's directory (i.e. the grandparent of skills/<this-skill>/).

Plan announcement (before Step 0)

Before running Step 0, print this plan to the user verbatim:

Running entropy-data-teams. I'll:

  1. Pre-checks: verify the entropy-data CLI is installed and a connection is configured.
  2. Fetch all teams from Entropy Data (paginated).
  3. Apply any filter you mentioned (substring on id/name/description, or type/tag match).
  4. Show the team list as a Markdown table.
  5. If invoked as a sub-step by another skill, ask you to pick one and return both team.id and team.name to the caller.

Then proceed.

Step 0 — Pre-checks

  • uv run --quiet entropy-data --version succeeds from the project root. If it fails, run uv sync and retry; if still missing, stop and surface the install line from the README. Use uv run entropy-data … for every CLI invocation in this skill.
  • A connection / API key is configured. If uv run entropy-data connection list is empty, tell the user to run uv 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, or description, 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:

  1. After Step 3, ask the user to pick one: "Which team should own this data product? Reply with the id from the table above."
  2. Validate the reply against TEAMS — if it does not match, list the closest 3 by string similarity and ask again.
  3. Return both team.id and team.name to 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-bootstrap Step 2: when batching parameters, if the user does not provide TEAM_NAME, offer to invoke entropy-data-teams instead of asking for a free-text string.
  • entropy-data-sync Step 3: same — if the project doesn't already have a team.name in <id>.odps.yaml and the user can't recall the team id, offer entropy-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 put and 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 custom fields 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.