What problem does it solve? Writing stateful types in Jac requires knowing the exact has field syntax, and small mistakes like ordering defaulted fields before required ones or adding dynamic attributes cause cryptic compiler errors or runtime crashes. This Skill provides the verified rules and patterns for declaring typed fields on any Jac archetype so code passes jac check on the first attempt. ## Core Features & Use Cases - Field Declaration Rules: Covers required-before-default ordering, multi-field has forms, static class-level fields, and typed lists and optional references. - Computed Fields and Properties: Documents the postinit pattern for derived values and getter/setter accessor blocks backed by private storage fields. - Pitfall Prevention: Catalogs real compiler errors (E2004, E0080, E1005, E0067) and runtime traps like the dataclass inheritance default crash and reserved-word field names. - Use Case: When defining a node or obj in a Jac program, load this Skill to declare its fields correctly, including computed properties and encapsulation via has:pub, has:protect, and has:priv access tags. ## Quick Start Ask the AI to define a Jac object with typed fields, a computed postinit property, and validated setter using the jac-has-fields rules.