feat: estructura base OpenSpec + Skills + arquitectura limpia Capacitor+Dextie
This commit is contained in:
97
skills/toldo-architecture-solid/SKILL.md
Normal file
97
skills/toldo-architecture-solid/SKILL.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Agent Skill: toldo-architecture-solid
|
||||
|
||||
## Metadata
|
||||
```yaml
|
||||
name: toldo-architecture-solid
|
||||
description: Guía para mantener arquitectura limpia con SOLID, separación lógica/presentación, componentes pequeños/reutilizables y DI. Aplicar estrictamente en este proyecto.
|
||||
```
|
||||
|
||||
## When to use
|
||||
Use this skill when:
|
||||
- Creating new packages/modules
|
||||
- Designing components or services
|
||||
- Reviewing code for architectural violations
|
||||
- Refactoring to improve structure
|
||||
- Deciding where code should live
|
||||
|
||||
## Architecture Layers
|
||||
|
||||
### Layer Responsibilities
|
||||
| Layer | Location | Responsibility | Can Import | Cannot Import |
|
||||
|-------|----------|----------------|------------|---------------|
|
||||
| **Domain** | `packages/core/` | Entities, value objects, business rules, repository interfaces | Nothing (pure TS) | data, services, ui, apps, @capacitor/*, frameworks |
|
||||
| **Infrastructure/Data** | `packages/data/` | Repository implementations, DB schema/migrations, external adapters | core/ | services, ui, apps, @capacitor/* in business logic |
|
||||
| **Application/Services** | `packages/services/` | Use cases, orchestration, application logic | core/, data/ | ui, apps (business logic), @capacitor/* directly |
|
||||
| **Presentation/UI** | `packages/ui/` | Reusable UI components, design system | core/, services/ via interfaces | data/ directly, @capacitor/* directly |
|
||||
| **App/Composition** | `apps/toldo-app/` | Composition root, routing, DI setup, Capacitor integration | All packages | - (can import anything, but keep orchestration here) |
|
||||
|
||||
## SOLID Checklist
|
||||
|
||||
### Single Responsibility Principle (SRP)
|
||||
- [ ] Each class/function does one thing
|
||||
- [ ] Components have single purpose
|
||||
- [ ] Services handle one domain area or specific use case
|
||||
- [ ] Files are focused (< ~200 lines ideally, < 150 for components)
|
||||
|
||||
### Open/Closed Principle (OCP)
|
||||
- [ ] Use interfaces for extensibility
|
||||
- [ ] Prefer composition over inheritance
|
||||
- [ ] New features via new classes/functions, not modifying existing tested code
|
||||
|
||||
### Liskov Substitution Principle (LSP)
|
||||
- [ ] Implementations are substitutable for interfaces
|
||||
- [ ] No breaking contracts
|
||||
|
||||
### Interface Segregation Principle (ISP)
|
||||
- [ ] Small, focused interfaces
|
||||
- [ ] Repositories have specific methods, not "god" interfaces
|
||||
- [ ] Clients don't depend on unused methods
|
||||
|
||||
### Dependency Inversion Principle (DIP)
|
||||
- [ ] Core defines interfaces (ports)
|
||||
- [ ] Data/services implement/adapt (adapters)
|
||||
- [ ] Depend on abstractions, inject dependencies
|
||||
- [ ] No `new` of concrete implementations deep in business logic
|
||||
|
||||
## Component Guidelines
|
||||
|
||||
### Component Rules
|
||||
- **Small and focused**: One responsibility per component
|
||||
- **Presentation-first**: Minimal logic, delegate to composables/services
|
||||
- **Props down, events up**: Clear data flow
|
||||
- **Reusable**: Generic where possible, specific where needed
|
||||
- **No business rules**: Calculations/validations belong in core/services
|
||||
- **No direct DB access**: Use services through DI/composition
|
||||
- **No direct Capacitor imports**: Go through adapters/services
|
||||
|
||||
### Composables/Hooks
|
||||
- Extract reusable logic to composables/hooks
|
||||
- Keep UI concerns separate from business logic
|
||||
- Make testable in isolation
|
||||
|
||||
## Anti-Patterns to Avoid
|
||||
|
||||
- ❌ Importing Dexie directly in UI components
|
||||
- ❌ Importing @capacitor/* in core/services/ui packages
|
||||
- ❌ Business logic in Vue/React/Svelte components
|
||||
- ❌ God classes/components doing too much
|
||||
- ❌ Circular dependencies
|
||||
- ❌ `any` types
|
||||
- ❌ Tight coupling to frameworks in domain
|
||||
|
||||
## Review Checklist
|
||||
|
||||
Before committing:
|
||||
- [ ] Dependencies follow layer rules
|
||||
- [ ] Component < ~150 lines
|
||||
- [ ] No business logic in presentation
|
||||
- [ ] Uses interfaces, not concrete classes
|
||||
- [ ] Tested appropriately
|
||||
- [ ] TypeScript strict compliant
|
||||
- [ ] Follows naming conventions
|
||||
- [ ] No circular deps
|
||||
|
||||
## Resources
|
||||
- See `openspec/changes/add-toldo-poc-capacitor/design.md` for full architecture
|
||||
- Follow dependency rules strictly
|
||||
- When in doubt, put logic in core/ or services/, keep UI dumb
|
||||
Reference in New Issue
Block a user