Skip to main content

AI-slop-mastery

AI-assisted coding

The workflow

1) Context is king

  • Problem: The more context you feed to your agent, the worse it performs. Keep context small.
  • Solution: Use /compact to compact and summarize your conversation history in claude code, or just prompt the AI to summarize the entire conversation history and put that into a markdown file, which you can then feed as context into a new chat.

2) Write E2E tests

End to end tests will give you the biggest bang for your buck.

3) Review every line of code

No excuses. If you didn't write it, then review it.

4) Abstract first

LLMs perform better when there is some sort of structure in your coding, for example, using TS or building abstractions in simple interfaces on top of third-party libraries will help the AI to understand your coding style, and it will build off of that.

5) Actually doing it

  1. Create a features.md to track features, describe them, and cross them off incrementally.
  2. Always ask the agent to plan through solving a feature before implementing it.
  3. Always use a living document for features, saving progress you made on a feature and describing it so you can feed it as context even when starting a brand new convo.

Summary

  1. Plan First: Never let the AI code without a plan.md. Read the plan. If the plan is wrong, the code will be wrong.

  2. Give it Eyes (Harnesses): The AI cannot see the UI. Give it a dry-run script or a npm test so it can "see" if it broke something.

  3. Review is Mandatory: AI is not a replacement for knowing how to code. It is a replacement for typing. You must review every line (or use tools like Graphite/CodeRabbit for a second opinion).

Model agnostic inference

Some platforms like Cursor or Warp allow you to BYOK or BYOM (bring your own model), where you need to specify these three pieces of information in order to run model inference:

  1. model endpoint: something like https://opencode.ai/zen/v1/chat/completions which is the REST API endpoint for running inference on a specific model provider.
  2. API key: the API key for the provider
  3. model tag: the specific model identifier to user, like deepseek-v4-flash-free.

Here are the different endpoint families:

  • /v1/responses: for newer GPT models
  • /v1/chat/completions: works with all openAI compatible endpoints
  • /v1/messages: works only with Anthropic family models.

Inference with Opencode Zen

The endpoint URL is https://opencode.ai/zen/v1, with the OpenAI-compatible inference endpoint being https://opencode.ai/zen/v1/chat/completions.

Here are the general endpoints:

  • https://opencode.ai/zen/v1/models: returns list of all models hosted on OpenCode ZEN

Opencode free models

Model nameModel identifierModel inference endpoint
Big Picklebig-picklehttps://opencode.ai/zen/v1/chat/completions
MiMo-V2.5 Freemimo-v2.5-freehttps://opencode.ai/zen/v1/chat/completions
North Mini Code Freenorth-mini-code-freehttps://opencode.ai/zen/v1/chat/completions
Nemotron 3 Ultra Freenemotron-3-ultra-freehttps://opencode.ai/zen/v1/chat/completions
DeepSeek V4 Flash Freedeepseek-v4-flash-freehttps://opencode.ai/zen/v1/chat/completions

All open code models

You can also access our models through the following API endpoints.

