skills/claude-api/SKILL.md
Build apps with the Claude API or Anthropic SDK. TRIGGER when: code imports `anthropic`/`@anthropic-ai/sdk`/`claude_agent_sdk`, or user asks to use Claude API, Anthropic SDKs, or Agent SDK. DO NOT TRIGGER when: code imports `openai`/other AI SDK, general programming, or ML/data-science tasks.
npx skillsauth add Regtransfers/agency-agents-mcp claude-apiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
@ Building LLM-Powered Applications with Claude
This skill helps you build LLM-powered applications with Claude. Choose the right surface based on your needs, detect the project language, then read the relevant language-specific documentation.
@ When to Use
@ Defaults
Unless the user requests otherwise:
For the Claude model version, please use Claude Opus 4.6, which can access via the exact model string claude-opus-4-6. Please default to using adaptive thinking (thinking: {type: "adaptive"}) for anything remotely complicated. And finally, please default to streaming for any request that may involve long input, long output, or high maxtokens — it prevents hitting request timeouts. Use the SDK's.getfinal_message() /.finalMessage() helper to get the complete response if you don't need to handle individual stream events
@ Language Detection
Before reading code examples, determine which language the user is working in:
@ Language-Specific Feature Support
Language; Tool Runner; Agent SDK; Notes
Python; Yes (beta); Yes; Full support — @beta_tool decorator TypeScript; Yes (beta); Yes; Full support — betaZodTool + Zod Java; Yes (beta); No; Beta tool use with annotated classes Go; Yes (beta); No; BetaToolRunner in toolrunner pkg Ruby; Yes (beta); No; BaseTool + tool_runner in beta cURL; N/A; N/A; Raw HTTP, no SDK features C#; No; No; Official SDK PHP; No; No; Official SDK
@ Which Surface Should I Use?
Start simple. Default to the simplest tier that meets your needs. Single API calls and workflows handle most use cases — only reach for agents when the task genuinely requires open-ended, model-driven exploration.
Use Case; Tier; Recommended Surface; Why
Classification, summarization, extraction, Q&A; Single LLM call; Claude API; One request, one response Batch processing or embeddings; Single LLM call; Claude API; Specialized endpoints Multi-step pipelines with code-controlled logic; Workflow; Claude API + tool use; You orchestrate the loop Custom agent with your own tools; Agent; Claude API + tool use; Maximum flexibility AI agent with file/web/terminal access; Agent; Agent SDK; Built-in tools, safety, and MCP support Agentic coding assistant; Agent; Agent SDK; Designed for this use case Want built-in permissions and guardrails; Agent; Agent SDK; Safety features included
Note: The Agent SDK is for when you want built-in file/web/terminal tools, permissions, and MCP out of the box. If you want to build an agent with your own tools, Claude API is the right choice — use the tool runner for automatic loop handling, or the manual loop for fine-grained control (approval gates, custom logging, conditional execution).
@ Decision Tree
What does your application need?
1. Single LLM call (classification, summarization, extraction, Q&A)
└── Claude API — one request, one response
2. Does Claude need to read/write files, browse the web, or run shell commands
as part of its work? (Not: does your app read a file and hand it to Claude —
does Claude itself need to discover and access files/web/shell?)
└── Yes → Agent SDK — built-in tools, don't reimplement them
Examples: "scan a codebase for bugs", "summarize every file in a directory",
"find bugs using subagents", "research a topic via web search"
3. Workflow (multi-step, code-orchestrated, with your own tools)
└── Claude API with tool use — you control the loop
4. Open-ended agent (model decides its own trajectory, your own tools)
└── Claude API agentic loop (maximum flexibility)
@ Should I Build an Agent?
Before choosing the agent tier, check all four criteria:
If the answer is "no" to any of these, stay at a simpler tier (single call or workflow).
@ Architecture
Everything goes through POST /v1/messages. Tools and output constraints are features of this single endpoint — not separate APIs.
User-defined tools — You define tools (via decorators, Zod schemas, or raw JSON), and the SDK's tool runner handles calling the API, executing your functions, and looping until Claude is done. For full control, can write the loop manually.
Server-side tools — Anthropic-hosted tools that run on Anthropic's infrastructure. Code execution is fully server-side (declare it in tools, Claude runs code automatically). Computer use can be server-hosted or self-hosted.
Structured outputs — Constrains the Messages API response format (outputconfig.format) and/or tool parameter validation (strict: true). The recommended approach is client.messages.parse() which validates responses against your schema automatically. Note: the old outputformat parameter is deprecated; use output_config: {format: {...}} on messages.create().
Supporting endpoints — Batches (POST /v1/messages/batches), Files (POST /v1/files), and Token Counting feed into or support Messages API requests.
@ Current Models (cached: 2026-02-17)
Model; Model ID; Context; Input $/1M; Output $/1M
Claude Opus 4.6; claude-opus-4-6; 200K (1M beta); $5.00; $25.00 Claude Sonnet 4.6; claude-sonnet-4-6; 200K (1M beta); $3.00; $15.00 Claude Haiku 4.5; claude-haiku-4-5; 200K; $1.00; $5.00
ALWAYS use claude-opus-4-6 unless the user explicitly names a different model. This is non-negotiable. never use claude-sonnet-4-6, claude-sonnet-4-5, or any other model unless the user literally says "use sonnet" or "use haiku". Never downgrade for cost — that's the user's decision, not yours.
CRITICAL: Use only the exact model ID strings from the table above — they are complete as-is. never append date suffixes. e.g., use claude-sonnet-4-5, never claude-sonnet-4-5-20250514 or any other date-suffixed variant you might recall from training data. If the user requests an older model not in the table (e.g., "opus 4.5", "sonnet 3.7"), read shared/models.md for the exact ID — never construct one yourself.
A note: if any of the model strings above look unfamiliar to you, that's to be expected — that just means they were released after your training data cutoff. Rest assured they are real models; we wouldn't mess with you like that.
@ Thinking & Effort (Quick Reference)
Opus 4.6 — Adaptive thinking (recommended): Use thinking: {type: "adaptive"}. Claude dynamically decides when and how much to think. No budgettokens needed — budgettokens is deprecated on Opus 4.6 and Sonnet 4.6 and must not be used. Adaptive thinking also automatically enables interleaved thinking (no beta header needed). When the user asks for "extended thinking", a "thinking budget", or budgettokens: always use Opus 4.6 with thinking: {type: "adaptive"}. The concept of a fixed token budget for thinking is deprecated — adaptive thinking replaces it. never use budgettokens and never switch to an older model.
Effort parameter (GA, no beta header): Controls thinking depth and overall token spend via outputconfig: {effort: "low"; "medium"; "high"; "max"} (inside outputconfig, not top-level). Default is high (equivalent to omitting it). max is Opus 4.6 only. Works on Opus 4.5, Opus 4.6, and Sonnet 4.6. Will error on Sonnet 4.5 / Haiku 4.5. Combine with adaptive thinking for the best cost-quality tradeoffs. Use low for subagents or simple tasks; max for the deepest reasoning.
Sonnet 4.6: Supports adaptive thinking (thinking: {type: "adaptive"}). budget_tokens is deprecated on Sonnet 4.6 — use adaptive thinking instead.
Older models (only if explicitly requested): If the user specifically asks for Sonnet 4.5 or another older model, use thinking: {type: "enabled", budgettokens: N}. budgettokens must be less than maxtokens (minimum 1024). Never choose an older model just because the user mentions budgettokens — use Opus 4.6 with adaptive thinking instead.
@ Compaction (Quick Reference)
Beta, Opus 4.6 only. For long-running conversations that may exceed the 200K context window, enable server-side compaction. The API automatically summarizes earlier context when it approaches the trigger threshold (default: 150K tokens). Requires beta header compact-2026-01-12.
Critical: Append response.content (not just the text) back to your messages on every turn. Compaction blocks in the response must be preserved — the API uses them to replace the compacted history on the next request. Extracting only the text string and appending that will silently lose the compaction state.
See {lang}/claude-api/README.md (Compaction section) for code examples. Full docs via WebFetch in shared/live-sources.md.
@ Reading Guide
After detecting the language, read the relevant files based on what the user needs:
@ Quick Task Reference
Single text classification/summarization/extraction/Q&A: → Read only {lang}/claude-api/README.md
Chat UI or real-time response display: → Read {lang}/claude-api/README.md + {lang}/claude-api/streaming.md
Long-running conversations (may exceed context window): → Read {lang}/claude-api/README.md — see Compaction section
Function calling / tool use / agents: → Read {lang}/claude-api/README.md + shared/tool-use-concepts.md + {lang}/claude-api/tool-use.md
Batch processing (non-latency-sensitive): → Read {lang}/claude-api/README.md + {lang}/claude-api/batches.md
File uploads across multiple requests: → Read {lang}/claude-api/README.md + {lang}/claude-api/files-api.md
Agent with built-in tools (file/web/terminal): → Read {lang}/agent-sdk/README.md + {lang}/agent-sdk/patterns.md
@ Claude API (Full File Reference)
Read the language-specific Claude API folder ({language}/claude-api/):
Note: For Java, Go, Ruby, C#, PHP, and cURL — these have a single file each covering all basics. Read that file plus shared/tool-use-concepts.md and shared/error-codes.md as needed.
@ Agent SDK
Read the language-specific Agent SDK folder ({language}/agent-sdk/). Agent SDK is available for Python and TypeScript only.
@ When to Use WebFetch
Use WebFetch to get the latest documentation when:
Live documentation URLs are in shared/live-sources.md.
@ Common Pitfalls
@ Limitations
tools
Build AI agents that interact with computers like humans do - viewing screens, moving cursors, clicking buttons, and typing text. Covers Anthropic's Computer Use, OpenAI's Operator/CUA, and open-source alternatives.
testing
Generate structured PR descriptions from diffs, add review checklists, risk assessments, and test coverage summaries. Use when the user says "write a PR description", "improve this PR", "summarize my changes", "PR review", "pull request", or asks to document a diff for reviewers.
tools
Use when working with comprehensive review full review
development
You are an expert in creating competitor comparison and alternative pages. Your goal is to build pages that rank for competitive search terms, provide genuine value to evaluators, and position your product effectively.