Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up a fast local development loop for building with the Anthropic API — Use when working with local-dev-loop patterns. hot reload, cost-saving tips, and test patterns. Trigger with "anthropic dev setup", "claude local development", "anthropic test locally", "claude dev workflow".
.claude/skills/jeremylongshore-clade-local-dev-loop/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 6% | 0% |
Set up a fast, cheap development workflow for building with Claude.
ANTHROPIC_API_KEY environment variable setbashmkdir my-claude-app && cd my-claude-app npm init -y npm install @claude-ai/sdk dotenv tsx # Create .env (never commit this) echo 'ANTHROPIC_API_KEY=sk-ant-api03-...' > .env echo '.env' >> .gitignore
typescript// src/test-prompt.ts import 'dotenv/config'; import Anthropic from '@claude-ai/sdk'; const client = new Anthropic(); async function main() { const message = await client.messages.create({ model: 'claude-haiku-4-5-20251001', // Use Haiku for dev — 20x cheaper than Opus max_tokens: 512, messages: [{ role: 'user', content: 'Summarize this in one sentence: ...' }], }); console.log(message.content[0].text); console.log(`Cost: ~$${((message.usage.input_tokens * 0.80 + message.usage.output_tokens * 4) / 1_000_000).toFixed(4)}`); } main();
bash# Watch mode — re-runs on file changes npx tsx watch src/test-prompt.ts # Or one-shot npx tsx src/test-prompt.ts
| Tip | Savings | |-----|---------| | Use claude-haiku-4-5-20251001 during development | 20x cheaper than Opus | | Set max_tokens: 256 for testing | Fewer output tokens billed | | Cache your system prompt with prompt caching beta | 90% off cached input tokens | | Use Message Batches for bulk testing (50% off) | Half price, 24h turnaround | | Log responses locally so you don't re-call for the same input | 100% savings on repeats |
typescript// tests/mock-anthropic.ts export function createMockClient() { return { messages: { create: async (params: any) => ({ id: 'msg_test', type: 'message', role: 'assistant', model: params.model, content: [{ type: 'text', text: 'Mock response for testing' }], stop_reason: 'end_turn', usage: { input_tokens: 10, output_tokens: 5 }, }), }, }; } // In your test: import { createMockClient } from './mock-anthropic'; const client = process.env.MOCK ? createMockClient() : new Anthropic();
textpip install anthropic python-dotenv ipython # Interactive exploration ANTHROPIC_API_KEY=sk-ant-... ipython >>> import anthropic >>> c = anthropic.Anthropic() >>> r = c.messages.create(model="claude-haiku-4-5-20251001", max_tokens=100, messages=[{"role":"user","content":"hello"}]) >>> r.content[0].text
| Issue | Fix | |-------|-----| | ANTHROPIC_API_KEY not loading | Make sure dotenv/config is imported first | | Slow iteration | Use Haiku, reduce max_tokens | | High dev costs | Log responses, use mocks for unit tests |
See Step 1 (project setup), Step 2 (test script with cost tracking), Step 3 (hot reload), Mock Client section, and Python Dev Loop section above.
See clade-sdk-patterns for production client configuration.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,159 | 9,577 | -32% | 1 | 1 | 0% | 3,100 | 2,867 | -8% | 0 | 0 | — |
case-02 | fail→fail | 15,968 | 13,017 | -18% | 1 | 1 | 0% | 3,174 | 3,644 | +15% | 0 | 0 | — |
case-03 | fail→fail | 15,860 | 14,096 | -11% | 1 | 1 | 0% | 3,568 | 4,041 | +13% | 0 | 0 | — |
case-04 | fail→pass | 13,667 | 8,538 | -38% | 1 | 1 | 0% | 2,330 | 2,689 | +15% | 0 | 0 | — |
case-05 | pass→pass | 10,309 | 8,789 | -15% | 1 | 1 | 0% | 1,713 | 2,549 | +49% | 0 | 0 | — |
case-06 | fail→fail | 11,306 | 6,084 | -46% | 1 | 1 | 0% | 1,978 | 2,125 | +7% | 0 | 0 | — |
case-07 | fail→pass | 11,219 | 9,199 | -18% | 1 | 1 | 0% | 2,584 | 3,270 | +27% | 0 | 0 | — |
case-08 | fail→pass | 15,045 | 12,041 | -20% | 1 | 1 | 0% | 3,127 | 3,500 | +12% | 0 | 0 | — |
case-09 | pass→pass | 9,816 | 7,420 | -24% | 1 | 1 | 0% | 1,759 | 2,304 | +31% | 0 | 0 | — |
case-10 | pass→pass | 7,609 | 7,962 | +5% | 1 | 1 | 0% | 1,239 | 2,480 | +100% | 0 | 0 | — |
case-11 | pass→pass | 7,509 | 5,631 | -25% | 1 | 1 | 0% | 1,163 | 1,996 | +72% | 0 | 0 | — |
case-12 | fail→pass | 12,486 | 5,578 | -55% | 1 | 1 | 0% | 1,956 | 1,965 | +0% | 0 | 0 | — |
case-13 | pass→pass | 10,330 | 10,713 | +4% | 1 | 1 | 0% | 1,998 | 3,327 | +67% | 0 | 0 | — |
case-14 | pass→pass | 8,236 | 3,722 | -55% | 1 | 1 | 0% | 1,388 | 1,691 | +22% | 0 | 0 | — |
case-15 | pass→pass | 7,407 | 5,109 | -31% | 1 | 1 | 0% | 1,373 | 1,948 | +42% | 0 | 0 | — |
case-16 | fail→fail | 11,502 | 9,175 | -20% | 1 | 1 | 0% | 1,983 | 2,881 | +45% | 0 | 0 | — |
case-17 | fail→fail | 4,011 | 4,428 | +10% | 1 | 1 | 0% | 604 | 1,810 | +200% | 0 | 0 | — |
case-18 | fail→pass | 9,663 | 3,747 | -61% | 1 | 1 | 0% | 1,609 | 1,703 | +6% | 0 | 0 | — |
case-19 | fail→pass | 8,110 | 2,028 | -75% | 1 | 1 | 0% | 1,257 | 1,345 | +7% | 0 | 0 | — |
case-20 | fail→fail | 26,257 | 21,616 | -18% | 1 | 1 | 0% | 4,432 | 4,693 | +6% | 0 | 0 | — |
case-21 | fail→fail | 17,873 | 17,758 | -1% | 1 | 1 | 0% | 3,723 | 4,751 | +28% | 0 | 0 | — |
case-22 | fail→fail | 22,917 | 20,914 | -9% | 1 | 1 | 0% | 4,948 | 6,031 | +22% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.