This is a reference post rather than an argument. It is what I reach for, written down so I stop re-deriving it. Treat the model section in particular as a snapshot with a date on it — that part ages in weeks.
Twenty prompt patterns worth keeping
- Show your working before your answer, then state the answer separately.
- List what you would need to know to be confident, before answering.
- Give me three approaches with the trade-off that decides between them.
- Argue the opposite case as strongly as you can.
- What in this is a fact, what is an inference, and what is a guess?
- Rewrite this so a smart person outside the field can follow it.
- Find the assumption that, if wrong, breaks the whole thing.
- Review this as the person who will be paged when it fails.
- Reduce this to the smallest version that still does the job.
- What would make you change your mind about this recommendation?
- Translate this requirement into test cases before writing code.
- Explain the failure mode, not just the fix.
- Here is the error and the surrounding code — what did I not paste that you need?
- Summarise this for someone who has ten seconds, then for someone who has ten minutes.
- Check this for things that are true but misleading.
- What is the boring, well-understood solution I am overlooking?
- Grade this against the criteria I gave you, one at a time, with evidence.
- If this is wrong, where will it be wrong first?
- Ask me one question at a time until you can do this properly.
- What did I ask for that I probably should not have?
Repositories worth reading, not just installing
- The Model Context Protocol specification and its reference servers — the clearest worked example of tool interfaces done deliberately.
- LangChain and LlamaIndex — read the retrieval and chunking code even if you use neither; the trade-offs are visible in the source.
- vLLM — where inference throughput is actually won or lost.
- Evaluation harnesses generally: whichever you pick, the discipline of a fixed test set matters more than the framework.
- Any well-maintained agent framework's tool-calling loop. It is a hundred lines and understanding it removes most of the mystery.
MCP servers that earn their place
- Filesystem — scoped, read-only where possible.
- Git and GitHub — history and review context, not just files.
- A database server (Postgres or SQLite) — schema-aware querying beats pasted dumps.
- Fetch — retrieval with the source preserved.
- A browser driver such as Playwright — for what only a real page can answer.
- Memory or a note store — the difference between a session and a colleague.
- An issue tracker — where the intent behind the code is written down.
- A search server — for what is outside your repository.
The pattern worth noticing: the useful servers all supply context that is expensive for a human to gather and cheap for a machine to hold.
Models: a shortlist, with the caveat stated first
This moves faster than any blog post can. Verify before you commit. As of writing, the families I see doing real work:
- Claude — Opus for hard reasoning and long agentic runs, Sonnet as the everyday workhorse, Haiku where latency and cost dominate.
- GPT — broad capability and the largest tooling ecosystem around it.
- Gemini — very long context and strong multimodal handling.
- Llama — the serious open-weights default when you must self-host.
- Mistral — small models that punch above their size, permissive licensing.
- DeepSeek — strong reasoning at unusually low cost.
- Qwen — excellent multilingual coverage and a wide size range.
- Command — retrieval-oriented, built for grounded enterprise answers.
- Phi — small-model quality where the constraint is the device.
- Grok — real-time-leaning, worth watching rather than standardising on.
The only durable advice here
Choose by evaluation on your own task, not by leaderboard. Build the eval set before you pick the model, and the choice mostly makes itself — and remakes itself cheaply when something new lands.