autocad-llm-drafting — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited autocad-llm-drafting (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill to let LLM generate AutoCAD scripts from natural language descriptions, then AutoCAD executes them to produce drawings.
Choose the right API based on the task:
| API | Language | Best For | How to Run |
|---|---|---|---|
| AutoLISP | LISP | Quick scripts, geometric shapes, layer operations, batch text editing | Save as .lsp, load with APPLOAD or (load "script") in AutoCAD command line |
| SCR (Script) | Plain text | Linear command sequences, batch plotting, simple repetitions | Save as .scr, run with SCRIPT command |
| .NET API | C# | Complex geometry, custom entities, database operations, event-driven logic | Compile as DLL, NETLOAD in AutoCAD |
| ObjectARX | C++ | Maximum performance, custom objects, deep integration | Compile as ARX, ARX command to load |
Default to AutoLISP for most LLM-generated scripts. It's the simplest to generate, execute, and debug.
(defun c:MyCommand ( / )
;; Your drawing logic here
(princ "\nDone.")
)c: prefix makes it callable from the AutoCAD command line.
Draw a line:
(command "_.LINE" "0,0" "100,100" "")Draw a rectangle:
(command "_.RECTANGLE" "0,0" "200,100")Draw a circle:
(command "_.CIRCLE" "50,50" 25)Create and set a layer:
(command "_.LAYER" "N" "Walls" "C" "3" "Walls" "S" "Walls" "")Add text:
(command "_.TEXT" "10,50" 5 0 "Hello AutoCAD")Insert a block:
(command "_.INSERT" "blockname" "50,50" 1 1 0)(defun c:DrawFloorPlan ( / old_osmode old_cmdecho)
(setq old_osmode (getvar "OSMODE"))
(setq old_cmdecho (getvar "CMDECHO"))
(setvar "OSMODE" 0)
(setvar "CMDECHO" 0)
;; --- Drawing logic here ---
(setvar "OSMODE" old_osmode)
(setvar "CMDECHO" old_cmdecho)
(princ "\nFloor plan drawn.")
)Always save and restore system variables. Turn off OSMODE and CMDECHO to prevent snap/echo interference.
Use only when AutoLISP is insufficient (complex transactions, custom entities, event handling).
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
public class DrawingCommands
{
[CommandMethod("DrawCircle")]
public void DrawCircle()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
Circle circle = new Circle(new Point3d(50, 50, 0), Vector3d.ZAxis, 25);
btr.AppendEntity(circle);
tr.AddNewlyCreatedDBObject(circle, true);
tr.Commit();
}
}
}Compile as DLL, load with NETLOAD, run DrawCircle command.
Simplest format — one command per line, plain text.
_.CIRCLE 50,50 25
_.LINE 0,0 100,100
_.TEXT 10,50 5 0 HelloSave as .scr, run with SCRIPT command. No variables, no loops. Good for linear batch operations only.
(command "_.OSNAP" "OFF") at the start if appropriate.(command "_.PLINE" pt1 pt2 pt3 "_C") with _C to close.;; comment, C# uses // comment. Explain sections of non-trivial scripts.(entmod) or (entmake) when (command ...) suffices. Command calls are more readable and debuggable.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.