ftdFeature Tree Doctor

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

StoredNot stored
Scoring vector (8 numbers + evidence text)Raw feature-tree JSON
Document name, workspace ID, element IDGeometry, sketches, parameter values
Hashed client IP (sha256 + salt) for rate limitingPlaintext IP addresses
Public/private flag + scorecard timestampOAuth 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.