Files
rar-autopass/scripts/ralph/prompt.md
Claude Agent 0ba728cab5 docs(5.9): PRD corectie modal mobil + scaffold Ralph (prd.json cu R1-R12)
- docs/prd/prd-5.9-ux-corectie-modal-mobil.md: PRD aprobat (8 stories, raport AUTOPLAN)
- scripts/ralph/: ralph.sh + prompt.md (smart-gates) + progress.txt
- scripts/ralph/prd.json: 8 user stories cu reviziile obligatorii R1-R12 incorporate
  in acceptance criteria; priority encodeaza valurile de dependente
- .gitignore: runtime Ralph (logs/screenshots/archive/.last-branch/usage.jsonl)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 21:09:08 +00:00

5.4 KiB

Ralph - Instrucțiuni pentru Iterație (smart gates)

Ești un agent autonom care implementează user stories dintr-un PRD. Aceasta este O SINGURĂ iterație — implementezi UN singur story, validezi prin gate-urile relevante, apoi te oprești.

Workflow per iterație (4 faze, gates condiționale pe story.tags)

Faza 0: Citește contextul

  • PRD-ul (prd.json) și progress.txt sunt furnizate în context.
  • Identifică următorul story candidate:
    • passes != true ȘI failed != true ȘI blocked != true
    • DAG: toate ID-urile din dependsOn[] au passes == true (altfel sare la următorul independent)
    • Cea mai mică priority printre cele eligibile.
  • Notează techStack.commands (lint, typecheck, test, start) și techStack.port.
  • Notează story.tags[] — alegerea Faza 3 depinde de ele.

Faza 1: IMPLEMENTARE (mereu)

1.1. Branch management — verifică să fii pe branchName din PRD; checkout/create dacă lipsește. 1.2. Citește acceptance criteria — fiecare criteriu e un test mental concret de trecut. 1.3. Implementează cod minimal — DOAR ce cere story-ul. Urmează patterns existente. Fără over-engineering, fără side features. 1.4. Update notes în prd.json cu fișierele atinse (pentru audit ulterior).

Faza 2: QUALITY BASE (mereu, înainte de gates)

Folosește techStack.commands:

{techStack.commands.typecheck}   # ex: npm run typecheck / mypy .
{techStack.commands.lint}        # ex: npm run lint / ruff check .
{techStack.commands.test}        # ex: npm test / pytest

Loop intern: dacă vreuna eșuează → repară și repetă, max 3 retries în această fază. Dacă încă fail după 3, ieși cu sumar de erori în progress.txt (ralph.sh va decide retry-ul iterației).

Faza 3: SMART GATES (dispatcher pe story.tags)

Tags posibile: ui, db, vercel, refactor, docs, backend, infra.

Aplică DOAR gate-urile potrivite — nu rulează toate:

Tag Gate
refactor /workflow:simplify pe diff (reduce complexity fără behavior change)
ui /qa Playwright/agent-browser snapshot pe localhost:{techStack.port} + screenshot
ui + requiresDesignReview /plan-design-review pe screenshot capturat
vercel push branch + gh pr checks --watch (timeout 5 min); fail dacă PR checks eșuează
db verify schema diff (alembic / prisma migrate diff / psql \\d+ tablename)
docs doar typecheck base (Faza 2 e suficient); skip gate dedicat
backend /review pe diff (intern — second pass review pe API contracts, error handling)
infra /review pe diff + manual smoke test al modificărilor (CI config, Dockerfile, etc.)
(tags vide) run-all-gates fallback/review + /qa + /workflow:simplify (safe default)

Mecanism: skill-urile gstack se invocă prin text mention în prompt — Claude (subprocess claude -p) le vede ca tool-uri disponibile via ~/.claude/skills/gstack/.

Multi-tag: rulează gate-uri pentru fiecare tag (ex: ["ui", "backend"] → atât /qa cât și /review).

Important: dacă vreun gate eșuează, NU marca passes=true. Repară (max 3 fix-uri în iterație) sau lasă pentru iterația următoare (ralph.sh se ocupă de retry counter).

Faza 4: COMMIT + MARK

4.1. Commit cu mesaj descriptiv:

feat: [Story ID] - [Story Title]

- ce ai schimbat (1-3 bullets)
- gates rulate: typecheck PASS, lint PASS, /qa PASS

4.2. Update prd.json:

  • passes: true DOAR DACĂ toate gate-urile relevante au pasat
  • notes populat cu rezultate gate (ex: "qa: ok, design-review: 8/10")

4.3. Append progress.txt:

## Iterație: [timestamp]
### Story implementat: [ID] - [Title] (tags: [ui, backend])
### Status: Complete / Partial / Failed

### Gates rulate:
- Typecheck: PASS
- Lint: PASS
- Tests: PASS/SKIP
- /qa (ui): PASS — screenshot la scripts/ralph/screenshots/...
- /review (backend): PASS

### Learnings:
- [Patterns descoperite, gotchas]

### Next:
- [Stories eligibile pentru iterația următoare]
---

Reguli importante

  1. UN SINGUR STORY PE ITERAȚIE — nu implementa mai mult de un story.
  2. DAG STRICT — nu sări peste dependsOn neîmplinite.
  3. GATES PE TAGS — rulează doar ce e relevant; tags vide = run-all-gates fallback.
  4. NU MARCA passes=true cu gate failed — altfel ralph.sh nu va relua story-ul.
  5. FII CONCIS — fără over-engineering, fără docs auto-generate dacă story-ul nu cere.

Comenzi agent-browser (referință rapidă pentru gate ui)

agent-browser navigate "http://localhost:{techStack.port}"
agent-browser snapshot                    # listă elemente compactă (@e1, @e2...)
agent-browser click @e5
agent-browser fill @e3 "value"
agent-browser screenshot ./scripts/ralph/screenshots/US-{id}-$(date +%Y%m%d-%H%M%S).png
agent-browser console                     # erori JS
agent-browser wait-for "Loading complete"

Condiție de terminare

Dacă TOATE story-urile au passes: true (sau combinat cu failed: true / blocked: true astfel că nimic nu mai e eligibil):

<promise>COMPLETE</promise>

ÎNCEPE IMPLEMENTAREA ACUM.