Use before implementing or refactoring software when the task requires designing module boundaries, APIs, layers, abstractions, services, repositories, adapters, or architecture. Helps coding agents reduce total system complexity by creating deep modules, hiding implementation knowledge, avoiding leakage and pass-through APIs, comparing alternative designs, documenting interfaces before coding, and critiquing existing architecture.
93
94%
Does it follow best practices?
Impact
93%
1.13xAverage score across 5 eval scenarios
Passed
No known issues
A product-notifications feature was split quickly into several classes. Adding a new quiet-hours rule now requires touching most of them, and callers must remember the order of calls. Redesign the module boundaries and provide a compact implementation sketch in Java or Kotlin-style pseudocode.
Produce notification_design.md, notification_api.pseudo, and architecture_result.md.
=============== FILE: current_design.txt ===============
NotificationParser.parse(rawRequest) -> NotificationData
NotificationValidator.validate(NotificationData, UserPreferences, Clock)
NotificationProcessor.process(NotificationData, templateId, locale, quietHoursEnabled)
NotificationSender.send(processedNotification, retryPolicy, providerClient)
NotificationResponseBuilder.build(providerResponse)
Callers currently run all five steps, pass locale/retryPolicy/providerClient through intermediate objects, and catch provider status codes directly.