Parchi Relay
0xSero/parchi
Use Parchi Relay to control a real browser via the Parchi extension agent (WebSocket) or directly via JSON-RPC from a CLI/tooling workflow.
A skill your agent uses when migrating kkrpc projects across breaking stable API changes, replacing classic IoInterface/IO adapters, next entries, validation/interceptor options, transport imports…
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kunkunsh/kkrpc kkrpc-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/kkrpc-migration .claude/skills/kkrpc-migration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .claude/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kunkunsh/kkrpc kkrpc-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/kkrpc-migration .agents/skills/kkrpc-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .agents/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kunkunsh/kkrpc kkrpc-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/kkrpc-migration .cursor/skills/kkrpc-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .cursor/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kunkunsh/kkrpc.git --path skills/kkrpc-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kunkunsh/kkrpc kkrpc-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/kkrpc-migration .gemini/skills/kkrpc-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .gemini/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kunkunsh/kkrpc kkrpc-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/kkrpc-migration .github/skills/kkrpc-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .github/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kunkunsh/kkrpc kkrpc-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kunkunsh/kkrpc.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/kkrpc-migration .opencode/skills/kkrpc-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "kkrpc-migration" agent skill from https://github.com/kunkunsh/kkrpc/tree/main/skills/kkrpc-migration into .opencode/skills/kkrpc-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kkrpc-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
kkrpc-migrationA skill your agent uses when migrating kkrpc projects across breaking stable API changes, replacing classic IoInterface/IO adapters, next entries, validation/interceptor options, transport imports…
Kkrpc Migration is an agent skill from kunkunsh/kkrpc. Use when migrating kkrpc projects across breaking stable API changes, replacing classic IoInterface/IO adapters, next entries, validation/interceptor options, transport imports, or opt-in streaming/remote-reference entries.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Migrates kkrpc 0.7.x and temporary vNext code to kkrpc 1.0 stable APIs.
It sits in Backend & APIs, covering Realtime and WebSockets. It works with Hono and Chrome Extensions. The repository describes itself as: A TypeScript RPC protocol for multiple environments (iframe, web worker, stdio, http, WebSocket). The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e558873. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rgpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Migrates kkrpc 0.7.x and temporary vNext code to kkrpc 1.0 stable APIs.
From compatibility in the SKILL.md frontmatter.
Kkrpc Migration loads about 2.7k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 732 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from kunkunsh/kkrpc at commit e558873, republished under its MIT licence (© kunkunsh). 732 words, ~2,727 tokens.
.claude/skills/kkrpc-migration/SKILL.md (or your agent's skills folder).Use this skill to migrate applications from kkrpc 0.7.x or temporary kkrpc/next APIs to the stable 1.0 API.
The 1.0 public API is native Transport<RPCMessage> based. Do not preserve the classic IoInterface adapter model, public *IO classes, classic-compat, next/io, browser-lite, browser-mini, or electron-ipc imports.
Canonical user documentation: docs/src/content/docs/guides/migration-1-0.md.
For the slim-core feature split, also check docs/src/content/docs/guides/migration-0-1-to-0-2.md.
wrap(), expose(), or native RPCChannel.Run these searches before editing and again before finishing:
rg 'kkrpc/next|next/io|classic-compat|IoInterface|IoMessage|RPCValidators|kkrpc/browser-lite|kkrpc/browser-mini|kkrpc/electron-ipc'
rg '[A-Za-z0-9_]+IO\b'
rg 'validators\s*:|interceptors\s*:'The *IO search may find application names. Review matches manually and only migrate kkrpc classic adapter usage.
| Old import | New import |
|---|---|
kkrpc/next | kkrpc |
kkrpc/next/transport | kkrpc/transport |
kkrpc/next/codecs | kkrpc/codecs |
kkrpc/next/plugins | kkrpc/plugins |
kkrpc/next/validation | kkrpc/validation |
kkrpc/next/middleware | kkrpc/middleware |
kkrpc/next/superjson | kkrpc/superjson |
async iterable APIs from kkrpc | kkrpc/streaming |
callback-return/object-handle APIs from kkrpc | kkrpc/remote-refs |
kkrpc/next/worker | kkrpc/worker |
kkrpc/next/stdio | kkrpc/stdio |
kkrpc/browser-lite | kkrpc or kkrpc/browser |
kkrpc/browser-mini | kkrpc or kkrpc/browser |
kkrpc/electron-ipc | kkrpc/electron |
Runtime transports must not be imported from the main kkrpc entry. Use explicit subpaths.
Async iterable streaming and request/response remote references must also use explicit subpaths. The default kkrpc entry is the slim request/response core.
Use wrap() when this side only calls a remote API.
import { wrap } from "kkrpc"
import { webSocketClientTransport } from "kkrpc/ws"
const api = wrap<RemoteAPI>(webSocketClientTransport({ url: "ws://localhost:3000" }))If the proxy has a bounded lifetime, dispose it explicitly:
import { dispose } from "kkrpc"
dispose(api)Use expose() when this side only publishes a local API.
import { expose } from "kkrpc"
const controller = expose(localAPI, transport)
controller.dispose()Use native RPCChannel when both sides expose APIs.
import { RPCChannel } from "kkrpc"
const channel = new RPCChannel<LocalAPI, RemoteAPI>(transport, { expose: localAPI })
const remote = channel.getAPI()
channel.destroy()The generic order is local API first, remote API second.
| Boundary | Native 1.0 helper |
|---|---|
| Web Worker parent | workerTransport() from kkrpc/worker |
| Web Worker global | workerSelfTransport() from kkrpc/worker |
| Node stdio | nodeStdioTransport() from kkrpc/stdio |
| Generic stdio JSON | stdioJsonTransport() from kkrpc/stdio |
| HTTP client | httpClientTransport() from kkrpc/http |
| HTTP server | createHttpHandler() from kkrpc/http |
| WebSocket socket | webSocketTransport() from kkrpc/ws |
| WebSocket client | webSocketClientTransport() from kkrpc/ws |
| Hono WebSocket | createHonoWebSocketHandler() or honoWebSocketTransport() from kkrpc/ws/hono |
| Elysia WebSocket | createElysiaWebSocketHandler() or elysiaWebSocketTransport() from kkrpc/ws/elysia |
| iframe parent | iframeParentTransport() from kkrpc/iframe |
| iframe child | iframeChildTransport() from kkrpc/iframe |
| Chrome extension port | chromePortTransport() from kkrpc/chrome-extension |
| Electron IPC | electronIpcTransport() from kkrpc/electron |
| Electron utility process | electronUtilityProcessTransport() or electronUtilityProcessChildTransport() from kkrpc/electron |
| Tauri shell child process | tauriShellStdioTransport() from kkrpc/tauri |
| Socket.IO | socketIoTransport() from kkrpc/socketio |
| RabbitMQ | rabbitMqTransport() from kkrpc/rabbitmq |
| Kafka | kafkaTransport() from kkrpc/kafka |
| Redis Streams | redisStreamsTransport() from kkrpc/redis-streams |
| NATS | natsTransport() from kkrpc/nats |
HTTP is unary request/response in 1.0. Do not migrate callback-heavy, subscription, streaming-progress, remote-reference, raw-function, or server-push code to kkrpc/http. Use WebSocket or another evented transport for those boundaries.
When migrating remote references to RabbitMQ, Kafka, Redis Streams, or NATS, configure remotePeerId. Broadcast bus mode is for fan-out messages and does not advertise remote-reference support.
Remote proxies decoded from one channel are not portable across another channel. Replace implicit proxy forwarding with an explicit bridge method if an old design depended on that behavior.
Replace classic validators options with validationPlugin().
import { expose } from "kkrpc"
import { validationPlugin } from "kkrpc/validation"
const validators = {
"math.add": {
input: argsSchema,
output: resultSchema
}
}
expose(api, transport, {
plugins: [validationPlugin(validators)]
})If preserving an existing validator map is simpler, pass that map to validationPlugin() instead of rewriting the API around defineMethod().
Replace classic interceptors options with middlewarePlugin().
import { middlewarePlugin, type RPCInterceptor } from "kkrpc/middleware"
const logger: RPCInterceptor = async (ctx, next) => {
console.log(ctx.method)
return next()
}
const plugins = [middlewarePlugin([logger])]Install the plugin through wrap(), expose(), or RPCChannel options.
SuperJSON is not a core import. Use kkrpc/superjson only where a transport needs richer value encoding.
import { superJsonCodec } from "kkrpc/superjson"
import { createTransport } from "kkrpc/transport"
const transport = createTransport({ platform, codec: superJsonCodec() })Use transfer() from kkrpc only for transports that support transferable ownership, such as Web Workers.
import { transfer } from "kkrpc"
await api.process(transfer(buffer, [buffer]))Do not assume transfer support for HTTP, stdio, or message-bus transports.
IoInterface, IoMessage, or public *IO classes.kkrpc.kkrpc entry; use kkrpc/streaming.kkrpc entry; use kkrpc/remote-refs and explicit proxy(value) markers.kkrpc/remote-refs rejects them.dist or Typedoc output while migrating this repository.For this repository, run:
pnpm --filter kkrpc check-types
pnpm --filter kkrpc test
pnpm --filter "./examples/*" check-typesFor downstream projects, run the project type check, unit tests, and at least one integration test for each migrated transport boundary.
Before declaring migration complete, re-run the old API searches and verify that remaining matches are documentation, intentional compatibility notes, or unrelated false positives.
© kunkunsh, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/kkrpc-migration of kunkunsh/kkrpc.
Open the folder on GitHubat commit e558873
Kkrpc Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Kkrpc Migration this skillkunkunsh/kkrpc | 174 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Parchi Relay0xSero/parchi | 551 | — | ~1k | Automated safety check: Pass | MIT | |
| Fishjam JS Server SDKsoftware-mansion-labs/skills | 291 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Cloudflare WorkersEpicenterHQ/epicenter | 4.8k | — | ~576 | Automated safety check: Pass | Custom licence | |
| HonoEpicenterHQ/epicenter | 4.8k | — | ~513 | Automated safety check: Pass | Custom licence | |
| Knowledge Interaction Surfaces Hono Server API And StreamingechoVic/blade-code | 181 | — | ~1.7k | Automated safety check: Pass | MIT |
0xSero/parchi
Use Parchi Relay to control a real browser via the Parchi extension agent (WebSocket) or directly via JSON-RPC from a CLI/tooling workflow.
software-mansion-labs/skills
Node.js / TypeScript server SDK for Fishjam — backends that create rooms, mint peer tokens, listen to server notifications, and run agents.
EpicenterHQ/epicenter
Cloudflare Workers patterns for Worker runtime APIs, Durable Objects, KV, R2, D1, Queues, WebSockets, streaming responses, bindings, wrangler configuration, and deployment limits.
EpicenterHQ/epicenter
Hono patterns for TypeScript API routes, middleware, request and response typing, streaming, WebSockets, and Cloudflare Workers deployment.
echoVic/blade-code
覆盖 Blade Hono 服务的路由装配、Session/Task 控制器、SSE replay/live 切换、 WebSocket 终端、静态资源、认证、错误映射与资源关闭。进入时机:新增 HTTP API、 修改 Web 事件协议、处理同名 Session、调试断线重连、服务容量或 shutdown。
sanity-io/sanity
A skill your agent uses when writing Playwright tests, fixing flaky tests, debugging failures, implementing Page Object Model, configuring CI/CD, optimizing performance, mocking APIs, handling…
kunkunsh/kkrpc
A skill your agent uses when building TypeScript RPC with kkrpc stable APIs, choosing native Transport<RPCMessage adapters, or integrating validation, middleware, transferables, streaming, remote…
kunkunsh/kkrpc
A skill your agent uses when implementing kkrpc clients or servers in non-TypeScript languages, speaking the stable compact protocol, transports, and reference implementations in Go, Python, Rust…
Works with
Categories
A skill your agent uses when migrating kkrpc projects across breaking stable API changes, replacing classic IoInterface/IO adapters, next entries, validation/interceptor options, transport imports…. Kkrpc Migration is an agent skill from kunkunsh/kkrpc. Use when migrating kkrpc projects across breaking stable API changes, replacing classic IoInterface/IO adapters, next entries, validation/interceptor options, transport imports, or opt-in streaming/remote-reference entries.
Kkrpc Migration fits situations like: migrating kkrpc projects across breaking stable API changes; replacing classic IoInterface/IO adapters; validation/interceptor options; transport imports.
Run `npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a claude-code`. Or copy the skill folder (skills/kkrpc-migration in kunkunsh/kkrpc) into .claude/skills/kkrpc-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a codex`. Or copy the skill folder (skills/kkrpc-migration in kunkunsh/kkrpc) into .agents/skills/kkrpc-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kunkunsh/kkrpc --skill kkrpc-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kkrpc-migration, .gemini/skills/kkrpc-migration, .github/skills/kkrpc-migration and .opencode/skills/kkrpc-migration in your project.
Going by SKILL.md and its folder, Kkrpc Migration needs the command-line tools its instructions call (rg and pnpm). Compatibility (from SKILL.md): Migrates kkrpc 0.7.x and temporary vNext code to kkrpc 1.0 stable APIs..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Kkrpc Migration is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Kkrpc Migration: Parchi Relay (0xSero/parchi, 551 stars), Fishjam JS Server SDK (software-mansion-labs/skills, 291 stars), Cloudflare Workers (EpicenterHQ/epicenter, 4.8k stars) and Hono (EpicenterHQ/epicenter, 4.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kunkunsh (a GitHub organization) maintains it in kunkunsh/kkrpc, which has 174 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 11, 2026.
Source: kunkunsh/kkrpc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.