# Antfarm - Flux Complet cu Discovery & PRD **Data:** 2026-02-10 **Inspirat din:** ralph skill /prd command --- ## Problema cu Fluxul Vechi ❌ **Ce nu a funcționat:** - Am lansat direct `antfarm workflow run` cu prompt vag - Planner (Sonnet) a interpretat minimal → feature incomplet - Test files în dashboard/ → aglomerare - Fără întrebări UX → implementare basic fără customizare --- ## Fluxul NOU (80/20) ### FAZA 1: Discovery cu Întrebări (Echo, Opus) **Când primesc request pentru feature nou:** 1. **Detectez context** (proiect existent vs nou) - Citesc ~/clawd/dashboard/ pentru stack actual - Identific patterns existente (common.css, api.py, etc.) 2. **Pun întrebări adaptive** (ca ralph /prd): **Pentru FEATURE în proiect existent (dashboard):** ``` Întrebarea 1: Ce funcționalitate nouă vrei? - Descrie în 2-3 propoziții Întrebarea 2: Ce tip de feature? - Funcționalitate nouă - Îmbunătățire UX - Integrare externă Întrebarea 3: Implică UI? - Da - componente noi (pagină separată) - Da - secțiune în index.html - Nu - doar backend Întrebarea 4: Modificări DB? - Da - fișier JSON nou - Da - câmpuri noi în JSON existent - Nu Întrebarea 5 (CRITICĂ pentru UX): Cum arată UI-ul? - Layout: listă simplă / cards / table / kanban - Features: create, edit, delete, filter, sort, export - Customizare: frecvență, categorii, culori, icoane - Mobile responsive: da/nu Întrebarea 6: Acceptance criteria? - Ce trebuie să funcționeze exact? - Cum testăm că e gata? Întrebarea 7: Structură fișiere? - Tests în dashboard/tests/ sau tests/ - Assets separate? (imagini, icons) ``` --- ### FAZA 2: Generez PRD Complet (Echo, Opus) Bazat pe răspunsuri, creez: **`~/clawd/tasks/prd-FEATURE-NAME.md`** ```markdown # PRD: [Feature Name] ## 1. Context Tehnic - **Proiect:** Echo Dashboard - **Stack:** Python (api.py), HTML+Vanilla JS, common.css - **Storage:** JSON files (tasks.json, todos.json, etc.) - **Patterns existente:** - API endpoints în api.py (handle_X_get, handle_X_post) - Frontend: fetch('/echo/api/X'), common.css pentru styling - Mobile: swipe-nav.js pentru navigare touch ## 2. Obiective ### Obiectiv Principal [Din răspunsul utilizatorului] ### Metrici Succes [Din acceptance criteria] ## 3. User Stories (Ordonate Dependencies-First) ### US-001: Schema și Storage **Ca** developer **Vreau** să definesc structura de date **Pentru că** backend și frontend depind de ea **Acceptance Criteria:** - [ ] Fișier FEATURE.json cu schema corectă - [ ] Funcții helper pentru streak/calculation logic - [ ] Documentație format data în cod ### US-002: Backend API - GET **Ca** frontend **Vreau** să pot citi datele **Pentru că** trebuie să afișez lista **Acceptance Criteria:** - [ ] Endpoint GET /api/FEATURE în api.py - [ ] Returnează JSON cu toate intrările - [ ] Tests pentru GET în dashboard/tests/test_FEATURE_api.py ### US-003: Backend API - POST Create ... ### US-004: Backend API - PUT Edit ... ### US-005: Backend API - DELETE ... ### US-006: Frontend - Structure **Ca** user **Vreau** o pagină dedicată pentru FEATURE **Pentru că** vreau acces rapid **Acceptance Criteria:** - [ ] FEATURE.html creat în dashboard/ - [ ] Link în index.html navigation - [ ] Layout responsive (mobile + desktop) - [ ] Tests în dashboard/tests/test_FEATURE_ui.py ### US-007: Frontend - Create Form ... ### US-008: Frontend - Edit Modal ... ### US-009: Frontend - Delete cu Confirmare ... ### US-010: Frontend - Customizare (frecvență, zile, categorii, etc.) ... ### US-011: Integration Tests ... ## 4. Structură Fișiere ``` ~/clawd/dashboard/ ├── FEATURE.html # UI principal ├── FEATURE.json # Data storage ├── api.py # Backend (modificat) ├── tests/ # Tests separate (NU în root dashboard/) │ ├── test_FEATURE_api.py │ ├── test_FEATURE_ui.py │ └── test_FEATURE_integration.py └── index.html # Link adăugat în nav ``` ## 5. UX Detalii [Din răspunsul la întrebarea 5] **Layout:** - Cards cu shadow și hover effects (ca în common.css pattern) **Create/Edit:** - Modal pentru create (buton fix bottom-right) - Inline edit sau modal pentru modificare - Fields: nume, frecvență dropdown, zile săptămână checkboxes, etc. **Customizare:** - Frecvență: zilnic / săptămânal / lunar / custom (X zile) - Zile săptămână: checkboxes pentru weekly habits - Categorii: work, health, growth, etc. - Culori: picker pentru identificare vizuală - Icoane: librarie icons (lucide) pentru personalizare **Mobile:** - Swipe pentru delete/edit - Touch-friendly buttons (min 44px) ## 6. Non-Goals ❌ NU facem: - Sincronizare cloud / multi-device - Gamification advanced (badges, levels) - Social features (share, leaderboard) - Export/import (poate în viitor) ## 7. Considerații Tehnice ### Backend (api.py) - Pattern existent: `handle_X_get`, `handle_X_post`, etc. - Storage în JSON cu `lastUpdated` timestamp - Validare input (max lengths, format checks) ### Frontend - common.css pentru styling consistent - Lucide icons pentru UI - Fetch API cu error handling - Toast notifications pentru success/error ### Tests - **Locație:** `dashboard/tests/` (NU în root dashboard/) - **Coverage:** API endpoints + UI behaviors + integration - **Run:** pytest pentru Python, manual pentru UI (sau Playwright dacă disponibil) ## 8. Acceptance Criteria Finale - [ ] Toate user stories implementate - [ ] Tests pass (pytest dashboard/tests/) - [ ] UI responsive (mobile + desktop) - [ ] No console errors - [ ] Git commits clean cu mesaje descriptive - [ ] PR creat pentru review ``` --- ### FAZA 3: Configurez Opus pentru Planner **Înainte de a lansa workflow-ul, configurez Opus pentru planner:** ```bash # Găsesc job ID pentru planner cron action=list | grep "antfarm/feature-dev/planner" # Actualizez cu model Opus cron action=update jobId="" patch='{"payload": {"model": "opus"}}' ``` **Verificare:** ```bash cron action=list | grep -A 5 "antfarm/feature-dev/planner" # Ar trebui să văd "model": "opus" în payload ``` --- ### FAZA 4: Lansez Workflow cu PRD ca Input **Task string pentru antfarm include PRD-ul complet:** ```bash cd ~/clawd antfarm workflow run feature-dev "$(cat <<'EOF' FEATURE: Habit Tracker PRD LOCATION: tasks/prd-habit-tracker.md CONTEXT: - Proiect existent: Echo Dashboard (Python backend + HTML/JS frontend) - Storage: JSON files - Patterns: common.css, api.py endpoints, swipe-nav.js REQUIREMENTS (vezi PRD complet în tasks/ pentru detalii): 1. Backend API (api.py): - GET /api/habits - returnează toate habits - POST /api/habits - creează habit nou cu validare - PUT /api/habits/{id} - editează habit existent - DELETE /api/habits/{id} - șterge habit - Funcții: calculate_streak(completions, frequency) - Storage: habits.json 2. Frontend (habits.html): - Layout: Cards cu grid responsive - Create: Modal cu form (nume, frecvență, zile, categorie, culoare, icon) - Edit: Modal sau inline edit - Delete: Confirmare dialog - Check-in: Click pentru bifaretoday - Display: Streak counter, last check date, progress visualization 3. Customizare: - Frecvență: zilnic / săptămânal / lunar / custom (X zile) - Zile săptămână: checkboxes pentru weekly habits (L, Ma, Mi, J, V, S, D) - Categorii: work, health, growth, personal (cu culori) - Icoane: lucide icons picker - Culori: color picker pentru identificare vizuală 4. Tests: - Locație: dashboard/tests/ (NU în dashboard/ root!) - Coverage: API, UI, integration - Framework: pytest pentru Python 5. Integration: - Link în index.html navigation - Toast notifications (success/error) - Mobile responsive (swipe gestures) ACCEPTANCE CRITERIA (COMPLETE): - [ ] Pot crea habit cu toate detaliile (nume, frecvență custom, zile, categorie, culoare, icon) - [ ] Pot edita habit existent (toate câmpurile) - [ ] Pot șterge habit cu confirmare - [ ] Pot bifa habit pentru azi (once per day max) - [ ] Streak calculation corect (zilnic: consecutive days, săptămânal: consecutive weeks) - [ ] UI responsive (mobile + desktop) - [ ] Tests în dashboard/tests/ (NU în dashboard/) - [ ] No console errors - [ ] API paths corecte (/echo/api/habits) - [ ] Git commits clean STORY SIZING: - Fiecare story trebuie să fie atomică (1 context window) - Dependencies-first: schema → backend → frontend → integration - Include typecheck și tests în fiecare story NON-GOALS: - Cloud sync / multi-device - Advanced gamification - Social features - Export/import Vezi tasks/prd-habit-tracker.md pentru detalii complete UX și tehnice. EOF )" ``` --- ### FAZA 5: Monitor și Ajustări **Monitor progres:** ```bash antfarm workflow status antfarm logs 50 ``` **Dacă planner-ul generează stories prea mari:** - Opresc run-ul - Editez PRD pentru a clari sizing - Relanșez cu PRD actualizat **Dacă developer-ul face greșeli (ex: test files în locul greșit):** - Verifier-ul ar trebui să prindă asta (acceptance criteria specifică locația) - Dacă nu, adaug în PRD mai explicit: "Tests MUST be in dashboard/tests/" --- ## Rezumat Flux pentru Echo **Când primesc "Vreau să construiesc X în dashboard":** 1. ✅ **Discovery:** Pun întrebări adaptive (5-7 întrebări pentru feature în proiect existent) 2. ✅ **PRD:** Generez tasks/prd-X.md cu user stories complete, UX detaliat, acceptance criteria specifice 3. ✅ **Config Opus:** Actualizez planner job cu model="opus" 4. ✅ **Launch:** antfarm workflow run cu PRD complet ca input 5. ✅ **Monitor:** Verific progres, intervin doar dacă escalation **NU mai fac:** - ❌ Launch direct cu prompt vag - ❌ Presupun ce vrea utilizatorul fără întrebări - ❌ Las planner-ul (Sonnet) să interpreteze minimal - ❌ Accept test files în locuri greșite --- ## Checklist pentru Mine (Echo) **Înainte de ORICE antfarm workflow run:** - [ ] Am pus întrebări despre UX/features? (5-7 întrebări) - [ ] Am generat PRD complet în tasks/? - [ ] PRD-ul include acceptance criteria specifice? - [ ] PRD-ul specifică structură fișiere (ex: tests/ location)? - [ ] Am configurat Opus pentru planner? - [ ] Task string include link la PRD + detalii complete? - [ ] Marius a aprobat PRD-ul înainte de launch? **Dacă răspuns = NU la oricare → STOP și completez înainte de launch.** --- **REGULA DE AUR:** > **80% din timpul unui proiect bun e în discovery și planning.** > **Antfarm execută rapid doar dacă știe EXACT ce să construiască.** > **Prompt vag = implementare minimalistă.** > **PRD complet = feature complet.**