About Feature Tree Doctor
Built by Roman Martins in 2026 — part of the Forkable Factory thesis: physical products should be developed the way software is.
Why this exists
Software has linters, type-checkers, and test coverage. CAD has none of that. Until the substrate is legible — measurable — agents can't safely reason about it, and humans keep paying tax on every handoff.
Feature Tree Doctor is one small piece of legibility: an opinionated rubric that grades the parts of an Onshape model that decay fastest under inheritance. It diagnoses; Adam AI fixes the cleanup tasks. The other dimensions — sketch health, references, organization — are author-side calls.
How it works
You paste an Onshape Part Studio URL. We read the feature tree, variables, and configuration via Onshape's public REST API (read-only). Five rules score deterministically by walking the JSON. Three rules score via Claude Sonnet — naming, redundancy, organization — judgments that need pattern recognition. Eight rules, 100 points, three buckets. See the full methodology.
Read-only safety
The Onshape client at lib/onshape.ts exposes only GET methods. No mutation verb is callable from anywhere in this codebase. Even if scopes or tokens were misconfigured, modification of your model is impossible. The OAuth scope requested is OAuth2Read — the most restrictive Onshape offers.
What we store
| Stored | Not stored |
|---|---|
| Scoring vector (8 numbers + evidence text) | Raw feature-tree JSON |
| Document name, workspace ID, element ID | Geometry, sketches, parameter values |
| Hashed client IP (sha256 + salt) for rate limiting | Plaintext IP addresses |
| Public/private flag + scorecard timestamp | OAuth tokens (httpOnly cookie only, never DB) |
Your model contents are processed in-memory and discarded after scoring. We never see your geometry. Database snapshots and audit logs would show only the score numbers and metadata above.
Open source
The rubric is licensed CC-BY 4.0 — fork it, adapt it, score other CAD systems with it. The app source is currently all-rights-reserved during the launch window; will move to MIT once stable.
Cost & rate limit
Free tier: 3 scorecards per IP per 24h. Each scorecard costs ~$0.02 in LLM compute, paid by the project. If you hit the limit, wait or get in touch.
Contact
Bug, false positive, rubric suggestion, or partnership idea? Email hi@romanmartins.com or DM @romanvmartins.