Skip to main content
Popsink publishes a Claude Code skill that teaches the agent how to talk to a Popsink data plane: how to exchange an API key for a token, which endpoints exist, what the domain model looks like, and what it must not do without asking you first. It lives in a public repository — Popsink/public-skills — so you can read every line before installing it.

Popsink/public-skills

One directory per skill under skills/, each holding a SKILL.md. Public by design: no client names, no hostnames, no credentials.

What the skill gives you

Once installed, Claude Code can answer questions about a running deployment instead of guessing from documentation:
  • “Is anything broken on <tenant>?” — lists datamodels in error, pulls the connector logs for the ones that are.
  • “How far behind is this pipeline?” — reads production and consumption metrics over a window and reports lag.
  • “Inventory this environment” — source connectors, target connectors, datamodels, subscriptions, paginated properly.
  • “Restart this connector” — but only after telling you exactly which named resource it is about to touch, and waiting for a yes.
It also ships scripts/popsink, a small curl + jq wrapper that handles the token dance — caching, expiry, and one retry on 401 — so the agent does not re-invent it on every call.
The skill always reads your instance’s live OpenAPI schema ($POPSINK_URL/api/openapi.json) before calling. The endpoint list bundled with it is a snapshot to find the right area fast, not a contract.

Prerequisites

An API key starts with psk_ and is shown once, at creation — afterwards only a masked preview is retrievable. It grants access to a chosen set of environments, each with a role (admin or user), and only works on the deployment that owns those environments.
API-key login requires the instance to run in self-hosted mode. If the exchange returns 400 This endpoint is only available in SELF_HOSTED mode, check GET /api/config/deploymentdeployment_mode and confirm which instance you meant.

Install

1

Clone the repository

2

Symlink the skills you want

Symlinking rather than copying means a git pull updates every installed skill. To scope the skills to a single project instead, use that project’s .claude/skills/ directory in place of ~/.claude/skills/.
3

Export your credentials

Keep the key in your shell environment or a secret manager — not in a file inside the repository, and never in a commit.
4

Check it loaded

Start claude from any directory and ask it something read-only — the skill loads on its own when the question is about a Popsink instance:
The agent exchanges the key for a token and calls GET /api/envs/.

The model it works with

The skill knows the shape of a Popsink deployment, which is why it can navigate without being told where to look:
Most list endpoints take an explicit env (or env_id) query parameter. Endpoints that take none fall back to the principal’s active environment, which for an API-key principal is parked on the first granted environment — switch it with PATCH /api/users/me {"active_env_id": "<uuid>"}.

Guardrails

The skill is written to be safe to point at production, but the guardrails are instructions to an agent, not permissions enforced by the API. Your API key’s role is what actually bounds it — issue a user key on the environments you want reachable rather than an admin key on everything. What the skill asks Claude to confirm with you before doing: It is also told to treat connector configs as secrets — they contain your source credentials — and to redact client names, hostnames, schema and table names from anything written into a ticket or a document.

Troubleshooting

Contributing a skill

The repository takes contributions. Add a directory under skills/, write a SKILL.md whose frontmatter name matches the directory and whose description says both what it does and when to use it — that description is the only thing the model sees when deciding whether to load the skill. Supporting files go in subdirectories (reference/, scripts/).
The repository is public. No client names, hostnames, schema or table names, connector IDs, credentials or internal links — placeholders only (<host>, <schema>.<table>, <connector-id>), English throughout.

API tutorial

The same API by hand: register, authenticate, then build environments, connectors and pipelines with curl.

Deployment options

Where your instance runs, and what deployment_mode will report.