Skill: setup-embedded

## Description

13 stars

Best use case

Skill: setup-embedded is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

## Description

Teams using Skill: setup-embedded should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/setup-embedded/SKILL.md --create-dirs "https://raw.githubusercontent.com/Ring8688/claude-sub-proxy/main/.claude/skills/setup-embedded/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/setup-embedded/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Skill: setup-embedded Compares

Feature / AgentSkill: setup-embeddedStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

## Description

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Skill: setup-embedded

## Description

Embed claude-sub-proxy as an internal service within another project. Minimal footprint — 4 JS files + config, running on localhost with no external exposure.

## Trigger

Trigger this skill when the user wants to:
- Embed the proxy inside another project
- Use claude-sub-proxy as a library/internal service
- Add Claude API access to an existing app without a separate server
- "Integrate claude-sub-proxy into my project"

## Setup Guide

### Step 1: Verify Claude Code CLI

Check that credentials exist:

```bash
cat ~/.claude/.credentials.json
# Should contain claudeAiOauth.accessToken
```

If not authenticated, run `claude` to log in.

### Step 2: Choose Integration Method

**Option A — Copy source files (recommended):**

```bash
# From the claude-sub-proxy repo, copy these files into your project:
mkdir -p your-project/claude-proxy
cp src/server.js src/claude-executor.js src/format-bridge.js src/logger.js src/config.txt your-project/claude-proxy/
```

**Option B — Git submodule:**

```bash
git submodule add <repo-url> claude-proxy
```

### Step 3: Install Dependency

```bash
npm install @anthropic-ai/claude-agent-sdk
```

### Step 4: Configure via Environment Variables

For embedded use, set these environment variables in your app's startup:

| Variable | Recommended Value | Description |
|----------|------------------|-------------|
| `CSP_PORT` | `42069` (or any free port) | Proxy listening port |
| `CSP_HOST` | `127.0.0.1` | Localhost only — no external exposure |
| `CSP_LOG_LEVEL` | `WARN` | Quiet logging for embedded use |

No `CSP_PROXY_API_KEY` needed — the proxy runs on localhost as an internal service.

### Step 5: Start the Proxy

**Option A — Background process in your start script:**

```json
// package.json
{
  "scripts": {
    "start": "concurrently \"node claude-proxy/server.js\" \"your-app-start-command\""
  }
}
```

```bash
npm install concurrently --save-dev
```

**Option B — Programmatic start:**

```js
import { startServer } from './claude-proxy/server.js';
startServer();
```

**Option C — PM2:**

```bash
pm2 start claude-proxy/server.js --name claude-proxy
```

### Step 6: Connect from Your App

**Node.js:**

```js
const response = await fetch('http://127.0.0.1:42069/v1/messages', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'claude-sonnet-4-6',
    max_tokens: 1024,
    messages: [{ role: 'user', content: 'Hello!' }]
  })
});
const data = await response.json();
```

**Python:**

```python
import anthropic

client = anthropic.Anthropic(
    base_url="http://127.0.0.1:42069",
    api_key="not-needed"
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)
```

**curl:**

```bash
curl -X POST http://127.0.0.1:42069/v1/messages \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":256,"messages":[{"role":"user","content":"Hello"}]}'
```

### Step 7: Verify

```bash
# Health check
curl -s http://127.0.0.1:42069/health
# → {"status":"ok","server":"claude-sub-proxy","timestamp":...}

# Auth check
curl -s http://127.0.0.1:42069/auth/status
# → {"authenticated":true,"source":"claude_credentials","expires_at":"..."}
```

## Key Points

- **Localhost only** — default `CSP_HOST=127.0.0.1`, no external exposure
- **Text-only mode** — `tools: []` by default, pure API proxy
- **No proxy_api_key needed** — inter-process communication on localhost is trusted
- **Minimal footprint** — 4 JS files + 1 config file + 1 npm dependency

Related Skills

We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.