Borrowing it
Nothing to install: this file belongs to wedsamuel1230/electronic-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/wedsamuel1230/electronic-mcp-server/main/.github/skills/enclosure-designer/SKILL.mdgit clone --depth 1 https://github.com/wedsamuel1230/electronic-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/wedsamuel1230/electronic-mcp-server/enclosure-designer)<a href="https://agentmods.dev/skills/wedsamuel1230/electronic-mcp-server/enclosure-designer"><img src="https://agentmods.dev/badge/skills/wedsamuel1230/electronic-mcp-server/enclosure-designer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/wedsamuel1230/electronic-mcp-server/enclosure-designer"><img src="https://agentmods.dev/badge/skills/wedsamuel1230/electronic-mcp-server/enclosure-designer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00066 | $0.03641 |
| Opus 5 | $0.00033 | $0.01820 |
| Sonnet 5 | $0.00013 | $0.00728 |
| Haiku 4.5 | $0.00007 | $0.00364 |
Grade A, and why
enclosure-designer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 518 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Enclosure Designer
Creates 3D-printable enclosures for electronics projects.
Resources
This skill includes bundled tools and templates:
- scripts/generate_enclosure.py - Parametric OpenSCAD generator with PCB database
- assets/basic-template.scad - Customizable OpenSCAD template
Quick Start
Generate for specific PCB:
uv run scripts/generate_enclosure.py --pcb "Arduino Uno" --output uno_case.scad
uv run scripts/generate_enclosure.py --pcb "ESP32 DevKit" --output esp32_case.scad
Custom dimensions:
uv run scripts/generate_enclosure.py --width 100 --depth 60 --height 30 --output custom.scad
Interactive mode:
uv run scripts/generate_enclosure.py --interactive
List supported PCBs:
uv run scripts/generate_enclosure.py --list
When to Use
- "I need a case for my project"
- "How do I make an enclosure?"
- "Design a box for my Arduino"
- User has working circuit, needs housing
- Preparing for deployment/presentation
Design Workflow
Step 1: Gather Measurements
Ask user for:
1. Main board dimensions (L × W × H in mm)
2. Component clearances (tallest component height)
3. Connectors/ports that need access (USB, power jack, etc.)
4. Mounting holes (positions, diameters)
5. Any displays, buttons, LEDs that need cutouts
6. Environment (indoor/outdoor, waterproof?)
Step 2: Design Parameters
Enclosure Type: [Box/Clamshell/Snap-fit/Screw-mount]
Material: [PLA/PETG/ABS]
Wall Thickness: [2-3mm typical]
Mounting Style: [Standoffs/Clips/Rails]
Ventilation: [None/Slots/Holes]
Access: [Top-remove/Front-panel/Side-openings]
Step 3: Generate Design
Choose approach:
- Parametric OpenSCAD - Full customization
- Pre-made generator - Quick results
- Manual Fusion360/TinkerCAD - Visual design
Parametric OpenSCAD Template
Basic Project Box
// === PARAMETRIC PROJECT BOX ===
// Customize these values for your project
// Internal dimensions (mm)
inner_length = 70; // X axis
inner_width = 50; // Y axis
inner_height = 30; // Z axis (internal depth)
// Wall and tolerances
wall = 2.5; // Wall thickness
lid_tolerance = 0.4; // Gap for lid fit
corner_radius = 3; // Rounded corners
// Mounting standoffs
standoff_height = 5; // PCB clearance from bottom
standoff_dia = 6; // Standoff outer diameter
screw_hole_dia = 2.5; // M2.5 screw hole
// PCB mounting hole positions (from corner)
// Measure from your board!
pcb_holes = [
[5, 5], // Bottom-left
[65, 5], // Bottom-right
[5, 45], // Top-left
[65, 45] // Top-right
];
// Lid attachment
lid_screw_dia = 3; // M3 screws
lid_screw_positions = [
[5, 5],
[inner_length-5, 5],
[5, inner_width-5],
[inner_length-5, inner_width-5]
];
// Cutouts (add as needed)
usb_cutout = true;
usb_x = 35; // Center position
usb_width = 12;
usb_height = 8;
// === MODULES ===
module rounded_box(l, w, h, r) {
hull() {
for (x = [r, l-r])
for (y = [r, w-r])
translate([x, y, 0])
cylinder(h=h, r=r, $fn=32);
}
}
module standoff(h, outer_d, inner_d) {
difference() {
cylinder(h=h, d=outer_d, $fn=24);
cylinder(h=h+1, d=inner_d, $fn=24);
}
}
module box_base() {
outer_l = inner_length + 2*wall;
outer_w = inner_width + 2*wall;
outer_h = inner_height + wall; // Bottom wall
difference() {
// Outer shell
rounded_box(outer_l, outer_w, outer_h, corner_radius);
// Inner cavity
translate([wall, wall, wall])
rounded_box(inner_length, inner_width, inner_height+1, corner_radius-wall);
// USB cutout
if (usb_cutout) {
translate([wall + usb_x - usb_width/2, -1, wall + standoff_height])
cube([usb_width, wall+2, usb_height]);
}
}
// Add standoffs
for (pos = pcb_holes) {
translate([wall + pos[0], wall + pos[1], wall])
standoff(standoff_height, standoff_dia, screw_hole_dia);
}
}
module box_lid() {
lid_wall = wall - lid_tolerance;
outer_l = inner_length + 2*wall;
outer_w = inner_width + 2*wall;
lip_h = 5; // How deep lid inserts
// Lid top
rounded_box(outer_l, outer_w, wall, corner_radius);
// Lid lip (inserts into box)
translate([wall + lid_tolerance, wall + lid_tolerance, -lip_h])
difference() {
rounded_box(inner_length - 2*lid_tolerance,
inner_width - 2*lid_tolerance,
lip_h, corner_radius - wall);
}
}
// === RENDER ===
// Uncomment one at a time for printing:
box_base();
// translate([0, inner_width + 20, 0]) box_lid();
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 518 lines · 66 tokens per session scan A 713e8ac229a7
enclosure-designer is a skill published in the GitHub repository wedsamuel1230/electronic-mcp-server (1 stars, last pushed 8mo ago), licensed MIT. It adds 66 tokens to every session and 3,641 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
cad-viewer
Start CAD Viewer and return review links for CAD and robot-description files. Use when visually reviewing .step, .stp, .glb, .stl, .3mf, .dxf, .urdf, .srdf, or .sdf files, especially when handed off from CAD, URDF, SRDF, or SDF generation skills.
solidworks-vibecad
A planning guide for turning natural-language mechanical design requests into structured, parameterized SolidWorks plans that can be reviewed before execution.
add-interfaces
Enrich an existing PartCAD part with connection interfaces and ports (mating metadata) so it can be mated to other parts automatically. Use for /pc:add-interfaces or when the user asks to add interfaces, ports, connectors, or mating information to a part, or to make parts snap/connect/assemble together.
gen-assembly
Generate a PartCAD assembly (an ASSY that composes parts with placement and/or mates) from a description, generating or reusing the component parts and validating the result with the PartCAD CLI. Use for /pc:gen-assembly or when the user asks to generate or create an assembly, mechanism, or multi-part product.
render
Render a PartCAD object or a CAD file to a 2D image - PNG, JPEG, SVG or DXF - from one or many viewing angles (front, back, left, right, top, bottom, iso, or an arbitrary direction), with pc render for an object a package declares or pc adhoc render for a file that belongs to no package. Use for /pc:render or when the…
gen-part
Generate a PartCAD part from a natural-language description (and optional reference images/requirements) by authoring a CAD script and validating it with the PartCAD CLI. Use for /pc:gen-part or when the user asks to generate, create, or model a single mechanical part.