---
name: vertical-slice
description: Fires when the user asks for a bounded end-to-end change across cli/sources/db/portfolio. Use proactively when scope is clear and fits the current phase (Faza 1 CLI MVP).
---

# Vertical slice

## Cel

Jeden mały slice end-to-end dowieziony w jednym commicie, zachowujący spójność między kodem, testami a `docs/` i `CLAUDE.md`.

## Constraints

- scope nie rozlewa się poza warstwy które naprawdę muszą się zmienić (`cli`, `sources`, `db`, `portfolio`)
- zmiana kontraktu CLI lub schematu DB wymaga równoległej aktualizacji `CLAUDE.md` i `docs/` w tym samym change secie
- `uv run poe check` musi przechodzić zanim zamkniesz task
- commit w formacie `<typ>(<scope>): <opis>`, jeden commit na task (wyjątek: schemat DB + kod = dwa commity)

## Non-goals

- nie dodaje nowego źródła w ramach zwykłego slice'a — do tego jest `source-integration`
- nie staje się szerokim refaktorem architektury
- nie wprowadza abstrakcji ani infrastruktury "na zapas"

## Gotchas

- `sources/xtb.py` i `portfolio/returns.py` są dziś stubami; przed zmianą sprawdź czy kontrakt już istnieje, czy go dopiero wprowadzasz
- `var/` jest runtime — nie commituj niczego co tam trafi
- `tests/` jest pusty; nowy kod = nowy test; wzorzec integration testu docelowo w `tests/integration/`
