Bind shared entrypoint protocols in a client context with typed call(), invoke(), url(), bindAll(), and bindScreen(). Load when wiring client API routes or screens.
Scanned 9/22/2026
Install to Claude Code
npx -y skills add owlmeans/common --skill client-entrypoint --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Client Entrypoint?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/owlmeans-client-entrypoint-common)More formats (shields.io, HTML) on the badges page.
---
name: client-entrypoint
description: Bind shared entrypoint protocols in a client context with typed call(), invoke(), url(), bindAll(), and bindScreen(). Load when wiring client API routes or screens.
user-invocable: false
---
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
# @owlmeans/client-entrypoint
**Install:** `bun add @owlmeans/client-entrypoint@^0.1.18-rc.30`
Bind a declaration from `@owlmeans/entrypoint`; never construct or replace a contextual
entrypoint by alias.
```ts
import { bind, bindAll, bindScreen } from '@owlmeans/client-entrypoint'
context.registerEntrypoints(bindAll(projectProtocols))
context.registerEntrypoint(bind(projectProtocols.health))
context.registerEntrypoint(bindScreen(projectProtocols.home, handler(Home)))
const value = await context.entrypoint(projectProtocols.create).call({ body })
const { value, outcome } = await context.entrypoint(projectProtocols.create).invoke({ body })
const href = await context.entrypoint(projectProtocols.edit).url({ params: { id } })
```
`bindAll(tree)` flattens a nested named declaration tree while preserving the union of its protocol
types. `bind(protocol)` is appropriate where one protocol must use a distinct client option.
`bindScreen` is for a frontend route and renderer; screens are addressed by `url` and reject
`call`/`invoke`.
`context.entrypoint(protocol)` derives `ClientProtocolEntrypoint<Protocol>` from the protocol. Do
not add an explicit result generic. `entrypointRef<Request, Response>(alias)` is reserved for a
dynamic remote declaration that cannot be imported.
Client calls include only contract request sections plus `CallOptions` (`auth`, host/port/base,
timeout, signal). `url` accepts params/query plus the same address options. The route transport is
chosen by the declaration; callers do not branch for HTTP, socket, or queue.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!