.squad/skills/building-protection/SKILL.md
Prevents subsystems from modifying blocks within placed building volumes using 3D bounding box clipping
npx skillsauth add csharpfritz/aspire-minecraft building-protectionInstall 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.
When multiple subsystems modify the Minecraft world (buildings, canals, rails, paths), later systems can accidentally destroy blocks placed by earlier ones. The BuildingProtectionService provides a central registry of 3D bounding boxes that other subsystems must respect.
After a building is constructed, register its 3D bounding box with the protection service. Include buffer zones for entrances and aesthetic spacing.
// Registration in StructureBuilder after building construction
protectionService.Register(
resourceName,
minX: x - 1, // 1-block buffer on sides
minY: surfaceY, // ground level
minZ: z - 2, // 2-block entrance buffer (south)
maxX: x + StructureSize,
maxY: surfaceY + 25, // full building height
maxZ: z + StructureSize
);
When a subsystem needs to /fill an area that might overlap buildings, use ClipFill to get non-overlapping sub-boxes.
var subBoxes = protectionService.ClipFill(minX, minY, minZ, maxX, maxY, maxZ);
foreach (var (bMinX, bMinY, bMinZ, bMaxX, bMaxY, bMaxZ) in subBoxes)
{
await rcon.SendCommandAsync(
$"fill {bMinX} {bMinY} {bMinZ} {bMaxX} {bMaxY} {bMaxZ} minecraft:air");
}
SubtractBox yields up to 6 non-overlapping remainder sub-boxes when removing a protected region from a fill volume:
Buildings must be placed BEFORE canals/rails so the protection registry is populated when those systems run.
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