What problem does it solve? Writing graph-persistent code in Jac requires knowing the exact syntax for typed nodes, typed edges, connection operators, and nested traversal filters, and small mistakes like untyped edge predicates or colon-assign edge fields silently produce wrong results. This Skill provides verified patterns and pitfalls so graph modeling and query code works correctly the first time. ## Core Features & Use Cases - Node and Edge Definition: Declare graph-persistent node and edge archetypes with has fields and typed endpoints (edge Follows: Person --> Person). - Traversal and Filtering: Read the graph with direction variants, typed edge filters, nested [?:Type, field == value] predicates, multi-hop chains, and assign comprehensions for bulk updates. - Pitfall Avoidance: Documents verified failure modes such as silently dropped edge-field assignments, duck-typed untyped predicates raising runtime errors, and typed-edge deletion requiring [edge ...] iteration. - Use Case: When modeling a social graph in Jac, use this Skill to define a typed Follows edge with a since field, then query adult followers with [me ->:Follows:since > 2020:-> [?:Person, age >= 18]] without hitting type-inference or parse errors. ## Quick Start Use the jac-node-edge-patterns skill to define typed nodes and edges and write a filtered multi-hop graph traversal for my Jac data model.