thin-wrappers

thin-wrappers is a skill for Claude Code, Codex from saski/arnesto. It costs 37 tokens per session (857 once invoked), scanned A, original, Unlicense.

A design approach for hiding third-party infrastructure libraries behind small interfaces that use your application's own terms.

In plain words
What is it for?
Use it to isolate SDK calls, expose only the operations you need, and keep business logic independent of infrastructure details.
Why use it?
It prevents vendor-specific code from spreading through the codebase, making tests and provider changes easier.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

Good fit Use it to isolate SDK calls, expose only the operations you need…

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/saski/arnesto/thin-wrappers
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add saski/arnesto --skill thin-wrappers
Clone the repo
git clone --depth 1 https://github.com/saski/arnesto

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for thin-wrappers

README.md
[![agentmods](https://agentmods.dev/badge/skills/saski/arnesto/thin-wrappers.svg)](https://agentmods.dev/skills/saski/arnesto/thin-wrappers)
Your own site
<a href="https://agentmods.dev/skills/saski/arnesto/thin-wrappers"><img src="https://agentmods.dev/badge/skills/saski/arnesto/thin-wrappers.svg" alt="Measured on agentmods" height="20"></a>
Per session 37 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 857 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00037 $0.00857
Opus 5 $0.00018 $0.00428
Sonnet 5 $0.00007 $0.00171
Haiku 4.5 $0.00004 $0.00086

Measured 3d ago against content hash 273f3d47b02a, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

thin-wrappers scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/thin-wrappers/SKILL.md · 113 lines

How it starts

The opening of the file, as written. The whole thing — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.

STARTER_CHARACTER = 🏗️

Thin Infrastructure Wrappers

Core Principle

Minimize the API surface area: expose only what you use today, in your domain's language. The wrapper should be significantly smaller than the SDK it wraps.

When to Apply

Apply thin wrappers when:

  • Direct SDK usage spreads across the codebase
  • Infrastructure concerns leak into business logic
  • Testing requires mocking third-party libraries directly
  • Switching providers or versions creates ripple effects
  • SDK types and concepts appear in domain code

Skip when:

  • The SDK is already minimal and domain-aligned
  • Usage is isolated to a single boundary class
  • The abstraction cost exceeds the coupling cost

Design Process

1. Identify Usage Patterns

Analyze existing SDK usage across the codebase:

  • Find all import statements for the SDK
  • Catalog which SDK methods are actually used
  • Group usage by purpose (read, write, delete, etc.)
  • Apply the 80% rule: focus on covering the most common operations first

2. Design Minimal Interface

Create an interface exposing only what's needed:

  • Use domain terminology, not SDK terminology
  • Expose operations, not SDK objects or types
  • Keep method signatures simple and focused
  • Prevent SDK types from escaping the wrapper

Anti-pattern: Exposing entire SDK "just in case"

Example transformation:

  • SDK: cache.set(key, value, ex=ttl, nx=True)
  • Wrapper: cache.set_if_not_exists(key, value, ttl)

3. Choose Implementation Pattern

Two-layer approach (most common):

  • Thin wrapper: Direct SDK encapsulation, minimal logic
  • Domain class: Business logic using the wrapper

Use when business logic needs to be separated from infrastructure.

Single-class approach:

  • Combine wrapper and domain logic in one class

Use when wrapper logic is minimal and business logic is simple.

4. Implement with Domain Language

Align method names and parameters with domain concepts:

  • publish_order_created(order_id, customer_id) not publish(topic, message)
  • fetch_user_profile(user_id) not get(bucket, key)
  • store_uploaded_file(file_id, content) not put_object(params)

Read the full file on GitHub · 113 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 113 lines · 37 tokens per session scan A 273f3d47b02a

Subscribe to this mod's changes

thin-wrappers is a skill published in the GitHub repository saski/arnesto (5 stars, last pushed today), licensed Unlicense. It adds 37 tokens to every session and 857 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

deepstream-sop

Use this skill when building, deploying, evaluating, debugging, or measuring latency for the DeepStream SOP Inference Microservice — a GPU-accelerated FastAPI service that detects whether operators perform assembly-line steps in order via event boundary detection (GEBD) plus VLM classification. Trigger even if the…

NVIDIA/skills · 219 tokens

nemo-fabric-build-adapter

Build, migrate, review, and maintain third-party NVIDIA NeMo Fabric adapters against the public adapter contract. Use when creating adapter or target descriptors, mapping AgentConfig into an agent harness or custom-agent runtime, implementing start/invoke/stop, declaring schemas and capabilities, packaging discovery…

NVIDIA/skills · 87 tokens

earth2studio-create-datasource

Create and validate Earth2Studio data source wrappers (DataSource, ForecastSource, DataFrameSource, ForecastFrameSource) from remote stores. Do NOT use for fetching data with existing sources, model inference, or installation tasks.

NVIDIA/skills · 53 tokens

dynamo-recipe-runner

Select, validate, patch, and deploy existing NVIDIA Dynamo Kubernetes recipes. Use for model/backend/GPU/deployment-mode recipe bring-up; use router-starter for router-only mode work and troubleshoot for broken deployments.

NVIDIA/skills · 49 tokens

cuopt-server-api-python

This skill covers starting the server and client examples (curl, Python). Server has no separate C API (clients can be any language).

NVIDIA/skills · 34 tokens

dynamo-router-starter

Start or patch Dynamo router modes and run router endpoint smoke checks. Use for round-robin, KV-aware, least-loaded, or device-aware routing setup; use recipe-runner for recipe deployment and troubleshoot for failure diagnosis.

NVIDIA/skills · 50 tokens