Initial sync: memory, agents, commands, and gitignore

Syncs project memory, custom agents, and commands across machines.
Excludes secrets (settings.json), session state, and runtime files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Chris
2026-06-11 09:19:24 -05:00
commit 33cab10cef
47 changed files with 1229 additions and 0 deletions
@@ -0,0 +1,5 @@
- [User profile](user_profile.md) — CNC domain expert, strong spatial reasoning, builds ShaperSlicer
- [Be direct](feedback_be_direct.md) — Grasp geometry concepts immediately, don't over-clarify
- [Design before code](feedback_design_first.md) — First-principles algorithm design before reading existing code
- [Silhouette cookie cutter](project_silhouette_cookie_cutter.md) — Cumulative silhouette splits layers into boundary vs interior
- [Shaper Origin concepts](project_shaper_origin_concepts.md) — SVG fill colors, cut types, BenchPilot behavior, tab semantics
@@ -0,0 +1,11 @@
---
name: Be direct about geometry concepts
description: User gets frustrated when spatial/geometry concepts need repeated explanation
type: feedback
---
User has strong spatial reasoning and expects the same. When they describe a geometry operation (e.g., "cookie cutter" = use the silhouette to split shapes), grasp it immediately and act on it. Don't ask clarifying questions about concepts they've already explained clearly.
**Why:** User expressed frustration: "I'm struggling with patience here because this seems like a straightforward problem to solve to me."
**How to apply:** When user describes a geometry operation in plain language, translate it directly to boolean ops and implement. Don't over-complicate or second-guess their spatial intuition.
@@ -0,0 +1,11 @@
---
name: Design before code
description: User prefers first-principles algorithm design before reading existing code
type: feedback
---
When tackling complex geometry/algorithm problems, design the ideal approach from first principles BEFORE reading the existing code. Then compare the ideal to what's implemented to find bugs.
**Why:** User explicitly asked for this workflow — "I'd rather have you think of how you'd recommend doing it FIRST, then compare to the existing code." Jumping straight to code reading led to patches that missed the root cause.
**How to apply:** For non-trivial algorithm bugs, start with a clean-room design of what the correct approach should be, then diff against the implementation.
@@ -0,0 +1,17 @@
---
name: Shaper Origin cut type semantics
description: How Shaper Origin interprets SVG fill colors and cut types — critical for correct SVG output
type: project
---
Shaper Origin SVG semantics:
- White fill (#FFFFFF) = inside cut (vector follow along the path — faster, used for boundary/cutout)
- Gray fill (#808080) = pocket cut (area removal — raster/spiral clearing, used for interior cavities)
- Black fill (#000000) = outside cut
- `shaper:cutDepth` attribute sets depth per path
- BenchPilot mode may cut layers in ANY order (not necessarily top-down), so each layer must only contain material not already removed by other layers
- Tabs are bridges in the boundary trough that hold the piece in stock — they should NEVER affect interior/model geometry
**Why:** These semantics drive the entire SVG generation logic. Getting fill colors wrong means the machine uses the wrong cut strategy.
**How to apply:** Always verify boundary paths get white fill and interior paths get gray fill. Tabs only subtract from boundary.
@@ -0,0 +1,17 @@
---
name: Silhouette cookie cutter approach
description: The cumulative model silhouette is used to split every layer into boundary vs interior
type: project
---
The correct way to separate boundary (cutout ring) from interior (model cavities) in each layer:
1. `cumulativeCross` = union of all cross-sections across all depths = the model's full silhouette from the cutting direction
2. For each layer's pocket geometry:
- Boundary = pocket MINUS silhouette (material outside the model outline)
- Interior = pocket INTERSECT silhouette (cavities within the model outline)
3. This silhouette is constant across all layers — it's the "cookie cutter"
**Why:** Previously used per-layer model outline which changed shape at every depth and failed for solid shapes without holes. The silhouette approach works universally.
**How to apply:** If boundary/interior separation needs changes, the silhouette (cumulativeCross) is the dividing line. Filter boolean sliver artifacts with area < 0.01mm².
@@ -0,0 +1,7 @@
---
name: User profile
description: CNC/woodworking domain expert building ShaperSlicer, strong spatial reasoning about geometry operations
type: user
---
User is the developer of ShaperSlicer. Has deep domain knowledge of CNC routing, specifically the Shaper Origin (handheld and BenchPilot/gantry modes). Understands how the machine interprets SVG cut types (pocket, inside, outside), depth ordering, and Autopass behavior. Thinks in terms of physical machining operations — "cookie cutter", "trough", "air cutting". Can identify geometry bugs visually from 2D layer previews.