ModelModel IDEndpointAI SDK Package
GPT 6 Astragpt-6-astrahttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.6 Solgpt-5.6-solhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.6 Terragpt-5.6-terrahttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.6 Lunagpt-5.6-lunahttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.5gpt-5.5https://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.5 Progpt-5.5-prohttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.4gpt-5.4https://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.4 Progpt-5.4-prohttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.4 Minigpt-5.4-minihttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.4 Nanogpt-5.4-nanohttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.3 Codexgpt-5.3-codexhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.3 Codex Sparkgpt-5.3-codex-sparkhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.2gpt-5.2https://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.2 Codexgpt-5.2-codexhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.1gpt-5.1https://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.1 Codexgpt-5.1-codexhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.1 Codex Maxgpt-5.1-codex-maxhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5.1 Codex Minigpt-5.1-codex-minihttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5gpt-5https://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5 Codexgpt-5-codexhttps://opencode.ai/zen/v1/responses@ai-sdk/openai
GPT 5 Nanogpt-5-nanohttps://opencode.ai/zen/v1/responses@ai-sdk/openai
Claude Fable 5.1claude-fable-5-1https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Fable 5claude-fable-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Opus 5claude-opus-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Opus 4.8claude-opus-4-8https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Opus 4.7claude-opus-4-7https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Opus 4.6claude-opus-4-6https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Opus 4.5claude-opus-4-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Sonnet 5claude-sonnet-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Sonnet 4.6claude-sonnet-4-6https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Sonnet 4.5claude-sonnet-4-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Claude Haiku 4.5claude-haiku-4-5https://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Gemini 3.8 Flashgemini-3.8-flashhttps://opencode.ai/zen/v1/models/gemini-3.8-flash@ai-sdk/google
Gemini 3.7 Flashgemini-3.7-flashhttps://opencode.ai/zen/v1/models/gemini-3.7-flash@ai-sdk/google
Gemini 3.6 Flashgemini-3.6-flashhttps://opencode.ai/zen/v1/models/gemini-3.6-flash@ai-sdk/google
Gemini 3.5 Flashgemini-3.5-flashhttps://opencode.ai/zen/v1/models/gemini-3.5-flash@ai-sdk/google
Gemini 3.5 Flash Litegemini-3.5-flash-litehttps://opencode.ai/zen/v1/models/gemini-3.5-flash-lite@ai-sdk/google
Gemini 3.1 Progemini-3.1-prohttps://opencode.ai/zen/v1/models/gemini-3.1-pro@ai-sdk/google
Gemini 3 Flashgemini-3-flashhttps://opencode.ai/zen/v1/models/gemini-3-flash@ai-sdk/google
Grok 4.6grok-4.6https://opencode.ai/zen/v1/responses@ai-sdk/openai
Grok 4.5grok-4.5https://opencode.ai/zen/v1/responses@ai-sdk/openai
Grok Build 0.1grok-build-0.1https://opencode.ai/zen/v1/responses@ai-sdk/openai
Muse Spark 1.3muse-spark-1.3https://opencode.ai/zen/v1/responses@ai-sdk/openai
Muse Spark 1.2muse-spark-1.2https://opencode.ai/zen/v1/responses@ai-sdk/openai
Qwen3.7 Maxqwen3.7-maxhttps://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Qwen3.7 Plusqwen3.7-plushttps://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Qwen3.6 Plusqwen3.6-plushttps://opencode.ai/zen/v1/messages@ai-sdk/anthropic
Qwen3.5 Plusqwen3.5-plushttps://opencode.ai/zen/v1/messages@ai-sdk/anthropic
DeepSeek V4 Prodeepseek-v4-prohttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
DeepSeek V4 Flashdeepseek-v4-flashhttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
DeepSeek V4 Flash Vision Expdeepseek-v4-flash-vision-exphttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
MiniMax M3minimax-m3https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
MiniMax M2.7minimax-m2.7https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
MiniMax M2.5minimax-m2.5https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
GLM 5.3 Flashglm-5.3-flashhttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
GLM 5.3glm-5.3https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
GLM 5.2glm-5.2https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
GLM 5.1glm-5.1https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
GLM 5glm-5https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Kimi K2.5kimi-k2.5https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Kimi K2.6kimi-k2.6https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Kimi K2.7 Codekimi-k2.7-codehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Kimi K3kimi-k3https://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Big Picklebig-picklehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Union Alpha Freeunion-alphahttps://opencode.ai/zen/v1/messages@ai-sdk/anthropic
MiMo-V2.5 Freemimo-v2.5-freehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Ling 3.0 Flash Fin Freeling-3.0-flash-fin-freehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Nemotron 3 Ultra Freenemotron-3-ultra-freehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Nemotron 3.5 Lightning Freenemotron-3.5-lightning-freehttps://opencode.ai/zen/v1/chat/completions@ai-sdk/openai-compatible
Muse Spark 1.3 Contributor Freemuse-spark-1.3-contributor-freehttps://opencode.ai/zen/v1/responses@ai-sdk/openai

