ghbalf/freecad-ai/enclosure

Claude Code and agent skill by ghbalf/freecad-ai

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Generate a parametric electronics enclosure with a base and lid.

Install

npx vskill@latest install ghbalf/freecad-ai/enclosure

SKILL.md

Enclosure Generator

Generate a parametric electronics enclosure with a base and lid.

Parameters to extract from user request

  • L, W, H: outer length, width, height in mm
  • T: wall thickness (default 2mm)
  • Lid type: "screw" (default), "press-fit" (lip only), or "snap-fit" (lip + ridge + snap tabs)
  • Post radius: screw post outer radius (default 3mm) — only for screw lid
  • Screw size: M3 by default (hole r=1.5mm, clearance r=1.75mm) — only for screw lid

Construction steps (use these exact dimensions)

Variables: L=length, W=width, H=height, T=wall_thickness, PR=post_radius (3mm)

1. Base body
  • create_body label="EnclosureBase"
2. Outer shell
  • create_sketch on XY, body_name="EnclosureBase": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=H, body_name="EnclosureBase"
3. Interior pocket (from the TOP face)
  • create_sketch on XY, offset=H, body_name="EnclosureBase": rectangle x=T, y=T, width=L-2T, height=W-2T
  • pocket_sketch length=H-T, body_name="EnclosureBase"
  • This creates the hollow from z=T to z=H (floor thickness=T at bottom, open at top)
4–5. Screw posts and holes (SCREW LID ONLY — skip for snap-fit)

Post centers must be far enough from walls so they don't protrude:

  • Center X positions: T+PR (left), L-T-PR (right)
  • Center Y positions: T+PR (front), W-T-PR (back)

Step 4: Screw posts (start from top of floor, not bottom)

  • create_sketch on XY, offset=T, body_name="EnclosureBase": 4 circles at those positions, radius=PR
  • pad_sketch length=H-T, body_name="EnclosureBase"

Step 5: Screw holes in posts — MUST complete BEFORE moving to step 6!

  • create_sketch on XY, offset=H, body_name="EnclosureBase": 4 circles at same centers, radius=1.5 (M3)
  • pocket_sketch length=H-T, body_name="EnclosureBase"
  • The holes go H-T deep (through the posts only, NOT through the floor)
6. Lid body

For SCREW lid:

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"

For PRESS-FIT lid (build lip first, then slab on top so lip points downward):

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=T+0.2, y=T+0.2, width=L-2T-0.4, height=W-2T-0.4
  • pad_sketch length=3 (3mm lip), body_name="EnclosureLid"
  • create_sketch on XY, offset=3, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"
  • The 0.2mm gap on each side provides clearance for a friction fit.

For SNAP-FIT lid (same structure, but 1mm clearance so snap tabs have room):

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=T+1, y=T+1, width=L-2T-2, height=W-2T-2
  • pad_sketch length=3 (3mm lip), body_name="EnclosureLid"
  • create_sketch on XY, offset=3, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"
  • The 1mm gap on each side provides room for the snap tabs (0.5mm protrusion).

For both: Lip: z=0→3, Slab: z=3→3+T. After positioning, the lip hangs into the base.

7. Lid holes (SCREW LID ONLY — skip for press-fit and snap-fit)
  • create_sketch on XY, body_name="EnclosureLid": 4 circles at same post centers, radius=1.75
  • pocket_sketch through_all=true, body_name="EnclosureLid"
8. Position lid (BEFORE snap tabs so the shape is in the right place)
  • Screw lid: transform_object EnclosureLid, translate_z=H
  • Press-fit lid: transform_object EnclosureLid, translate_z=H-3
  • Snap-fit lid: transform_object EnclosureLid, translate_z=H-3
9. Snap-fit ridge and tabs (SNAP-FIT ONLY — skip for screw and press-fit)

Add a ridge on the base interior and snap tabs on the lid lip. The snap tabs tool copies the lid's shape (including its position), so the lid MUST be positioned first in step 8.

  • create_inner_ridge body_name="EnclosureBase", length=L, width=W, wall_thickness=T, ridge_width=0.8, ridge_height=0.5, z_position=H-2
  • create_snap_tabs body_name="EnclosureLid", length=L, width=W, wall_thickness=T, clearance=1.0, lip_height=3
10. Hide sketches

Use execute_code to hide all sketches at once:

python
for obj in App.ActiveDocument.Objects:
if obj.TypeId == "Sketcher::SketchObject":
obj.Visibility = False

Critical rules

  • ALWAYS pass explicit length to pad_sketch — never rely on the 10mm default
  • ALWAYS pass body_name to pad_sketch and pocket_sketch — this ensures features go into the correct body
  • Screw posts go INSIDE the enclosure at positions (T+PR, T+PR) from each corner — never at the wall edge
  • All sketches on XY plane, attached to the correct body_name
  • The base height is H, pocket depth is H-T, post height is H-T
  • Use offset=H for the pocket sketch so it is placed at the top face (creates correct floor-at-bottom orientation)
  • Complete ALL steps for the base (1–5) before starting the lid (step 6). Each create_sketch MUST be followed by its pad_sketch or pocket_sketch before creating the next sketch.
  • Screw lid (default): do steps 4, 5, 7. Skip step 9. Use screw lid variant in step 6.
  • Press-fit lid: skip steps 4, 5, 7, 9. Use press-fit/snap-fit lid variant in step 6 (lip only, no tabs).
  • Snap-fit lid: skip steps 4, 5, 7. Use press-fit/snap-fit lid variant in step 6, then do step 9 (ridge + tabs).
  • After completing ALL construction steps (including positioning), call the report_skill_params tool (NOT execute_code) with params={"L": value, "W": value, "H": value, "T": value, "PR": value, "lid_type": "screw/press-fit/snap-fit"}.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
353
Repository forks
53
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ghbalf/freecad-ai/enclosure/badge)](https://verified-skill.com/skills/ghbalf/freecad-ai/enclosure)

Something wrong with this skill or its page? Tell us.