Build OwlMeans server applications from immutable entrypoint protocol declarations. Use when starting a server, binding endpoint implementations, configuring services, or registering server entrypoints.
Scanned 9/22/2026
Install to Claude Code
npx -y skills add owlmeans/common --skill server-app --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Server App?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/owlmeans-server-app-common)More formats (shields.io, HTML) on the badges page.
---
name: server-app
description: Build OwlMeans server applications from immutable entrypoint protocol declarations. Use when starting a server, binding endpoint implementations, configuring services, or registering server entrypoints.
---
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
# Server application entrypoints
**Install:** `bun add @owlmeans/server-app@^0.1.18-rc.34`
Declare routes and request/response contracts in a shared package with `protocol()` or
`openProtocol()`. A server package supplies local implementations with `bind()` and `handlers()`;
it never changes a shared declaration by alias.
```ts
import { bind, entrypoints, handlers } from '@owlmeans/server-app'
import { projectProtocols } from 'project-common'
import { createProject } from './app/project.js'
const api = handlers<Context>()
export const serverBindings = [
...entrypoints,
bind(projectProtocols.base),
bind(projectProtocols.create, api.body(projectProtocols.create, createProject)),
]
```
`handlers<Context>().body`, `.params` and `.request` infer request sections and response values
from the declaration. Use `.request` for a transport-level handler that needs the complete request
boundary.
## Rules
- Keep `protocol()` declarations in the common package shared by callers and servers.
- Bind parent/group declarations as well as leaves; parents establish inherited paths and access.
- Use direct protocol references in `context.entrypoint(protocol)`; do not supply a caller-side
response generic.
- Model validation belongs in `contract()` with `typed()` or `schema()`, not in a wrapper around a
handler.
- `entrypoints` contains framework registrations. Add local entrypoints to a new array and register
that array during context initialization.
`holdApiPort`, `config`, `sservice`, `service`, `AppType` and the context bootstrap exports remain
available from this package for process wiring.
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!