agentleFS
skycivskyciv/skyciv-ai-skills/section-selector/SKILL.md

section-selector

Skill11 starsChanged 32 days agoMITView on GitHub

You are a specialist in selecting the appropriate structural section from the SkyCiv section library to be used in the S3D model object. You will likely be given information from a user with (a) country where the structure is being built and (b) the preferred material. You may also be given specific sections to use. The name will likely not perfectly match the nomenclature of the SkyCiv library. You should then be very efficient at location the appropriate section from…

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    When using load_section, the material properties (E, Fy, density) still come from the materials entry — the section library only supplies …

    line 129
  2. Very specific:

    Columns under axial + bending: prefer W/UC/HD wide-flange shapes or square HSS — doubly symmetric, efficient for combined loading.

    line 327
  3. Very specific:

    When the user specifies a section by name: look it up verbatim in section_tree.json — don't guess the category.

    line 334

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Section Selection Skill

You are a specialist in selecting the appropriate structural section from the SkyCiv section library to be used in the S3D model object.

You will likely be given information from a user with (a) country where the structure is being built and (b) the preferred material. You may also be given specific sections to use. The name will likely not perfectly match the nomenclature of the SkyCiv library.

You should then be very efficient at location the appropriate section from the SkyCiv database and injecting it into the S3D model JSON.


Typical Section Format (for S3D Model)

You will mainly load in sections using this format:

    "sections": {
        "1": {
            "load_section": ["American", "AISC", "W shapes", "W14x22"],
            "material_id": 1
        }
    }

The strings in the array come directly from the names in section_tree.json, and the lookup is an exact string match — a near-miss doesn't fuzzy-resolve, it fails.

Building an S3D App or left-menu panel? Don't ship section_tree.json and don't make the user type the path. SB.library.getTree() returns the live library client-side and synchronously, in this same 4-level shape — drive four cascading dropdowns off it. See "Choosing sections" in s3d-apps. Server-side, the equivalent is the S3D.SB.getLibraryTree API function in s3d-api. section_tree.json here is the captured copy — the right tool for agent-time lookups and test fixtures.

Common Section Types and their Use Cases

Section typeTypical useShape description
Wide flange / I-beam (W, UB, IPE, HE, UB)Beams, columns, moment framesDoubly symmetric I-section; strong axis bending
HP / H-pile shapesBearing pilesCompact I with equal flange/web thickness
S / IPN beamsLegacy beams, crane runwaysTapered-flange I-section
Rectangular HSS / RHS / SHSColumns, hollow frames, trussesRectangular or square hollow section
Round HSS / CHS / PipeColumns, bracing, exposed architectural membersCircular hollow section
Channels (C, MC, PFC, UPE)Purlins, secondary beams, connection elementsSingle-axis symmetry channel
Equal angles (L, EA)Bracing, girts, connectionsEqual-leg angle
Unequal angles (L, UA)Eccentric bracing, connectionsUnequal-leg angle
Tees (WT, T, UBT, UCT)Chords of open-web trusses, connection teesT-section cut from I-beam
Cold-formed C / Z / lippedLight-framing studs, wall track, purlins, girtsThin-walled open section
Sawn / glulam / LVL timberFloor joists, rafters, postsRectangular solid or engineered wood
Aluminium I / channel / tubeLight-duty structures, architectural framingAs per steel shapes but aluminium alloy

Region → Standard Mapping

Choose the outermost two path components from the table below based on the project country:

Country / regionload_section path startNotes
United States["American", "AISC", ...]Standard steel database; also "ADM" for aluminium, "NDS" for timber
Australia["Australian", "Steel (300 Grade)", ...] or "Steel (250 Grade)"300 grade is the default; DuraGal for RHS/SHS/channels
United Kingdom["British", "Steel", ...]UC/UB/CHS/RHS; "Wood" sub-library available
Canada["Canadian", "CISC", ...]W/HP/WWF shapes; "CWC" for timber
Europe / Germany / France etc.["European", "Steel", ...]IPE, HE, HL, HD, UPN, UPE, EN 10210 hollow sections
India["Indian", "Steel", ...]MB/MC/ISA/ISMC sections
China["China", "Steel", ...]H/I/channel/angle/CHS/RHS
New Zealand["New Zealand", "Structural Steel", ...]UB/UC/PFC/CHS/RHS/SHS
Mexico["Mexican", "Steel", ...]IPR, canal, ángulo sections
South Africa["South African", "Steel", ...]IPE/I/H/channels

Finding the Exact Section Name

The load_section array is always four strings in the exact order they appear in section_tree.json:

[  Region,  Standard/Publisher,  Category,  Section name  ]

Examples across common regions:

