[{"p":"01.01","s":"install-claude-code-windows","t":"Install Claude Code on Windows: Download, Setup, Run","d":"irm https://claude.ai/install.ps1 | iex installs Claude Code on Windows 10 1809+. WinGet and npm alternatives, Git Bash setup, and the first login.","c":"setup","l":"Install & set up","m":3,"h":["1. Check what you need","2. Run the installer","3. Verify it worked","4. Start it in your project","5. Choose PowerShell, Git Bash, or WSL","Failure mode: running scripts is disabled on this system"],"cmd":"irm https://claude.ai/install.ps1 | iex","u":"2026-09-06"},{"p":"01.02","s":"install-claude-code-macos-linux","t":"How to Install Claude Code on macOS & Linux","d":"Install Claude Code with the curl script or Homebrew in under a minute. The npm route now needs Node.js 22+, and a paid Claude plan is required.","c":"setup","l":"Install & set up","m":3,"h":["1. Run the native installer","2. Verify the install","3. Open your project and log in","If it fails"],"cmd":"curl -fsSL https://claude.ai/install.sh | bash","u":"2026-09-06"},{"p":"01.03","s":"fix-claude-command-not-found","t":"-bash: claude: command not found — 4 Fixes That Work","d":"claude: command not found means the install directory is not on your PATH. Four fixes: a new terminal, the PATH entry, a duplicate install, npm repair.","c":"setup","l":"Install & set up","m":3,"h":["1. Open a new terminal","2. Put the install directory on your PATH","3. Remove the second installation","4. Repair an npm install that never placed the binary","Verify it worked"],"cmd":"claude --version","u":"2026-09-06"},{"p":"01.04","s":"claude-code-vscode-extension","t":"How to Use Claude Code in VS Code","d":"Install the Claude Code extension from the VS Code Marketplace for a native panel with inline diffs and rewind — it no longer auto-installs itself.","c":"setup","l":"Install & set up","m":3,"h":["1. Check the prerequisites","2. Install it","3. Sign in","4. Work with diffs and selections","5. Keep the CLI around","Verify it worked"],"cmd":"npm install -g @anthropic-ai/claude-code","u":"2026-09-06"},{"p":"01.05","s":"update-claude-code","t":"How to Update Claude Code (and Unstick It)","d":"claude update applies the newest Claude Code now, claude doctor says why one stalled, and package-manager installs need upgrading by hand. Copy-paste.","c":"setup","l":"Install & set up","m":3,"h":["1. Check your version","2. Update now","3. Package managers do not auto-update","4. When an update stalls","5. Choose how fast updates arrive"],"cmd":"claude --version","u":"2026-09-06"},{"p":"02.01","s":"first-claude-code-session","t":"Your First Claude Code Session in 5 Minutes","d":"Run claude inside your project, give it one clear task, and check the permission mode first — auto mode may edit files without asking on paid plans.","c":"first-steps","l":"First steps","m":3,"h":["1. Start inside the project","2. Check the permission mode","3. Ask before you edit","4. Give it one concrete task","5. Review before moving on","Verify it worked","Three things worth knowing on day one"],"cmd":"cd /path/to/your/project\nclaude","u":"2026-09-06"},{"p":"02.02","s":"claude-code-plan-mode","t":"How to Use Plan Mode in Claude Code (and When)","d":"Plan mode makes Claude Code research and propose before editing. Enter it with Shift+Tab or /plan, review the plan, then approve — or keep planning.","c":"first-steps","l":"First steps","m":3,"h":["1. Enter plan mode","2. Let it explore","3. Approve — or don't","4. Make it the default where it matters","Verify it worked"],"cmd":"claude --permission-mode plan","u":"2026-09-06"},{"p":"02.03","s":"claude-code-terminal-shortcuts","t":"Claude Code Keyboard Shortcuts & Terminal Basics","d":"The keys that make Claude Code fast: @ for files, ! for shell, Esc to interrupt, Esc Esc to rewind, Shift+Tab for modes, Ctrl+B to background.","c":"first-steps","l":"First steps","m":3,"h":["1. The prompt symbols","2. Esc, and Esc twice","3. Shift+Tab for permission modes","4. The rest worth knowing","5. Resume from the shell","Verify it worked"],"cmd":"claude -c    # continue the most recent conversation here\nclaude -r    # pick an older session from a list","u":"2026-09-06"},{"p":"02.04","s":"gemini-cli-first-steps","t":"Getting Started with Gemini CLI","d":"Install Gemini CLI with npm, npx or Homebrew, sign in with Google for 60 requests a minute free, and run your first prompt inside a project.","c":"first-steps","l":"First steps","m":3,"h":["1. Install it","2. Sign in","3. Run your first prompt","Verify it worked","How it compares"],"cmd":"npm install -g @google/gemini-cli","u":"2026-09-06"},{"p":"03.01","s":"create-claude-md-project-memory","t":"How to Set Up a CLAUDE.md That Actually Helps","d":"Run /init, keep CLAUDE.md under 200 lines, and confirm it loaded with /context. Plus .claude/rules for path-scoped instructions and @path imports.","c":"commands","l":"Claude Code commands","m":4,"h":["1. Generate a draft","2. Write what it keeps getting wrong","Commands","Conventions","Don't","3. Keep it under 200 lines","4. Split anything bigger","Verify it worked","Good to know"],"cmd":null,"u":"2026-09-06"},{"p":"03.02","s":"create-claude-code-slash-command","t":"Create a Custom Slash Command in Claude Code","d":"Drop a Markdown file in .claude/commands/ and the filename becomes the command. Note $0 is the first positional argument, and skills are now preferred.","c":"commands","l":"Claude Code commands","m":3,"h":["1. Create the folder","2. Add the file","3. Take positional arguments","4. Add frontmatter","Current changes","Verify it worked"],"cmd":"mkdir .claude\\commands","u":"2026-09-06"},{"p":"03.03","s":"claude-code-hooks","t":"How to Configure Hooks in Claude Code","d":"Hooks run a shell command on Claude Code events. Note $CLAUDE_FILE_PATHS no longer exists — read the file path from the JSON on stdin instead.","c":"commands","l":"Claude Code commands","m":4,"h":["1. Pick an event","2. Add it to settings.json","3. Read the path from stdin","4. Confirm it loaded","5. Block something","If it fails"],"cmd":"#!/bin/bash\n# .claude/hooks/format.sh\nfile=$(jq -r '.tool_input.file_path')\n[ -f \"$file\" ] && npx prettier --write \"$file\"","u":"2026-09-06"},{"p":"03.04","s":"claude-code-subagents","t":"How to Use Subagents in Claude Code","d":"A subagent is a separate Claude with its own context window. Write one as a Markdown file in .claude/agents/ — note /agents is no longer a wizard.","c":"commands","l":"Claude Code commands","m":3,"h":["1. Delegate the wide work","2. Write your own","3. Invoke it","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"03.05","s":"claude-code-manage-context","t":"Manage Context in Claude Code: /clear, /compact","d":"Use /clear between tasks, /compact within one, /context to see what fills the window, and claude -c to resume. Keeps long sessions fast and cheap.","c":"commands","l":"Claude Code commands","m":3,"h":["1. See what's filling the window","2. Start fresh with /clear","3. Shrink a long task with /compact","4. Name it, then resume","Verify it worked"],"cmd":"claude -c    # continue the most recent conversation in this directory\nclaude -r    # pick an older session from a list","u":"2026-09-06"},{"p":"03.06","s":"claude-code-track-costs","t":"How to Track and Cut Claude Code Token Usage","d":"Run /usage to see session tokens, cost and plan limits — /cost is now just an alias. Then cut waste with /clear, subagents and the right model.","c":"commands","l":"Claude Code commands","m":3,"h":["1. Open /usage","2. Read the attribution","3. Clear rather than compact","4. Match the model to the job","5. Push verbose work out of your window","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"03.07","s":"claude-code-permissions","t":"Control What Claude Code Can Do: Permissions","d":"Claude Code now starts in auto mode on Pro, Max and Team plans. Shift+Tab to switch, and write allow/deny rules that actually match the command.","c":"commands","l":"Claude Code commands","m":4,"h":["1. Check the mode you're in","2. Cycle with Shift+Tab","3. Write rules that match","4. Check what's actually loaded","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"03.08","s":"claude-code-settings-json","t":"Claude Code settings.json: Which File, Which Key","d":"The four settings files Claude Code reads, which one wins when they disagree, and the handful of keys worth setting on day one.","c":"commands","l":"Claude Code commands","m":3,"h":["1. The four files","2. Precedence, highest first","3. The keys worth setting","4. Confirm what loaded"],"cmd":null,"u":"2026-09-06"},{"p":"03.09","s":"claude-code-skills-and-plugins","t":"Claude Code Skills and Plugins","d":"Skills are folders with a SKILL.md. Plugins bundle skills, agents and hooks for sharing. Install one from a marketplace, then write your own.","c":"commands","l":"Claude Code commands","m":4,"h":["1. Install a plugin","2. See what you have","3. Write a skill","Staged changes","4. Wrap it as a plugin"],"cmd":"claude --plugin-dir ./release-tools","u":"2026-09-06"},{"p":"04.01","s":"claude-code-whole-codebase-safely","t":"Let Claude Code Work on a Whole Repo Safely","d":"Branch, plan, deny the destructive commands, review in small chunks. Auto mode now starts on by default, so don't assume Claude will stop and ask.","c":"workflow","l":"Workflows","m":4,"h":["1. Check the mode first","2. Work on a branch","3. Plan before multi-file changes","4. Deny what you never want run","5. Review in chunks, and run the tests","If it goes wrong"],"cmd":"git checkout -b ai/feature-x","u":"2026-09-06"},{"p":"04.02","s":"ai-coding-agent-context","t":"Give an AI Coding Agent the Right Context","d":"CLAUDE.md, AGENTS.md and .cursor/rules: four habits that fix most bad AI code — a rules file, @file references, one example, a clean context.","c":"workflow","l":"Workflows","m":3,"h":["1. Write a rules file the agent loads every session","Commands","Conventions","Don't","Claude Code","2. Point at exact files, not \"the codebase\"","3. Show one real example to copy","4. Clear context between unrelated tasks","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"04.03","s":"claude-code-review-a-pr","t":"How to Review a Pull Request with Claude Code","d":"Run /code-review (alias /review) on a diff, or check out a PR with gh. Ask for correctness over style, then have Claude apply only the fixes you accept.","c":"workflow","l":"Workflows","m":3,"h":["1. Run the built-in review","2. Or point it at a specific PR","3. Ask for correctness, not style","4. Apply only what you accept","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"04.04","s":"claude-code-github-actions","t":"How to Set Up the Claude Code GitHub Action","d":"Install the Claude GitHub App, add one secret, and drop in a workflow so @claude answers in your issues and PRs. Copy-paste.","c":"workflow","l":"Workflows","m":4,"h":["1. The quick way","2. The manual way","3. Minimal workflow","4. Use it","5. Keep runs cheap"],"cmd":"claude","u":"2026-09-06"},{"p":"04.05","s":"claude-code-headless-ci","t":"How to Run Claude Code Headless in a Script or CI","d":"Run Claude Code non-interactively with claude -p, get JSON back, pre-approve tools, and wire it into a CI job. Copy-paste.","c":"workflow","l":"Workflows","m":4,"h":["1. One prompt, one answer","2. Pre-approve the tools it needs","3. Get JSON out","4. Harden it for CI"],"cmd":"claude -p \"What does the auth module do?\"","u":"2026-09-06"},{"p":"04.06","s":"claude-code-parallel-sessions-worktrees","t":"Run Parallel Claude Code Sessions with Git Worktrees","d":"Start a second Claude Code session in its own git worktree with `claude --worktree`, keep .env files in it, and clean up when you're done. Copy-paste.","c":"workflow","l":"Workflows","m":3,"h":["1. Start Claude in a worktree","2. Start a second session","3. Carry your .env into every worktree","4. Branch from a pull request instead","5. Clean up","Worth knowing"],"cmd":"claude --worktree feature-auth","u":"2026-09-06"},{"p":"05.01","s":"install-mcp-server-claude-code","t":"How to Install an MCP Server in Claude Code","d":"Add an MCP server with claude mcp add: -- for local commands, --transport http for hosted ones, --scope to choose who gets it, then /mcp to confirm.","c":"mcp","l":"MCP","m":3,"h":["1. Local command, or hosted URL","2. Choose the scope","3. Pass secrets properly","4. Confirm it connected","If it fails"],"cmd":"claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem C:\\path\\to\\allow","u":"2026-09-06"},{"p":"05.02","s":"connect-claude-code-to-github","t":"Connect Claude Code to GitHub with MCP","d":"Add GitHub's hosted MCP server at api.githubcopilot.com with a bearer token — the old @modelcontextprotocol/server-github package has been archived.","c":"mcp","l":"MCP","m":3,"h":["1. Create a fine-grained token","2. Add the server","3. Pick the scope","4. Confirm it connected","If it fails"],"cmd":"claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \\\n  --header \"Authorization: Bearer YOUR_GITHUB_PAT\"","u":"2026-09-06"},{"p":"05.03","s":"best-mcp-servers-to-start","t":"The Best MCP Servers to Start With","d":"Seven MCP reference servers are still maintained — filesystem, fetch, git, memory, time. GitHub, Postgres, Slack and Puppeteer were archived.","c":"mcp","l":"MCP","m":4,"h":["1. The maintained shortlist","2. Check the archive before you install","3. Add one","4. Confirm it connected","If it fails","Give it the least access that works"],"cmd":"claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/projects/my-app","u":"2026-09-06"},{"p":"05.04","s":"mcp-claude-code-vs-desktop","t":"MCP in Claude Code vs Claude Desktop","d":"claude mcp add registers a server from the terminal; Claude Desktop edits a JSON config from Settings. Same protocol, two setup flows and one scope trick.","c":"mcp","l":"MCP","m":3,"h":["1. Claude Code: one command","2. Scope is the real difference","3. Claude Desktop: a config file behind a button","4. Move one you already have","5. Verify it worked"],"cmd":"claude mcp add --transport stdio airtable -- npx -y airtable-mcp-server","u":"2026-09-06"},{"p":"05.05","s":"build-mcp-server-python","t":"How to Build an MCP Server in Python","d":"Write a one-tool MCP server named word_count with the official Python SDK, run it over stdio, and call it from Claude Code with claude mcp add. Copy-paste.","c":"mcp","l":"MCP","m":4,"h":["1. Install the SDK","2. Write the server","3. Try it before wiring it up","4. Connect it to Claude Code","5. Call it"],"cmd":"uv add \"mcp[cli]\"","u":"2026-09-06"},{"p":"05.06","s":"build-mcp-server-typescript","t":"How to Build an MCP Server in TypeScript","d":"Write a one-tool MCP server with the official TypeScript SDK, serve it over stdio, and call it from Claude Code. Copy-paste.","c":"mcp","l":"MCP","m":4,"h":["1. Set up the project","2. Write the server","3. One rule about output","4. Run and connect it","5. Call it"],"cmd":"mkdir wordcount && cd wordcount\nnpm init -y\nnpm pkg set type=module\nnpm install @modelcontextprotocol/server zod","u":"2026-09-06"},{"p":"05.07","s":"claude-code-mcp-troubleshooting","t":"MCP Server Not Working in Claude Code?","d":"claude mcp list shows Failed to connect or Pending approval — the five checks that find the cause: scope, approval, the -- separator, env vars, timeouts.","c":"mcp","l":"MCP","m":3,"h":["1. Read the status","2. Wrong scope","3. Project servers wait for approval","4. The command line itself","5. Slow start, big output","Still stuck"],"cmd":"claude mcp list\nclaude mcp get github","u":"2026-09-06"},{"p":"05.08","s":"claude-code-remote-mcp-servers","t":"Connect a Remote MCP Server to Claude Code over HTTP","d":"Add a hosted MCP server with claude mcp add --transport http, authenticate with OAuth or a header, and pick the right scope for your team.","c":"mcp","l":"MCP","m":3,"h":["1. Add it","2. Authenticate","3. Choose a scope","4. Verify"],"cmd":"claude mcp add --transport http notion https://mcp.notion.com/mcp","u":"2026-09-06"},{"p":"06.01","s":"claude-projects-getting-started","t":"How to Use Claude Projects","d":"Claude Projects keep files and instructions across chats. Free accounts get up to 5 projects; paid plans add RAG that expands knowledge up to 10x.","c":"claude","l":"Claude","m":3,"h":["1. Create one, scoped to a single context","2. Upload the knowledge","3. Write custom instructions once","4. Share it, if your plan allows","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"06.02","s":"claude-artifacts","t":"How to Use Claude Artifacts","d":"Artifacts open code, docs and diagrams in a side panel. Turn on Code execution and file creation in Settings, then iterate in place and publish a link.","c":"claude","l":"Claude","m":3,"h":["1. Turn the feature on","2. Ask for something substantial","3. Iterate in place","4. Publish it","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"07.01","s":"chatgpt-summarize-pdf","t":"ChatGPT PDF Summary: Summarize Long Files in 3 Steps","d":"Attach the PDF in ChatGPT, ask for a shape instead of a summary, then drill in. The 512 MB and 2M-token caps, and what to do with a scanned file.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Attach the PDF","2. Ask for structure, not \"a summary\"","3. Drill into one section","4. Check it against the file","When the file is unreadable or too big"],"cmd":null,"u":"2026-09-06"},{"p":"07.02","s":"chatgpt-custom-instructions","t":"How to Set ChatGPT Custom Instructions","d":"Custom instructions moved to Settings then Personalization, and it is now one field, not two boxes. They apply immediately to all chats, on every plan.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Open Settings, then Personalization","2. Turn on Enable customization","3. Write context first, then output rules","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"07.03","s":"build-a-custom-gpt","t":"How to Build a Custom GPT (No Code)","d":"Custom GPT creation now needs a Business, Enterprise or Edu workspace. Use the Configure tab for instructions, up to 20 knowledge files, and actions.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Open the builder, then switch to Configure","2. Write instructions that constrain the answer","3. Add knowledge and capabilities","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"07.04","s":"chatgpt-projects","t":"How to Use ChatGPT Projects","d":"ChatGPT Projects group chats around shared files and instructions. Free plans get 5 files per project, Plus 25, Pro and Business 40 — and sharing is free.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Create a project","2. Upload the files every chat should know","3. Write project instructions once","4. Move existing chats in","Project or a custom GPT?","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"07.05","s":"chatgpt-voice-mode","t":"How to Use ChatGPT Voice Mode","d":"ChatGPT voice now runs inside the chat, not a separate blue-orb screen. Tap the Voice icon on web, hold the mic on mobile, and when to skip it.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Start it","2. Choose integrated or separate mode","3. Talk over it","When it's worth it, and when it isn't","If it fails"],"cmd":null,"u":"2026-09-06"},{"p":"07.06","s":"excel-formulas-with-chatgpt","t":"How to Get Working Excel Formulas from ChatGPT","d":"Describe the sheet so ChatGPT can answer, ask for the formula plus a breakdown, verify it on real rows, and fix the four things that go wrong.","c":"chatgpt","l":"ChatGPT","m":3,"h":["1. Describe the sheet","2. Ask for the breakdown","3. Verify","4. The four things that go wrong"],"cmd":null,"u":"2026-09-06"},{"p":"08.01","s":"cursor-first-steps","t":"How to Use Cursor: A 10-Minute First-Edit Tutorial","d":"Cursor in ten minutes: Tab completions, Cmd/Ctrl K inline edits, the Agent sidepane on Cmd/Ctrl I, and how to review or undo what Agent wrote.","c":"cursor","l":"Cursor","m":3,"h":["1. Open your project folder","2. Learn the four keys","3. Make one inline edit","4. Give Agent a job that spans files","5. Verify it worked","Failure mode: an edit you did not want, already on disk"],"cmd":"git diff --stat","u":"2026-09-06"},{"p":"08.02","s":"cursor-mcp-servers","t":"Add an MCP Server to Cursor (.cursor/mcp.json)","d":"Configure a local or remote MCP server in Cursor, global or per project, keep the API key out of git, and verify it with a real tool call.","c":"cursor","l":"Cursor","m":3,"h":["1. Global or project","2. A local server","3. A remote server","4. Enable and verify"],"cmd":null,"u":"2026-09-06"},{"p":"08.03","s":"cursor-rules-file","t":"How to Write a Cursor Project Rule (.cursor/rules)","d":"Cursor project rules are .mdc files with frontmatter. Learn the four rule types, which frontmatter produces each, and copy a working example.","c":"cursor","l":"Cursor","m":3,"h":["1. Where rules live","2. The four types","3. A rule you can paste","4. The simpler option"],"cmd":null,"u":"2026-09-06"},{"p":"09.01","s":"run-local-llm-ollama-windows","t":"How to Run Ollama on Windows (Install, GPU, Models)","d":"Install Ollama on Windows 10 22H2+, run your first model with ollama run, check it landed on the GPU, and move the model store off your C: drive.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Check what Windows needs","2. Install Ollama","3. Pull and run your first model","4. Verify it worked","5. Move the model store off C:","Failure mode: it answers, but at one word a second"],"cmd":"irm https://ollama.com/install.ps1 | iex","u":"2026-09-06"},{"p":"09.02","s":"ollama-custom-model-modelfile","t":"Ollama Modelfile: a Custom Model With a System Prompt","d":"An Ollama Modelfile bakes FROM, SYSTEM and PARAMETER into a named local model with ollama create, so behaviour travels with the model, not your scripts.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Write the Modelfile","2. Pick parameters that matter","3. Build it","4. Run it","Verify it worked"],"cmd":"ollama create reviewer -f ./Modelfile","u":"2026-09-06"},{"p":"09.03","s":"call-ollama-api","t":"Call Your Local Ollama Model from curl & Python","d":"Ollama serves a local API on port 11434. Call /api/chat with curl or Python, or point any OpenAI client at http://localhost:11434/v1/ instead.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Confirm the server and the model","2. curl","3. Python","4. Point an existing OpenAI client at it","If it fails"],"cmd":"ollama list","u":"2026-09-06"},{"p":"09.04","s":"choose-llm-quantization","t":"Choose a GGUF Quantization: Q4 vs Q5 vs Q8","d":"Q4_K_M is the default pick for local LLMs. Real bits-per-weight for each GGUF level, why Q8_0 is a legacy format, and how to match one to your RAM.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Prefer the K-quants","2. The levels, with their real cost","3. Turn bits into gigabytes","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"09.05","s":"run-llm-lm-studio","t":"Run a Local LLM with LM Studio (No Terminal)","d":"LM Studio downloads and runs GGUF models from a desktop app, then serves them at http://localhost:1234/v1 for any OpenAI-compatible client. No terminal.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Install","2. Download a model","3. Load it and chat","4. Start the server","5. Call it from code","Verify it worked"],"cmd":"curl http://localhost:1234/v1/models","u":"2026-09-06"},{"p":"09.06","s":"hugging-face-cli-download-models","t":"Download Models from Hugging Face with the hf CLI","d":"Install the hf CLI, log in, download one GGUF instead of a whole repo with --include, put files where you want with --local-dir, and clean the cache.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Install","2. Log in (needed for gated repos)","3. Download one file, not 60 GB","4. Cache or a folder you choose","5. Keep the disk in check"],"cmd":"curl -LsSf https://hf.co/cli/install.sh | bash","u":"2026-09-06"},{"p":"09.07","s":"llama-cpp-quickstart","t":"llama.cpp Quickstart: Run a GGUF Model","d":"Install llama.cpp, pull a GGUF straight from Hugging Face with llama cli -hf, chat in the terminal, then serve an OpenAI-compatible API on localhost:8080.","c":"local-llm","l":"Local LLMs","m":4,"h":["1. Install","2. Run a model","3. Serve an OpenAI-compatible API","4. Call it","Useful flags"],"cmd":"curl -LsSf https://llama.app/install.sh | sh","u":"2026-09-06"},{"p":"09.08","s":"local-llm-ram-vram-requirements","t":"How Much RAM or VRAM a Local LLM Needs (1B to 70B)","d":"Real GGUF file sizes at Q4/Q8 for 1B–70B models, the rule of thumb behind them, and what fits in 8, 16, 24 or 64 GB. Pick a model that actually runs.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. The rule of thumb","2. Real sizes, measured","3. Add headroom for context","4. What fits where","5. Check before you pull"],"cmd":"ollama show llama3.1:8b --modelfile   # after a pull: shows quantization and params","u":"2026-09-06"},{"p":"09.09","s":"ollama-in-docker-with-gpu","t":"How to Run Ollama in Docker with an NVIDIA GPU","d":"NVIDIA Container Toolkit setup, the official docker run command, pulling a model, keeping models in a volume, and AMD or CPU fallbacks.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Install the NVIDIA Container Toolkit","2. Start Ollama","3. Pull and run a model","4. Confirm it is on the GPU","5. AMD, CPU, upgrades"],"cmd":"sudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker","u":"2026-09-06"},{"p":"09.10","s":"open-webui-with-ollama","t":"How to Run Open WebUI with Ollama (Docker)","d":"Give your local Ollama models a ChatGPT-style web interface with one Docker command — first login, model picker, and fixes.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Check Ollama is up","2. Start Open WebUI","3. First login","4. Pick a model","Upgrading"],"cmd":"curl http://localhost:11434/api/tags","u":"2026-09-06"},{"p":"09.11","s":"run-local-llm-ollama-macos-linux","t":"How to Run a Local LLM with Ollama on macOS/Linux","d":"Install Ollama with one command, pull gemma3:4b, chat offline in the terminal, and keep the daemon running as a background service on port 11434.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Install","2. Pull a small model","3. Chat","4. Keep it running as a service","Choosing a size for your RAM","Housekeeping"],"cmd":"curl -fsSL https://ollama.com/install.sh | sh","u":"2026-09-06"},{"p":"09.12","s":"vllm-serve-openai-compatible","t":"How to Serve a Model with vLLM","d":"Install vLLM, start a server with vllm serve on localhost:8000, and call it with the OpenAI Python SDK. Needs a Linux box with an NVIDIA GPU.","c":"local-llm","l":"Local LLMs","m":3,"h":["1. Check the hardware first","2. Install","3. Start the server","4. Call it with the OpenAI SDK"],"cmd":"uv venv --python 3.12 --seed\nsource .venv/bin/activate\nuv pip install vllm --torch-backend=auto","u":"2026-09-06"},{"p":"10.01","s":"write-better-ai-prompts","t":"How to Write Better AI Prompts (A Framework)","d":"A prompt framework that still holds: role, task, context, format — plus the long-input ordering rule Anthropic measures at up to 30% better answers.","c":"prompting","l":"Prompting","m":3,"h":["The framework","The ordering rule most guides get wrong","Examples beat adjectives","Say why, not just what"],"cmd":null,"u":"2026-09-06"},{"p":"10.02","s":"write-a-system-prompt","t":"How to Write a System Prompt That Steers a Model","d":"System prompt structure: role, rules with reasons, exact output format, tagged examples. Set it in the API system parameter and test it by breaking it.","c":"prompting","l":"Prompting","m":3,"h":["1. Role, in one sentence","2. Rules, with reasons","3. Output format, exactly","4. One tagged example","Test it by breaking it"],"cmd":null,"u":"2026-09-06"},{"p":"10.03","s":"reduce-ai-hallucinations","t":"How to Reduce AI Hallucinations With Prompts","d":"Ground the answer in pasted source text, allow \"not stated\", demand a quote per claim, and lower temperature — the prompt habits that cut invented facts.","c":"prompting","l":"Prompting","m":4,"h":["1. Source first, question last","2. Make \"I don't know\" allowed","3. Demand a quote per claim","4. Lower the temperature for facts","5. For agents: read before answering","6. Verify what matters anyway"],"cmd":null,"u":"2026-09-06"},{"p":"10.04","s":"prompt-chaining","t":"How to Chain Prompts to Solve a Big Task","d":"Prompt chaining splits a task into separate API calls you can inspect — the draft, review, refine loop — and when a modern model handles it in one call.","c":"prompting","l":"Prompting","m":3,"h":["The pattern","Hand off with tags, not prose","The chain worth having: self-correction","When to skip it"],"cmd":null,"u":"2026-09-06"},{"p":"10.05","s":"rag-explained-simply","t":"RAG Explained Simply (and When You Need It)","d":"RAG retrieves relevant chunks, then generates. With 1M-token context windows and hosted file_search tools, here is when it still beats pasting the file.","c":"prompting","l":"Prompting","m":3,"h":["The flow","What changed: context got huge","RAG vs fine-tuning","Don't build it first"],"cmd":null,"u":"2026-09-06"},{"p":"10.06","s":"evals-with-promptfoo","t":"Prompt Evals with promptfoo: One YAML, One Matrix","d":"Install promptfoo, write a config with two prompts, three test cases and real assertions, run it, and read the pass/fail grid.","c":"prompting","l":"Prompting","m":4,"h":["1. Install","2. The config","3. Run and view","4. Reading it","Assertions worth knowing"],"cmd":"npx promptfoo@latest init","u":"2026-09-06"},{"p":"10.07","s":"llm-as-judge-evals","t":"LLM-as-Judge Evals: Rubric and Verdict","d":"Grade model outputs with a judge model: a copy-paste rubric prompt, a structured verdict, a Python scoring loop, and the biases that fake good scores.","c":"prompting","l":"Prompting","m":4,"h":["When not to use one","The rubric prompt","The loop","Pitfalls that produce a flattering number"],"cmd":null,"u":"2026-09-06"},{"p":"10.08","s":"prompt-injection-defense","t":"Prompt Injection Defense for Tool-Using Agents","d":"Six defenses that actually reduce blast radius — privilege separation, allowlists, fenced tool results, approval gates, output filtering, and tests.","c":"prompting","l":"Prompting","m":4,"h":["1. Privilege separation","2. Allowlist the reach","3. Fence tool results as data","4. Human-in-the-loop for side effects","5. Filter what leaves","6. Test it like a bug class"],"cmd":null,"u":"2026-09-06"},{"p":"11.01","s":"pick-an-ai-model","t":"Which AI Model Should You Use?","d":"Pick an AI model by job — coding, images, very long inputs, or private local inference — with the current tiers and the context-window myth corrected.","c":"choosing","l":"Choosing tools","m":3,"h":["By job","The context-window rule of thumb is out of date","Tiers matter more than brands","When local wins"],"cmd":"ollama run llama3.2 \"Summarise this in three bullets: <paste text>\"","u":"2026-09-06"},{"p":"11.02","s":"claude-vs-chatgpt-for-coding","t":"Claude vs ChatGPT for Coding: Which to Use","d":"A practical split for real coding work — and the deciding fact most comparisons skip: Claude Code needs a paid plan, ChatGPT answers questions on free.","c":"choosing","l":"Choosing tools","m":3,"h":["1. Reach for Claude when","2. Reach for ChatGPT when","3. Check what your plan includes","4. Honestly: the agent matters more than the brand","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"11.03","s":"claude-code-vs-cursor","t":"Claude Code vs Cursor: Which One to Use","d":"Claude Code is a terminal agent; Cursor is an agent-first editor. Where each one wins, and why the Claude Code extension installs into Cursor too.","c":"choosing","l":"Choosing tools","m":3,"h":["1. Where Claude Code wins","2. Where Cursor wins","3. You don't have to choose","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"11.04","s":"openai-vs-claude-api","t":"OpenAI API vs Claude API: Which to Build On","d":"OpenAI and Claude API compared on price per million tokens, 1M-token context, tool use and long-context surcharges — plus how to decide with your own eval.","c":"choosing","l":"Choosing tools","m":3,"h":["Price and size, side by side","The costs that don't show up in the table","Tool use and structure","Decide with an eval, not a table"],"cmd":null,"u":"2026-09-06"},{"p":"11.05","s":"fine-tuning-vs-rag-vs-prompting","t":"Fine-Tuning vs RAG vs Prompting: How to Choose","d":"A decision table plus rules of thumb — which one fixes your problem, and what each costs in money, latency and maintenance.","c":"choosing","l":"Choosing tools","m":3,"h":["The decision table","Start with prompting","Reach for RAG when the facts move","Fine-tune for form, not for facts","Rules of thumb"],"cmd":null,"u":"2026-09-06"},{"p":"12.01","s":"remove-background-with-ai","t":"Remove an Image Background With AI (Free)","d":"rembg cuts a subject to a transparent PNG from the command line — one file or a whole folder, offline, full resolution, no watermark and no upload.","c":"image","l":"AI images","m":3,"h":["1. Install","2. Cut one image","3. Batch a folder","4. Change the model when edges are rough","Verify it worked"],"cmd":"pip install \"rembg[cpu,cli]\"","u":"2026-09-06"},{"p":"12.02","s":"midjourney-prompts-that-work","t":"Midjourney Prompts That Actually Work","d":"Midjourney prompt structure: subject, style, details, then parameters last. --raw has replaced --style raw, and --ar still sets the aspect ratio.","c":"image","l":"AI images","m":3,"h":["1. The structure","2. A worked example","3. What moves the needle","4. The parameters that changed","If it looks wrong"],"cmd":null,"u":"2026-09-06"},{"p":"12.03","s":"ai-image-inpainting","t":"How to Inpaint: Edit One Part of an Image","d":"Inpainting masks a region and regenerates only that: Midjourney Vary (Region), Firefly Generative Fill, ChatGPT, or Stable Diffusion locally.","c":"image","l":"AI images","m":3,"h":["1. Open the image in a tool that masks","2. Mask slightly larger than the object","3. Prompt for the masked area only","If it fails"],"cmd":null,"u":"2026-09-06"},{"p":"12.04","s":"comfyui-first-workflow","t":"How to Install ComfyUI and Run Your First Workflow","d":"Install ComfyUI the reliable way, put a checkpoint in the right folder, load the default text-to-image graph, and generate an image.","c":"image","l":"AI images","m":4,"h":["1. Install","2. Add a checkpoint","3. Load the default workflow","4. Generate","5. Where the nodes live"],"cmd":"pip install comfy-cli\ncomfy install\ncomfy launch","u":"2026-09-06"},{"p":"12.05","s":"generate-images-with-flux-locally","t":"How to Generate Images Locally with FLUX (Python)","d":"Run FLUX.1-schnell locally on your GPU with a short Python diffusers script — accept the Hugging Face license and offload for low VRAM.","c":"image","l":"AI images","m":4,"h":["1. Know your VRAM budget","2. Get access to the weights","3. Install","4. Run it","5. Your first prompt"],"cmd":"pip install -U huggingface_hub\nhf auth login","u":"2026-09-06"},{"p":"12.06","s":"generate-short-ai-video-locally","t":"How to Generate a Short AI Video Locally (Wan 2.2)","d":"The honest local text-to-video path: Wan 2.2 TI2V-5B in ComfyUI — three model files, real VRAM numbers, and a five-second clip.","c":"image","l":"AI images","m":4,"h":["1. The VRAM reality","2. Update ComfyUI","3. Download three files","4. Open the template","5. Render"],"cmd":"git pull\npip install -r requirements.txt","u":"2026-09-06"},{"p":"12.07","s":"upscale-images-locally","t":"How to Upscale Images Locally with Real-ESRGAN","d":"Enlarge photos and anime art 4x on your own machine with the standalone Real-ESRGAN binary — one command, no Python, and batch folders.","c":"image","l":"AI images","m":3,"h":["1. Download","2. Upscale one image","3. Pick the model","4. Batch a folder"],"cmd":"chmod +x realesrgan-ncnn-vulkan","u":"2026-09-06"},{"p":"13.01","s":"chatgpt-clean-spreadsheet-data","t":"Clean Up Messy Spreadsheet Data with ChatGPT","d":"Upload the CSV to ChatGPT data analysis, describe the mess once, and get back a cleaned file plus a repeatable formula or script. Limits and traps.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Upload the file","2. Describe the mess as rules","3. Ask for a repeatable recipe","Verify it worked"],"cmd":null,"u":"2026-09-06"},{"p":"13.02","s":"chatgpt-analyze-csv-data","t":"How to Analyze a CSV with ChatGPT Data Analysis","d":"Upload a spreadsheet, get it cleaned, charted, and summarized — plus the limits worth knowing before you trust the numbers.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Upload","2. Ask what is in it first","3. Clean it","4. Chart it","What it does well","What it can't do","5. Always verify"],"cmd":null,"u":"2026-09-06"},{"p":"13.03","s":"summarize-pdf-locally-with-ollama","t":"How to Summarize a PDF Locally with Ollama","d":"Extract PDF text with pypdf, chunk it, summarize each chunk through the local Ollama API, and merge — about 30 lines, nothing uploaded.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Install","2. The whole script","3. When it misbehaves"],"cmd":"pip install pypdf requests\nollama pull llama3.2","u":"2026-09-06"},{"p":"13.04","s":"summarize-youtube-video-with-ai","t":"How to Summarize a YouTube Video with AI","d":"Pull the transcript with yt-dlp --convert-subs srt, then hand the .srt file to Claude or ChatGPT with a prompt that gives you timestamps, not mush.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Install yt-dlp","2. See what subtitles exist","3. Download the transcript only","4. Summarize it","Before you paste"],"cmd":"python -m pip install -U \"yt-dlp[default]\"","u":"2026-09-06"},{"p":"13.05","s":"text-to-speech-locally","t":"How to Generate Speech Locally with Piper TTS","d":"Turn a text file into a WAV on your own machine — install Piper, download a voice, and choose between quality tiers and languages.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Install","2. Download a voice","3. Write a WAV","4. Read from a file","5. If the voice is not good enough"],"cmd":"pip install piper-tts","u":"2026-09-06"},{"p":"13.06","s":"translate-subtitles-with-ai","t":"How to Translate an SRT Subtitle File with AI","d":"Translate subtitles without breaking timestamps — a copy-paste Python script, the prompt that keeps line counts, and the checks that catch drift.","c":"tasks","l":"Everyday tasks","m":4,"h":["1. Install","2. The script","3. For a short file, prompt directly","4. Check it"],"cmd":"pip install anthropic\nexport ANTHROPIC_API_KEY=sk-ant-...","u":"2026-09-06"},{"p":"13.07","s":"whisper-transcribe-audio-locally","t":"How to Transcribe Audio Locally with Whisper","d":"Install OpenAI Whisper and ffmpeg, run whisper file.mp3 --model turbo, and get SRT and TXT subtitle files with timestamps out on your own machine.","c":"tasks","l":"Everyday tasks","m":3,"h":["1. Install","2. Transcribe","3. Pick a model size","4. Non-English audio"],"cmd":"pip install -U openai-whisper","u":"2026-09-06"},{"p":"14.01","s":"codex-cli-first-steps","t":"How to Get Started with OpenAI Codex CLI","d":"Install Codex CLI with npm or Homebrew, sign in with ChatGPT, run your first task in a repo, and use /permissions to set what it can do. Copy-paste.","c":"agents","l":"Other coding agents","m":3,"h":["1. Install it","2. Sign in","3. Your first task","4. Decide what it may do without asking"],"cmd":"npm install -g @openai/codex","u":"2026-09-06"},{"p":"14.02","s":"aider-first-steps","t":"How to Start Using Aider","d":"Install Aider, point it at Claude or GPT with an API key, make your first edit, and control its git auto-commits. Copy-paste.","c":"agents","l":"Other coding agents","m":3,"h":["1. Install it","2. Launch it with a model","3. Make your first edit","4. The git part"],"cmd":"python -m pip install aider-install\naider-install","u":"2026-09-06"},{"p":"14.03","s":"github-copilot-cli-first-steps","t":"How to Use GitHub Copilot CLI in Your Terminal","d":"Install GitHub Copilot CLI, log in, ask it for a command or a code change, and control what it's allowed to run. Copy-paste.","c":"agents","l":"Other coding agents","m":3,"h":["1. Install it","2. Start it and log in","3. Ask it something","4. Permissions, directories, and sessions"],"cmd":"npm install -g @github/copilot","u":"2026-09-06"},{"p":"14.04","s":"windsurf-first-steps","t":"How to Start with Windsurf (Now Devin Desktop)","d":"Windsurf is now Devin Desktop. Install it, open a project, run a first agent task, and find where your rules live. Copy-paste.","c":"agents","l":"Other coding agents","m":3,"h":["1. First, the rename","2. Install it","3. Open a project","4. Run one agent task","5. Where rules live"],"cmd":"devin-desktop ~/Developer/my-project","u":"2026-09-06"},{"p":"14.05","s":"gemini-cli-mcp-and-extensions","t":"Gemini CLI: Add MCP Servers and Install Extensions","d":"Wire an MCP server into Gemini CLI's settings.json or add it with one command, check it with /mcp, and install a packaged extension.","c":"agents","l":"Other coding agents","m":4,"h":["1. Add a server by hand","2. Or add it with one command","3. Check it","4. Install an extension"],"cmd":"gemini mcp add --transport http company-api https://api.example.com/mcp \\\n  --header \"Authorization: Bearer $TOKEN\"","u":"2026-09-06"},{"p":"15.01","s":"claude-api-first-request","t":"Your First Claude API Request: curl, Python, Node","d":"Get a key, set ANTHROPIC_API_KEY, and make a working Messages API call in curl, Python, and Node — then read the response properly.","c":"api","l":"Building with the API","m":3,"h":["1. Key and environment variable","2. curl","3. Python","4. Node","5. Read the response","Picking a model"],"cmd":"export ANTHROPIC_API_KEY=\"your-api-key-here\"","u":"2026-09-06"},{"p":"15.02","s":"claude-api-tool-use","t":"Claude API Tool Use","d":"Define a tool with a JSON schema, catch the tool_use block, run your function, and send back a tool_result — in a minimal Python loop.","c":"api","l":"Building with the API","m":4,"h":["1. Define the tool","2. What comes back","3. The loop","Errors and guarantees"],"cmd":null,"u":"2026-09-06"},{"p":"15.03","s":"claude-api-structured-output","t":"Get Reliable JSON Out of the Claude API","d":"Constrain replies with output_config.format, or use messages.parse with Pydantic and Zod, so the Claude API returns JSON that always validates.","c":"api","l":"Building with the API","m":3,"h":["Raw JSON schema","Python with Pydantic","TypeScript with Zod","Schema-valid tool arguments"],"cmd":null,"u":"2026-09-06"},{"p":"15.04","s":"claude-api-prompt-caching","t":"Prompt Caching in the Claude API with cache_control","d":"Cache a long system prompt or document with cache_control, confirm hits in the usage fields, and know when the 1.25x write cost pays for itself.","c":"api","l":"Building with the API","m":3,"h":["Mark the breakpoint","Confirm it actually hit","When it pays off"],"cmd":"curl https://api.anthropic.com/v1/messages \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $ANTHROPIC_API_KEY\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -d '{\n    \"model\": \"claude-opus-5\",\n    \"max_tokens\": 1024,\n    \"system\": [\n      {\"type\": \"text\", \"text\": \"<the long document>\", \"cache_control\": {\"type\": \"ephemeral\"}}\n    ],\n    \"messages\": [{\"role\": \"user\", \"content\": \"Summarise section 3.\"}]\n  }'","u":"2026-09-06"},{"p":"15.05","s":"claude-api-batch-requests","t":"Claude Message Batches API: Bulk Jobs at Half Price","d":"Create a batch of Messages requests, poll processing_status, stream results by custom_id — and pay 50% less than synchronous calls.","c":"api","l":"Building with the API","m":3,"h":["1. Create the batch","2. Poll","3. Read the results","Cost and limits"],"cmd":"curl https://api.anthropic.com/v1/messages/batches \\\n  -H \"x-api-key: $ANTHROPIC_API_KEY\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"content-type: application/json\" \\\n  -d '{\"requests\": [\n        {\"custom_id\": \"review-0\",\n         \"params\": {\"model\": \"claude-haiku-4-5\", \"max_tokens\": 16,\n                    \"messages\": [{\"role\": \"user\", \"content\": \"One word sentiment: Excellent quality!\"}]}}\n      ]}'","u":"2026-09-06"},{"p":"15.06","s":"openai-api-first-request","t":"Your First OpenAI API Request (Responses API)","d":"Create a key, set OPENAI_API_KEY, and make a working Responses API call in curl, Python, and Node — the API OpenAI recommends for new projects.","c":"api","l":"Building with the API","m":3,"h":["1. Key and environment variable","2. curl","3. Python","4. Node","5. System-style instructions and multi-turn input","Picking a model"],"cmd":"export OPENAI_API_KEY=\"your-api-key-here\"","u":"2026-09-06"},{"p":"15.07","s":"openai-api-structured-outputs","t":"OpenAI Structured Outputs: JSON Schema","d":"Constrain Responses API output with text.format json_schema, parse straight into Pydantic or Zod, and use the same strict schemas for function calling.","c":"api","l":"Building with the API","m":4,"h":["Raw JSON schema","Python with Pydantic","JavaScript with Zod","The same schemas as function tools","Refusals"],"cmd":"curl https://api.openai.com/v1/responses \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer $OPENAI_API_KEY\" \\\n  -d '{\n    \"model\": \"gpt-6-astra\",\n    \"input\": \"Extract: John Smith (john@example.com) wants the Enterprise plan.\",\n    \"text\": {\n      \"format\": {\n        \"type\": \"json_schema\",\n        \"name\": \"contact\",\n        \"strict\": true,\n        \"schema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"name\": {\"type\": \"string\"},\n            \"email\": {\"type\": \"string\"},\n            \"plan\": {\"type\": \"string\"}\n          },\n          \"required\": [\"name\", \"email\", \"plan\"],\n          \"additionalProperties\": false\n        }\n      }\n    }\n  }'","u":"2026-09-06"},{"p":"15.08","s":"stream-llm-responses","t":"Stream LLM Responses: Claude and OpenAI","d":"Print tokens as they arrive from the Claude and OpenAI APIs — Python and JavaScript, plus the raw SSE events and how to detect the end.","c":"api","l":"Building with the API","m":4,"h":["Claude — Python","Claude — JavaScript","Claude — raw SSE","OpenAI — Python","OpenAI — JavaScript","Handling the end"],"cmd":"curl https://api.anthropic.com/v1/messages \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $ANTHROPIC_API_KEY\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -d '{\"model\":\"claude-opus-5\",\"max_tokens\":4000,\"stream\":true,\n       \"messages\":[{\"role\":\"user\",\"content\":\"Write a haiku about rate limits.\"}]}'","u":"2026-09-06"},{"p":"15.09","s":"claude-agent-sdk-python-quickstart","t":"Claude Agent SDK for Python: Your First Agent","d":"Install claude-agent-sdk, run an agent that reads and edits real files, control which tools it may use, and read the final result.","c":"api","l":"Building with the API","m":4,"h":["1. Install","2. Set the key","3. Write the agent","4. Run it","5. Tighten it"],"cmd":"python3 -m venv .venv\nsource .venv/bin/activate\npip install claude-agent-sdk","u":"2026-09-06"},{"p":"15.10","s":"claude-agent-sdk-typescript-quickstart","t":"Claude Agent SDK for TypeScript: Your First Agent","d":"Install @anthropic-ai/claude-agent-sdk, stream an agent that edits real files, gate its tools, and read the final result message.","c":"api","l":"Building with the API","m":4,"h":["1. Install","2. Set the key","3. Write the agent","4. Run it","5. Read the result"],"cmd":"npm init -y\nnpm pkg set type=module\nnpm install @anthropic-ai/claude-agent-sdk\nnpm install --save-dev tsx","u":"2026-09-06"},{"p":"15.11","s":"claude-api-pdf-documents","t":"Send a PDF to the Claude API (With Page Citations)","d":"The document content block in Python, the page and size limits from the docs, citations that point at a page — and when to pre-extract text instead.","c":"api","l":"Building with the API","m":4,"h":["1. Python: a local PDF","2. Limits","3. Reading the citations back","4. When to pre-extract text instead"],"cmd":null,"u":"2026-09-06"},{"p":"15.12","s":"claude-api-thinking-and-effort","t":"Claude API Thinking and Effort","d":"Turn adaptive thinking on, read the thinking blocks, dial depth with output_config.effort (low → max), stream deltas, and know what budget_tokens means.","c":"api","l":"Building with the API","m":4,"h":["1. Turn it on and make it visible","2. Size it with effort, not a token budget","3. Stream it","4. What it costs","Rules that bite"],"cmd":"curl https://api.anthropic.com/v1/messages \\\n  -H \"x-api-key: $ANTHROPIC_API_KEY\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"content-type: application/json\" \\\n  -d '{\"model\":\"claude-opus-5\",\"max_tokens\":16000,\n       \"thinking\":{\"type\":\"adaptive\",\"display\":\"summarized\"},\n       \"messages\":[{\"role\":\"user\",\"content\":\"Explain why 0.1 + 0.2 != 0.3 in floating point.\"}]}'","u":"2026-09-06"},{"p":"15.13","s":"claude-api-vision-images","t":"Send an Image to the Claude API (base64, URL, Files)","d":"The image content block in Python and curl, the format and size limits from the docs, and a screenshot-to-CSV extraction that doesn't invent numbers.","c":"api","l":"Building with the API","m":4,"h":["1. Python: a local file as base64","2. curl: an image by URL","3. Limits worth knowing","4. Use case: table out of a screenshot"],"cmd":"curl https://api.anthropic.com/v1/messages \\\n  -H \"x-api-key: $ANTHROPIC_API_KEY\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"content-type: application/json\" \\\n  -d '{\n    \"model\": \"claude-opus-5\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": [\n      {\"type\": \"image\", \"source\": {\"type\": \"url\",\n        \"url\": \"https://example.com/chart.png\"}},\n      {\"type\": \"text\", \"text\": \"What is the trend in this chart?\"}\n    ]}]\n  }'","u":"2026-09-06"},{"p":"15.14","s":"embeddings-explained-with-code","t":"Embeddings Explained, With Code","d":"What an embedding vector actually is, how to compute two and compare them in Python, and which model and dimension to pick.","c":"api","l":"Building with the API","m":3,"h":["Compute two and compare them","Which model, which dimension","What embeddings are bad at"],"cmd":null,"u":"2026-09-06"},{"p":"15.15","s":"gemini-api-first-request","t":"Your First Gemini API Request","d":"Get a Gemini API key from AI Studio, set GEMINI_API_KEY, install the google-genai SDK, and make a working request with the Interactions API. Copy-paste.","c":"api","l":"Building with the API","m":2,"h":["1. Key","2. Python","3. JavaScript","4. curl","What differs from Claude and OpenAI"],"cmd":"export GEMINI_API_KEY=\"AIza...\"        # macOS/Linux","u":"2026-09-06"},{"p":"15.16","s":"openai-api-image-generation","t":"Generate Images with the OpenAI API (gpt-image)","d":"Two ways to make an image with the OpenAI API — the Images endpoint and the image_generation tool — save the PNG, set size, quality and format.","c":"api","l":"Building with the API","m":3,"h":["1. Key","2. Images API: prompt in, PNG out","3. Responses API: the model generates as a tool","4. The knobs","5. Edits"],"cmd":"export OPENAI_API_KEY=\"sk-...\"   # macOS/Linux; PowerShell: $env:OPENAI_API_KEY=\"sk-...\"\npip install openai","u":"2026-09-06"},{"p":"15.17","s":"openai-file-search-rag","t":"RAG Without a Vector Database: OpenAI File Search","d":"Upload files to an OpenAI vector store, attach the file_search tool to a Responses API call, and get cited answers — no embeddings code, no database.","c":"api","l":"Building with the API","m":3,"h":["1. Create a store and upload files","2. Ask a question","3. See what it retrieved","4. Filter by metadata","When to build your own instead"],"cmd":null,"u":"2026-09-06"},{"p":"15.18","s":"rag-with-python-minimal","t":"A Minimal RAG in Python: Folder In, Cited Answer Out","d":"Chunk a folder of Markdown, embed it with Voyage, retrieve top-k with a numpy dot product, and answer with Claude citing the chunks it used.","c":"api","l":"Building with the API","m":4,"h":["1. Install and set keys","2–5. The whole thing","What to fix first"],"cmd":"pip install anthropic voyageai numpy\nexport ANTHROPIC_API_KEY=\"your-key\"\nexport VOYAGE_API_KEY=\"your-key\"","u":"2026-09-06"}]