Back to skills
SKILL.md
Hw Enclosure
ASecurityHardware enclosure design capability pack. Covers parametric OpenSCAD enclosure modeling, PCB fitting, material selection, assembly design, ergonomics, manufacturing export (STL/STEP), and dimension/assembly documentation. Use for any IoT/embedded device enclosure design, PCB housing, 3D-print enclosure, or enclosure manufacturing prep task.
- 3 stars
- 0 votes
- 0 copies
- 0 views
- Added October 6, 2026
Security analysis
100/100Pro scans all 9 files and shows the line behind each finding
npx -y skills add Sheldon-92/TAD --skill hw-enclosure --agent claude-codeAre you the author of Hw Enclosure?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sheldon-92-hw-enclosure)---
name: hw-enclosure
description: "Hardware enclosure design capability pack. Covers parametric OpenSCAD enclosure modeling, PCB fitting, material selection, assembly design, ergonomics, manufacturing export (STL/STEP), and dimension/assembly documentation. Use for any IoT/embedded device enclosure design, PCB housing, 3D-print enclosure, or enclosure manufacturing prep task."
version: 0.1.0
type: reference-based
keywords: ["enclosure", "外壳", "外壳设计", "case design", "housing", "OpenSCAD", "scad", "STL", "3D printing", "3D 打印", "FDM", "SLA", "injection molding", "注塑", "PCB fitting", "PCB 安装", "snap-fit", "卡扣", "IP65", "防水", "wall thickness", "壁厚", "tolerance", "公差", "装配", "assembly", "人机工程", "ergonomics", "材料选型", "material selection"]
---
# Hardware Enclosure Design Capability Pack
> From PCB dimensions to print-ready enclosure — real tool outputs (STL, PDF, diagrams), not sketches.
> Scope: IoT / embedded device enclosures. FDM/SLA 3D printing primary, injection molding secondary.
> Core deliverable: parametric `.scad` model + STL export + assembly diagrams + dimension drawings. All tolerances, wall thicknesses, and snap-fit parameters derive from manufacturing constraints — never from gut feeling.
---
## Step 0: Pack Prerequisites
- **OpenSCAD** (parametric CAD + STL export) — macOS: `brew install --cask openscad`
- **D2** (assembly/dimension diagrams), **Typst** (PDF documentation)
- Optional: **ADMesh** (STL manifold check), **FreeCAD/CadQuery** (STEP conversion)
---
## Step 1: Context Detection
| User Signal | Load Reference |
|---|---|
| new enclosure, 外壳建模, .scad, OpenSCAD, wall thickness, snap-fit, clamshell, 卡扣, 壳体 | `references/enclosure-design.md` |
| PCB mounting, standoff, 安装柱, connector cutout, 开口, USB-C hole, antenna window, 天线, cable routing | `references/pcb-fitting.md` |
| which material, PLA/PETG/ABS/ASA, 材料选型, outdoor durability, 耐候, cost per unit, injection molding cost | `references/material-selection.md` |
| how to fasten, screws vs snap-fit, 紧固, assembly sequence, 装配顺序, serviceability, 可维修, O-ring, sealing | `references/assembly-design.md` |
| handheld, grip, 握持, button placement, 手感, appearance, 外观, color scheme, form factor | `references/ergonomics.md` |
| export STL/STEP, slicing, 切片, print settings, 打印参数, deliverable package, release files | `references/manufacturing-export.md` |
| dimension drawing, 尺寸图, three-view, 三视图, cross-section, assembly guide PDF, 装配指南, BOM | `references/documentation.md` |
| review a deliverable, 审查, acceptance check, before declaring any capability's output done | `references/review-checklist.md` |
**Multi-signal**: load all matched references. Before declaring ANY deliverable complete, also read its Pass/Fail Criteria section in the matched reference — those are the acceptance rules.
---
## Step 2: Decision Entry Point
**Q1 — What stage is the request?**
- Full enclosure from scratch → `enclosure-design.md` first (constraints → type selection → .scad), then `pcb-fitting.md`
- Existing shell, fit a board into it → `pcb-fitting.md`
- Deciding what to print it in / production cost → `material-selection.md`
- How the parts join / open / seal → `assembly-design.md`
- Handheld or user-facing device shape → ALSO `ergonomics.md`
- Ready to ship files to printer/fab → `manufacturing-export.md` then `documentation.md`
**Q2 — Manufacturing method?** (drives every tolerance and wall number)
- FDM → tolerance 0.2mm, wall ≥1.5mm (absolute min 0.8mm = 2 perimeters), draft 0°
- SLA → tolerance 0.1mm, wall ≥1.0mm, drain holes ≥2mm in closed cavities
- Injection molding → tolerance 0.05mm, wall ≥1.2mm, draft angle ≥1.5°, uniform wall thickness
- CNC → dogbone relief in inner corners (slot = tool diameter + 0.2mm); export STEP not STL
**Q3 — Outdoor / sealed?**
- Outdoor → material must survive UV + temperature (NOT PLA >50°C, NOT ABS long-term UV) → `material-selection.md`
- IP65+ → sealed type: wall ≥2.5mm + O-ring groove → `enclosure-design.md` + `assembly-design.md`
---
## Core Judgment Rules (always apply)
1. **No invented numbers.** Every dimension comes from a datasheet, EDA file, or physical measurement (priority in that order). 编造尺寸/材料参数/人体数据 = FAIL. If the user gives no PCB dimensions, search the board's official drawing.
2. **Enclosure type is a reasoned selection**, not a default: clamshell (general, serviceable) / slide-in (thin, flat PCB, wall ≥1.2mm) / snap-fit (no-screw consumer look, wall ≥2.0mm, ≥2.5mm at snaps) / sealed (IP65+ outdoor, wall ≥2.5mm + O-ring). State why.
3. **Everything parametric.** All dimensions as top-of-file variables overridable via `openscad -D`; bottom shell and lid as separate modules, separately exportable. Magic numbers are forbidden.
4. **Mating surfaces get tolerance** (`lid_inner = shell_outer + 2*tol`; FDM 0.2 / SLA 0.1 / molding 0.05mm). Connector cutouts get manufacturing allowance: width +1.0mm FDM / +0.5mm SLA, height +0.8mm. Cutout position error >±0.5mm = connector won't insert.
5. **Screw boss OD = screw OD × 2.5**; corners get radius ≥2mm (stress concentration); count fastener volume BEFORE finalizing the shell — corner screw clearance is the most common assembly failure.
6. **Render-inspect-iterate is mandatory.** Never deliver without rendering previews (4 camera angles) and a transparent PCB placeholder block to verify clearances (PCB edges ≥1mm, tallest component to lid ≥1.5mm).
7. **Manifold validation is a HARD GATE before STL delivery**: `openscad --render` with zero geometry errors/warnings (plus `admesh --check` if available). Always export with `--render` — F5-preview exports can be non-manifold. Failing this gate forbids delivering the STL.
8. **FDM printability**: overhangs ≤45° or supports; unsupported bridges ≤5mm; horizontal holes as teardrops; first-layer contact ≥20% of footprint.
9. **Material-environment compatibility is a required check**: PLA not outdoors / not >50°C; ABS not in long-term UV (use ASA); PC when transparency/impact needed; rigid seals don't compress. Recommendations need ≥3 candidates scored in a weighted decision matrix with sourced values (`[DATA NEEDED]` when missing, `[ESTIMATED]` for guesses).
10. **Antenna clearance**: metal enclosures need an antenna window (blocking costs 20dB+); the enclosure is NOT the primary EMI shield — solve EMI at PCB level.
11. **Cost honesty**: quote mold cost ($2K-15K threshold) whenever recommending injection molding; include post-processing and labor, not just material; if budget can't support molding, say so and state 3D-printing volume limits.
12. **Format follows process**: STL/3MF for FDM/SLA/SLS, STEP for CNC/molding. OpenSCAD cannot export STEP — convert via FreeCAD or use CadQuery.
13. **Docs must match CAD 100%.** Every dimension in drawings/assembly guide is cross-checked against `.scad` parameter values before delivery.
14. **Human-domain judgment stays human**: appearance style keywords, color scheme, and grip feel are choices to present as options with reasons — engineering numbers (tolerances, wall, clearances) are the agent's to compute.
---
## Quick Rule Index
### Enclosure Design (`references/enclosure-design.md`)
- Constraint gathering checklist (PCB/connectors/battery/environment/method) → §Step 1
- Type selection table + key parameter derivation → §Step 2
- .scad structuring rules (minkowski fillets, boss via difference, $fn discipline) → §Step 3
- 4-angle preview commands, dimension verification, printability optimization (FDM/SLA/CNC) → §Steps 4-6
- Manifold HARD GATE procedure + per-part export commands → §Step 7
### PCB Fitting (`references/pcb-fitting.md`)
- ±0.1mm measurement protocol + connector table format → §Step 1
- Standoff/alignment-pin/edge-slot sizing formulas (M2/M3 numbers) → §Step 2
- Cutout formulas: USB-C 9.5×3.5mm, LED light pipes, button holes, display window steps → §Step 3
- Transparent-placeholder verification checklist + cable routing (bend radius ≥3× diameter) → §Steps 4-5
### Material Selection (`references/material-selection.md`)
- Candidate search queries + supplier list (FDM: Hatchbox/eSUN/Polymaker; fab: JLCPCB/PCBWay) → §Step 1
- Weighted decision matrix template + sourcing rules → §Step 2
- Process match table (FDM/SLA/SLS/molding cost, MOQ, lead time) + stage advice → §Step 3
### Assembly Design (`references/assembly-design.md`)
- Fastening options research (screws+inserts / snap-fit / ultrasonic / adhesive) → §Step 1
- Serviceability tradeoffs (seal vs teardown; consumer ≥20 / industrial ≥100 cycles) → §Step 2
- One-action-per-step sequence rules (pinch force ≤30N, ≤3min hand assembly) → §Step 3
- D2 exploded diagram + fastening detail templates → §Steps 4-5
### Ergonomics (`references/ergonomics.md`)
- ISO 7250 anthropometric anchors (palm width, grip force, thumb reach ≤70mm) → §Step 1
- Form factor rules (edge radius ≥3mm, palm curve R=80-120mm, center of gravity) → §Step 2
- Design language derivation (keywords, colors with rationale, parting line hiding, logo method) → §Step 3
### Manufacturing Export (`references/manufacturing-export.md`)
- Format-by-process table + STEP conversion path → §Step 1
- Per-part export with `--render` + part-selector .scad pattern → §Step 2
- STL bounding-box verification script (stdlib Python) → §Step 3
- Print profile table (every parameter justified) + release/ package layout → §Steps 4-5
### Documentation (`references/documentation.md`)
- Three-view + cross-section drawing requirements (tolerance and scale callouts) → §Steps 1-2
- Typst assembly guide structure (A4 landscape, BOM, per-step figures) → §Step 3
- Compile + .scad-vs-docs consistency verification loop → §Steps 4-5
### Review Checklists (`references/review-checklist.md`)
- 7 expert personas (mechanical/hardware/materials/production/industrial-design/3D-print/tech-writer), one checklist per capability — run AFTER each capability's deliverable, BEFORE calling it done
- End-to-end acceptance sample (ESP32 + E-ink + 18650 outdoor tracker) for self-testing the whole pipeline
---
## Anti-Patterns
### Enclosure Design
- ❌ 硬编码尺寸(magic numbers)→ 必须用变量
- ❌ 忽略公差(配合面无间隙 → 装不进去)
- ❌ 壁厚凭感觉(必须基于制造方式的最小值)
- ❌ 不渲染预览就交付(肉眼检查 = 必须步骤)— 所有成功的 AI-CAD 系统都实现 render-inspect-iterate 循环(来源: MEDA, cad-agent, openscad-agent)
- ❌ 单体建模(底壳+顶盖应该是独立 module,可分别导出 STL)
- ❌ 材料与环境不匹配:PLA 用在室外(UV/热变形)、ABS 长期 UV 暴露(降解)、刚性密封件(压缩不良)— 来源: 多源共识
- ❌ 不计算紧固件占用体积就设计外壳(→ 角落螺丝空间不足是最常见装配失败原因 — 来源: easy-enclosure + NopSCADlib)
### PCB Fitting
- ❌ 安装孔位置靠目测(必须用坐标数据)
- ❌ 连接器开口不加公差(插不进去)
- ❌ 忽略 PCB 背面元器件高度(安装柱高度不够 → 短路)
- ❌ 不验证就交付(必须有透明 PCB 占位块渲染)
- ❌ 忘记天线净空(金属外壳挡天线 → 信号衰减 20dB+)
- ❌ 依赖外壳做 EMI 屏蔽而不在 PCB 层面解决(外壳不是 EMI 一线防护 — 来源: Cadence guidelines)
### Material Selection
- ❌ 不搜索就推荐 PLA(PLA 不耐温、脆,不是万能材料)
- ❌ 忽略后处理成本(打磨、喷漆、攻丝都是钱)
- ❌ 成本只算材料不算人工和模具分摊
- ❌ 推荐注塑但不说模具成本($2K-$15K 门槛)
- ❌ 材料参数来源混乱(不同测试标准的数据不能直接比较)
- ❌ 壁厚不均匀(注塑导致缩印/翘曲,FDM 导致强度不一致 — 来源: Cadence anti-patterns)
### Assembly Design
- ❌ 只考虑紧固不考虑拆卸(维修时怎么拆?)
- ❌ 卡扣设计没有应力校验(断裂 = 产品报废)
- ❌ 装配顺序不考虑线缆(先盖盖子再接线 = 灾难)
- ❌ 螺丝扭矩不标注(拧过头 = 螺丝柱开裂)
- ❌ 爆炸图没有方向箭头(看图猜装配顺序)
### Ergonomics
- ❌ 外形只看内部元器件不考虑握持(方盒子≠好设计)
- ❌ 圆角凭感觉(必须基于使用场景和制造方式)
- ❌ 按钮位置不考虑单手操作(拇指够不到 = 差体验)
- ❌ 颜色选择无理由('我觉得好看'不是理由)
- ❌ 忽略分型线(在正面留一条丑线 = 廉价感)
### Manufacturing Export
- ❌ 导出整体 STL 不分零件(无法分别打印/分色)
- ❌ 不用 --render 导出(F5 预览导出的 STL 可能有错误)
- ❌ $fn 过高导致 STL 巨大($fn=256 → 文件 50MB+)
- ❌ 打印参数照抄网上不适配当前零件
- ❌ 不验证 STL 尺寸(OpenSCAD 单位是 mm,切片软件可能按 inch 理解)
### Documentation
- ❌ 尺寸图不标公差(制造时无法判断精度要求)
- ❌ 装配指南无图(纯文字 = 没人看)
- ❌ 文档尺寸与 .scad 不一致(改了设计忘改文档)
- ❌ BOM 缺少紧固件(螺丝、垫圈、O-ring 容易遗漏)
- ❌ PDF 不含比例尺(无法直接量测)
---
## Anti-Skip Table
| Shortcut Attempt | Required Action |
|---|---|
| "I'll estimate the PCB size" | MUST source dimensions from datasheet/EDA/measurement — invented dimensions are an automatic FAIL |
| "Standard wall thickness is fine" | MUST derive wall from manufacturing method (`enclosure-design.md` §Step 2 table) — FDM/SLA/molding minimums differ |
| "The model looks correct in code" | MUST render previews + transparent PCB placeholder before delivery — render-inspect-iterate is non-negotiable |
| "STL exported without errors, ship it" | MUST pass the manifold HARD GATE (`--render` + zero geometry warnings) in `enclosure-design.md` §Step 7 first |
| "PLA is the obvious material" | MUST run the ≥3-candidate weighted matrix in `material-selection.md` — PLA fails outdoors and >50°C |
| "Docs are basically right" | MUST cross-check every documented dimension against `.scad` parameters (`documentation.md` §Step 5) |
| "Deliverable done, moving on" | MUST run the matching persona checklist in `references/review-checklist.md` before marking any capability complete |
Files in this skill
- SKILL.md
- references/assembly-design.md
- references/documentation.md
- references/enclosure-design.md
- references/ergonomics.md
- references/manufacturing-export.md
- references/material-selection.md
- references/pcb-fitting.md
- references/review-checklist.md
Attribution
Comments
Loading comments…