Descriptionload_section array
US wide-flange beam["American", "AISC", "W shapes", "W18x35"]
US wide-flange column["American", "AISC", "W shapes", "W12x96"]
US rectangular HSS["American", "AISC", "Rectangular HSS", "HSS6x4x1/4"]
US round HSS["American", "AISC", "Round HSS", "HSS4.000x0.237"]
US standard pipe["American", "AISC", "Pipe", "Pipe3Std"]
US equal angle["American", "AISC", "Equal angles", "L4x4x1/2"]
US C channel["American", "AISC", "American standard channels", "C8x11.5"]
Australian UB beam["Australian", "Steel (300 Grade)", "Universal beams", "310 UB 32.0"]
Australian UC column["Australian", "Steel (300 Grade)", "Universal columns", "150 UC 23.4"]
Australian RHS["Australian", "Steel (300 Grade)", "RHS (Grade 350)", "100x50x3 RHS"]
Australian CHS["Australian", "Steel (300 Grade)", "CHS (Grade 350)", "88.9x3.2 CHS"]
British UB beam["British", "Steel", "Universal beams", "254x102 UB 22"]
British UC column["British", "Steel", "Universal columns", "203x203 UC 46"]
European IPE beam["European", "Steel", "IPE beams", "IPE 200"]
European HE column["European", "Steel", "Wide flange HE HL beams", "HE 200 B"]
European SHS["European", "Steel", "EN 10210-2 SHS", "SHS100x100x5.0"]
Canadian W shape["Canadian", "CISC", "W: Wide Flange", "W200x42"]

Exact string match required. Copy names character-for-character from section_tree.json. A mismatched space, capitalisation, or unit suffix will silently fail to load.


Injecting into the S3D Model

Sections object

Each section entry needs a material_id that must already exist in the model's materials object.

"sections": {
    "1": { "load_section": ["American", "AISC", "W shapes", "W18x35"], "material_id": 1 },
    "2": { "load_section": ["American", "AISC", "Rectangular HSS", "HSS6x4x1/4"], "material_id": 1 }
}

Matching material class to section library

Section libraryExpected material class
AISC, CISC, British Steel, European Steel, Australian Steel, etc."steel"
ADM (American), Australian Aluminium, NZ Aluminium"aluminium"
NDS, CWC, British Wood, Australian Timber, etc."wood"

When using load_section, the material properties (E, Fy, density) still come from the materials entry — the section library only supplies the geometric properties (A, Iz, Iy, J, etc.). Always define matching material properties alongside.

Typical material entries (imperial)

"materials": {
    "1": {
        "name": "Steel A992",
        "density": 490,
        "elasticity_modulus": 29000,
        "poissons_ratio": 0.3,
        "yield_strength": 50,
        "ultimate_strength": 65,
        "class": "steel"
    }
}

Typical material entries (metric)

"materials": {
    "1": {
        "name": "Steel 350 Grade",
        "density": 7850,
        "elasticity_modulus": 200000,
        "poissons_ratio": 0.3,
        "yield_strength": 350,
        "ultimate_strength": 480,
        "class": "steel"
    }
}

Concrete Sections

Concrete sections have no entry in the section library — always define them as template shapes using the info object. Do not use load_section for concrete.

Template shape format

"sections": {
    "1": {
        "material_id": 1,
        "info": {
            "shape": "rectangle",
            "dimensions": { "h": 600, "b": 400 }
        }
    }
}

S3D computes all geometric properties (A, Iz, Iy, J, shear areas) automatically from the dimensions. All dimension values are in the model's section_length units (default mm for metric, in for imperial).

Inside S3D (an S3D App or in-app script): S3D builds the section on the server, so the resolved properties only exist in a callback: S3D.API.API2S3D(apiModel, null, callback) or S3D.structure.set(model, null, true, callback). Never read area/Iz from a synchronous return. The same applies to load_section paths. See s3d-apps/references/resolving-sections.md.

Supported shapes and their dimension keys

Dimension keys are case-sensitive and must match exactly. A wrong key (for example d instead of D for a circle) does not resolve, and the section comes back without properties. r is the corner or root radius; use 0 for none.

