
48 P.3d 372 (2002)
112 Wash.App. 277
Julia SMITH and Huffman Smith, husband and wife; Ron Spahman and Jodi Spahman; and Michael Lowry and Kim Lowry, on behalf of themselves and all others similarly situated, Respondents/Cross-Appellants,
v.
CITY OF KELSO, a municipal corporation, Appellant/Cross-Respondent.
No. 26447-1-II.
Court of Appeals of Washington, Division 2.
June 21, 2002.
*373 Donald L. Law, Olympia, for Appellant.
Steve W. Berman, Seattle, for Respondents.
ARMSTRONG, J.
A group of homeowners sued the City of Kelso after a severe landslide damaged or destroyed their homes. The homeowners allege that the City negligently approved the plat and building permit applications for their subdivisions and homes. They argue that the City failed to enforce ordinances requiring it to order soil and geology studies, which likely would have revealed the potential for landslides. The City moved for summary judgment, which the trial court granted on some claims and denied on others. We accepted the parties' cross motions for discretionary review and hold that the trial court should have dismissed all of the homeowners' claims.

FACTS
After three years of unusually heavy rainfall, a severe landslide damaged or destroyed about 150 homes in Kelso, Washington in 1998. The homes were in five subdivisions known as Aldercrest Phases 1, 2, and 3, Greenwood Court,[1] and Orchard Heights, known collectively as Aldercrest Hills. Many of the homeowners joined a class action lawsuit against the City of Kelso. They alleged that, during the 1970's, the City negligently approved the plats and building permits for their subdivisions.
The City moved for summary judgment, which the trial court granted or denied for each claim based on whether the homeowners had presented evidence that the City had actual knowledge of slope instability when it approved each plat and building permit. The trial court focused on two pieces of evidence that show the City's awareness of slope instability in Aldercrest Hills.
First, in 1973, geologist Allen Fiksdal prepared a report on slope stability in the Kelso area, including Aldercrest Hills. Fiksdal's report rated slope stability in specific areas on a scale from 1 to 5. Class 1 was the most stable; Class 5 was the least stable. Fiksdal rated Aldercrest Phase 1 as Class 1, Aldercrest Phase 2 as Class 3, Aldercrest Phase 3 as Class 1, and Orchard Heights as Class 5. The first record of the City's knowledge of the Fiksdal report appears in the minutes of a February 1975 city council meeting, which Paul Anstey, the city engineer, attended.
*374 Second, in 1979, a subsequent city engineer, Greg Wilder, voiced concerns about slope stability. Wilder rejected plans for a road leading to the Aldercrest subdivisions based on concerns about a landslide hazard in Aldercrest Phase 3. He recommended that all building in Phase 3 stop. But the city council overrode his rejection of the road plans, and building in Phase 3 continued.
The trial court concluded that, after receiving Fiksdal's report in 1975, the City had actual knowledge of slope instability for any areas that Fiksdal rated in Classes 3, 4, or 5. And the court concluded that, after city engineer Wilder's statements in 1979, the City had actual knowledge of a landslide hazard in Phase 3. The court's rulings can be summarized as follows:

Aldercrest Phase 1 (and Greenwood Court): The court granted summary judgment on the plat approval and building permit claims. Final plat approval was in 1973, and the City was unaware of slope instability even after February 1975 because Fiksdal rated Phase 1 as Class 1. The court denied summary judgment on a claim that the failure to address slope instability in Phase 2 worsened the landslide damage in Phase 1.

Aldercrest Phase 2: The court denied summary judgment on the plat approval and building permit claims. Fikdsal rated Phase 2 as primarily Class 3, and the plat and building permits were approved after February 1975.

Aldercrest Phase 3: Even though Fiksdal rated Phase 3 as Class 1, city engineer Wilder expressed his awareness of slope instability in 1979. Thus, the court granted summary judgment for plat approval, which occurred before 1979, and denied summary judgment for building permits issued after 1979.

Orchard Heights: The court denied summary judgment for plat approval and building permits. Final plat approval was in 1976 and Fiksdal rated the area as Class 5.
We accepted each party's petition for discretionary review of the summary judgment order.[2]

