Przejdź do głównej zawartości

Playbook konwersji projektu

Kierujesz Claude Code na trzyletnie repozytorium Next.js i prosisz o dodanie funkcji. AI wymyśla bibliotekę do zarządzania stanem, którą usunąłeś w zeszłym kwartale, umieszcza trasę API w niewłaściwym katalogu i pisze testy we frameworku, którego nie używasz. Kod nie jest zły — po prostu nie ma pojęcia, jak działa Twój projekt. Rozwiązaniem nie jest lepszy prompt; to danie agentowi kontekstu, który nowy pracownik dostałby pierwszego dnia.

Ten playbook przekształca istniejący projekt w taki, w którym Cursor, Claude Code i Codex mogą produktywnie pracować, korzystając z jednego źródła prawdy, które wszystkie trzy czytają.

  • Prawdziwy CLAUDE.md / AGENTS.md wygenerowany z Twojego repozytorium, a nie z pustego szablonu
  • Reguły .mdc Cursora ograniczone do tych części bazy kodu, których dotyczą
  • Gotowe do wklejenia prompty do audytu starszej bazy kodu i stworzenia etapowego planu konwersji
  • Zadanie CI, które utrzymuje pliki kontekstu na bieżąco za pomocą prawdziwego CLI agenta — bez fikcyjnych narzędzi npm
  • Jasny obraz tego, jak każde narzędzie konsumuje kontekst, byś nie utrzymywał trzech rozjeżdżających się kopii

Błędem, który popełniają zespoły, jest ręczne pisanie trzech osobnych plików kontekstu. Zamiast tego zapisz konwencje raz i pozwól, by plik wejściowy każdego narzędzia wskazywał na tę samą treść. Wszystkie trzy narzędzia czytają plik Markdown na poziomie katalogu głównego:

NarzędzieCzytaUwagi
Claude CodeCLAUDE.mdKatalog główny projektu; pliki CLAUDE.md w podkatalogach nadpisują dla tej ścieżki
CodexAGENTS.mdTen sam pomysł, otwarty standard AGENTS.md
Cursor.cursor/rules/*.mdcPliki reguł z zakresem i frontmatterem; czyta też AGENTS.md

Nie otwieraj pustego CLAUDE.md. Pozwól agentowi przeczytać repozytorium i sporządzić jego szkic — będziesz edytować znacznie mniej, niż byś napisał. To jest identyczne we wszystkich trzech narzędziach; uruchom prompt w tym, które masz akurat otwarte.

Skonfrontuj szkic z rzeczywistością, usuń linie TODO: confirm, na które potrafisz odpowiedzieć, i zatwierdź go. Ugruntowany plik na 120 linii bije szablon na 400 linii pełen [YOUR_FRAMEWORK].

Oto kształt dobrego wyniku dla prawdziwej aplikacji Next.js — konkretny, a nie formularz do wypełnienia:

# Acme Storefront
Next.js 16 e-commerce app. App Router, RSC by default.
## Stack
- Next.js 16.2 (App Router), React 19, TypeScript 5.6 (strict)
- Tailwind CSS 4, Prisma 6 + PostgreSQL 16, Stripe, Auth.js v5
## Conventions
- Server Components by default; add `'use client'` only for interactivity
- Route handlers live in `app/api/`, one folder per resource
- Shared UI in `components/ui/`, feature components beside their route
- Data access goes through `lib/db/` — never call Prisma from a component
- Money is stored and computed in integer cents, never floats
## Commands
- Dev: `npm run dev` | Test: `npm test` (Vitest) | Migrate: `npx prisma migrate dev`
## Watch out
- The legacy `/pages/checkout` route is being migrated to App Router — don't extend it

Przepływ pracy konwersji rozchodzi się w zależności od narzędzia, gdy plik kontekstu już istnieje. Oto, co skonfigurować w każdym z nich.

Cursor czyta .cursor/rules/*.mdc. Używaj .mdc (Markdown z frontmatterem), abyś mógł ograniczać reguły do ścieżek i kontrolować, kiedy się stosują — .md też działa, ale nie daje żadnego ograniczania zakresu.

.cursor/rules/
general.mdc # alwaysApply: true — core standards
api.mdc # globs: app/api/** — backend rules
components.mdc # globs: components/** — UI rules

Reguła z zakresem i prawdziwym frontmatterem:

---
description: API route conventions
globs: app/api/**
alwaysApply: false
---
- Validate request bodies with Zod schemas from `lib/schemas/`
- Wrap handlers in `withErrorHandler` from `lib/api/errors.ts`
- Return `NextResponse.json` with explicit status codes
- Never expose Prisma errors to the client

Odwołuj się do plików, zamiast je wklejać (@lib/api/errors.ts), by reguły nie traciły aktualności, gdy kod się zmienia.

W przypadku starszego projektu z ubogą dokumentacją poprowadź konwersję dwoma promptami: jednym do zmapowania tego, co istnieje, drugim do zaplanowania pracy.

  1. Zmapuj bazę kodu. Pozwól agentowi zbudować obraz, który inaczej rekonstruowałbyś ręcznie.

  2. Zamień audyt w etapowy plan. Przekuj ustalenia w pracę, którą faktycznie da się zaplanować.

  3. Wykonuj przyrostowo. Pracuj moduł po module, zachowując kompatybilność wsteczną. Najpierw wprowadź pliki kontekstu (Faza 1), aby każde kolejne zadanie z nich korzystało, potem testy charakteryzujące, a na końcu refaktoryzacje. Rozprosz niezależne zadania Fazy 3 na zadania Codex Cloud lub subagentów Claude Code i recenzuj diffy w miarę, jak napływają.

CLAUDE.md sprzed pół roku jest gorszy niż żaden — aktywnie wprowadza agenta w błąd. Zautomatyzuj odświeżanie w CI za pomocą prawdziwego CLI agenta, a nie fikcyjnego narzędzia npx. Claude Code działa headless z -p; Codex działa nieinteraktywnie z codex exec.

.github/workflows/refresh-context.yml
name: Refresh project context
on:
schedule:
- cron: '0 6 * * 1' # Monday mornings
workflow_dispatch:
jobs:
update-claude-md:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update CLAUDE.md from the current codebase
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude -p "Review CLAUDE.md against the current repo. Update the \
stack versions, commands, and directory conventions only where \
they no longer match reality. Output the corrected file." \
--output-format text > CLAUDE.md
- name: Open a PR if anything changed
uses: peter-evans/create-pull-request@v6
with:
commit-message: 'docs: refresh CLAUDE.md from codebase'
title: 'docs: refresh project context'
branch: chore/refresh-context

Minimalny działający projekt gotowy na AI

  • ☐ Kanoniczny CLAUDE.md (lub AGENTS.md) wygenerowany z repozytorium i zrecenzowany
  • ☐ Wtórne pliki wejściowe wskazują na kanoniczny — a nie rozgałęzione kopie
  • .cursor/rules/*.mdc dla standardów z zakresem ścieżek (API, komponenty, testy)
  • ☐ Ścieżki o najwyższym ryzyku bez testów mają testy charakteryzujące przed jakąkolwiek refaktoryzacją
  • ☐ Zadanie odświeżania CI otwiera PR, nigdy nie commituje automatycznie do main
  • ☐ Pliki kontekstu aktualizowane w tym samym PR co zmiany strukturalne

Celem nie jest perfekcyjny dokument. To fundament, który sprawia, że agent zachowuje się jak ktoś, kto już zna Twoją bazę kodu.