GitHub Copilot

Verified against GitHub Copilot Chat · 2026-08-14

Write a README a new contributor could follow without pinging you on day one

Builds a developer-facing README from the repo's actual structure and setup steps, tested against the specific gotchas that trip up a first-time contributor, instead of a generic 'clone and npm install' template.

GitHub Copilot Chat4 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

Write a developer README for this repository, using #codebase so you're describing the actual project structure and scripts as they exist right now, aimed specifically at someone who has never touched this codebase before and has no one sitting next to them to ask.

WHAT THIS PROJECT IS
An internal Next.js app that lets support reps look up a customer's subscription history and issue refunds without going through the billing team directly.

SETUP STEPS AS THEY CURRENTLY WORK
Clone the repo, copy .env.example to .env and fill in the DATABASE_URL from the team vault, run `pnpm install`, then `pnpm db:migrate` before `pnpm dev` — migrate has to run first or the dev server crashes on boot.

GOTCHAS THAT HAVE TRIPPED PEOPLE UP BEFORE
If you skip pnpm db:migrate, the dev server throws 'relation \"subscriptions\" does not exist' on the first request, which looks like a connection problem but isn't.

A GOOD FIRST TASK TO POINT SOMEONE AT
The `formatRefundAmount()` util in lib/currency.ts has a known rounding edge case on JPY amounts (no decimal places) tracked in issue #142 — small, contained, and touches a real part of the codebase.

Write the setup section as steps that were actually verified to work, in order, including any step that feels obvious to someone who already has the repo working — the failure mode this README exists to prevent is a step that got skipped in the writing because it felt too basic to mention, and that's precisely the step a first-timer trips on. For each gotcha listed, don't just state the gotcha — state what it looks like when it goes wrong (the actual error message or symptom) so a new contributor can pattern-match their own screen against this document instead of wondering if they're even hitting the documented issue. Read the actual package.json / equivalent scripts file via #codebase and list the real script names and what each one actually does, not a guessed-at convention like 'probably npm run dev' — if a script's actual behavior doesn't match what its name suggests, note that explicitly.

Do not pad this with sections that don't apply to a first-time contributor's first day — skip a detailed architecture deep-dive or a full contribution-guidelines legal section unless it's directly relevant to getting a working local environment and understanding where to start; those belong in a separate document this README can link to, not inline in the first thing a new contributor reads.

OUTPUT FORMAT
1. One-paragraph project description.
2. Setup steps, numbered, verified against actual scripts.
3. Common gotchas, each with symptom + fix.
4. Suggested first task with a one-line reason it's a good starting point.
5. Links to anything this README deliberately left out (deeper architecture docs, contribution guidelines) rather than covering them here.

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

A README written without deliberately fighting this tendency reads fine to the person who wrote it and fails silently for the person who didn't, because the author's own working setup already has every implicit step done, so an omitted step is invisible from where they're writing — Copilot Chat inherits this same blind spot unless explicitly told that the obvious-feeling steps are exactly the ones most likely to be missing, since its draft will otherwise mirror the confident, compressed tone of documentation written by someone who already has the context a first-timer lacks. Pairing every gotcha with its actual symptom rather than just its cause is what makes the difference between a README a stuck contributor can use and one they read after already giving up: a new contributor doesn't start from 'I forgot to run the migration,' they start from a cryptic Postgres error on screen, and a gotchas section organized around causes forces them to already know the cause before the entry becomes useful, which defeats its purpose. Using #codebase to read the actual scripts file rather than letting the model guess at conventional script names (`npm run dev`, `npm start`) matters because Copilot Chat's training data skews toward common conventions that this specific repo may not follow, and a README that states a script name that doesn't exist is worse than no README, since it actively costs a new contributor time chasing a command that fails immediately. The instruction to keep the scope narrow — setup and a first task, not a full architecture treatise — reflects that a first-day document competing with a comprehensive one for the same real estate tends to bury the five things that actually matter on day one under material that matters on week three, and a new contributor's actual first blocker is almost always 'why won't this run locally,' not 'what's our long-term data model philosophy.'

What you get back

## Setup 1. Clone the repo. 2. Copy `.env.example` to `.env` and fill in `DATABASE_URL` from the team vault. 3. Run `pnpm install`. 4. Run `pnpm db:migrate` — **do this before starting the dev server**, or step 5 will fail. 5. Run `pnpm dev`. ## Common gotchas **Symptom:** dev server throws `relation "subscriptions" does not exist` on your first request. **Cause:** step 4 was skipped. **Fix:** stop the dev server, run `pnpm db:migrate`, restart. ## First task Check out issue #142 — a rounding edge case on JPY refund amounts in `lib/currency.ts`. Small, self-contained, touches a real path through the app.

Verified against

GitHub Copilot Chat 2026.08 · 2026-08-14

Changelog

  • 2026-08-14 Initial publish, verified against GitHub Copilot Chat 2026.08.

Need this built into your business?

If a prompt isn't enough — custom software, built and maintained for you — that's Scult's day job.

EXPLORE CUSTOM SOFTWARE
Write a .github/copilot-instructions.md file Copilot actually followsA repository-wide custom-instructions file that Copilot loads automatically into every Chat request, code-review pass, coding-agent session, and commit or PR-description generation in this repo, written so each rule holds up standing alone instead of only in the context it was written in.GitHub Copilot Chat (VS Code)GitHub Copilot code review2026-07-20Scope Copilot's instructions to one directory with an applyTo instructions fileA path-scoped .github/instructions/*.instructions.md template using the applyTo frontmatter glob, so a directory-specific rule — a different test framework, a stricter API contract, a legacy pattern that must not spread — applies only where it is actually true instead of polluting the repo-wide instructions file.GitHub Copilot Chat (VS Code)GitHub Copilot coding agent2026-07-21Define a custom Copilot Chat mode instead of re-explaining your workflow every sessionA .github/chatmodes/*.chatmode.md definition — scoped tools, a fixed model, and a narrow system prompt — that turns a repeated review-and-plan style of conversation into a mode you switch into once, instead of a persona you re-describe in the first message every time.GitHub Copilot Chat (VS Code)2026-07-22Turn a prompt you keep retyping into a Copilot prompt file instead of pasting it againA .github/prompts/*.prompt.md reusable prompt file with input placeholders, invoked as a slash command from the Chat input box, so a well-tuned multi-paragraph prompt becomes one command instead of a paste you have to keep re-finding.GitHub Copilot Chat (VS Code)2026-07-22
All GitHub Copilot prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY