While the informal style used to describe design patterns has proven valuable, it is also imprecise. To ensure that patterns are applied correctly, we must also have precise pattern characterizations, and tools for determining whether the appropriate implementation requirements are satisfied. To address this problem, we first present a specification language that captures pattern requirements precisely, as well as the ways in which patterns are specialized for use. Second, we present a tool that generates a set of aspect-oriented monitors for a system based on the specifications of the patterns used in its design. The generated aspects are used to monitor the system at runtime to determine whether the appropriate implementation requirements are satisfied.