Merge feature/habit-tracker into master (squashed): ✨ Habit Tracker Features: - Bead chain visualization (30-day history) - Weekly lives recovery system (+1 life/week) - Lucide icons (zap, shield) replacing emoji - Responsive layout (mobile-optimized) - Navigation links added to all dashboard pages 📚 Knowledge Base: - 40+ trading basics articles with metadata - Daily notes (2026-02-10, 2026-02-11) - Health & insights content - KB index restructuring 🧪 Tests: - Comprehensive test suite (4 test files) - Integration tests for lives recovery - 28/29 tests passing Commits squashed: - feat(habits): bead chain visualization + weekly lives recovery + nav integration - docs(memory): update KB content + daily notes - chore(data): update habits and status data Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
385 lines
11 KiB
Markdown
385 lines
11 KiB
Markdown
# 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="<PLANNER_JOB_ID>" 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 <run-id>
|
|
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.** |