Claude Code skills and specialist agents for Sei platform engineers. They install into ~/.claude/. This public repository also holds the seidroid review runtime.
You need Claude Code, git and make. The install needs no GitHub auth.
curl -fsSL https://raw.githubusercontent.com/sei-protocol/sei-internal-skills/main/scripts/install.sh | bashThe script clones this repository into ~/.sei-internal-skills and runs make sync-all. That copies every skill, agent and output style into ~/.claude/. It then verifies the catalog, and it prints a prune hint if a retired resource is still installed.
With gh, or from a clone, see scripts/README.md. The one-liner runs install.sh from main against your ~/.claude. To read the script first, clone the repository into ~/.sei-internal-skills and read scripts/install.sh. Then run make -C ~/.sei-internal-skills update.
To check the install, list the two directories:
ls ~/.claude/skills ~/.claude/agentsThe output names each skill and agent in the tables below. Start a new Claude Code session to load them.
| What it holds | Who gets it | |
|---|---|---|
.claude/ — the catalog |
5 skills, 3 agents | Everyone, via make update |
| Skill | Use it for | It needs |
|---|---|---|
/harbor-dev |
Your own ephemeral Sei chain in eng-<alias> on the harbor dev cluster. Spin it up, add RPC nodes, bench it and tear it down. Start with /harbor-dev onboard me. |
seictl v0.0.72 or newer, yq, the flux CLI, the AWS CLI v2 with an SSO profile, and kubectl with the harbor kube context. Also gh, with write access to two private repositories. The section below gives each item. |
/giga-dev |
The shared giga testnet, giga-testnet-0, on the prod cells: how it works, where its logs and metrics are, and why it is slow. It is read-only by default. |
Read access to the prod-use2, prod, prod-euw1 and prod-apne1 kube contexts, and to Grafana |
/platform-dev |
The Sei platform: the sei-protocol/platform repository and its six EKS cells. How a change reaches a cell, where everything lives, how to read its health, and the common procedures. It is read-only by default. |
A checkout of sei-protocol/platform, read access to the kube contexts of the cells you work on, and /grafana |
/kubernetes |
Design and review of sei-k8s-controller code: CRDs, reconcilers, status and conditions. | The code or the diff to review |
/grafana |
Prod metrics, logs and alert state through Grafana, read-only, with no port-forward. /harbor-dev, /giga-dev and /platform-dev use it. |
The AWS CLI v2 with an SSO profile that has EKS access to prod, plus kubectl and curl. The section below gives the setup. |
In Claude Code, run /harbor-dev onboard me. The skill checks these items in this order. For each miss, it tells you the fix. The gates in preflight.md follow the same order and hold the exact commands.
seictlv0.0.72 or newer. The usual install isgo install, so you need Go. Gate 1 also gives a prebuilt binary that needs no Go.yqand thefluxCLI on yourPATH.- The AWS CLI v2 and an active AWS SSO session. If you have no AWS profile, gate 3 gives the Sei SSO session to add to
~/.aws/config. kubectland theharborkube context.- Access to your namespace. If you have no access, ask in
#harbor-onboardingand give your AWS principal ARN. - The namespace
eng-<alias>. If it does not exist, the skill opens the onboarding pull requests for you.
You can do items 1 to 4 before you start.
The skill works through pull requests in two private repositories. Onboarding opens one in sei-protocol/platform. Each chain, bench or fault is a pull request in sei-protocol/harbor-engineering-workspace. Sign in to gh as a sei-protocol member with write access to both. Onboarding also runs terraform and kustomize. kubectl kustomize can replace kustomize.
Ask a question, for example /giga-dev why is giga slow. The skill reads the prod-use2, prod, prod-euw1 and prod-apne1 kube contexts. It also reads Grafana at https://grafana.prod.platform.sei.io, with the datasources prometheus-prod and Loki-fleet. It writes to the shared cells only when you ask for one specific change and confirm it.
To get the four contexts and Grafana access, follow section 1 of observability.md. If you have no EKS access to a cell, ask the platform team, which runs giga-testnet-0.
Ask a question, for example /platform-dev how does a change reach a cell or /platform-dev is the platform healthy. The skill reads a sei-protocol/platform checkout, the kube contexts of the cells (prod, prod-use2, prod-euw1, prod-apne1, harbor and dev), and Grafana through /grafana. It writes to a cell only when you ask for one specific change and confirm it.
The skill keeps a check for each fact that drifts. To refresh it, ask /platform-dev refresh the skill. It runs the checks and proposes one pull request with the fixes.
Ask for the data, for example /grafana which alerts are firing. On the first run, the skill proves your access. Then it asks you to confirm one change: it adds the sei-grafana MCP server to the user configuration of Claude Code. To load the tools, restart Claude Code, or reconnect sei-grafana from the Claude Code MCP menu. scripts/README.md gives the launcher's modes and exit codes.
The server acts as the agent-viewer Grafana service account, with the Viewer role. At each start, it reads that account's token from the prod cluster with your AWS SSO session, and it keeps the token only in memory.
In a sei-k8s-controller checkout, run /kubernetes review <file, diff or PR>. You can also ask it to design a CRD or a reconcile step.
| Agent | Call it for |
|---|---|
kubernetes-specialist |
Kubernetes operator and controller code in Go: CRDs, reconcile logic, child resources and Job lifecycle. It pairs with /kubernetes. |
sei-network-specialist |
Sei node networking: seid ports, CometBFT P2P, EVM JSON-RPC and WebSocket, gRPC and state sync. |
sre-engineer |
SLOs, error budgets, alert tuning, the PromQL and LogQL behind alerts and dashboards, runbooks and post-mortems. |
To call an agent, name it in your request: "Ask the sre-engineer agent to draft the alert and runbook for X." You can also use the Agent tool with the agent name as subagent_type. AGENTS.md holds the full roster.
The commands on this page use the default checkout path, ~/.sei-internal-skills. If your checkout is elsewhere, use its path.
make -C ~/.sei-internal-skills updateThe command pulls the checkout and installs the catalog again. A sync never deletes, so a retired skill or agent stays installed until you prune it. To move an older install to the current catalog, or when update prints a retired-resource hint, do these steps:
make -C ~/.sei-internal-skills update. It pulls the checkout and installs the current catalog.make -C ~/.sei-internal-skills prune-retired. It lists what step 4 deletes, and deletes nothing.- Read the RETIRED list. Prune matches by name only. If a listed name is your own skill, or a retired skill that you changed, copy it to a new name first:
cp -R ~/.claude/skills/<name> ~/.claude/skills/<name>-mine. If you are not sure, copy it. If a listed skill sayshas state/ files(for example a gov-ops audit log), copy thatstate/out first:cp -R ~/.claude/skills/<name>/state ~/<name>-state. make -C ~/.sei-internal-skills prune-retired-apply. It deletes the RETIRED list from~/.claude.- Do these commands for each repository that you synced skills into. Read the first list as in step 3.
The two sync commands replace the old copies of the current skills and agents. Skip
~/.sei-internal-skills/scripts/prune-retired.sh --target <repo> ~/.sei-internal-skills/scripts/prune-retired.sh --target <repo> --apply ~/.sei-internal-skills/scripts/sync-skills.sh --target <repo> --force ~/.sei-internal-skills/scripts/sync-agents.sh --target <repo> --force
sync-agents.shif that repository holds no agents. If<repo>/AGENTS.mdholds thesei-internal-skills-managedblock, add--inject-doctrineto thesync-skills.shcommand. That replaces the old block. Then commit the result in that repository. - Optional:
git -C ~/.sei-internal-skills clean -ndX -- .claude/skills experimentallists ignored files that removed skills left in your checkout. They are harmless. To delete one, runrm -rf ~/.sei-internal-skills/<path>with a path from that list. - Restart any open Claude Code session.
Prune never removes a resource that the catalog holds, or a resource it does not recognize.
The installer can also install one resource and nothing else. Give the one-liner a target:
curl -fsSL https://raw.githubusercontent.com/sei-protocol/sei-internal-skills/main/scripts/install.sh | bash -s -- skill harbor-dev| Want | Arguments after bash -s -- |
|---|---|
| A list of everything | list |
| The output style | output-style |
| One skill | skill <name> |
| One agent | agent <name> |
A targeted install clones nothing, deletes nothing, and installs only what you name. A skill does not bring its agent, and an agent does not bring the skills it names. A targeted install reads an existing checkout without pulling it.
| Variable | Effect |
|---|---|
SEI_SKILLS_REF |
Download a branch, tag or commit instead of main. It applies only when no checkout exists at SEI_INTERNAL_SKILLS_HOME. |
SEI_SKILLS_TARGET |
Install the piece under another root, such as a sibling repository. The script appends .claude/. |
SEI_INTERNAL_SKILLS_HOME |
The checkout location. If a checkout exists there, a targeted install reads it and downloads nothing. |
For example, to copy one skill into another repository from your checkout:
SEI_SKILLS_TARGET=~/work/platform bash ~/.sei-internal-skills/scripts/install.sh skill harbor-devThe catalog ships one output style, ASD-STE100 (Simplified Technical English). It gives short sentences in the active voice, one meaning per word, and the conclusion first. make update installs it but does not turn it on. To install it and turn it on:
bash ~/.sei-internal-skills/scripts/install.sh output-styleThe script does not replace a style you already chose, and it keeps every other key in settings.json. To turn the style on by hand, use /config, then Output Style, then ASD-STE100. The style applies from your next session.
This repository also builds the seidroid review driver and the seidroid runner image. CLAUDE.md lists the files that seidroid depends on. A new driver release or runner image reaches seidroid only when its pin in sei-protocol/uci or sei-protocol/platform moves.
Read CLAUDE.md first. It holds the steps to add, retire or rename a skill or an agent. It also gives the tools you need and the checks to run before a pull request. In short:
git clone https://github.com/sei-protocol/sei-internal-skills && cd sei-internal-skills
# edit under .claude/, then:
make sync-all # try the change in Claude Code
make check
vale sync && ./writing/scripts/lint.sh <changed .md files>This clone is separate from the install checkout at ~/.sei-internal-skills. Then open a pull request. seidroid reviews pull requests from sei-protocol/sei-core members; other pull requests get human review. Edit a skill here, never in ~/.claude/, because the next sync overwrites a local copy.
.claude/ the catalog: skills/, agents/ and output-styles/
scripts/ install, sync and prune tooling, the contributor gates, the runner inputs
writing/ the writing contract and its Vale rules
agents/ Omnigent server bundles (seidroid scouts, root-cause, sei-spec), not Claude Code agents
sei-agent-driver/ the seidroid review driver, a Go module
.github/workflows/ CI: the catalog, install and prune gates, the runner image, the driver
assets/ the logo
AGENTS.md the agent roster and the managed doctrine block
CLAUDE.md contributor guidance; Claude Code loads it in this repository
Makefile run make help to list every target
