jzero Skills for AI Agents
Structured knowledge base optimized for AI agents to help developers work effectively with the jzero framework (enhanced go-zero).
Overview
This skill provides AI agents with comprehensive jzero knowledge to:
- Generate accurate code following jzero conventions
- Understand the three-layer architecture (Handler → Logic → Model)
- Apply best practices for microservices development
- Use jzero-specific features
- Build production-ready applications
Quick Start
When helping with jzero development:
- For new projects: Start with [Development Workflows](#development-workflows)
- For REST APIs: Check [REST API File Structure](references/rest-api-patterns/api-file-structure.md) - ⚠️ Critical rules
- For RPC services: Review [Proto File Structure](references/rpc-patterns/proto-file-structure.md) - Proto standards & multi-proto support
- For databases: Review [Database Best Practices](references/database-patterns/best-practices.md) - ⚠️ Must read
- For SQL changes: Check [SQL Migration Guide](references/database-patterns/sql-migration.md) - ⚠️ Schema changes
- For specific operations: Reference the appropriate pattern guide below
Core Patterns
REST API Development
Reference: [references/rest-api-patterns/api-file-structure.md](references/rest-api-patterns/api-file-structure.md)
- API file structure with required settings (
gopackage, group, compacthandler)
- Three-layer architecture (Handler → Logic → Model)
- Request/response type definitions with validation
- Handler patterns and HTTP concerns
- Logic patterns and business implementation
- ✅ Correct vs ❌ incorrect patterns with examples
When to use: Creating or modifying REST API services, implementing HTTP endpoints
RPC Services
- [Proto File Structure](references/rpc-patterns/proto-file-structure.md): Proto standards, multi-proto support, file structure, HTTP gateway, OpenAPI docs
- [Proto Field Validation](references/rpc-patterns/proto-validation.md): Field validation with protovalidate, CEL expressions, built-in constraints
- [Proto Middleware](references/rpc-patterns/proto-middleware.md): HTTP/RPC middleware at service and method levels
When to use: Creating or modifying RPC services, working with proto files, adding validation or middleware
Database Operations
- [Best Practices](references/database-patterns/best-practices.md): Model import rules, condition chain usage, error handling, field constants ⚠️🚨
- [SQL Migration Guide](references/database-patterns/sql-migration.md): Managing schema changes with up/down migrations ⚠️
- [Model Generation](references/database-patterns/model-generation.md): From SQL files or remote datasource
- [Database Connection](references/database-patterns/database-connection.md): MySQL, PostgreSQL, SQLite, Redis configuration
- [CRUD Operations](references/database-patterns/crud-operations.md): Generated methods (Insert, FindOne, Update, Delete, etc.)
⚠️ CRITICAL REMINDER: ALWAYS use condition.NewChain() - NEVER use condition.New()
When to use: Implementing data persistence, queries, or database operations
Development Workflows
Reference: [Project Structure](#project-structure)
Creating a New REST API Endpoint
- Define API specification in
.api file with required settings:
- Generate api code:
jzero gen --desc desc/api/user.api
- Implement logic in
internal/logic/ following three-layer architecture
See detailed patterns: [REST API File Structure](references/rest-api-patterns/api-file-structure.md)
Implementing Database Operations
Choose your schema mode first:
Local SQL Mode (schema files in desc/sql/):
- Create/update SQL schema in
desc/sql/*.sql
- Create migration files in
desc/sql_migration/ (xx.up.sql & xx.down.sql) ⚠️
- Apply migrations (development:
jzero migrate up, production: auto in cmd/server.go)
- Generate model:
jzero gen --desc desc/sql/users.sql
Remote Datasource Mode (schema from live database):
- Create migration files in
desc/sql_migration/ (xx.up.sql & xx.down.sql) ⚠️
- Apply migrations (development:
jzero migrate up, production: auto in cmd/server.go)
- Generate model:
jzero gen
Common steps (both modes):
- Inject model into ServiceContext
- Use condition builder in logic layer
- Handle errors properly
⚠️ Migration rules: Always create both up/down files, use consecutive numbering (1, 2, 3...)
See detailed patterns: [SQL Migration Guide](references/database-patterns/sql-migration.md) | [Database Best Practices](references/database-patterns/best-practices.md)
Setting Up Database Connection
- Configure in
etc/etc.yaml:
- Initialize in ServiceContext with modelx.MustNewConn
- Register models in Model struct
See detailed guide: [Database Connection](references/database-patterns/database-connection.md)
Project Structure
jzero-skills/
├── SKILL.md # This file - skill entry point
├── references/ # Detailed pattern documentation
│ ├── rest-api-patterns/ # REST API guides
│ │ └── api-file-structure.md # ⚠️ Critical rules for .api files
│ ├── rpc-patterns/ # RPC/Proto service guides
│ │ ├── proto-file-structure.md # Proto standards & multi-proto
│ │ ├── proto-validation.md # Field validation guide
│ │ └── proto-middleware.md # Middleware patterns
│ └── database-patterns/ # Database operation guides
│ ├── best-practices.md # ⚠️ Critical rules with examples
│ ├── sql-migration.md # ⚠️ Schema changes & migrations
│ ├── database-connection.md # DB & Redis setup
│ ├── model-generation.md # Generate models from SQL
│ └── crud-operations.md # CRUD methods reference
Typical jzero project structure:
myproject/
├── .jzero.yaml # CLI config: code generation, ⚠️ migrate settings
├── desc/
│ ├── api/ # .api files → generates handlers
│ ├── sql/ # .sql files → generates models (local SQL mode)
│ ├── sql_migration/ # xx.up.sql & xx.down.sql for schema changes ⚠️
│ └── proto/ # .proto files → generates RPC code
├── internal/
│ ├── handler/ # HTTP handlers (generated)
│ ├── logic/ # Business logic (implement here)
│ ├── model/ # Data models (generated)
│ ├── svc/ # Service context (dependencies)
│ ├── config/ # Config structs
│ └── middleware/ # Custom middleware
├── etc/
│ └── etc.yaml # Configuration
└── .jzero.yaml # jzero CLI config
Key Principles
✅ Always Follow
- 🚨 Condition builder: ALWAYS use
condition.NewChain(), NEVER use condition.New() - THIS IS CRITICAL 🚨
- Three-layer architecture: Handler → Logic → Model separation
- API file requirements: Set
gopackage, group, compacthandler: true
- Model imports: Use alias
xxmodel "project/internal/model/xx"
- Error handling: Use
errors.Is(err, model.ErrNotFound) from github.com/pkg/errors
- Code generation: Run
jzero gen --desc before implementing logic
- Type safety: Use generated field constants (e.g.,
usersmodel.Id)
❌ Never Do
- 🚫 NEVER use
condition.New() - This is error-prone and deprecated. ALWAYS use condition.NewChain()
- Put business logic in handlers (belongs in logic layer)
- Skip
gopackage, group, or compacthandler in .api files
- Import models without alias:
"project/internal/model/users" (wrong)
- Use
== for error comparison: if err == ErrNotFound (wrong)
- Hard-code configuration values
- Implement logic before generating code
Progressive Learning
New to jzero?
- Read this file (SKILL.md) for overview
- Create a project:
jzero new myapi --frame api
- Follow [Development Workflows](#development-workflows)
- Study [REST API File Structure](references/rest-api-patterns/api-file-structure.md)
Building REST APIs?
- Master API file requirements (critical for avoiding regeneration issues)
- Learn three-layer architecture patterns
- Study [Database Best Practices](references/database-patterns/best-practices.md)
Creating RPC services?
- Learn proto file structure: [Proto File Structure](references/rpc-patterns/proto-file-structure.md)
- Add validation: [Proto Field Validation](references/rpc-patterns/proto-validation.md)
- Implement middleware: [Proto Middleware](references/rpc-patterns/proto-middleware.md)
Working with databases?
- ⚠️ Must read: [Database Best Practices](references/database-patterns/best-practices.md)
- ⚠️ Must read: [SQL Migration Guide](references/database-patterns/sql-migration.md) - Schema changes
- Set up connection: [Database Connection](references/database-patterns/database-connection.md)
- Generate models: [Model Generation](references/database-patterns/model-generation.md)
- Learn CRUD operations: [CRUD Operations](references/database-patterns/crud-operations.md)
Production deployment?
- Review all best practices in reference guides
- Configure proper error handling and logging
- Set up caching strategies with Redis
- Implement resilience patterns (circuit breaker, rate limiting)
Resources