Skip to content

.claude/skills: add panda-install skill#21090

Merged
wmitsuda merged 4 commits intomainfrom
mh/panda-install-skill
May 11, 2026
Merged

.claude/skills: add panda-install skill#21090
wmitsuda merged 4 commits intomainfrom
mh/panda-install-skill

Conversation

@mh0lt
Copy link
Copy Markdown
Contributor

@mh0lt mh0lt commented May 10, 2026

Summary

Adds a Claude Code skill that installs and configures the
EthPandaOps Panda CLI / MCP
server on a fresh host. Auto-discovered when anyone clones the repo —
Claude Code scans .claude/skills/ of cwd + parents.

Panda is a CLI + MCP server + sandboxed Python runtime that gives a
single authenticated entry point to the EthPandaOps data ecosystem:

  • ClickHouse xatu (beacon-chain data lake)
  • Prometheus (EthPandaOps infra metrics)
  • Loki (EthPandaOps infra logs)
  • Direct Ethereum node (RPC) access

What the skill does

Drives the install end-to-end with three explicit prompt points:

  1. Mode selection — hosted proxy (recommended, requires
    EthPandaOps GitHub allowlist) / self-hosted proxy (own credentials)
    / skip.
  2. OAuth handoff — wait-for-completion gate during the device-flow
    browser step, plus a fallback prompt if the user isn't on the
    allowlist (path: switch to self-hosted, or coordinate access).
  3. Self-hosted credentials — structured per-source datasource
    selection + host/user prompts.

Secrets (passwords, tokens) are explicitly routed via environment
variables in the user's shell rc, not via AskUserQuestion (which
logs to telemetry). The proxy config + docker run reference those
env vars.

Includes verify steps (panda server status, panda datasources,
panda execute) and the MCP wire-up snippet for ~/.claude.json.

Note on benchmarkoor data

Benchmarkoor results are not currently a directly-named Panda
datasource (verified 2026-05-10 against
benchmarkoor-api.core.ethpandaops.io). The skill includes Python
snippets to probe Prometheus / ClickHouse for benchmarkoor_*
metrics post-install, plus guidance to file an EthPandaOps
ingestion request if not present.

Test plan

  • On a fresh host with Docker, run the skill end-to-end via Claude
  • Confirm panda server status reports running, panda datasources
    lists at least 1 source, panda execute --code 'print("ok")'
    succeeds
  • Confirm Claude Code's MCP integration sees the
    ethpandaops-panda tools after restart

🤖 Generated with Claude Code

Mark Holt added 2 commits May 10, 2026 18:45
Adds a Claude Code skill that installs and configures the EthPandaOps
Panda CLI / MCP server (https://github.com/ethpandaops/panda) on a
fresh host. Panda gives Claude (and the panda CLI) a single
authenticated entry point to the EthPandaOps data ecosystem:

- Xatu ClickHouse (beacon-chain data lake)
- Prometheus (EthPandaOps infra metrics)
- Loki (EthPandaOps infra logs)
- Direct Ethereum node access

Skill covers:
- Pre-flight checks (Docker, curl)
- Install via the official install.sh script
- Initialize against the hosted proxy (panda-proxy.ethpandaops.io)
  including the GitHub OAuth flow caveats
- Self-hosted proxy alternative for orgs with own credentials
- Wire into Claude Code via ~/.claude.json MCP config
- Verify + troubleshoot
- Note on benchmarkoor data: not currently a named datasource;
  includes Python snippets to probe Prometheus/ClickHouse for
  benchmarkoor_* metrics, plus guidance to file an ingestion
  request with EthPandaOps if not present

Auto-discovered by Claude Code from any subdirectory of the repo.
Three explicit prompt points using AskUserQuestion:

1. Step 1 (mode selection): hosted proxy / self-hosted / skip
2. Step 3 (OAuth): wait-for-completion gate during the device-flow
   browser handoff, plus a fallback prompt if OAuth fails
3. Step 4 (self-hosted): structured datasource selection + per-source
   host/user prompts

Secrets (passwords, tokens) explicitly NOT routed through
AskUserQuestion (it logs to telemetry). Instead, the skill instructs
the user to set env vars in their shell rc, and the config file +
docker run command reference those env vars.

This makes the install repeatable across servers — the skill drives
the prompts rather than expecting Claude to improvise them.
Mark Holt added 2 commits May 10, 2026 19:28
…in question

AskUserQuestion option labels are short (≤5 words) and the question
text doesn't render long URLs as clickable in most clients. The
device-flow URL + code need to be presented as plain markdown FIRST
so the user can click the link and copy the code with their normal
UI affordances; then ask a minimal "Done? / Need fresh / Error"
question.

Discovered during the first install run on dev-bm-e3-ethmainnet-n4 —
when the URL was embedded inside the AskUserQuestion question text
the user couldn't copy it cleanly.
…st template

When GitHub returns bad_verification_code during device-flow code
exchange (not a real expired-code, but Mark's GitHub identity
without panda-proxy app access), the skill should:

1. Recognize the symptom (immediate failure after device approval,
   distinguishable from genuinely expired codes which take minutes)
2. Give the user a ready-made request template with all the fields
   EthPandaOps needs (GitHub identity, service name, Dex issuer,
   OAuth client ID, reproducer)
3. Stop the local server (it flaps because the proxy embedding
   backend is unreachable without auth)

Discovered during the first install run on dev-bm-e3-ethmainnet-n4
when the user's GitHub identity was not on the panda-proxy allowlist.
@wmitsuda wmitsuda added this pull request to the merge queue May 11, 2026
Merged via the queue into main with commit 78c2378 May 11, 2026
38 checks passed
@wmitsuda wmitsuda deleted the mh/panda-install-skill branch May 11, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants