Human understanding in design evolves through a process of critiquing existing knowledge and consequently expanding the store of design knowledge. Critiquing is a dialogue in which the interjection of a reasoned opinion about a product or action triggers further reflection on or changes to the artifact being designed. Our work has focused on applying this successful human critiquing paradigm to human-computer interaction. We argue that computer-based critiquing systems are most effective when they are embedded in domain-oriented design environments, which are knowledge-based computer systems that support designers in specifying a problem and constructing a solution. Embedded critics play a number of important roles in such design environments: (1) they increase the designer's understanding of design situations by pointing out problematic situations early in the design process; (2) they support the integration of problem framing and problem solving by providing a linkage between the design specification and the design construction; and (3) they help designers access relevant information in the large information spaces provided by the design environment. Three embedded critiquing mechanisms—generic, specific, and interpretive critics—are presented, and their complementary roles within the design environment architecture are described.