Install
openclaw skills install @starsy/wall-mounted-faucet-layout-skillCalculate, validate, and visualize wall-mounted faucet installation geometry, especially faucet reach L and outlet height H1 for product selection. Use when an agent needs to solve or check faucet reach, outlet height, basin depth, stream angle, wall setback, or drain position from K, W/WS, L, H1, H2, and theta, or generate an annotated SVG diagram for the result.
openclaw skills install @starsy/wall-mounted-faucet-layout-skillSource: https://github.com/starsy/wall-mounted-faucet-layout-skill
Diagram reference:
assets/wall_mounted_faucet_geometry_v2.svgassets/wall_mounted_faucet_geometry_v2_zh.svgUse this skill to calculate or validate the installation geometry of a wall-mounted faucet and basin.
Most faucet-selection questions should focus on:
L: required faucet reach, when the basin/drain geometry and desired outlet height are knownH1: required outlet height above the basin rim, when a candidate faucet reach is knownIt can solve for:
H1: vertical distance from the basin rim to the faucet outletL: horizontal reach of the faucet outlet from the finished wallWS: horizontal distance from the rear inner basin wall to the drain centertheta: water-flow angle measured from the verticalK: horizontal distance from the finished wall to the rear inner basin wallH2: vertical depth from the basin rim reference line to the target point at the drainIt can also use W, the front-to-back inner basin width, to assume a centered drain when WS is not supplied.
All linear measurements must use the same unit.
theta is measured from the vertical direction.theta means the water points forward, away from the wall.| Symbol | Meaning |
|---|---|
K | Finished wall to rear inner basin wall |
W | Front-to-back inner width of the basin |
WS | Rear inner basin wall to drain center |
L | Finished wall to faucet outlet |
H1 | Basin rim to faucet outlet, vertically upward |
H2 | Basin rim to drain target point, vertically downward |
theta | Water angle from vertical, in degrees |
If the drain is centered:
[ WS = \frac{W}{2} ]
Prefer solving for L or H1 when the user is choosing a faucet:
L when the user knows the desired outlet height or wall rough-in height. Use the result to compare against faucet reach/spec-sheet projection from the finished wall to the outlet.H1 when the user has a candidate faucet reach L. Use the result to decide whether the outlet height above the basin rim is practical.H1 + H2 as a fixed recommended value. It is the vertical drop required by the selected horizontal geometry and stream angle.L first.H1 first.Horizontal offset:
[ \Delta x = K + WS - L ]
Vertical drop:
[ \Delta y = H1 + H2 ]
Core relationship:
[ \tan(\theta)=\frac{K+WS-L}{H1+H2} ]
This models the water path as a straight centerline. Real water flow curves under gravity and varies with pressure, aerator design, and flow rate.
H1[ H1=\frac{K+WS-L}{\tan(\theta)}-H2 ]
L[ L=K+WS-(H1+H2)\tan(\theta) ]
WS[ WS=L-K+(H1+H2)\tan(\theta) ]
theta[ \theta=\arctan\left(\frac{K+WS-L}{H1+H2}\right) ]
Convert the result to degrees.
K[ K=L-WS+(H1+H2)\tan(\theta) ]
H2[ H2=\frac{K+WS-L}{\tan(\theta)}-H1 ]
L or H1 unless the user explicitly asks for another variable.theta is measured from the vertical.WS; orWS is absent and W is supplied, set WS = W / 2.scripts/render_geometry_svg.py.0° < theta < 90° for forward flow.W is known, require 0 < WS < W.H1 < 0, the geometry or reference lines are incompatible.K + WS - L < 0, the target point lies behind the outlet under this coordinate convention.Reverse-check the result by substituting it into:
[ \tan(\theta)=\frac{K+WS-L}{H1+H2} ]
If W is known, report the drain offset from basin center:
[ \text{center offset}=WS-\frac{W}{2} ]
For fixed K, WS, H2, and theta:
[ \frac{\partial H1}{\partial L}=-\frac{1}{\tan(\theta)} ]
At theta = 10°:
[ \frac{1}{\tan(10^\circ)}\approx5.67 ]
So increasing L by 1 cm lowers theoretical H1 by about 5.67 cm.
Known:
K = ...
WS = ... (or W = ... and WS = W/2)
H1 = ...
H2 = ...
L = ...
theta = ... degrees
Formula:
[target formula]
Substitution:
[...]
Result:
[target] = ... [unit]
Selection guidance:
- If solving L: compare this against faucet reach/spec-sheet projection from finished wall to outlet.
- If solving H1: compare this against the desired outlet height above the basin rim and available wall rough-in.
Validation:
- Horizontal offset Δx = ...
- Vertical drop Δy = ...
- Reverse check = ...
- Drain offset from basin center = ... (when W is known)
Practical note:
This is a straight-line geometric estimate. Confirm with a full-scale mock-up or water-flow test.
When the user asks for a visual, diagram, annotated layout, client handoff, or installer handoff, render a custom SVG with the included script. Use the same inputs and target variable that you used for the numeric calculation.
python scripts/render_geometry_svg.py --solve L --K 5 --WS 20 --H1 15 --H2 14 --theta 10 --unit cm --output faucet-layout.svg
The generated SVG marks the supplied dimensions, solved value, horizontal offset, vertical drop, reverse-check angle, and practical warning note directly in the diagram. Prefer writing the output to a user-visible path named for the project or scenario.
LGiven K=5 cm, WS=20 cm, H1=15 cm, H2=14 cm, theta=10°:
[ L=5+20-(15+14)\tan(10^\circ)\approx19.89\text{ cm} ]
Interpretation: choose a faucet whose outlet projects about 19.9 cm from the finished wall, then verify with real water flow.
H1Given K=5 cm, W=40 cm, H2=14 cm, L=20.5 cm, theta=10°:
[ WS=20 ]
[ H1=\frac{5+20-20.5}{\tan(10^\circ)}-14\approx11.52\text{ cm} ]
Interpretation: this faucet reach works geometrically if the outlet can sit about 11.5 cm above the basin rim.
H1Given K=5 cm, WS=20 cm, H2=14 cm, L=16 cm, theta=10°:
[ H1=\frac{5+20-16}{\tan(10^\circ)}-14\approx37.04\text{ cm} ]
The large result is expected because a 10-degree stream is close to vertical.
WSGiven K=5 cm, H1=15 cm, H2=14 cm, L=20.5 cm, theta=10°:
[ WS=20.5-5+(15+14)\tan(10^\circ)\approx20.61\text{ cm} ]
For W=40 cm, the drain is approximately 0.61 cm forward of center.
Prefer deterministic calculation with the included script. Do not estimate trigonometric values mentally when exact dimensions matter.
The script calculates with full floating-point precision internally, then prints practical engineering precision by default:
--unit mm: whole millimeters--unit cm: 0.1 cm--unit m: 0.001 m0.1°Use --precision or --angle-precision only when the user explicitly needs a different display precision.
Reference calculator:
scripts/faucet_geometry.py
Reference visual renderer:
scripts/render_geometry_svg.py
Primary calculator commands:
python scripts/faucet_geometry.py --solve L --K 5 --WS 20 --H1 15 --H2 14 --theta 10 --unit cm
python scripts/faucet_geometry.py --solve H1 --K 5 --W 40 --H2 14 --L 20.5 --theta 10 --unit cm