Inference with vercel AI API GATEWAY

These are the free models vercel AI API gateway has:

ModelContextLatencyThroughputInputOutputCache
nvidia/nemotron-3.5-lightning1M0.1s48tpsFreeFreeRead: $0.01/M Free Write: —
nvidia/nemotron-3.5-lightning-free1M0.1s48tpsFreeFree
fish-audio/s2.1-proFreeFree
fish-audio/s2.1-pro-freeFreeFree
poolside/laguna-s-2.1-free256K1.4s68tpsFreeFree
fish-audio/s2-proFreeFree
fish-audio/s2-pro-freeFreeFree
fish-audio/transcribe-1FreeFree
fish-audio/transcribe-1-freeFreeFree
fish-audio/s1FreeFree
fish-audio/s1-freeFreeFree

Inference with Kilo Code

Kilocode free models

Kilocode allows you to use other inference endpoint providers but you can also use these free models that come with kilocode:

title: "Best Free AI Coding Models Available Now | Kilo Code"
image: "https://kilo.ai/kilocode-social.png"
description: "Find the best currently tested free AI coding models in Kilo Code, plus a live catalog of hosted models with $0 input and $0 output token pricing."
url: "https://kilo.ai/landing/free-models"
favicon: ""
aspectRatio: "56.35062611806798"

Inference with NVidia APIs

from openai import OpenAI
import os
import sys

_USE_COLOR = sys.stdout.isatty() and os.getenv("NO_COLOR") is None
_REASONING_COLOR = "\033[90m" if _USE_COLOR else ""
_RESET_COLOR = "\033[0m" if _USE_COLOR else ""

client = OpenAI(
base_url = "https://integrate.api.nvidia.com/v1",
api_key = "YOUR_NVIDIA_API_KEY"
)


completion = client.chat.completions.create(
model="z-ai/glm-5.2",
messages=[{"role":"user","content":""}],
temperature=1,
top_p=1,
max_tokens=16384,
seed=42,

stream=True
)

for chunk in completion:
if not getattr(chunk, "choices", None):
continue
if len(chunk.choices) == 0 or getattr(chunk.choices[0], "delta", None) is None:
continue
delta = chunk.choices[0].delta
if getattr(delta, "content", None) is not None:
print(delta.content, end="")

nvidia free models

The endpoint URL is https://integrate.api.nvidia.com/v1, with the OpenAI-compatible inference endpoint being https://integrate.api.nvidia.com/v1/chat/completions

