Skip to content
Agentmart
Submit a tool

adapter-pattern-typescript

To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects.

Skill by jyjeanne

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/jyjeanne-adapter-pattern-typescript

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects. Use when: When integrating a third-party library whose interface doesn't match your application's internal requirements; When you want to standardize multiple different implementations of a service (e.g., different payment gateways); When you need to provide a stable interface while the underlying dependency is subject to change.

Use cases: finance

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/adapter-pattern-typescript

What's inside

Skill name
adapter-pattern-typescript
Description
To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects. Use when: When integrating a third-party library whose interface doesn't match your application's internal requirements; When you want to standardize multiple different implementations of a service (e.g., different payment gateways); When you need to provide a stable interface while the underlying dependency is subject to change.
License
MIT
Instructions
87 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

## Purpose
To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects.

## When to Use
- When integrating a third-party library whose interface doesn't match your application's internal requirements.
- When you want to standardize multiple different implementations of a service (e.g., different payment gateways).
- When you need to provide a stable interface while the underlying dependency is subject to change.

## Procedure

### 1. Define the Target Interface
This is the interface your application expects to use.

```typescript
// logger.interface.ts
export interface ILogger {
  log(message: string): void;
  error(message: string): void;
}
```

### 2. The Incompatible Service (Adaptee)
An external library or old code with a different interface.

```typescript
// legacy-logger.ts
export class LegacyLogger {
  printMessage(msg: string) {
    console.log(`[LEGACY]: ${msg}`);
  }
  
  reportFailure(err: string) {
    console.error(`[LEGACY ERROR]: ${err}`);
  }
}
```

### 3. Implement the Adapter
The adapter implements the `Target` interface and delegates work to the `Adaptee`.

```typescript
// logger-adapter.ts
import { ILogger } from './logger.interface';
import { LegacyLogger } from './legacy-logger';

export class LoggerAdapter implements ILogger {
  private legacyLogger: LegacyLogger;

  constructor(legacyLogger: LegacyLogger) {
    this.legacyLogger = legacyLogger;
  }

  log(message: string): void {
    // Translate the call
    this.legacyLogger.printMessage(message);
  }

  error(message: string): void {
    // Translate the call
    this.legacyLogger.reportFailure(message);
  }
}
```

### 4. Usage in Client Code
The client only knows about the `ILogger` interface.

```typescript
function app(logger: ILogger) {
  logger.log("Application started");
}

const legacy = new LegacyLogger();
const adapter = new LoggerAdapter(legacy);

app(adapter);
```

## Constraints
- **Complexity**: Don't use the pattern if you can easily modify the original class to match the interface.
- **Performance**: While negligible, the extra layer of indirection adds a tiny overhead.
- **Single Responsibility**: The adapter should only focus on translation, not adding new business logic.

## Expected Output
A wrapper class that successfully bridges two incompatible interfaces, allowing them to communicate without changing their existing code.

From jyjeanne/ai-setup-forge, MIT.

More from jyjeanne/ai-setup-forge

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Mar 16, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from jyjeanne

Cite this page

adapter-pattern-typescript skill. Agent Mart. https://agentmart.dev/skills/jyjeanne-adapter-pattern-typescript (last updated 2026-10-24)