# Schema Management: Executive Summary **TL;DR:** Implement naming conventions, versioning, and markdown-first schema format to solve current schema management issues. ## Problems Identified 1. **Inconsistent Naming** - Mix of `schema.json` suffix and no suffix 2. **No Versioning** - Can't track schema evolution or maintain multiple versions 3. **Duplicate Schemas** - 3 manpage schemas with similar content 4. **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:** ```markdown # Schema Title v1.0 ## Documentation sections... ## Schema Definition \`\`\`json { schema here } \`\`\` ``` ### 3. Schema Metadata Standard (Immediate) **Required fields:** ```json { "$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) - [x] 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) 1. **Rename schemas** with versioned names (30 minutes) 2. **Add metadata** to existing schemas (1 hour) 3. **Update catalog** with proper versioning (30 minutes) ## Questions to Resolve 1. **File extension:** `.md` or `.schema.md` for markdown schemas? 2. **JSON extraction:** Real-time or pre-compiled cache? 3. **Backward compatibility:** Support both formats during transition? 4. **CLI changes:** `--schema file.md` or auto-detect format? ## Next Steps 1. **Review** this proposal and example (examples/schemas/manpage-schema-v1.md) 2. **Decide** on markdown-first vs generated docs approach 3. **Prototype** parser for markdown schemas 4. **Migrate** one schema as proof-of-concept 5. **Iterate** based on feedback 6. **Full rollout** to all schemas ## References - Full proposal: [SCHEMA_MANAGEMENT_PROPOSAL.md](./SCHEMA_MANAGEMENT_PROPOSAL.md) - Example markdown schema: [examples/schemas/manpage-schema-v1.md](../../examples/schemas/manpage-schema-v1.md) - Current schema catalog: [markitect/schemas/schema-catalog.yaml](../../markitect/schemas/schema-catalog.yaml)