Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Mechanics Sketches

v1.0.0

Generate technical engineering mechanics sketches (beams, supports, forces, moments, dimensions, coordinate systems) as PDF/PNG/SVG using the MechanicsSketch...

0· 404·0 current·0 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (create engineering sketches and render to PDF/PNG/SVG) matches the provided SKILL.md, API reference, and helper script. No unrelated environment variables, binaries, or cloud credentials are requested.
Instruction Scope
Runtime instructions confine actions to reading a user-specified JSON and writing an output image/PDF. However, the README/setup guidance tells the user to pip install the GitHub repo (network activity during setup) and to adjust PYTHONPATH; also the helper script inserts a relative path into sys.path to locate the MechanicsSketches package (this can cause imports from parent directories if present). These are expected for this type of skill but worth noting.
Install Mechanism
There is no formal install spec in the manifest (instruction-only), but SKILL.md suggests installing via pip from a GitHub repository (git+https://github.com/...). GitHub is a well-known host, but pip-installing arbitrary repository code executes network-fetched code on the user's machine; users should review the upstream code before running the installer.
Credentials
No environment variables, credentials, or config paths are required. The helper script only reads the input JSON and writes the output file; it does not access system secrets or external services.
Persistence & Privilege
The skill does not request always:true, does not modify other skills or system-wide agent settings, and contains no self-enabling behavior. It runs only when invoked.
Assessment
This skill appears to do what it says — generate and render mechanics sketches locally. Before installing or running: (1) review the upstream GitHub code if you plan to pip install from git+https://github.com/MatthiasHBusch/MechanicsSketches.git (pip installing from GitHub will fetch and execute code); (2) run it in a virtual environment to avoid contaminating your system Python and to contain PyQt5/matplotlib dependencies; (3) be mindful that the helper script will import the MechanicsSketches package via a relative sys.path insertion (it may pick up similarly named modules in parent directories), and it reads the input JSON and writes the output path you provide — only supply trusted JSON input and output locations; (4) if you need a fully offline setup, mirror/review the repo first, because the setup instruction triggers network access during installation.

Like a lobster shell, security has layers — review code before you run it.

latestvk972z62fmc2q3p4418x9betanx81ptws

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

MechanicsSketches Skill

You can generate engineering mechanics sketches programmatically using the MechanicsSketches Python library.

Setup

Install the library via pip:

pip install git+https://github.com/MatthiasHBusch/MechanicsSketches.git

Or install dependencies manually and add to PYTHONPATH:

pip install matplotlib PyQt5
export PYTHONPATH="/path/to/parent/of/MechanicsSketches:$PYTHONPATH"

Quick Start — Writing a Script

Create a Python script that builds a sketch and renders it:

from MechanicsSketches import *
import os

sketch = create_sketch("My Sketch")
S = 30.0  # Scale factor (recommended: 20-40)

# Add components
add_beam(sketch, ax=0, ay=0, bx=10*S, by=0, scale_factor=S)
add_pinned_support(sketch, cx=0, cy=0, angle_deg=0, scale_factor=S)
add_roller_support(sketch, cx=10*S, cy=0, angle_deg=0, scale_factor=S)
add_force(sketch, cx=5*S, cy=0, angle_deg=0, scale_factor=S, annotation=r"$F$")

# Render
script_dir = os.path.dirname(os.path.abspath(__file__))
render(sketch, filename=os.path.join(script_dir, "output.pdf"), dpi=300)

Then run: python my_sketch.py

Quick Start — Using the Helper Script

Alternatively, use the bundled helper to render from JSON:

python scripts/generate_sketch.py input.json output.pdf

Key Concepts

Scale Factor (S)

All positions and sizes should be multiples of S (typically 30.0). This keeps proportions consistent across components.

Angle Convention

  • angle_deg=0 → default orientation (upward for supports/forces, horizontal for dimensions)
  • Angles rotate counterclockwise in degrees

Available Components

FunctionDescriptionKey Parameters
add_beam(sketch, ax, ay, bx, by, scale_factor)Rectangular beam A→BEndpoints, scale
add_truss(sketch, ax, ay, bx, by, scale_factor)Line member A→BEndpoints, scale
add_pinned_support(sketch, cx, cy, angle_deg, scale_factor)Fixed-position support (triangle)Center, angle, scale
add_roller_support(sketch, cx, cy, angle_deg, scale_factor)Sliding supportCenter, angle, scale
add_fixed_support(sketch, cx, cy, angle_deg, scale_factor)Clamped wall supportCenter, angle, scale
add_hinge(sketch, cx, cy, scale_factor)Joint circleCenter, scale
add_force(sketch, cx, cy, angle_deg, scale_factor, annotation, ...)Force arrowCenter, angle, scale, label
add_moment(sketch, cx, cy, angle_deg, scale_factor, annotation, ...)Curved moment arrowCenter, angle, scale, label
add_dimension_arrow(sketch, cx, cy, length, angle_deg, scale_factor, annotation, ...)Double-headed dimensionCenter, length, angle, scale, label
add_dimension_thickness(sketch, cx, cy, thickness, angle_deg, scale_factor, annotation, ...)Inward dimension arrowsCenter, thickness, angle, scale, label
add_coordinate_system(sketch, cx, cy, angle_deg, scale_factor, ax1, ax2, ax3, ...)x-y-z axesCenter, angle, scale, axis labels
add_text(sketch, x, y, text, fontsize, name, rotation)Text annotationPosition, text, font size

Annotation Parameters

Force, moment, and dimension functions accept:

  • annotation — LaTeX string (e.g., r"$F$", r"$M_A$")
  • fontsize_scale — relative font size (default 1.0)
  • offsetx, offsety — label position offset
  • rotate_annotation — rotate label with component (default False)

Primitives

For custom shapes, use:

  • make_line(x0, y0, x1, y1, linewidth, layer, edgecolor)
  • make_circle(x, y, r, linewidth, layer, facecolor, edgecolor)
  • make_polygon(points, linewidth, layer, facecolor, edgecolor)
  • make_arc(x, y, width, height, theta1, theta2, angle, linewidth, layer)
  • make_text(x, y, text, fontsize, layer, color, ha, va, rotation)
  • make_rectangle(x0, y0, x1, y1, ...)

Add to sketch via add_to_sketch(sketch, primitive).

Transformations

  • translate(obj, dx, dy) — move by offset
  • rotate(obj, cx, cy, angle_deg) — rotate around point
  • scale(obj, cx, cy, factor) — scale from center

All return new objects (non-destructive). Can be chained.

Rendering

render(sketch, filename="output.pdf", dpi=300)  # Qt renderer (default, recommended)
mpl_render(sketch, filename="output.pdf")        # Matplotlib fallback (deprecated, text scaling issues)

Supported formats: .pdf, .png, .jpg, .svg

Tips for the Agent

  1. Always define S = 30.0 as the scale factor
  2. Place beams first, then supports at endpoints, then loads
  3. Use LaTeX for annotations: r"$F$", r"$M_0$", r"$\ell$"
  4. For detailed API signatures, see references/api_reference.md
  5. The render() function requires a filename — it does not display interactively
  6. Do not use mpl_render() — it is deprecated due to text scaling issues. Always use render().

External Endpoints

This skill makes no network requests. All processing is done locally.

Security & Privacy

  • No data leaves your machine. The skill only reads local JSON files and writes local image/PDF output.
  • No API keys or credentials are required.
  • No telemetry or analytics.
  • The helper script (scripts/generate_sketch.py) only reads the input file specified by the user and writes to the specified output path.

Trust Statement

This skill is developed and maintained by MatthiasHBusch. The source code is fully open under the MIT license. All functionality runs locally with no external dependencies beyond standard Python packages (matplotlib, PyQt5).

Files

4 total
Select a file
Select a file to preview.

Comments

Loading comments…