Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Docker Hub operations -- manage organizations, repositories, teams, members, and webhooks via the Composio MCP integration.
.claude/skills/composiohq-docker-hub-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -4% | 0% |
Automate your Docker Hub workflows -- create and manage organizations, repositories, teams, add members, set up image push webhooks, and list container images.
Toolkit docs: composio.dev/toolkits/docker_hub
https://rube.app/mcpUse DOCKER_HUB_LIST_ORGANIZATIONS to discover which organizations the authenticated user belongs to.
Tool: DOCKER_HUB_LIST_ORGANIZATIONS
Inputs:
- page: integer (1-indexed, default 1)
- page_size: integer (1-100, default 25)Use DOCKER_HUB_CREATE_ORGANIZATION to programmatically create a new Docker Hub organization.
Tool: DOCKER_HUB_CREATE_ORGANIZATION
Inputs:
- orgname: string (required) -- lowercase, letters/numbers/._- only, min 2 chars
- company: string (optional) -- company name associated with the orgNote: Requires JWT authentication obtained via /v2/users/login and may have restricted access.
Use DOCKER_HUB_GET_ORGANIZATION to retrieve namespace info and its repositories. Works with any public namespace.
Tool: DOCKER_HUB_GET_ORGANIZATION
Inputs:
- organization: string (required) -- e.g., "docker", "bitnami", "library"Use DOCKER_HUB_CREATE_REPOSITORY to create public or private repositories under a namespace.
Tool: DOCKER_HUB_CREATE_REPOSITORY
Inputs:
- namespace: string (required) -- Docker Hub username or org name
- name: string (required) -- lowercase; letters, numbers, ._- allowed
- description: string (optional) -- max 100 characters
- full_description: string (optional) -- Markdown README content
- is_private: boolean (default false) -- private repos require paid planUse DOCKER_HUB_LIST_REPOSITORIES to enumerate repos within a namespace with sorting and content-type filtering.
Tool: DOCKER_HUB_LIST_REPOSITORIES
Inputs:
- namespace: string (required) -- e.g., "library", "myorg"
- ordering: "name" | "last_updated" | "pull_count" (prefix with - for descending)
- page: integer (default 1)
- page_size: integer (1-100, default 25)
- content_types: string (comma-separated, e.g., "image,artifact")Use DOCKER_HUB_LIST_TEAMS to list teams within an org, DOCKER_HUB_ADD_ORG_MEMBER to invite users, and DOCKER_HUB_CREATE_WEBHOOK for push notifications.
Tool: DOCKER_HUB_LIST_TEAMS
- Lists all teams/groups within a Docker Hub organization
Tool: DOCKER_HUB_ADD_ORG_MEMBER
- Invite a user to join an organization by Docker ID or email
- Requires owner or admin permissions
Tool: DOCKER_HUB_CREATE_WEBHOOK
- Create a webhook on a repository for image push notifications
- Two-step process: create webhook, then add hook URL
- Requires admin permissions on the repository| Pitfall | Detail | |---------|--------| | JWT authentication | DOCKER_HUB_CREATE_ORGANIZATION requires JWT auth from /v2/users/login -- standard API tokens may not suffice. | | Private repo limits | Creating private repos (is_private: true) requires a paid Docker Hub plan. | | Org name constraints | Organization names must be lowercase, at least 2 characters, containing only letters, numbers, ., _, or -. | | Webhook two-step | DOCKER_HUB_CREATE_WEBHOOK is a two-step process: first create the webhook with a name, then add a hook URL to it. | | Pagination | All list endpoints use page-based pagination -- iterate pages until results are exhausted. |
| Tool Slug | Description | |-----------|-------------| | DOCKER_HUB_LIST_ORGANIZATIONS | List orgs the user belongs to | | DOCKER_HUB_CREATE_ORGANIZATION | Create a new Docker Hub organization | | DOCKER_HUB_GET_ORGANIZATION | Get org details and repository list | | DOCKER_HUB_CREATE_REPOSITORY | Create a repository under a namespace | | DOCKER_HUB_LIST_REPOSITORIES | List repos with filtering and sorting | | DOCKER_HUB_LIST_TEAMS | List teams/groups within an org | | DOCKER_HUB_ADD_ORG_MEMBER | Invite a user to an organization | | DOCKER_HUB_CREATE_WEBHOOK | Create push-notification webhook on a repo |
Powered by Composio
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 7,280 | 4,168 | -43% | 1 | 1 | 0% | 1,648 | 1,561 | -5% | 0 | 0 | — |
case-01 | fail→fail | 6,978 | 8,054 | +15% | 1 | 1 | 0% | 1,461 | 1,883 | +29% | 0 | 0 | — |
case-03 | fail→pass | 7,063 | 5,008 | -29% | 1 | 1 | 0% | 1,692 | 2,395 | +42% | 0 | 0 | — |
case-04 | fail→fail | 5,371 | 1,203 | -78% | 1 | 1 | 0% | 1,249 | 1,503 | +20% | 0 | 0 | — |
case-05 | fail→fail | 4,644 | 9,171 | +97% | 1 | 1 | 0% | 814 | 2,005 | +146% | 0 | 0 | — |
case-06 | fail→pass | 8,441 | 3,162 | -63% | 1 | 1 | 0% | 1,424 | 1,858 | +30% | 0 | 0 | — |
case-07 | fail→fail | 9,775 | 4,694 | -52% | 1 | 1 | 0% | 1,770 | 1,608 | -9% | 0 | 0 | — |
case-08 | fail→fail | 4,539 | 3,968 | -13% | 1 | 1 | 0% | 886 | 1,521 | +72% | 0 | 0 | — |
case-09 | fail→fail | 5,379 | 5,208 | -3% | 1 | 1 | 0% | 1,058 | 1,601 | +51% | 0 | 0 | — |
case-10 | fail→fail | 7,639 | 7,606 | -0% | 1 | 1 | 0% | 1,683 | 1,736 | +3% | 0 | 0 | — |
case-11 | fail→pass | 5,580 | 2,396 | -57% | 1 | 1 | 0% | 1,021 | 1,561 | +53% | 0 | 0 | — |
case-12 | fail→fail | 8,585 | 5,519 | -36% | 1 | 1 | 0% | 1,676 | 1,638 | -2% | 0 | 0 | — |
case-13 | fail→pass | 14,741 | 12,395 | -16% | 1 | 1 | 0% | 1,406 | 2,495 | +77% | 0 | 0 | — |
case-14 | fail→pass | 9,380 | 2,370 | -75% | 1 | 1 | 0% | 1,813 | 1,736 | -4% | 0 | 0 | — |
case-15 | pass→pass | 3,474 | 2,446 | -30% | 1 | 1 | 0% | 624 | 1,717 | +175% | 0 | 0 | — |
case-16 | pass→pass | 8,760 | 4,193 | -52% | 1 | 1 | 0% | 2,054 | 2,259 | +10% | 0 | 0 | — |
case-17 | fail→fail | 7,464 | 2,191 | -71% | 1 | 1 | 0% | 1,627 | 1,590 | -2% | 0 | 0 | — |
case-18 | fail→pass | 3,912 | 2,283 | -42% | 1 | 1 | 0% | 722 | 1,710 | +137% | 0 | 0 | — |
case-19 | pass→pass | 3,445 | 3,324 | -4% | 1 | 1 | 0% | 682 | 1,964 | +188% | 0 | 0 | — |
case-20 | fail→fail | 5,897 | 2,959 | -50% | 1 | 1 | 0% | 1,299 | 1,496 | +15% | 0 | 0 | — |
case-21 | pass→pass | 2,539 | 4,223 | +66% | 1 | 1 | 0% | 399 | 1,993 | +399% | 0 | 0 | — |
case-22 | pass→pass | 4,529 | 3,930 | -13% | 1 | 1 | 0% | 882 | 1,985 | +125% | 0 | 0 | — |
case-23 | fail→pass | 4,907 | 5,329 | +9% | 1 | 1 | 0% | 944 | 2,223 | +135% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +30 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.