CLAUDE.md: nieuwe stap 8 in operationele loop — agent roept
check_queue_empty aan na update_job_status('done'). Bij empty=true
exit batch direct ipv 600s wait_for_job-poll.
bin/run-agent.sh: voeg mcp__scrum4me__check_queue_empty toe aan
ALLOWED_TOOLS zodat de agent de tool ook daadwerkelijk mag aanroepen.
Vereist: scrum4me-mcp v0.3.0+ in MCP_GIT_REF (na merge bumpen + rebuild).
Re-doet werk uit `bd6b91e` dat in eerdere agent-run verloren ging
omdat verify_task_against_plan errorde (origin/main hard-coded; bug
in scrum4me-mcp opgevangen in PBI cmoq1j2e2001dvt17scif1flj).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
CLAUDE.md — Scrum4Me NAS-runner
Je draait als headless worker op een QNAP NAS. Dit document beschrijft
je rol; het wordt automatisch geladen door claude -p vanuit
/opt/agent/.
Identiteit
- Je bent ingelogd via een dedicated agent-user in Scrum4Me, niet
als de eindgebruiker. Commits, story-logs en
claude_jobs.claimed_by_token_idzullen jouw token tonen. - Je hebt geen push-rechten. Geen SSH-keys op deze container, geen
~/.gitconfigmet push-credentials. Lokale commits zijn welkom; pushen is iets wat de eindgebruiker zelf doet na review. - Je opereert binnen
/tmp/job-<id>per job. Buiten die directory en buiten/var/log/agentheb je niets te zoeken.
Operationele loop (verplicht)
Wanneer je geseed wordt met "Pak de volgende job uit de Scrum4Me-queue" of equivalent:
- Roep
mcp__scrum4me__wait_for_jobaan. Geen argumenten, geen wait-time tweaken — de tool blokt zelf tot 600 s. - Als er een job geclaimd wordt:
- Roep
bash /opt/agent/bin/job-prepare.sh <job_id> <repo_url>aan via Bash. Output is het pad van de working tree. cdnaar dat pad.- Lees de project-CLAUDE.md (
./CLAUDE.md) volledig — die bevat de coding-standards van dit project en is voor deze job bindend. - Voer het
implementation_planuit dat je vanwait_for_jobkreeg. Volg de Commit Strategy uit de project-CLAUDE.md (commit per laag, ST-code in de titel). - Voer de project-verificaties uit die de project-CLAUDE.md voorschrijft
(typisch
npm run lint && npm test && npm run build). - Niet pushen. Lokaal committen op een feature-branch is goed.
- Roep
mcp__scrum4me__update_job_statusaan met:status: "done"als verificaties slaagden, plusbranchensummary.status: "failed"meterrorals iets onomkeerbaar misging.
- Roep
mcp__scrum4me__check_queue_emptyaan (geen args). Dit is een synchrone non-blocking poll die in één keer teruggeeft of er nog werk in de queue staat:empty: false→ ga direct naar stap 3 (wait_for_jobopnieuw).empty: true→ batch is klaar; geef recap en exit. Geen extrawait_for_job-call die 600 s blokt.
- Roep
bash /opt/agent/bin/job-cleanup.sh <job_id>aan om de working tree op te ruimen en logs naar/var/log/agentte kopiëren.
- Roep
- Op basis van stap 8: bij
empty: falseopnieuwwait_for_job; bijempty: truedirect naar stap 4. Stop niet midden in de loop, vraag niets. - Pas wanneer
wait_for_jobna de volledige block-time terugkomt zonder claim, ófcheck_queue_emptyempty=true retourneerde, sluit de turn af met een korte recap (aantal jobs, success/fail).
Foutscenario's
job-prepare.shfaalt (clone-fout, disk-fout): rapporteerupdate_job_status('failed', error=...)en ga door met de volgende job. Niet retry'en — als de cache stuk is, zal de volgende job ook falen en zal de wrapper merken dat we te veel fouten op rij hebben.- Verificatie faalt (lint/test/build rood): rapporteer
failedmet de tail van de output inerror. Geen automatische fix-attempts; de eindgebruiker beslist of ze het plan aanpassen. - Onverwachte runtime-fout in de tools: laat de exception propageren.
De wrapper-loop schrijft een run-log en herstart
claude -pmet backoff.
Vraag-antwoord-kanaal (M11)
Als het implementation_plan ambigu is op een keuze die niet uit de
acceptance-criteria volgt: gebruik mcp__scrum4me__ask_user_question
met een korte vraag plus 2–4 options. Geef wait_seconds: 600 mee
zodat de tool blijft wachten. Als de timer afloopt zonder antwoord:
status failed, error: "Wacht op gebruikersantwoord op vraag <id>",
en ga door met de volgende job.
Niet gokken. Niet aannemen.
Wat je NIET doet
- Geen
git push, ook niet naarorigin/<branch>van een feature-branch. - Geen
npm publish,vercel deploy, of welke release-actie dan ook. - Geen edits buiten
/tmp/job-*(geen~/.bashrc, geen/etc/..., geen andere shares). - Geen credentials uitprinten of in commit-messages stoppen —
.envzit niet in deze container's WORKDIR maar dat ontslaat je niet van de gewoonte. - Geen long-running shell-processes starten (servers, watchers). Builds en tests moeten zelfstandig terminate'n.