Codex, Claude Code og Cursor kan redigere repositories, køre kommandoer og følge projektinstruktioner inden for deres konfigurerede funktioner og tilladelser. Denne artikel afprøver en filbaseret driftsaftale. Den hævder ikke, at alle teams har brug for tre agenter, eller at aftalen fjerner forskelle mellem værktøjerne.
Denne artikel viser, hvordan du gør det med filer og CLI’er, du allerede har:
- Delte projektinstruktioner i
AGENTS.md - Claude-bro via
CLAUDE.md, der importerer@AGENTS.md - Grundlæggende Cursor-instruktioner samt valgfri
.cursor/rules - Struktureret Markdown til overdragelser mellem roller
- Ikke-interaktive CLI-kørsler til design, gennemgang og implementering
Her er ingen specialbygget projektstyringsplatform nødvendig. Hvis du senere vil have en fælles backlog på tværs af agenter, kan du kombinere opsætningen med projektledelse med flere agenter i Linear. Her foregår koordineringen gennem Git og Markdown.
Produktdokumentationen blev kontrolleret igen 2026-08-04 mod AGENTS.md, OpenAIs Codex-vejledning til AGENTS.md, Codex’ ikke-interaktive tilstand, Claude Codes hukommelsesdokumentation, Claude Codes CLI-reference og Cursors CLI-dokumentation. Den samlede overdragelse mellem de tre klienter blev ikke kørt fra ende til anden under denne gennemgang. Kontrollér kommandoer og tilladelser med fastlåste klientversioner, før du baserer en arbejdsgang på dem.
Teamets opbygning
En brugbar indledende specialisering:
| Rolle | Værktøj | Job | Primært output |
|---|---|---|---|
| Designer | Codex CLI | Foreslå arkitektur, grænseflader, testplan og risici | Designafsnit i docs/handoffs/<id>.md |
| Gennemgang | Claude Code | Udfordre designet eller implementeringen | Gennemgangsafsnit i samme overdragelsesfil |
| Implementering | Cursor CLI / Cursor Agent | Udfør den godkendte plan som små ændringer | Branch, tests, PR og implementeringsnoter |
Rollerne er konventioner, ikke begrænsninger hos leverandørerne. Hvert værktøj kan designe, gennemgå eller implementere. Specialiseringen skaber en tydelig artefaktgrænse: Én agent skriver en plan, en anden udfordrer den, og en tredje implementerer kun det, der bestod gennemgangen.
Delte instruktioner: én sandhedskilde
Brug AGENTS.md som et portabelt fælles grundlag
AGENTS.md er et instruktionsformat på tværs af værktøjer, som forvaltes under Agentic AI Foundation. Codex læser formatet direkte. Cursor understøtter en AGENTS.md i roden som fælles projektvejledning ved siden af .cursor/rules. Hold filen kort og handlingsrettet:
# AGENTS.md
## Commands
- Install: `pnpm install`
- Test: `pnpm test`
- Typecheck: `pnpm typecheck`
- Lint: `pnpm lint`
## Patch rules
- One behavior change per branch
- Prefer existing helpers over new dependencies
- Do not edit secrets or `.env*` files
- Do not merge to main
## Multi-agent protocol
- Read `docs/handoffs/` before starting
- Write status back into the active handoff file
- Designer, reviewer, and implementer must be different runs
- Stop for auth, payments, production infra, or data deletion
OpenAIs Codex-dokumentation beskriver, hvordan instruktioner opdages fra projektroden ned til arbejdsmappen. Nærmere filer har forrang, AGENTS.override.md kan bruges efter behov, og den samlede standardgrænse er 32 KiB, medmindre den hæves. Hold rodfilen kort, og placér pakkespecifikke regler i indlejrede AGENTS.md-filer.
Forbind Claude Code via CLAUDE.md
Claude Code læser CLAUDE.md, ikke AGENTS.md. Den officielle vejledning anbefaler at importere den fælles fil:
@AGENTS.md
## Claude Code
- Prefer plan mode before edits on `src/billing/` and auth code
- For review jobs, do not implement unless the handoff status is `implement` or `fixes`
Et symbolsk link (ln -s AGENTS.md CLAUDE.md) fungerer også, når du ikke har brug for Claude-specifikke tilføjelser. Foretræk importen @AGENTS.md på Windows.
Bekræft indlæsningen med Claudes /context, og kontrollér Memory files.
Hold Cursor-specifikke regler snævre
Cursor kan bruge AGENTS.md i roden til fælles konventioner. Brug kun .cursor/rules/*.mdc til Cursor-specifikke behov som regler afgrænset med globmønstre. Vedligehold ikke tre forskellige opslagsværker.
Overdragelsesfilen er samtalen mellem kolleger
Opret en mappe:
mkdir -p docs/handoffs
Brug én fil pr. arbejdsenhed:
docs/handoffs/2026-07-29-pricing-section.md
# Handoff: pricing section
- ID: pricing-section
- Status: design
- Owner now: codex
- Next owner: claude
- Branch: codex/design-pricing-section
- Worktree: ../app-pricing-section
## Goal
Implement the marketing pricing section using existing Section/PlanCard patterns.
## Non-goals
Billing, coupons, seat math.
## Design
(Codex fills this)
## Review
(Claude fills this)
## Implementation notes
(Cursor fills this)
## Verification
- Command: `pnpm test:e2e --grep "pricing"`
- Last result:
## Decision log
- 2026-07-29 Codex: drafted component boundaries
Statusværdier, der fungerer godt, med sløjfer frem for et ensrettet forløb:
designdesign-review— blokerende fund sender arbejdet tilbage tildesign; en ren gennemgang fører videre tilimplementimplementimpl-review— blokerende fund fører tilfixes; en ren gennemgang sætterdonefixes— implementeringsagenten retter fundene og sender derefter arbejdet tilbage tilimpl-reviewdoneblocked-human
Ikke alle opgaver får status fixes. Et rent impl-review kan gå direkte til done.
Hver CLI-kørsel begynder med at læse filen og slutter med at opdatere status, ejer og beslutningslog. Det er hele orkestreringslaget.
Eksempel: efter én cyklus med design og gennemgang
Illustrativt uddrag af overdragelsesfilen, efter Codex har designet og Claude har gennemgået:
- Status: implement
- Owner now: cursor
- Next owner: claude
## Design
Files: `PricingSection.tsx` (new), reuse `PlanCard.tsx`
CTA must track clicks with `trackEvent()` + `getCtaClickProps()` from `src/lib/analytics.ts`
Mobile: stacked below `md`, three columns from `md` up
Plan IDs: `starter`, `pro`, `business`
Test: `pnpm test:e2e --grep "pricing"`
## Review
Blocking: none remaining (breakpoint + plan IDs resolved in Design above)
Non-blocking:
- Extract plan constants later if CMS arrives.
## Decision log
- 2026-07-29 Codex: initial component boundaries
- 2026-07-29 Claude: requested breakpoint + explicit plan IDs
- 2026-07-29 Codex: updated Design; Claude cleared blocking items → implement
Det er denne artefakt, Cursor skal følge. Chathistorikken er valgfri; filen er obligatorisk.
Installér og start hver CLI
De præcise installationsmetoder ændrer sig. Brug den aktuelle dokumentation fra hver leverandør. Det afgørende her er mønsteret for ikke-interaktiv kørsel.
Codex: designrunde
Codex’ ikke-interaktive tilstand er codex exec. Den kører som standard i en skrivebeskyttet sandkasse. En designopgave, der opdaterer overdragelsesfilen, kræver skriveadgang til workspacet:
cd ../app-pricing-section
codex exec --sandbox workspace-write "$(cat <<'EOF'
Read AGENTS.md and docs/handoffs/2026-07-29-pricing-section.md.
Status is design. Produce the Design section only:
- proposed files
- component/API boundaries
- test plan
- risks
- open questions
Do not implement application code.
Set status to design-review and next owner to claude.
Append a Decision log entry.
EOF
)"
Brug kun interaktiv codex, når du vil styre designet løbende. Foretræk codex exec til scripts og sekventielle kørsler.
Claude Code: gennemgangsrunde
Claude Codes udskriftstilstand kan gennemgå og opdatere overdragelsesfilen, men kun hvis tilladelserne giver skriveadgang i det pågældende worktree. Hold omfanget snævert:
cd ../app-pricing-section
claude -p --permission-mode acceptEdits --max-turns 30 --max-budget-usd 5 --output-format text "$(cat <<'EOF'
Read AGENTS.md / CLAUDE.md and docs/handoffs/2026-07-29-pricing-section.md.
You are the reviewer. Do not implement application code.
Challenge the Design section for missing edge cases, local-architecture mismatches, weak tests, and security issues.
Write findings into the Review section as Blocking vs Non-blocking.
If blocking findings exist, set status to design and next owner to codex.
Otherwise set status to implement and next owner to cursor.
Append a Decision log entry.
EOF
)"
Hvis Claude ikke kan skrive filer i en ikke-interaktiv tilladelsestilstand, skal gennemgangen køres skrivebeskyttet, hvorefter et menneske eller et script indsætter gennemgangsafsnittet i overdragelsesfilen. Foretræk --permission-mode acceptEdits eller en positivliste i indstillingerne til opdatering af overdragelsesfilen i et midlertidigt worktree. Brug ikke --dangerously-skip-permissions i et reelt checkout.
Nyttige Claude Code-indstillinger til scriptede kørsler, se CLI-referencen:
-p/--printtil ikke-interaktiv fuldførelse--max-turnstil at begrænse sløjfer--max-budget-usdtil at begrænse forbruget--output-format json|text|stream-jsontil automatisering--permission-mode acceptEdits, når gennemgangen skal skrive overdragelsesfilen i et afgrænset worktree
Brug ikke uden videre --dangerously-skip-permissions i checkouts til produktion.
Cursor: implementeringsrunde
Cursor CLI hedder agent. Brug det samme dedikerede worktree, som overdragelsesfilen angiver. Implementér ikke fra det primære checkout:
cd ../app-pricing-section
agent -p --trust --sandbox enabled --output-format text "$(cat <<'EOF'
Read AGENTS.md and docs/handoffs/2026-07-29-pricing-section.md.
Status must be implement or fixes.
Implement only the approved Design, respecting Review blocking resolutions.
Keep the patch small. Add or update tests from the Verification section.
Run the verification command and record the result in the handoff file.
Set status to impl-review and next owner to claude.
Do not merge.
EOF
)"
Vigtige Cursor CLI-flags:
-p/--print— ikke-interaktiv; har allerede adgang til skrive- og shellværktøjer--force/--yolo— godkender automatisk shellkommandoer, medmindre de afvises; brug kun i midlertidige sandkasser, ikke som standard ved kodning--sandbox enabled|disabled— sandkassetilstand for kørslen; foretrækenabled, når du implementerer med--trust--trust— markerer workspacet som betroet under automatisering-w/--worktree [name]— isoleret checkout under~/.cursor/worktrees/<repo>/med en anden sti end ved manuelgit worktree add; opdatér felterne Branch og Worktree i overdragelsen, hvis du bruger det--mode planeller--mode ask— planlægning eller skrivebeskyttet tilstand--output-format text|json|stream-json
Til skrivebeskyttede Cursor-gennemgange skal du foretrække ask- eller plantilstand eller en udtrykkelig instruktion om ikke at redigere. Foretræk manuel git worktree add, så stien i overdragelsen svarer til implementeringsagentens checkout.
Se også Cursors vejledning til headless CLI for scriptede arbejdsgange.
Oversigt over instruktionsfiler, så sandheden ikke duplikeres
| Fil | Hvem læser den | Læg her |
|---|---|---|
AGENTS.md | Codex, Cursor og andre værktøjer med AGENTS.md-understøttelse | Fælles kommandoer, regler for ændringer og protokol til flere agenter |
CLAUDE.md | Claude Code | Import af @AGENTS.md samt Claude-specifikke noter |
.cursor/rules/*.mdc | Cursor | Adfærd afgrænset med globmønstre eller anden Cursor-specifik adfærd |
docs/handoffs/*.md | Alle agenter via instruktionen | Opgavens status, design, gennemgang og verifikation |
Hvis en regel gælder for alle agenter, skal der findes én kanonisk, portabel version, og hvert værktøj skal kun bruge den nødvendige bro. Værktøjsspecifikke regler forbliver lokale. Duplikerede politikker skaber flere vedligeholdelsespunkter og øger risikoen for afvigelser; en test bør bekræfte, at hvert værktøj indlæser det tilsigtede regelsæt.
Eksempel på en komplet arbejdsgang
Antag et rent repository og en funktion, der endnu ikke er implementeret.
1. Opret et isoleret worktree
git fetch origin main
git worktree add -b feat/pricing-section ../app-pricing-section origin/main
cd ../app-pricing-section
mkdir -p docs/handoffs
Opret overdragelsesfilen med Mål, Ikke omfattet og Verifikation. Gem grundstrukturen i en commit, hvis teamet vil gøre aftalen synlig i PR’er.
2. Codex designer
Codex skriver designafsnittet med filer, grænseflader, tests og risici. Status bliver design-review.
Et reelt designresultat bør have denne form:
## Design
Files:
- `src/components/marketing/PricingSection.tsx` (new)
- `src/components/marketing/PlanCard.tsx` (reuse)
- `tests/e2e/marketing-pricing.spec.ts` (new)
Boundaries:
- PricingSection owns layout and plan list
- PlanCard remains presentational
- CTA links use existing `trackEvent()` + `getCtaClickProps()` helpers
Test plan:
- three plans visible
- CTA hrefs resolve
- analytics helper called once per click
Risks:
- hardcoding plan IDs out of sync with CMS
3. Claude gennemgår designet
Instruktionen til gennemgangen kræver blokerende og ikke-blokerende fund, så uklare designs sendes tilbage. Eksempel:
Blokerende:
1. Der er ikke truffet en beslutning om mobillayout for stablede abonnementskort.
2. Designet angiver ikke verifikationskommandoen. Tilføj den under Design og Verifikation.
Ikke-blokerende:
- Overvej at flytte abonnementsdata til en konstant.
Status går tilbage til design eller videre til implement, men først når de blokerende punkter er afklaret i designet.
4. Cursor implementerer
Cursor implementerer kun det godkendte design. Den kører:
pnpm test:e2e --grep "pricing"
Cursor registrerer resultatet, åbner eller forbereder en PR og sætter status til impl-review.
5. Claude gennemgår implementeringen
Den anden Claude-kørsel gennemgår ændringerne mod overdragelsen, ikke mod et nyt ideal, som agenten selv har opfundet. Blokerende fund sætter status til fixes med cursor som ejer. En ren gennemgang sætter done, hvorefter et menneske kan flette ændringerne.
6. Et menneske fletter ændringerne
Beskyttede branches forbliver under menneskelig kontrol. Agenter kan fungere som hurtige juniorer, men bør ikke være udgivelsesansvarlige.
Shell-orkestrering uden en platform
En enkel sekvensstyring er tilstrækkelig:
#!/usr/bin/env bash
set -euo pipefail
ROOT="${1:?worktree path}"
HANDOFF="${2:?handoff file}"
cd "$ROOT"
status() {
# Prefer the metadata Status field near the top of the handoff file.
awk '/^- Status:/{print $3; exit}' "$HANDOFF"
}
case "$(status)" in
design)
codex exec --sandbox workspace-write "Read AGENTS.md and $HANDOFF. Fill Design only, then set status=design-review and next owner=claude. Do not implement application code."
;;
design-review|impl-review)
claude -p --permission-mode acceptEdits --max-turns 30 --max-budget-usd 5 --output-format text "Review $HANDOFF per AGENTS.md. Update Review + status only. Do not implement application code."
;;
implement|fixes)
agent -p --trust --sandbox enabled --output-format text "Status must be implement or fixes. Implement or fix per $HANDOFF and AGENTS.md. Update handoff. Do not merge."
;;
done|blocked-human)
echo "No agent action for $(status)"
;;
*)
echo "Unknown status in $HANDOFF" >&2
exit 1
;;
esac
Dette er bevidst kedeligt. Enkel orkestrering er lettere at fejlfinde. Hold sandkasser og tilladelsestilstande så snævre, som fasen tillader. Design og gennemgang bør ikke kræve bred systemadgang.
Fejltilstande
| Fejl | Hvad der sker | Fix |
|---|---|---|
| Afvigende instruktioner | Codex, Claude og Cursor følger forskellige regler | Én AGENTS.md; Claude importerer den; Cursor-regler bruges kun til tilføjelser |
| Sammenfaldende roller | Gennemgangsagenten omskriver i stilhed funktionen | Instruktionerne til gennemgang forbyder implementering; statusserne styrer ejerskabet |
| Fælles worktree med ikke-gemte ændringer | Tre agenter overskriver filer | Ét worktree pr. overdragelses-id |
| Uendelig finpudsning | Agenterne sender designet frem og tilbage uden afslutning | Højst to design-review-cyklusser, derefter menneskelig beslutning |
| Tomme gennemgange | »Looks good« uden dokumentation | Kræv afsnit med blokerende og ikke-blokerende fund |
| Omgåelse af tilladelser | Uovervågede destruktive kommandoer | Undgå at springe tilladelser over i rigtige repositories; brug sandkasser og budgetter |
| Forældet overdragelse | Agenten arbejder ud fra chathukommelse | Kræv, at overdragelsesfilen læses ved hver kørsel |
| Promptinjektion | Issues eller dokumenter forsøger at tilsidesætte politikken | Behandl utroværdig Markdown som data; håndhæv stop med sandkasser, afviste tilladelser og hooks. Instruktionsfiler er kontekst, ikke en hård sikkerhedsgrænse |
Ikke-interaktive flag, der automatisk godkender ændringer eller tilladelser, er hjælpeværktøjer til sandkasser og stramt afgrænsede worktrees. De udgør ikke en adgangskontrolmodel til produktion.
Hvad du ikke bør automatisere endnu
- Fletning til beskyttede branches
- Udrulning til produktion
- Rotation af hemmeligheder
- Skemamigreringer uden en plan, som et menneske har gennemgået
- Arbejdsgange, hvor overdragelsesfilen kommer fra en utroværdig ekstern indsender uden rensning
Et praktisk startsæt
- Tilføj
AGENTS.mdi roden med kommandoer, regler for ændringer og protokollen til flere agenter. - Tilføj
CLAUDE.mdindeholdende@AGENTS.md. - Tilføj
docs/handoffs/_template.md. - Vælg én lille funktion.
- Kør design → gennemgang → implementering → gennemgang manuelt én gang.
- Først derefter kobles statusserne til en shellsekvens.
Hvis de samme agenter skal hente opgaver fra en fælles virksomhedsbacklog, kan du tilføje Linear MCP og statusmodellen for overtagelse og gennemgang fra projektledelse med flere agenter i Linear. Markdown-overdragelsen er stadig nyttig som teknisk notesbog for det enkelte issue.
Standarden er kontrakten
Codex, Claude Code og Cursor overlapper allerede i funktionalitet. De bliver et team, når du holder op med abstrakt at bede dem om at »arbejde sammen« og i stedet kræver en synlig aftale:
- delte instruktioner
- udtrykkelig rolle for hver kørsel
- Markdown-overdragelse med status
- isolerede worktrees
- afgrænsede CLI-kørsler
- menneskeligt ansvar for fletning og udgivelse
Det er nok til at drive et seriøst lokalt agentteam med dagens værktøjer og til hurtigt at opdage, når teamet improviserer i stedet for at arbejde systematisk.



