Audit Schema Command
Analyze content schema for best practices and potential issues.
Usage
/cms:audit-schema
/cms:audit-schema --severity high
/cms:audit-schema --fix
Options
- --fix: Suggest fixes for identified issues
- --severity: Filter by issue severity (all|high|medium)
Workflow
Step 1: Locate Schema Definitions
Search for content type definitions in:
- YAML/JSON specification files
- C# entity models
- Migration files
Step 2: Invoke Skills
Invoke relevant skills for analysis:
content-type-modeling- Type patternscontent-relationships- Relationship integritydynamic-schema-design- JSON column usage
Step 3: Perform Audits
Naming Convention Audit:
- PascalCase for type names
- camelCase for field names
- Consistent pluralization
- Descriptive names
Field Usage Audit:
- Required fields have defaults or validation
- Optional fields marked correctly
- Field types appropriate for data
- No duplicate fields
Relationship Audit:
- All references resolve
- Inverse relationships defined
- No circular dependencies
- Cardinality correct
Best Practices Audit:
- Versioning enabled for editable content
- Slug/route fields present
- SEO fields for public content
- Audit fields (created, modified)
Step 4: Generate Report
## Schema Audit Report
### Summary
- Content Types: 12
- Total Fields: 87
- Relationships: 24
- Issues Found: 8 (3 high, 4 medium, 1 low)
### High Severity Issues
#### [H1] Missing Required Validation
**Type:** Product
**Field:** price
**Issue:** Required field has no default value
**Fix:** Add `[Required]` attribute or default value
#### [H2] Circular Dependency
**Types:** Category ↔ Product
**Issue:** Bidirectional reference may cause serialization issues
**Fix:** Use lazy loading or DTOs
### Medium Severity Issues
#### [M1] Inconsistent Naming
**Type:** blogPost (should be BlogPost)
**Fix:** Rename to PascalCase
#### [M2] Missing Inverse Relationship
**Type:** ProductVariant → Product
**Issue:** No navigation property back to Product
**Fix:** Add `Product` property to ProductVariant
### Low Severity Issues
#### [L1] Unused Field
**Type:** Article
**Field:** legacyId
**Issue:** Field appears unused in codebase
**Fix:** Remove if migration complete
### Recommendations
1. Add versioning to Product content type
2. Consider adding SEO part to Event content type
3. Review taxonomy depth for Categories (currently 5 levels)
Step 5: Apply Fixes (if --fix)
For fixable issues, generate corrected schema:
// Before
public class Product
{
public decimal price { get; set; } // M1: wrong casing
}
// After (suggested fix)
public class Product
{
[Required]
public decimal Price { get; set; } // Fixed: PascalCase, Required
}
Audit Categories
| Category | Checks | |----------|--------| | Naming | Casing, conventions, clarity | | Fields | Types, validation, usage | | Relationships | Integrity, cardinality, cycles | | Best Practices | Versioning, SEO, audit trails | | Performance | Indexing, query patterns |
Related Skills
content-type-modeling- Content type patternscontent-relationships- Relationship patternsdynamic-schema-design- JSON column patterns