Agent skill
model-usage
Working with model instances and fields
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/model-usage
SKILL.md
Using Models
Models provide thread-safe field access through typed methods. All operations use .Set() and .Get() patterns.
Creating Model Instances
Basic Constructor
// Create new model instance
user := user.New()
Typed Constructor
For specific types (like joined models):
// Create a new model instance for a specific type
joinedUser := user.NewType[*user.JoinedUser]()
Setting Field Values
All fields use .Set(value) method:
user.Name.Set("Alice")
user.Email.Set("[email protected]")
user.Age.Set(30)
user.Status.Set(constants.StatusActive)
Getting Field Values
All fields use .Get() method:
name := user.Name.Get() // "Alice"
email := user.Email.Get() // "[email protected]"
age := user.Age.Get() // 30
status := user.Status.Get() // constants.StatusActive
Working with Struct Fields
Struct fields (JSONB columns) have additional methods:
Setting Struct Values
type Bookmarks struct {
FavoriteID types.UUID `json:"favorite_id"`
RecentIDs []types.UUID `json:"recent_ids"`
}
user.Bookmarks.Set(&Bookmarks{
FavoriteID: uuid1,
RecentIDs: []types.UUID{uuid2, uuid3},
})
Getting Struct Values
// .Get() returns value and error
bookmarks, err := user.Bookmarks.Get()
if err != nil {
return err
}
// .GetI() ignores errors (use when error checking not needed)
bookmarks := user.Bookmarks.GetI()
Field Types Reference
| Field Type | Go Type | Database Type | Use Case |
|---|---|---|---|
StringField |
string |
text |
Text/string columns |
UUIDField |
types.UUID |
uuid |
UUID columns |
IntField |
int |
integer/smallint |
Integer/boolean (0/1) columns |
DecimalField |
decimal.Decimal |
numeric |
Decimal/numeric columns |
IntConstantField[T] |
T (int-based) |
smallint |
Enum/constant fields |
StructField[T] |
T |
jsonb |
JSONB/struct columns |
Thread Safety
All field operations are thread-safe by default. Models use internal mutexes to protect concurrent access.
// Safe to use from multiple goroutines
go user.Name.Set("Alice")
go user.Email.Set("[email protected]")
Common Patterns
Updating Multiple Fields
user := user.New()
user.Name.Set("Alice")
user.Email.Set("[email protected]")
user.Age.Set(30)
user.Status.Set(constants.StatusActive)
err := user.Save(ctx)
if err != nil {
return err
}
Reading and Modifying
user, err := user.GetByID(ctx, userID)
if err != nil {
return err
}
// Modify fields
currentAge := user.Age.Get()
user.Age.Set(currentAge + 1)
err = user.Save(ctx)
if err != nil {
return err
}
Working with Optional Fields
Fields with null:"true" can be set to nil:
// Set to nil
user.MiddleName.SetNull()
// Check if nil
user.MiddleName.IsNull()
File Organization Standards
- queries.go - All specific queries
- functions.go - All model functions (not methods)
- Methods - Use pointer receivers with
thisas the receiver variable
Related Skills
- model-queries - Building database queries
- model-conventions - Standards and field type reference
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?