Maker - .NET Core Data API Code Generation
Overview
Maker transforms XML model definitions into complete .NET Core data API endpoints with full CRUD functionality. This skill helps generate Maker XML models from various sources and understand the Maker CLI workflow.
Workflow Decision Tree
Choose your workflow based on the starting point:
Starting from JSON or data model? → Use the From JSON Workflow
Starting from SQL CREATE TABLE script? → Use the From SQL Workflow
Starting from existing Maker XML? → Use the Understanding Maker XML
Need to generate code from Maker XML? → Use the CLI Generation Workflow
From JSON or Data Model
When converting JSON objects or data models to Maker XML:
- Read the conversion prompt: Load
references/Prompt_to_create_Maker_XML_from_json_model.mdto understand the conversion guidelines - Read the specification: Load
references/Maker_XML_specification.mdfor type mappings and patterns - Apply the conversion logic:
- Infer relationships from field names ending in
Id,ID, or_id - Map JSON types to Maker column types (string → text/name/label, boolean → flag, etc.)
- Suggest property tables for type/status/state fields
- Add appropriate filters and auto-population attributes
- Follow Maker naming conventions (IsActive, not Active)
- Infer relationships from field names ending in
- Generate three artifacts:
- Maker XML
<Table>definition - Corresponding
<View>definition - Property table initialization SQL (if applicable)
- Maker XML
From SQL CREATE TABLE Script
When converting SQL CREATE TABLE scripts to Maker XML:
- Read the conversion prompt: Load
references/Prompt_to_create_Maker_XML_from_sql_script.mdfor SQL-specific guidelines - Read the specification: Load
references/Maker_XML_specification.mdfor type mappings - Apply the conversion logic:
- Map SQL types to Maker column types
- Identify foreign key relationships from column names
- Improve naming where SQL uses poor conventions
- Suggest virtual columns for views
- Add XML comments for assumptions or complex mappings
- Generate three artifacts:
- Maker XML
<Table>definition - Corresponding
<View>definition - Property table initialization SQL (if applicable)
- Maker XML
Understanding Maker XML
When working with existing Maker XML or needing to understand the specification:
Read the specification: Load references/Maker_XML_specification.md to understand:
- Column types (identity, text, name, label, note, integer, decimal, flag, datetime, property, uniqueid)
- Table attributes (type, name, description, alias, view, schema, search)
- View definitions and virtual columns
- Property tables and relational patterns
- Auto-population and filtering rules
- Naming conventions and best practices
CLI Generation Workflow
When generating code from Maker XML models:
Read the CLI documentation: Load references/MakerCLI.md to understand:
- Command-line syntax and arguments
- Validation-only mode for model verification
- Publishing workflow for deployment
- File placement and integration requirements
Standard generation command:
MakerCLI --modelname=[Name] --publish=false --validate=true
Validation-only mode:
MakerCLI --modelname=[Name] --validate=only
This performs model validation without generating files, useful for verifying XML before generation.
Type Mapping Quick Reference
| Source Type | Maker Type | Notes |
|-------------|------------|-------|
| id, guid, uuid | identity or uniqueid | identity for PKs, uniqueid for tokens |
| string (short) | name, label, or text | Based on context/length |
| string (medium) | note or text length="note" | Descriptions |
| string (long) | desc or text length="desc" | Large text, JSON |
| boolean | flag | Ensure Is/Has/Want/Can prefix |
| number, integer | integer or decimal | Based on precision needs |
| date, datetime | datetime | Add auto/update attributes as needed |
| Enum/lookup fields | property | Create property table |
Common Patterns
Foreign Key Relationships
When a field ends with Id, ID, or _id:
<Column type="integer" name="SiteID" filter="yes"/>
Property Tables (Type/Status/State)
For enumeration fields:
<Column type="property" name="Type">
<Property name="TypeID" table="Type"/>
</Column>
With initialization SQL:
INSERT INTO Type (Code, Name, Description) VALUES
('standard', 'Standard', 'Standard type'),
('premium', 'Premium', 'Premium type');
Auto-Populated Timestamps
<Column type="datetime" name="Created" filter="no" auto="yes" update="no"/>
<Column type="datetime" name="Updated" filter="no" auto="yes" update="yes"/>
Boolean Flags with Correct Naming
<Column type="flag" name="IsActive"/> <!-- Correct -->
<!-- Not: <Column type="flag" name="Active"/> -->
References
This skill includes comprehensive reference documentation:
- Maker_XML_specification.md: Complete Maker XML specification with all column types, attributes, and patterns
- MakerCLI.md: CLI usage, commands, and workflow documentation
- Prompt_to_create_Maker_XML_from_json_model.md: JSON-to-XML conversion guidelines
- Prompt_to_create_Maker_XML_from_sql_script.md: SQL-to-XML conversion guidelines
Load these references as needed based on the specific conversion or generation task.