Add web terminal, git credentials, OpenSCAD, review loops, automations

- Web terminal (PTY over WebSocket, xterm.js, sandboxed, reattach with replay)
- Per-user git credentials and commit identity (credential store in the user's home)
- OpenSCAD tool (STL/3MF + preview renders, bounding box) and cad skill; 3D model card
- Craft phase inferred from tool activity when the agent does not report it
- Configurable review loop per mode (rounds, reviewer model, criteria)
- Delete config and Markdown agents from the agent editor
- Automations: cron-scheduled agents from Markdown job files, schedule tool, page
- change_directory tool (only on the user's request)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-08 22:00:38 +01:00
1 parent a0d0e707f2
commit df1924b0a1
41 files changed
+2809 -34

No files matched your search

+82
View File
@@ -0,0 +1,82 @@
---
name: cad
description: Design parametric 3D models for 3D printing with OpenSCAD – from a description, a hand-drawn sketch or a photo. Renders STL/3MF and checks previews against the sketch.
---
# 3D models with OpenSCAD (for 3D printing)
You design printable parts as **parametric OpenSCAD code**, render them with the `openscad`
tool, look at the previews and refine until the part matches what the user wants.
## 1. Understand the part
- If the user attached a **sketch or photo**, describe what you see first: overall shape,
features (holes, slots, ribs, chamfers, text), views shown, and every **dimension written
on it** (with units). Hand-drawn sketches are not to scale – written numbers win over
proportions.
- List what is missing for a printable part (overall size, wall thickness, hole diameters,
screw sizes, fit with other parts). Ask with `ask_user` in **one** round, offering sensible
defaults the user can just accept (e.g. "wall 2 mm, M3 holes 3.4 mm"). Don't ask about
things you can reasonably assume.
## 2. Write the model
Create `<name>.scad` in the project (or `cad/<name>.scad` if the project has other content):
```openscad
// <Part name> – <one-line purpose>
// All dimensions in mm.
/* [Main dimensions] */
width = 60; // outer width (X)
depth = 40; // outer depth (Y)
height = 25; // outer height (Z)
wall = 2; // wall thickness
/* [Holes] */
hole_d = 3.4; // M3 clearance
/* [Quality] */
$fn = 64;
module body() { ... }
module holes() { ... }
difference() {
body();
holes();
}
```
Rules:
- **Every size is a named variable** at the top with a comment; group them with
`/* [Section] */` (shows up in OpenSCAD's customizer). No magic numbers in the geometry.
- Small, named `module`s; `difference()` / `union()` / `hull()` / `minkowski()` (sparingly –
slow) / `linear_extrude()` / `rotate_extrude()`.
- Model sits **on z = 0**, centred in X/Y unless the user wants otherwise.
- Holes and cut-outs extend a little past the surface (`+0.01`/`2*eps`) to avoid
coplanar faces (z-fighting, non-manifold results).
Printability (FDM defaults – adjust if the user says SLA/resin or names a printer/nozzle):
- Minimum wall 1.2 mm (3 × 0.4 mm nozzle), better 2 mm for load-bearing parts.
- Overhangs ≤ 45°; prefer chamfers over fillets on the bottom edge; bridges ≤ ~20 mm.
- Fits: +0.2 mm clearance for sliding fits, +0.3–0.4 mm for loose fits; press fits −0.05 mm.
Horizontal holes come out slightly small – add 0.2 mm or use a teardrop shape.
- Print orientation: flat largest face down; mention it in the summary.
- Text: `linear_extrude(0.6) text(..., size ≥ 5, font="Liberation Sans:style=Bold")`.
- Threads: use clearance holes plus heat-set inserts or nut traps instead of modelling threads,
unless the user asks for printed threads.
## 3. Render and check
- Run `openscad` with `formats: ["stl", "png"]` (add `"3mf"` for the final version) and the
views that show the important features (default iso, front, top).
- Check the **bounding box** against the required dimensions and the **warnings** (a
non-manifold result must be fixed before printing).
- Compare the previews with the sketch: proportions, feature positions, counts (holes, ribs),
orientation. Fix differences and render again. Two or three iterations are normal.
- For variants, use `params` to override variables instead of copying the file.
## 4. Deliver
Summarise briefly:
- Files: `.scad` (editable), `.stl` / `.3mf` (printable), previews.
- Final dimensions (bounding box) and the key parameters the user may want to change.
- Print hints: orientation, supports needed or not, suggested layer height/infill for the use.
- Assumptions you made.
The STL/3MF can be previewed in the file manager (3D view).