Some checks failed
Test Suite / unit-tests (3.11) (push) Has been cancelled
Test Suite / unit-tests (3.12) (push) Has been cancelled
Test Suite / integration-tests (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / performance-tests (push) Has been cancelled
Test Suite / code-quality (push) Has been cancelled
Test Suite / security-scan (push) Has been cancelled
Test Suite / test-summary (push) Has been cancelled
4.2 KiB
4.2 KiB
Schema Management: Executive Summary
TL;DR: Implement naming conventions, versioning, and markdown-first schema format to solve current schema management issues.
Problems Identified
- Inconsistent Naming - Mix of
schema.jsonsuffix and no suffix - No Versioning - Can't track schema evolution or maintain multiple versions
- Duplicate Schemas - 3 manpage schemas with similar content
- Format Mismatch - JSON schemas in markdown-centric tool
Recommended Solution
1. Naming Convention (Immediate)
Format: {domain}-schema-v{major}.{minor}.json or .md
Examples:
manpage-schema-v1.0.json
terminology-schema-v1.0.json
api-documentation-schema-v1.0.json
Migration:
markdown-manpage → manpage-schema-v1.0.json
enhanced-manpage → manpage-schema-v2.0.json (breaking changes)
terminology-schema.json → terminology-schema-v1.0.json
2. Markdown-First Format (Short-term)
Proposal: Store schemas as markdown files with embedded JSON
Benefits:
- Aligns with markdown philosophy ✅
- Rich documentation alongside schema ✅
- Version history in same file ✅
- Examples and usage inline ✅
- Lower barrier to entry ✅
Example: See examples/schemas/manpage-schema-v1.md
Format:
# Schema Title v1.0
## Documentation sections...
## Schema Definition
\`\`\`json
{ schema here }
\`\`\`
3. Schema Metadata Standard (Immediate)
Required fields:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://markitect.dev/schemas/{domain}/v{major}",
"version": "1.0.0",
"title": "Human Readable Title",
"description": "Detailed description",
"x-markitect-metadata": {
"domain": "manpage",
"document-types": ["manual-page"],
"created": "2026-01-04",
"example": "examples/manpages/example.md"
}
}
Implementation Phases
Phase 1: Foundation (1-2 days)
- Analyze current state
- Define naming convention spec
- Create schema metadata template
- Rename existing schemas
- Update schema-catalog.yaml
Phase 2: Markdown Format (3-5 days)
- Design markdown schema format
- Implement parser (extract JSON from markdown)
- Convert 1 schema as proof-of-concept
- Test and iterate
- Migrate all schemas
Phase 3: Tooling (2-3 days)
- Update CLI to support .md schemas
- Add schema validation command
- Create migration guide
- Update documentation
Cost-Benefit Analysis
Cost: 6-10 days total effort
Benefits:
- Professional schema management ⭐⭐⭐⭐⭐
- Better discoverability ⭐⭐⭐⭐
- Easier maintenance ⭐⭐⭐⭐⭐
- Markdown alignment ⭐⭐⭐⭐⭐
- Version tracking ⭐⭐⭐⭐⭐
ROI: High - Foundational improvement that benefits all future schema work
Alternative Considered
Alternative: Keep JSON, generate markdown docs automatically
Pros:
- Simpler implementation (2-3 days)
- JSON remains source of truth
- Standard tooling works
Cons:
- Doesn't solve format mismatch
- Documentation generated, not authored
- Two files to manage
Verdict: Markdown-first better aligns with project philosophy
Quick Wins (Today)
- Rename schemas with versioned names (30 minutes)
- Add metadata to existing schemas (1 hour)
- Update catalog with proper versioning (30 minutes)
Questions to Resolve
- File extension:
.mdor.schema.mdfor markdown schemas? - JSON extraction: Real-time or pre-compiled cache?
- Backward compatibility: Support both formats during transition?
- CLI changes:
--schema file.mdor auto-detect format?
Next Steps
- Review this proposal and example (examples/schemas/manpage-schema-v1.md)
- Decide on markdown-first vs generated docs approach
- Prototype parser for markdown schemas
- Migrate one schema as proof-of-concept
- Iterate based on feedback
- Full rollout to all schemas
References
- Full proposal: SCHEMA_MANAGEMENT_PROPOSAL.md
- Example markdown schema: examples/schemas/manpage-schema-v1.md
- Current schema catalog: markitect/schemas/schema-catalog.yaml