| type | skill |
| name | Feature Breakdown |
| description | Break down features into implementable tasks |
| skillSlug | feature-breakdown |
| phases | ["P"] |
| generated | "2026-02-08T00:00:00.000Z" |
| status | filled |
| scaffoldVersion | 2.0.0 |
Feature Breakdown
When to Use
Use this skill when planning a new feature for the Smart Farming application. It helps decompose a feature request into concrete, implementable tasks following the project's Clean Architecture.
Process
1. Identify the Domain
Determine which domain the feature belongs to:
- Plants — Plant management (CRUD, listing)
- Sensors Records — Sensor data collection, dashboards, charts
- Checklist Records — Checklist data, forms, dashboards
- Authentication — Login, password reset, session management
2. Map Required Layers
For each feature, identify what needs to be created or modified in each layer:
Core Layer (src/app/core/)
Infrastructure Layer (src/app/infra/)
UI Layer (src/ui/)
Testing
3. Define Task Order
Follow this implementation order for dependencies:
- Core entities and interfaces (no dependencies)
- Core use cases (depend on interfaces)
- Infrastructure repositories (implement interfaces)
- Infrastructure factories (wire use cases with repositories)
- Infrastructure forms (if needed)
- Infrastructure views (use factories, render templates)
- UI templates and scripts
- Tests (can start in parallel with step 2)
4. Estimate Complexity
Reference the project's backlog estimation scale:
- 1-2 points — Simple CRUD, single layer change
- 3-5 points — Multi-layer feature, forms + views + templates
- 8 points — Complex feature with charts, CSV handling, or authentication logic
- 13 points — Cross-cutting feature affecting multiple domains
Example Breakdown
Feature: "Add new sensor type"
- Update
SensorsRecord entity in core/entities/
- Update
SENSORS_RECORDS_TABLE constants in infra/constants/mysql.py
- Update
schema.sql with new column
- Update
SensorsRecordsRepository interface and implementation
- Update affected use cases (create, edit, dashboard)
- Update forms in
infra/forms/
- Update view templates to include new field
- Update chart scripts in
static/scripts/
- Update mock repositories and add tests