The Skill Library fixed that.
What is a Skill?
A Skill is a structured Markdown document that teaches the agent a specific CAD domain. Each skill contains:
ScaleType = "Custom" before modifying a TechDraw view scalebuild() function template — a parametric Python skeleton the agent fills inHere's a simplified excerpt from the hex-fasteners skill:
def build(params):
"""
params = {
"nominal_diameter": 8, # M8
"pitch": 1.25, # mm
"length": 30, # mm
"standard": "DIN_933", # full thread
}
"""
d = params["nominal_diameter"]
s = 1.5 * d # wrench size (across flats)
e = s / cos(30°) # circumscribed circle
k = 0.63 * d # head height
# ... FreeCAD Part API calls
How the agent uses Skills
At inference time the LangGraph skill_loader node:
1. Embeds the user's description
2. Finds the top-3 most relevant skills by cosine similarity 3. Appends the full skill text to the system promptThis gives the LLM exact domain knowledge without fine-tuning. Because the knowledge lives in plain Markdown, updating a tolerance table or adding a new standard takes minutes, not a retraining run.
Results
After adding 24 skills covering the most common part categories:
The remaining errors are almost all edge cases at the boundary of standard ranges (very large diameters, non-standard materials, exotic thread forms).
What we're building next
We're expanding the Skill Library to cover springs, O-ring grooves, keyways, and press-fit tolerances in the next release. If you have a part category where accuracy is lower than you'd expect, tell us — we'll add a skill for it.