Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Client Config

ASecurity

How to use @owlmeans/client-config — the BasicClientConfig shape every client config extends (webService, primaryHost, primaryPort, shortAlias) and addWebService() for naming which API client carries a call. Auto-invoked when typing a client config, wiring an app to its API service, or resolving which web service an entrypoint calls through.

3 stars
0 votes
0 copies
0 views
Added 9/22/2026
developmenttypescriptgoreactapi

Works with

cliapi

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add owlmeans/common --skill client-config --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Client Config?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Client Config
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/owlmeans-client-config/badge)](https://www.skillsdirectory.com/skills/owlmeans-client-config)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: client-config
description: How to use @owlmeans/client-config — the BasicClientConfig shape every client config extends (webService, primaryHost, primaryPort, shortAlias) and addWebService() for naming which API client carries a call. Auto-invoked when typing a client config, wiring an app to its API service, or resolving which web service an entrypoint calls through.
user-invocable: false
---

# @owlmeans/client-config

**Layer:** Client
**Install:** `"@owlmeans/client-config": "^0.1.18-rc.30"` in `dependencies`

The bottom of the client config stack: the few fields a client adds to `CommonConfig`, and the
helper that fills the one field a client cannot work without. Nothing here knows about React or the
browser.

## Key Exports

| Export | Description |
|--------|-------------|
| `BasicClientConfig` | `CommonConfig` + `webService`, `primaryHost`, `primaryPort`, `shortAlias` |
| `addWebService(service, alias?, cfg?)` | Point calls at an API client — globally, or per target service |
| `DEFAULT_KEY` (`default`) | The key `webService` uses for the fallback API client |

`ClientConfig` — the config a context is actually built from — is **not** here: it lives in
`@owlmeans/client-context`, which adds `services` and `i18n` on top of `BasicClientConfig`.

## The fields

| Field | Meaning |
|---|---|
| `webService` | Which API client carries an outgoing call. A string names one for everything; a record maps the *target service* alias to an API client alias, with `DEFAULT_KEY` as the fallback |
| `primaryHost` / `primaryPort` | The host the app is being served from. `@owlmeans/web-client` fills these from `window.location` while building the context — do not set them by hand |
| `shortAlias` | An abbreviation of `service`, so a flow or a redirect can name this app in a query parameter without spelling the full alias |

## Naming the API client

```typescript
import { addWebService } from '@owlmeans/client-config'

addWebService(API_CLIENT, cfg)                  // one client for every call
addWebService(BILLING_CLIENT, BILLING, cfg)     // ...and this one for calls to the billing service
```

The **three-argument** form never drops what is already there, and what it writes depends on the
state it finds:

| `webService` before | After `addWebService(S, ALIAS, cfg)` |
|---|---|
| unset | `{ default: S, ALIAS: S }` — the first per-service call **also** becomes the global default |
| the string `X` | `{ default: X, ALIAS: S }` — the general answer is demoted, not lost |
| a record | that record with `ALIAS: S` added |

So a first call meant as service-specific is not specific: name the general client first, or accept
that this one answers for everything else too.

The **two-argument** form sets the general answer: an unset or string `webService` becomes the plain
string, and on a record it writes only `DEFAULT_KEY`. Called with no `cfg` at all it builds and returns a fresh partial config
to spread. `@owlmeans/web-panel`, `@owlmeans/mui-panel` and `@owlmeans/server-app` re-export it, so
an app configures through the package it already imports.

A client entrypoint resolves its carrier from this field on every call, and refuses before anything
else when the field is absent: `SyntaxError('No webService provided')` is "this config never named
an API client", and it is thrown even for a call a registered transport would have carried. When
the field is a record with neither the target service's alias nor `DEFAULT_KEY`, the failure is
``SyntaxError("Can't cast web service alias for <alias> entrypoint")`` instead.

`webService` has no `apiConfigPlugin()` allowlist registration, so
`@owlmeans/api-config-server` never includes it in the `ApiConfig` it advertises.
`@owlmeans/api-config-client` merges only what came back, so every client names its API client
locally.

## Depends On

- `@owlmeans/config` — `CommonConfig`, which `BasicClientConfig` extends

## Related

- [[client-context]] — `ClientConfig` and the context factory built on this shape
- [[client-entrypoint]] — the caller that reads `webService` to pick a carrier

Attribution

owlmeansowlmeans
View sourceMore from owlmeans →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284072 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →