From anthropic-pack
Sets up local dev workflow for Anthropic Claude API projects with singleton client, request logging, cost tracking, mocks, and hot reload.
How this skill is triggered — by the user, by Claude, or both
Slash command
/anthropic-pack:anth-local-dev-loopThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Set up a fast local development cycle for Claude API projects with environment management, request logging, cost tracking, and hot-reload.
Set up a fast local development cycle for Claude API projects with environment management, request logging, cost tracking, and hot-reload.
anth-install-auth setup.env file with ANTHROPIC_API_KEYmy-claude-app/
├── .env # ANTHROPIC_API_KEY=sk-ant-...
├── .env.example # ANTHROPIC_API_KEY=your-key-here
├── .gitignore # Include .env
├── src/
│ ├── client.ts # Singleton client
│ ├── prompts/ # System prompts as files
│ └── tools/ # Tool definitions
├── tests/
│ └── mock-responses/ # Saved API responses for testing
└── scripts/
└── dev.ts # Dev runner with logging
// src/client.ts
import Anthropic from '@anthropic-ai/sdk';
let client: Anthropic | null = null;
export function getClient(): Anthropic {
if (!client) {
client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
maxRetries: 2,
timeout: 30_000,
});
}
return client;
}
// Development logger — tracks cost per request
export function logUsage(messageId: string, usage: { input_tokens: number; output_tokens: number }, model: string) {
const pricing: Record<string, { input: number; output: number }> = {
'claude-sonnet-4-20250514': { input: 3.0, output: 15.0 },
'claude-haiku-4-20250514': { input: 0.80, output: 4.0 },
'claude-opus-4-20250514': { input: 15.0, output: 75.0 },
};
const rates = pricing[model] || pricing['claude-sonnet-4-20250514'];
const cost = (usage.input_tokens * rates.input + usage.output_tokens * rates.output) / 1_000_000;
console.log(`[${messageId}] ${model} | ${usage.input_tokens}+${usage.output_tokens} tokens | $${cost.toFixed(4)}`);
}
// tests/mock-client.ts
import { type Message } from '@anthropic-ai/sdk/resources/messages';
export function mockMessage(text: string): Message {
return {
id: 'msg_test_123',
type: 'message',
role: 'assistant',
model: 'claude-sonnet-4-20250514',
content: [{ type: 'text', text }],
stop_reason: 'end_turn',
stop_sequence: null,
usage: { input_tokens: 10, output_tokens: 20 },
};
}
# package.json scripts
"scripts": {
"dev": "tsx watch src/index.ts",
"dev:debug": "ANTHROPIC_LOG=debug tsx watch src/index.ts",
"test": "vitest",
"test:live": "LIVE_API=1 vitest --run"
}
# .env.example (commit this)
ANTHROPIC_API_KEY=your-key-here
ANTHROPIC_MODEL=claude-sonnet-4-20250514
ANTHROPIC_MAX_TOKENS=1024
ANTHROPIC_LOG=warn # debug | info | warn | error
# Enable SDK debug logging
export ANTHROPIC_LOG=debug # Logs all requests/responses
import os
DEV_MODEL = "claude-haiku-4-20250514" # $0.80/$4.00 per MTok
PROD_MODEL = "claude-sonnet-4-20250514" # $3.00/$15.00 per MTok
model = DEV_MODEL if os.getenv("ENV") == "development" else PROD_MODEL
| Issue | Cause | Solution |
|---|---|---|
| Hot reload triggers duplicate requests | File save causes restart | Add debounce or save-on-explicit-action |
.env not loading | Missing dotenv setup | Use dotenv package or tsx --env-file=.env |
| Mock tests pass but live fails | Response shape changed | Update mocks from real API responses |
Apply patterns in anth-sdk-patterns for production-ready code.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin anthropic-packInstalls Anthropic Claude SDK and configures API key authentication for Python and TypeScript. Verifies setup with test messages to Claude models.
Builds LLM-powered applications with Claude API, Anthropic SDKs, or Agent SDK. Detects project language (Python, TypeScript, Java, Go, Ruby, C#, PHP) and provides language-specific docs and defaults.
Provides instructions for building LLM-powered apps with the Claude API or Anthropic SDK, including language detection and code examples for Python, TypeScript, Java, Go, Ruby, and more.