From 08babe8c03b54a99b80545e3544ea6a6abb11ef1 Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Wed, 6 May 2026 09:23:26 +0200 Subject: [PATCH] chore: typecheck-script + dependency-cascade-grep in Make-Plan-prompt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Twee preventieve aanpassingen na de mislukte ST-2wj8mw8q-run, waarbij een schema-edit (Todo-model verwijderd) groen door lint en vitest kwam maar op `next build` brak vanwege 16 ongelinkte `prisma.todo`-references in 4 bestanden. package.json: - "typecheck": "tsc --noEmit" — losse script voor snelle full-project type-check, los van eslint en next build. - "verify": "npm run lint && npm run typecheck && npm test" — umbrella voor agents/CI om voor de eind-build te valideren. lib/idea-prompts/make-plan.md: - Werkwijze-stap 3 toegevoegd: "Bij removal/refactor: doe een dependency-cascade-grep". Voor de strikte format-sectie staat nu een verplicht protocol: - Removal van Prisma-model: grep `prisma.x` in actions/app/components/lib - Removal van component/utility/type: grep paden + exports - Hernoemen: per geraakt bestand een edit-taak - Veld-wijziging in create/update: grep op die call-sites - Eind-taak: `npm run typecheck` als sanity-check los van lint/test/build. - Toelichting waarom: eslint en vitest+esbuild slaan diepe type-check over; next build is de eerste step die alles type-checkt en zit aan het eind van de pijp. Co-Authored-By: Claude Opus 4.7 (1M context) --- lib/idea-prompts/make-plan.md | 43 ++++++++++++++++++++++++++++++++--- package.json | 2 ++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/lib/idea-prompts/make-plan.md b/lib/idea-prompts/make-plan.md index ea7f1a8..86891a0 100644 --- a/lib/idea-prompts/make-plan.md +++ b/lib/idea-prompts/make-plan.md @@ -28,9 +28,46 @@ PBI + stories + taken via `materializeIdeaPlanAction`. 1. Lees `idea.grill_md` volledig. 2. Verken de repo voor patronen, bestaande modules, en `docs/`-structuur. -3. Bouw het plan op in de **strikte format** hieronder. -4. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`. -5. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`. +3. **Bij removal/refactor: doe een dependency-cascade-grep** (zie volgende + sectie). Voeg per geraakte file een taak toe vóór de schema/code-edit zelf. +4. Bouw het plan op in de **strikte format** hieronder. +5. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`. +6. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`. + +## Dependency-cascade-grep (verplicht bij removal/refactor) + +Wanneer het idee een **bestaand symbool, model, route of component +verwijdert of hernoemt**, MOET je éérst de consumers in kaart brengen voordat +je het plan vaststelt. Anders breekt `next build` op type-errors die `lint` +en `vitest run` niet pakken (zie hieronder waarom). + +**Concreet:** + +- Verwijder je een Prisma-model `Foo`? + ```bash + grep -rn "prisma\.foo\b\|prisma\.foos\b" actions/ app/ components/ lib/ \ + --include="*.ts" --include="*.tsx" + ``` + Voeg per geraakt bestand één of meer taken toe ("schoon `actions/foos.ts` + op", "verwijder `app/(app)/foos/`-route", "haal Foo-tegel uit + `app/page.tsx`-feature-grid", etc.) **vóór** de schema-edit-taak. + +- Verwijder je een component / utility / type? Idem: grep op de + bestandspaden en exports en plan per consumer een taak. + +- Hernoem je een model/route/component? Plan per geraakt bestand een edit-taak. + +- Wijzig je een `prisma.x.create`-veld (verplicht ↔ optioneel)? Grep op + `prisma.x.create` en `prisma.x.update` voor type-mismatches. + +- Voeg óók een **eind-taak** toe: `npm run typecheck` (= `tsc --noEmit`) + als sanity-check, los van `lint && test && build`. Type-errors verschijnen + daar het eerst en zijn 10× sneller dan een full `next build`. + +**Waarom zo strikt?** `eslint` doet geen diepe type-check. `vitest` met +esbuild-transpile slaat type-errors over. `next build` is de eerste step die +álles type-checkt — en die zit aan het einde van de pijp. Een gemist +consumer-bestand wordt pas zichtbaar bij verify, niet bij implementation. ## STEL GEEN VRAGEN diff --git a/package.json b/package.json index 5699dc0..8796e0c 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,8 @@ "build": "next build", "start": "next start", "lint": "eslint", + "typecheck": "tsc --noEmit", + "verify": "npm run lint && npm run typecheck && npm test", "test": "vitest run", "test:watch": "vitest", "prepare": "husky",