namemodelTagparam count
nemotron-3-super-120b-a12bnvidia/nemotron-3-super-120b-a12b120B
nemotron-3-ultra-550b-a55bnvidia/nemotron-3-ultra-550b-a55b550B
gpt-oss-120bopenai/gpt-oss-120b120B
llama-3.3-70b-instructmeta/llama-3_3-70b-instruct70B
qwen3-next-80b-a3b-instructqwen/qwen3-next-80b-a3b-instruct80B
gpt-oss-20bopenai/gpt-oss-20b20B
llama-3.1-8b-instructmeta/llama-3_1-8b-instruct8B
deepseek-v4-flashdeepseek-ai/deepseek-v4-flashN/A
qwen3.5-397b-a17bqwen/qwen3.5-397b-a17b397B
llama-4-maverick-17b-128e-instructmeta/llama-4-maverick-17b-128e-instruct400B (17B x 128E MoE)
kimi-k2.6moonshotai/kimi-k2.6N/A
minimax-m2.7minimaxai/minimax-m2.7N/A
qwen3.5-122b-a10bqwen/qwen3.5-122b-a10b122B
llama-3.1-nemotron-nano-vl-8b-v1nvidia/llama-3.1-nemotron-nano-vl-8b-v18B
nemotron-3-nano-30b-a3bnvidia/nemotron-3-nano-30b-a3b30B
mistral-small-4-119b-2603mistralai/mistral-small-4-119b-2603119B
minimax-m3minimaxai/minimax-m3N/A
step-3.5-flashstepfun-ai/step-3.5-flashN/A
nemotron-3-nano-omni-30b-a3b-reasoningnvidia/nemotron-3-nano-omni-30b-a3b-reasoning30B
glm-5.2z-ai/glm-5.2N/A
step-3.7-flashstepfun-ai/step-3.7-flashN/A
deepseek-v4-prodeepseek-ai/deepseek-v4-proN/A
llama-3.3-nemotron-super-49b-v1.5nvidia/llama-3_3-nemotron-super-49b-v1_549B
llama-3.3-nemotron-super-49b-v1nvidia/llama-3_3-nemotron-super-49b-v149B
gemma-4-31b-itgoogle/gemma-4-31b-it31B
llama-3.1-70b-instructmeta/llama-3_1-70b-instruct70B
nemotron-nano-12b-v2-vlnvidia/nemotron-nano-12b-v2-vl12B
gemma-2-2b-itgoogle/gemma-2-2b-it2B
mistral-medium-3.5-128bmistralai/mistral-medium-3.5-128b128B
nv-embed-v1nvidia/nv-embed-v1N/A
ministral-14b-instruct-2512mistralai/ministral-14b-instruct-251214B
llama-3.2-90b-vision-instructmeta/llama-3.2-90b-vision-instruct90B
diffusiongemma-26b-a4b-itgoogle/diffusiongemma-26b-a4b-it26B
llama-3.2-11b-vision-instructmeta/llama-3.2-11b-vision-instruct11B
nemotron-mini-4b-instructnvidia/nemotron-mini-4b-instruct4B
gemma-3n-e4b-itgoogle/gemma-3n-e4b-it4B
nvidia-nemotron-nano-9b-v2nvidia/nvidia-nemotron-nano-9b-v29B
nemotron-3.5-content-safetynvidia/nemotron-3.5-content-safetyN/A
nv-embedcode-7b-v1nvidia/nv-embedcode-7b-v17B
gemma-3n-e2b-itgoogle/gemma-3n-e2b-it2B
llama-3.2-3b-instructmeta/llama-3.2-3b-instruct3B
rerank-qa-mistral-4bnvidia/rerank-qa-mistral-4b4B
mistral-nemotronmistralai/mistral-nemotron12B
llama-3.1-nemotron-nano-8b-v1nvidia/llama-3_1-nemotron-nano-8b-v18B
dracarys-llama-3.1-70b-instructabacusai/dracarys-llama-3_1-70b-instruct70B
mixtral-8x7b-instruct-v0.1mistralai/mixtral-8x7b-instruct47B (8x7B MoE)
seed-oss-36b-instructbytedance/seed-oss-36b-instruct36B
esmfoldmeta/esmfold3B
llama-3.2-1b-instructmeta/llama-3.2-1b-instruct1B
solar-10.7b-instructupstage/solar-10_7b-instruct10.7B
gliner-piinvidia/gliner-piiN/A
ising-calibration-1-35b-a3bnvidia/ising-calibration-1-35b-a3b35B
sarvam-msarvamai/sarvam-mN/A
llama-guard-4-12bmeta/llama-guard-4-12b12B
llama-3.1-nemotron-safety-guard-8b-v3nvidia/llama-3_1-nemotron-safety-guard-8b-v38B
riva-translate-4b-instruct-v1_1nvidia/riva-translate-4b-instruct-v1_14B
synthetic-video-detectornvidia/synthetic-video-detectorN/A
magpie-tts-zeroshotnvidia/magpie-tts-zeroshotN/A
paligemmagoogle/google-paligemma3B
Studio Voicenvidia/studiovoiceN/A
esm2-650mmeta/esm2-650m650M
cosmos3-nano-reasonernvidia/cosmos3-nano-reasonerN/A
cosmos3-nanonvidia/cosmos3-nanoN/A
Active Speaker Detectionnvidia/active-speaker-detectionN/A
Background Noise Removalnvidia/bnrN/A
nemotron-voicechatnvidia/nemotron-voicechatN/A
cosmos-transfer1-7bnvidia/cosmos-transfer1-7b7B
streampetrnvidia/streampetrN/A
bevformernvidia/bevformerN/A
sparsedrivenvidia/sparsedriveN/A
cosmos-transfer2.5-2bnvidia/cosmos-transfer2_5-2b2B
inklingthinkingmachines/inklingN/A
ising-calibration-1.5-31bnvidia/ising-calibration-1.5-31b31B
laguna-xs-2.1poolside/laguna-xs-2.1N/A
nemotron-3-embed-1bnvidia/nemotron-3-embed-1b1B
nemotron-3.5-nano-30b-a3bnvidia/nemotron-3.5-nano-30b-a3b30B
seallm-7b-v2.5seallms/seallm-7b7B

