CtrlK
BlogDocsLog inGet started
Tessl Logo

pantheon-ai/software-design-principles

Apply software design principles across architecture and implementation using deterministic decision workflows, SOLID checks, structural patterns, and anti-pattern detection; use when reviewing designs, refactoring modules, or resolving maintainability and coupling risks.

Does it follow best practices?

Evaluation99%

1.01x

Agent success when using this tile

Validation for skill structure

Overview
Skills
Evals
Files

entity-pure-business-rules.mdreferences/

title:
Entities Contain Only Enterprise Business Rules
impact:
CRITICAL
impactDescription:
enables reuse across applications, prevents coupling
tags:
entity, business-rules, domain, purity

Entities Contain Only Enterprise Business Rules

Entities encapsulate enterprise-wide business rules that would exist regardless of automation. They must not contain application-specific logic, persistence code, or UI concerns.

Incorrect (entity mixed with infrastructure concerns):

class Invoice {
  id: string
  items: LineItem[]
  status: InvoiceStatus
  dueDate: Date

  calculateTotal(): Money {
    return this.items.reduce((sum, item) => sum.add(item.amount), Money.zero())
  }

  isOverdue(): boolean {
    return this.status === InvoiceStatus.Unpaid && new Date() > this.dueDate
  }

  markPaid(): void {
    this.status = InvoiceStatus.Paid
    database.invoices.update(this)  // Entity cannot be tested without database
    emailService.send(this.customerEmail, 'Payment received')  // Coupled to email system
  }
}

Correct (entity contains only business rules):

class Invoice {
  id: string
  items: LineItem[]
  status: InvoiceStatus
  dueDate: Date

  calculateTotal(): Money {
    return this.items.reduce((sum, item) => sum.add(item.amount), Money.zero())
  }

  isOverdue(): boolean {
    return this.status === InvoiceStatus.Unpaid && new Date() > this.dueDate
  }

  markPaid(): void {
    if (this.status !== InvoiceStatus.Unpaid) {
      throw new InvalidOperationError('Invoice already processed')
    }
    this.status = InvoiceStatus.Paid
  }
}

Benefits:

  • Entity can be used in billing system, reporting system, mobile app
  • Business rules tested without database or email setup
  • Rules documented in one place, not scattered across application

Reference: Clean Architecture - Entities

Install with Tessl CLI

npx tessl i pantheon-ai/software-design-principles

SKILL-FULL.md

SKILL.md

tile.json