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?
Evaluation — 99%
↑ 1.01xAgent success when using this tile
Validation for skill structure
Your team is designing a notification system for a social media platform. When users create posts, the system needs to notify followers, update recommendation engines, trigger content moderation, and send push notifications to mobile apps.
Currently, the system makes direct synchronous API calls to each service, but this is causing performance bottlenecks and reliability issues when downstream services are slow or unavailable.
The team is debating between three approaches:
You need to make an architectural decision and document it properly using ADR format.
Create an architecture decision record called adr-001-notification-architecture.md that:
The ADR should follow standard format: Status, Context, Decision, Alternatives, Consequences, and Validation.
=============== FILE: current-notification.ts =============== export class NotificationService { constructor( private followerService: FollowerService, private recommendationService: RecommendationService, private moderationService: ModerationService, private pushService: PushNotificationService ) {}
async notifyPostCreated(post: Post): Promise<void> { // All synchronous - blocks user experience const followers = await this.followerService.getFollowers(post.authorId);
// These calls can take 200ms each - user waits 800ms+
await this.recommendationService.updateFor(post);
await this.moderationService.scanContent(post);
await this.pushService.notifyFollowers(followers, post);
// If any service fails, entire operation fails} }
=============== FILE: performance-metrics.md ===============
Install with Tessl CLI
npx tessl i pantheon-ai/software-design-principlesevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
references