shape string (aliases)dimensions keysTypical use
"rectangle"h (depth), b (width)Concrete beams, rectangular columns
"hollow rectangle"h (depth), b (width), t (thickness), r (radius)Box sections, hollow piers
"circle"D (diameter, capital D)Circular columns, piles
"hollow circle"D (diameter, capital D), t (thickness)Hollow circular columns, pipes
"ibeam" ("ishape", "i")TFw (top flange width), TFt (top flange thickness), BFw (bottom flange width), BFt (bottom flange thickness), h (total height), Wt (web thickness), r (radius)Precast I-girders
"tbeam" ("teeshape", "tshape", "tee", "t")TFw (top width), TFt (top thickness), h (total height), Wt (web thickness), r (radius)T-beams
"lbeam" ("angle", "l")BFw (bottom width), BFt (bottom thickness), h (total height), LFt (left thickness), r (radius)L-beams, angles
"channel" ("c")h (total height), TFw (top width), TFt (top thickness), BFw (bottom width), BFt (bottom thickness), Wt (web thickness), r (radius)Channels
"lipped channel"h, TFw, TFt, BFw, BFt, Wt, d (lip depth), rCold-formed lipped channels
"zshape" ("z", "zsection")h (total height), TFw (top width), BFw (bottom width), t (thickness), r (radius)Z sections
"lipped zshape" ("lipped z", "zsectionLipped")h, TFw, BFw, t, gamma (lip bend angle), d (lip length), rCold-formed lipped Z purlins
"lipped angle"h (total height), BFw (bottom width), t (thickness), d (lip depth), r (radius)Cold-formed lipped angles
"lipped channel box"h (depth), b2 (width 2), b (width), t (thickness), d (lip depth), r (radius)Cold-formed box sections

Convention: h is the overall depth in the plane of bending. If the member bends about its strong axis, h should be the deeper dimension.

Steel sections that are stocked in the library (W, UB, SHS, RHS, CHS, …) should still use load_section. Use the template shapes for concrete, and for steel or cold-formed sizes the library doesn't stock.

Worked examples (metric, mm)

"sections": {
    "1": {
        "material_id": 1,
        "info": { "shape": "rectangle", "dimensions": { "b": 300, "h": 600 } }
    },
    "2": {
        "material_id": 1,
        "info": { "shape": "circle", "dimensions": { "D": 500 } }
    },
    "3": {
        "material_id": 1,
        "info": { "shape": "rectangle", "dimensions": { "b": 500, "h": 500 } }
    }
}

Worked examples (imperial, in)

"sections": {
    "1": {
        "material_id": 1,
        "info": { "shape": "rectangle", "dimensions": { "b": 12, "h": 24 } }
    },
    "2": {
        "material_id": 1,
        "info": { "shape": "circle", "dimensions": { "D": 18 } }
    }
}

Concrete material properties

Pair each section with a material whose class is "concrete". elasticity_modulus depends on the design code as well as the grade, so take it from the table for the user's code. yield_strength and ultimate_strength are set to the characteristic strength (fck or f'c). poissons_ratio is 0.2. Density is 2500 kg/m³ for reinforced concrete.

Eurocode, EN 1992-1-1 (MPa). The grade is cylinder / cube strength, so C30/37 has fck = 30.

Gradefck (MPa)Ecm (MPa)
C20/252030 000
C25/302531 000
C30/373033 000
C35/453534 000
C40/504035 000
C45/554536 000
C50/605037 000

Australia, AS 3600 (MPa).

Gradef'c (MPa)Ec (MPa)
N252526 700
N323230 100
N404032 800
N505034 800
65 MPa6537 400

US, ACI 318, metric (MPa). Ec = 4700√f'c.

f'c (MPa)Ec (MPa)
2523 500
3025 700
3527 800
4029 700
"materials": {
    "1": {
        "name": "Concrete C30/37 (EN 1992)",
        "density": 2500,
        "elasticity_modulus": 33000,
        "poissons_ratio": 0.2,
        "yield_strength": 30,
        "ultimate_strength": 30,
        "class": "concrete"
    }
}

Imperial (ksi, lb/ft³):

Gradef'c (psi)Ec = 57000√f'c (ksi)density (lb/ft³)
3000 psi30003122150
4000 psi40003605150
5000 psi50004031150

The 150 lb/ft³ density is for reinforced concrete; plain concrete is about 145.

"materials": {
    "1": {
        "name": "Concrete 4000 psi",
        "density": 150,
        "elasticity_modulus": 3605,
        "poissons_ratio": 0.2,
        "yield_strength": 4,
        "ultimate_strength": 4,
        "class": "concrete"
    }
}

Design Guidance — Selecting the Right Section

  • Columns under axial + bending: prefer W/UC/HD wide-flange shapes or square HSS — doubly symmetric, efficient for combined loading.
  • Primary beams (strong-axis bending): W/UB/IPE I-sections — maximise Iz.
  • Bracing diagonals: round or square HSS, angles, or rods — compact, symmetric, efficient in tension/compression.
  • Purlins / girts (secondary, single-span): cold-formed C or Z; for heavier loads use PFC/MC channels.
  • Truss chords: W or WT tees; for lighter trusses use angles (back-to-back or single).
  • Concrete beams: "rectangle" template, b = width, h = depth; deeper is stronger in bending.
  • Concrete columns: "rectangle" for square/rectangular; "circle" (key D) for circular; keep the smallest dimension ≥ 300 mm (12 in).
  • When the user specifies a section by name: look it up verbatim in section_tree.json — don't guess the category.
  • When the user specifies only depth (e.g. "a 200mm deep I-beam"): pick the lightest standard section at or above that depth in the appropriate regional library.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.