$npx -y skills add skateddu/claude-code-python-setup --skill claude-apiBuild 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-s
| 1 | # Building LLM-Powered Applications with Claude |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | ## Defaults |
| 6 | |
| 7 | Unless the user requests otherwise: |
| 8 | |
| 9 | For the Claude model version, please use Claude Opus 4.6, which you 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 `max_tokens` — it prevents hitting request timeouts. Use the SDK's `.get_final_message()` / `.finalMessage()` helper to get the complete response if you don't need to handle individual stream events |
| 10 | |
| 11 | --- |
| 12 | |
| 13 | ## Language Detection |
| 14 | |
| 15 | Before reading code examples, determine which language the user is working in: |
| 16 | |
| 17 | 1. **Look at project files** to infer the language: |
| 18 | |
| 19 | - `*.py`, `requirements.txt`, `pyproject.toml`, `setup.py`, `Pipfile` → **Python** — read from `python/` |
| 20 | - `*.ts`, `*.tsx`, `package.json`, `tsconfig.json` → **TypeScript** — read from `typescript/` |
| 21 | - `*.js`, `*.jsx` (no `.ts` files present) → **TypeScript** — JS uses the same SDK, read from `typescript/` |
| 22 | - `*.java`, `pom.xml`, `build.gradle` → **Java** — read from `java/` |
| 23 | - `*.kt`, `*.kts`, `build.gradle.kts` → **Java** — Kotlin uses the Java SDK, read from `java/` |
| 24 | - `*.scala`, `build.sbt` → **Java** — Scala uses the Java SDK, read from `java/` |
| 25 | - `*.go`, `go.mod` → **Go** — read from `go/` |
| 26 | - `*.rb`, `Gemfile` → **Ruby** — read from `ruby/` |
| 27 | - `*.cs`, `*.csproj` → **C#** — read from `csharp/` |
| 28 | - `*.php`, `composer.json` → **PHP** — read from `php/` |
| 29 | |
| 30 | 2. **If multiple languages detected** (e.g., both Python and TypeScript files): |
| 31 | |
| 32 | - Check which language the user's current file or question relates to |
| 33 | - If still ambiguous, ask: "I detected both Python and TypeScript files. Which language are you using for the Claude API integration?" |
| 34 | |
| 35 | 3. **If language can't be inferred** (empty project, no source files, or unsupported language): |
| 36 | |
| 37 | - Use AskUserQuestion with options: Python, TypeScript, Java, Go, Ruby, cURL/raw HTTP, C#, PHP |
| 38 | - If AskUserQuestion is unavailable, default to Python examples and note: "Showing Python examples. Let me know if you need a different language." |
| 39 | |
| 40 | 4. **If unsupported language detected** (Rust, Swift, C++, Elixir, etc.): |
| 41 | |
| 42 | - Suggest cURL/raw HTTP examples from `curl/` and note that community SDKs may exist |
| 43 | - Offer to show Python or TypeScript examples as reference implementations |
| 44 | |
| 45 | 5. **If user needs cURL/raw HTTP examples**, read from `curl/`. |
| 46 | |
| 47 | ### Language-Specific Feature Support |
| 48 | |
| 49 | | Language | Tool Runner | Agent SDK | Notes | |
| 50 | | ---------- | ----------- | --------- | ------------------------------------- | |
| 51 | | Python | Yes (beta) | Yes | Full support — `@beta_tool` decorator | |
| 52 | | TypeScript | Yes (beta) | Yes | Full support — `betaZodTool` + Zod | |
| 53 | | Java | Yes (beta) | No | Beta tool use with annotated classes | |
| 54 | | Go | Yes (beta) | No | `BetaToolRunner` in `toolrunner` pkg | |
| 55 | | Ruby | Yes (beta) | No | `BaseTool` + `tool_runner` in beta | |
| 56 | | cURL | N/A | N/A | Raw HTTP, no SDK features | |
| 57 | | C# | No | No | Official SDK | |
| 58 | | PHP | No | No | Official SDK | |
| 59 | |
| 60 | --- |
| 61 | |
| 62 | ## Which Surface Should I Use? |
| 63 | |
| 64 | > **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. |
| 65 | |
| 66 | | Use Case | Tier | Recommended Surface | Why | |
| 67 | | ----------------------------------------------- | --------------- | ------------------------- | --------------------------------------- | |
| 68 | | Classification, summarization, extraction, Q&A | Single LLM call | **Claude API** | One request, one response | |
| 69 | | Batch processing or embeddings | Single LLM call | **Claude API** | Specialized endpoints | |
| 70 | | Multi-step pipelines with code-controlled logic | Workflow | **Claude API + tool use** | You orchestrate the loop | |
| 71 | | Custom agent with your own tools | Agent | **Claude API + |