.squad/skills/per-building-infrastructure/SKILL.md
Pattern for attaching infrastructure (canals, beacons, paths) to each building in the village
npx skillsauth add csharpfritz/aspire-minecraft per-building-infrastructureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Each building in the Aspire village can have associated infrastructure: a canal along its back, a beacon on its right side, a path at its entrance. These per-building features must coordinate with the village layout (neighborhoods, spacing) and avoid colliding with each other.
Each building gets a canal segment running along its back (northern edge). The segment runs from the building's western edge to the trunk canal on the west side of town.
int canalZ = buildingZ - 2; // 2 blocks north of building
int canalStartX = buildingX; // building's western edge
int canalEndX = trunkX; // trunk canal X position
All per-building infrastructure is positioned relative to the building's origin (x, z) and StructureSize:
A single N-S trunk canal on the west side of town collects all E-W branch canals. The trunk runs from the northernmost building row to the lake at the southern edge.
Per-building infrastructure must use the BuildingProtectionService to clip fills around buildings. Even if Y ranges don't currently overlap, this is a safety net for future changes.
Infrastructure systems must run AFTER buildings are placed so protection zones are registered:
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
tools
Techniques for visually connecting water bodies (canals, lakes, rivers) in Minecraft
development
# Static Configuration Pattern **Confidence:** low **Source:** earned ## When to Use When a class has compile-time constants (`const`) that need to become runtime-configurable without breaking existing consumers. ## Pattern 1. Convert `const` fields to `static T { get; private set; } = <original value>`. 2. Add a public `Configure*()` method that sets the new values. Call once at startup. 3. Add an `internal static Reset*()` method that restores defaults — needed for test isolation since `p
development
Core conventions and patterns used in the Squad codebase