MCP

Deploying to MCP clients

All MCP clients have the same way of deploying, which is listing the commands to run the MCP servers or the existing urls hosting MCP servers in a JSON file like so:

{
"mcpServers": {
"local-mcp-server": {
"command": "deno",
"args": [
"run",
"-A",
"C:/Users/Waadl/OneDrive/Documents/dbdildev/mcp/local-mcp-server/main.ts"
],
"env": {
"GOOGLE_GENERATIVE_AI_API_KEY": "Eafsadfdsafasfdsafsd",
"OPENAI_API_KEY": "sk-pasfsafsadfaHfsadsfdEgsRIsaffdsDNVsafdfsdad"
}
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_FfadffdsasadRW9p"
}
}
}
}

Claude desktop

you can add MCP servers in the ~\AppData\Roaming\Claude\claude_desktop_config.json path

Cursor

Go to cursor MCP settings and you can add MCP servers in the ~\.cursor\mcp.json file, or you can just go to cursor settings -> MCP settings.

You can also set local MCP settings for your workspace, which is often way more efficient by creating a .cursor/mcp.json file:

.cursor/mcp.json
{
"mcpServers": {
"mcpmcp": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://mcpmcp.io/mcp"]
}
}
}

Awesome MCP: list of MCP servers

Image transformation MCP servers

title: "GitHub - BoomLinkAi/image-worker-mcp: Effortlessly resize, convert, optimize, and transform images with a single MCP server—then upload them directly to S3, Cloudflare R2, or Google Cloud Storage. Ideal for AI workflows, automation scripts, and developers who want seamless image handling in one tool."
image: "https://opengraph.githubassets.com/3ff12fed5d0f07d944f7b8289dfc146ad5408466b21a4ecd324c3e83d729a675/BoomLinkAi/image-worker-mcp"
description: "Effortlessly resize, convert, optimize, and transform images with a single MCP server—then upload them directly to S3, Cloudflare R2, or Google Cloud Storage. Ideal for AI workflows, automation scr..."
url: "https://github.com/BoomLinkAi/image-worker-mcp"
favicon: ""
aspectRatio: "50"
title: "GitHub - InhiblabCore/mcp-image-compression: A high-performance image compression microservice based on MCP (Modal Context Protocol)"
image: "https://opengraph.githubassets.com/f710c12e91c1387a11c3dfe14d7a0cd52e8c045d6172bdfa7cc589b8395da83f/InhiblabCore/mcp-image-compression"
description: "A high-performance image compression microservice based on MCP (Modal Context Protocol) - InhiblabCore/mcp-image-compression"
url: "https://github.com/InhiblabCore/mcp-image-compression"
favicon: ""
aspectRatio: "50"

MCP strategies

Ideas

  • Github MCP/skill: The most powerful way to use this MCP server is:
    • creating issues: ask claude code to create a github issue, tag other AIs (like claude, jules, gemini cli, codex) as assignees
    • creating pull requests: create a nicely formatted pull request
    • solve issues: ask claude to look at a specific issue, read it, and then solve it.
  • Playwright: You can use this to create integration tests and take screenshots.

Vibing with MCP

Here is the ultimate way to vibe code using MCP servers:

  • github skill: create issues, PRs, assign AI bots to your pull requests
  • neon MCP: connect to a database so the schemas are known at all times.
  • playwright MCP: Tell it to "make liberal use of Playwright to make sure that UI looks and acts correctly and set up integration tests."
  • context7: context7 for docs, tell the model to use context7 for some libraries that might be esoteric.

