← Skills

SIP Decomposition

Native Read-only

Agent naming conventions, dependency ordering, coordinate system, and decomposition rules for SIP building manifests. Injected at manifest_generation and design_spec_generate.

/skills/sip_decomposition.md

Estimated tokens
1355
Characters
5418
Source
Native

Markdown

# SIP Building Decomposition Skill

This skill is used during **manifest generation and design spec creation**. It covers how to decompose a SIP building brief into a set of component agents, naming conventions, ordering rules, and coordinate system. It does not contain FreeCAD construction geometry — that is in the domain-specific skills (sip_walls, sip_roofs, etc.).

---

## When to Apply

Apply this skill when the project involves SIP construction: garden rooms, sheds, studios, cabins, or any non-habitable structure where walls and roof are built from structural insulated panels. If the brief mentions "SIP", "structural insulated panel", "wall panel", or "roof panel", this skill applies.

---

## Complete SIP Building — Required Agents

A complete SIP building manifest MUST include all of the following agent types. A manifest missing any of these is incomplete.

| Agent type | Required count | Purpose |
|---|---|---|
| `foundation` | exactly 1 | Concrete slab or strip foundation |
| `*_wall` | 4 (all perimeter walls) | South, north, east, west walls |
| `*_roof` | 1+ (depends on roof type) | Roof assembly |
| (fasteners — deferred) | — | Structural fixings (future) |

**All four perimeter walls are mandatory.** A brief that mentions only one wall means the other three must still be included. A manifest with fewer than four wall agents is wrong.

---

## ⚠ NON-NEGOTIABLE: Agent Naming

These naming rules are enforced by validators. Violating them produces validation failures.

### Foundation agent

The foundation agent MUST be named exactly:

```
"agent_id": "foundation"
```

The following names are **FORBIDDEN** — they will fail validation:

- ❌ `concrete_slab`
- ❌ `slab`
- ❌ `strip_foundation`
- ❌ `foundation_slab`
- ❌ `base_plate` or `base_plate_*`
- ❌ `foundation_front`, `foundation_south`, `foundation_north`, etc.

**There is exactly one foundation agent and its id is `foundation`.** No exceptions.

**Wrong:**
```json
{ "agent_id": "concrete_slab", "role": "foundation" }
```

**Correct:**
```json
{ "agent_id": "foundation", "role": "foundation" }
```

### Wall agents

Wall agents use directional names: `south_wall`, `north_wall`, `east_wall`, `west_wall`.

For buildings with multiple wall panels on one face, the wall agent still represents the full assembled wall — panel splitting happens inside the component, not as separate agents.

### Roof agents

Use descriptive names: `flat_roof`, `mono_pitch_roof`, `gable_roof_south`, `gable_roof_north`.

---

## Agent Dependency Ordering

Dependencies define which agents must complete before others can start. Always declare:

```json
{
  "agent_id": "south_wall",
  "dependencies": ["foundation.dimensions"]
}
```

Standard ordering:
1. `foundation` — no dependencies
2. All four walls — depend on `foundation.dimensions`
3. Roof — depends on all four walls (e.g. `south_wall.top_plate`, `north_wall.top_plate`)

---

## Panel Size Limits — When to Split Agents vs. Split Panels

Standard SIP stock: **2440mm × 1220mm**. The 2440mm is the span limit; 1200mm is the standard panel width.

**Panels within a single wall/roof agent are always split** — a 6m wall uses five 1200mm panels joined by splines. This splitting happens inside the component code, not as separate agents.

**Agent splitting** is only needed if the design is inherently multi-section (e.g. two roof slopes for a duo-pitch). One wall = one agent regardless of length.

---

## MANDATORY: Design Spec `"roof"` Section

Every SIP design spec **MUST** include a top-level `"roof"` object. Without it the profile validator fires a warning on every generation and downstream component agents have no authoritative roof type.

| Roof type | `roof_type_key` | `roof_structure_key` |
|-----------|-----------------|----------------------|
| Flat / warm deck | `"flat"` | `"roof_structure/sip_flat_warm_roof"` |
| Mono-pitch | `"mono_pitch"` | `"roof_structure/sip_mono_pitch_panels"` |
| Duo-pitch gable | `"duo_pitch"` | `"roof_structure/sip_simple_gable_panels"` |

Example for a duo-pitch gable garden room:

```json
"roof": {
  "roof_type_key": "duo_pitch",
  "roof_structure_key": "roof_structure/sip_simple_gable_panels",
  "pitch_degrees": 20,
  "ridge_direction": "east_west"
}
```

**Non-negotiable:** A design spec with no `roof` section will always produce a validation warning. Include the `roof` object even when the brief does not specify a pitch angle — default to `pitch_degrees: 20` for duo-pitch, `pitch_degrees: 5` for mono-pitch, and omit `pitch_degrees` for flat.

---

## Coordinate System

All components share a common building coordinate system:

```
Origin (0, 0, 0) = SW corner of building footprint at Z = 0 (top of slab / floor level)
X-axis = East (along building width, BUILDING_WIDTH)
Y-axis = North (along building depth, BUILDING_DEPTH)
Z-axis = Up (vertical)
```

The foundation agent defines the global footprint. All wall and roof agents must use the same BUILDING_WIDTH, BUILDING_DEPTH, and PANEL_THICKNESS as the foundation.

Key shared variables declared in the manifest (all agents must agree on these):

| Variable | Where set | Consumed by |
|---|---|---|
| `BUILDING_WIDTH` | foundation | all walls, roof |
| `BUILDING_DEPTH` | foundation | all walls, roof |
| `PANEL_THICKNESS` | design spec | all walls, roof positioning |
| `WALL_HEIGHT` | wall agents | roof eave height |
| `EAVE_HEIGHT` | derived | roof slopes |
v0.0.170