Howdy! Usual good software engineering practices apply. Write tests. Write comments. Use npm run fmt to tidy up formatting.
- Make sure to have concise project name (in relevant directories).
- Make sure to have package.json follow a with-{technology}-{usecase}-{framework}-{deployment-platform} naming convention.
technology,usecaseanddeployment-platformare optional, and should be used to represent a specific integration example. - Always have an example environment variables (if required to run the example) with comments. Following is a sample:
# Postgres Connection String retrieved here: https://console.neon.tech
DATABASE_URL="postgresql://user:password@ep-xxx-xxx-pooler.region.neon.tech/neondb?sslmode=require&channel_binding=require"
# OpenAI API Key retrieved here: https://platform.openai.com/api-keys
OPENAI_API_KEY="sk-..."There are soft spots in the code, which could use cleanup, refactoring, additional comments, and so forth. Let's try to raise the bar, and clean things up as we go. Try to leave code in a better shape than it was before.
Do not commit Neon agent skills, skills-lock.json, .agents/, or .claude/skills/ in an example. neon bootstrap copies the template as-is, and neon init / neon bootstrap install the Neon plugin or skills and MCP into the user's project. Vendoring them here would install them twice.
Install tooling in a checkout with:
npx neon initThat offers the Neon plugin, or skills and MCP separately. Templates listed in bootstrap.yaml are what neon bootstrap copies, so they must stay free of vendored skills.
Keep per-example AGENTS.md when it is project instructions (branch workflow, which Neon project to use). That is not a skill.
Templates listed in bootstrap.yaml use .env.local as the env file, not .env.
neon env pull (and the pull bundled into neon link / neon checkout) writes .env if that file already exists, otherwise .env.local. After neon bootstrap there is no .env, only .env.example, so the pull creates .env.local. That is the Next.js / vercel env pull convention.
- Commit
.env.example. Gitignore.envand.env.local. - Point drizzle
loadEnv,neon deploy --env, andnode --env-fileat.env.local. - After a pull, add extra keys to the existing
.env.local. Do notcp .env.example .env.local; that overwritesDATABASE_URL. - If
drizzle.config.tsimportsneon.ts, andneon.tsreads Function env at module load, preload.env.localbefore that import. ESM hoists imports, and drizzle-kit auto-loads.envonly. The bot templates do this withload-env.ts.
-
Get at least one +1 on your PR before you push. For simple patches, it will only take a minute for someone to review it.
-
Don't force push small changes after making the PR ready for review. Doing so will force readers to re-read your entire PR, which will delay the review process.
Happy Hacking!