Tech stack:

  • neon auth
  • neon db: Use neon with drizzle, and specifically prompt it, "DO NOT MODIFY THE MIGRATIONS DIRECTLY, ONLY USE DRIZZLE"
  • nextjs + typescript + shadcdn + tailwindcss: specify nextjs 15 modern strategies like limiting client components
  • zod, react query, zustand

Here is the full vibing prompt

---REPLACE PROMPT BELOW-----
I am making a Todoist clone. I want it to have the following features

- Multiple users
- Users can CRUD their todos
- Users can mark their todos as done
- Users cannot share todos - you can assume that a todo belongs to one person
- Users can use tags to tag their todos. Examples would be work, personal, or fun. Users can CRUD tags. A todo can have multiple tags.
- Users can sign, sign out, and log out.
------------------------------

For the tech stack, please use

- Next.js 16 and TypeScript
- shadcn - please use shadcn as the styling method as much as possible to be consistent
- Neon Postgres for the database, connected via neon MCP
- Neon Auth for the auth - please use Context7 to make sure you have up to date docs on Neon Auth
- Drizzle for the ORM
- TypeScript
- ESLint
- Vitest for testing
- Playwright for integration tests

Please:

- include decent coverage of tests
- use Playwright MCP server to test that UI is styled correctly and interactions work as planned
- use Context7 liberally to make sure you have the latest docs for various libraries.
- prepare this to be deployed to Vercel afterwards.
- DO NOT WRITE OR MODIFY MIGRATIONS YOURSELF. ONLY USE DRIZZLE FOR MIGRATIONS.

Condensing docs

One of the most important uses of MCP is giving online, up-to-date docs for an AI agent to consume. There are two ways you can do this:

  • Context7: An MCP server that has tools to fetch online documentation and return it as markdown.
  • RepoMix: Go to the Repomix website to download the entire docs as a markdown file you cna then feed into LLMs.

AI resources

Voice

title: "#1 Free AI Voice Generator, Text to Speech, & AI Voice Over"
image: "https://play.ht/PlayAI-VoiceAI-LLM-TTS-ASR-STT-OGcard.png"
description: "The Best AI Voice Generator with 200+ realistic AI voices. PlayAI is the voice platform for creators & enterprises. See our low latency Text to Speech API."
url: "https://play.ht/"
favicon: ""
aspectRatio: "52.33333333333333"
title: "AI Voice Generator and Deepfake Detection for Enterprise | Resemble AI"
image: "https://www.resemble.ai/wp-content/uploads/2025/06/resemble-16x9-1-scaled.jpg"
description: "Resemble AI | Create AI voices and stop deepfakes with models built for enterprise scale and security."
url: "https://www.resemble.ai/"
favicon: ""
aspectRatio: "56.25"
title: "Free AI Voice Generator & Text to Speech Software | Murf AI"
image: "https://cdn.prod.website-files.com/66b3765153a8a0c399c70981/670584e2dab709883eed3793_Home.webp"
description: "Choose form 200+ AI voices and generate speech in 20+ languages. Murf's AI Voice Generator and Text to Speech software lets you create ultra-realistic AI voiceovers in seconds."
url: "https://murf.ai/"
favicon: ""
aspectRatio: "52.5"

image

This lets you create shirts:

title: "T-shirt Templates - Playground"
image: "https://playground.com/api/og/design/c/t-shirt/opengraph-image"
description: "Discover thousands of customizable T-shirt templates. Perfect for creating unique logos, t-shirts, posters, and more for Etsy, Printify, Stickermule, and beyond!"
url: "https://playground.com/design/c/t-shirt"
favicon: ""
aspectRatio: "52.5"

lexica, stable diffusion search engine:

title: "Lexica"
image: "https://lexica.art/lexica-meta.png"
description: "The state of the art AI image generation engine."
url: "https://lexica.art/"
favicon: ""
aspectRatio: "60"