ANALYSIS
We review a summary judgment order de novo, engaging in the same inquiry as the trial court. Wilson v. Steinbach, 98 Wash.2d 434, 437, 656 P.2d 1030 (1982). Summary judgment is proper if no genuine issues of material fact exist and the moving party is entitled to judgment as a matter of law. CR 56(c); Wilson, 98 Wash.2d at 437, 656 P.2d 1030. The court construes the facts and all reasonable inferences in the light most favorable to the nonmoving party. Wilson, 98 Wash.2d at 437, 656 P.2d 1030.
To prove negligence, a plaintiff must show that the defendant (1) had a duty to the plaintiff, (2) breached that duty, and (3) proximately caused the plaintiff's injuries by the breach. Hertog v. City of Seattle, 138 Wash.2d 265, 275, 979 P.2d 400 (1999). Whether a duty exists is a question of law. Hertog, 138 Wash.2d at 275, 979 P.2d 400.
The City argues that the public duty doctrine shields it from liability. Under the public duty doctrine, the government is liable for a public official's negligence only if the official breaches a duty owed to the injured person as an individual, rather than the public in general. Taylor v. Stevens County, 111 Wash.2d 159, 163, 759 P.2d 447 (1988). A public official owes a duty to an individual if (1) the official has a duty to enforce a statute, (2) the official has actual knowledge of a statutory violation, (3) the official fails to correct the violation, and (4) the plaintiff is within the class the statute protects. Bailey v. Forks, 108 Wash.2d 262, 268, 737 P.2d 1257 (1987). This is the "failure to enforce" exception to the public duty doctrine.
*375 Courts construe the failure to enforce exception narrowly. Atherton Condo. Apt.-Owners Ass'n Bd. of Dirs. v. Blume Dev. Co., 115 Wash.2d 506, 531, 799 P.2d 250 (1990). The statute must create a mandatory duty to take specific action to correct a violation. Forest v. State, 62 Wash.App. 363, 369, 814 P.2d 1181 (1991). Such a duty does not exist if the statute vests the public official with broad discretion. Forest, 62 Wash.App. at 370, 814 P.2d 1181. Where the plaintiff alleges a breach of a duty to enforce a building code, the plaintiff must establish actual knowledge that the violation is an inherently dangerous condition. Taylor, 111 Wash.2d at 171-72, 759 P.2d 447.
A. Negligent Plat Approval
The homeowners rely on Kelso Municipal Code (KMC) 13.04.516 for their negligent plat approval claims. KMC 13.04.516 requires the city engineer to prepare development standards based on the topography, soil conditions, and geology of the plat area:
The city engineer shall prepare minimum installation, material, design and construction standards appropriate to the locality and the topography, soil conditions and geology of the area in which the plat is located. Said standards shall be made available to the subdivider and his agent within ten days after receipt of the proposed plat by the commission.
CP at 193. The homeowners contend that this ordinance required the City to prepare site-specific standards and that the City could not have prepared such standards without a soil and geology study. They emphasize the mandatory language of the ordinance. The City argues that this ordinance creates only an administrative duty, not an enforceable development regulation.
In previous failure to enforce cases, the plaintiffs relied on statutes and ordinances that prohibited specific conduct and required a public official to take specific action to correct a violation. For example, Division One held that an ordinance regulating furnace installations supported liability in Waite v. Whatcom County, 54 Wash.App. 682, 688, 775 P.2d 967 (1989). There, a county inspector; failed to correct a violation of a code prohibiting installation of a propane furnace in a basement, and the homeowner sued the county when the furnace exploded. Waite, 54 Wash.App. at 684, 775 P.2d 967.
And our Supreme Court upheld municipal liability in Campbell v. City of Bellevue, 85 Wash.2d 1, 13, 530 P.2d 234 (1975). There, an ordinance required the electrical inspector to disconnect nonconforming lighting systems. Campbell, 85 Wash.2d at 6, 13, 530 P.2d 234. When he noticed underwater wiring and lighting in a creek, the inspector left a note for the owner but did not disconnect the wiring. A boy was severely injured and his mother died as a result of the wiring. Campbell, 85 Wash.2d at 3-4, 530 P.2d 234.
The Supreme Court has also held that a municipality could be liable for a police officer's failure to detain an intoxicated driver. Bailey v. Town of Forks, 108 Wash.2d 262, 271, 737 P.2d 1257 (1987). In Bailey, a police officer saw an intoxicated man driving from a bar just before he caused an accident that killed one person and seriously injured another. Bailey, 108 Wash.2d at 264-65, 737 P.2d 1257. The plaintiff relied on a statute that required a police officer to detain a publicly incapacitated individual. Bailey, 108 Wash.2d at 269, 737 P.2d 1257. The court held that the police officer had a duty to detain the intoxicated driver if it was reasonable to do so under the circumstances.
In each case, the statute or ordinance regulated public conduct, such as installing a propane furnace in a basement, installing underwater wiring, and driving while intoxicated. And a statute or ordinance then obligated a government agency to take specific action to correct a violation of the law. Here, KMC 13.04.516 obligates the city engineer to prepare design and construction standards, but it does not regulate public conduct; it requires nothing of developers or homeowners. Thus, the ordinance sets no requirements that the City can enforce against a developer or homeowner; a developer or homeowner cannot violate this ordinance. Because of this, the City cannot fail to enforce anything.
Moreover, even if we consider the ordinance to fit within the failure to enforce *376 exception, the language is not specific enough to enforce. The homeowners are correct that the ordinance requires the city engineer to prepare standards; it says the engineer "shall" prepare standards, and we generally construe "shall" to be mandatory. See Washington State Coalition for the Homeless v. Dep't of Social & Health Servs., 133 Wash.2d 894, 907-08, 949 P.2d 1291 (1997). But the specific design and construction standards lie within the city engineer's discretion, and he did not require site-specific soil studies. Although the homeowners contend he should have, the ordinance creates no duty to enforce any specific requirements.
We conclude that the City owed no duty to the homeowners under KMC 13.04.516. Consequently, the City was entitled to summary judgment on all of the homeowners' negligent plat approval claims.
B. Negligent Building Permit Approval
The homeowners also claim the City owed them a duty under Uniform Building Code (UBC) section 2903(a). This code requires the developer to submit a soils investigation before issuing a building permit. UBC section 2903(a) regulates excavations and fills for buildings:
Excavation or fills for buildings or structures shall be so constructed or protected that they do not endanger life or property.
Slopes for permanent fills shall not be steeper than 2 horizontal to 1 vertical. Cut slopes for permanent excavations shall be not steeper than 2 horizontal to 1 vertical unless substantiating data justifying steeper cut slopes are submitted. Deviation from the foregoing limitations for cut slopes shall be permitted only upon the presentation of a soil investigation report acceptable to the building official.
. . .
Fills to be used to support the foundations of any building or structure shall be placed in accordance with accepted engineering practice. A soil investigation report and a report of satisfactory placement of fill, both acceptable to the building official, shall be submitted.
CP at 212.
UBC section 2903(a) requires a developer to submit a soil investigation report in two circumstances. The first is when the developer will cut a permanent slope steeper than two horizontal units to one vertical unit. The second is when the foundation of a building will rest on fill. The homeowners argue that they have presented evidence of these circumstances. They point to their experts' declarations that the City had a duty to require a soil investigation, at least after it obtained the Fiksdal report. And they point to declarations indicating that many areas in the subdivisions required excavation and fill.
But the materials presented to survive summary judgment must provide "specific facts" that support the plaintiff's claims. CR 56(e). Here, the evidence shows, at most, that some land was excavated and some areas required fill. The homeowners presented no evidence that a developer cut a slope steeper than two to one or that the foundation of any specific structure was built on fill. We conclude that the evidence is not specific enough to save the homeowners' claims from summary judgment.
Moreover, even if the homeowners presented specific evidence of steep excavations or homes built on fill, the UBC did not require the City to take specific action to correct a violation. Unlike KMC 13.04.516, this provision requires something of the developer in certain circumstances: a soil investigation report. But while the City might have learned about slope instability from a soil investigation, had one been required or submitted, the failure to enforce exception requires actual knowledge of a violation. And even if the City knew about steep excavations or homes built on fill, UBC section 2903(a) does not require the City to take specific action based on a soil investigation. Rather, the building official has discretion to determine whether a soil investigation report is "acceptable."
We conclude that the City owed no duty to the homeowners under UBC section 2903(a). Again, the City was entitled to summary *377 judgment on all the homeowners' negligent building permit approval claims.

CONCLUSION
The homeowners fail to establish that the City owed them a duty under the ordinances on which they rely. Thus, none of their claims should have survived summary judgment. We remand to the trial court to dismiss all of the homeowners' remaining claims.
We concur: SEINFELD, J., and HUNT, C.J.
NOTES
[1]  The trial court combined Greenwood Court and the adjacent Aldercrest Phase 1 for the summary judgment ruling.
[2]  We ordinarily will not review a denial of a motion for summary judgment. RAP 2.2(a); Sea-Pac Co. v. United Food & Commercial Workers Local Union 44, 103 Wash.2d 800, 801-02, 699 P.2d 217 (1985). But the parties stipulated and the trial court found that the case "involves a controlling question of law as to which there is substantial ground for a difference of opinion and that immediate review of the order may materially advance the ultimate termination of the litigation." RAP 2.3(b).
