What problem does it solve? Server-side Jac code needs a reliable way to store entities, query them with graph traversals, and survive schema changes without losing data. This Skill teaches the graph-as-database model so endpoints create, read, update, and filter persisted nodes correctly, and so schema edits never silently destroy rows. ## Core Features & Use Cases - Graph CRUD patterns: Create nodes by attaching them to root with typed edges, read with list-comprehension traversals and bracket filters, and update via jid loops or O(1) jobj() lookups. - View model projections: Build to_view() projections with viewer-relative fields like is_mine so endpoints return sorted view objects instead of raw nodes. - Schema migration and recovery: Handle field renames with schema_alias, class renames with archetype_alias, quarantined rows with jac db commands, and backend switches between SQLite and MongoDB. - Use Case: A developer adds a published flag to a Post node, renames an old username field, and needs existing production rows to keep their values instead of landing in the attic. ## Quick Start Ask the agent to write a Jac server endpoint that creates a Post node attached to a user with a typed Wrote edge and returns all published posts as view models.