This commit completes Phase 2 of schema evolution work and establishes a new example demonstrating schema usage for terminology documents. ## New Features ### Terminology Validation Example (examples/terminology/) - Complete example terminology document with proper structure - JSON schema with MarkiTect extensions for validation - Demonstrates schema usage beyond manpages (glossaries, lexicons) - Validates term structure: Definition, Synonyms, Related Terms, Examples - Includes content control and quality validation rules - Full documentation with usage examples and best practices ### Schema Registration System - Registered terminology schema in markitect database - Created schema catalog (markitect/schemas/schema-catalog.yaml) - Copied schema to official location (markitect/schemas/) - Provides metadata, features, and usage info for all schemas ### Improved schema-list Command - Now displays creation timestamps in default output - Table format includes Created/Updated columns - Cleaner timestamp formatting (removed microseconds) - Better visibility into when schemas were added ## Files Changed Added: - examples/terminology/README.md - Complete documentation - examples/terminology/terminology-example.md - Example glossary - examples/terminology/terminology-schema.json - Validation schema - markitect/schemas/terminology-schema.json - Registered schema - markitect/schemas/schema-catalog.yaml - Schema registry Modified: - markitect/cli.py - Enhanced schema-list with timestamps - TODO.md - Documented Phase 2 completion and new example Moved: - SCHEMA_EVOLUTION_WORKPLAN.md → todo/ directory ## Schema Features Demonstrated - Heading hierarchy validation (H1 → H2 → H3) - Term structure validation with required/optional fields - Content quality metrics (word counts, readability targets) - MarkiTect extensions (x-markitect-sections, x-markitect-content-control) - Classification system (required/recommended/optional/discouraged/improper) ## Usage ```bash # List schemas with timestamps markitect schema-list # Validate terminology document markitect validate glossary.md --schema terminology-schema.json # View in table format markitect schema-list --format table ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Unix Manpage Schema Validation Example
This example demonstrates MarkiTect's schema validation system by creating a self-validating documentation set: a schema that defines Unix manpage structure and a comprehensive manual about schema validation that validates against its own schema definition.
Overview
This example showcases the "dogfooding" principle - using MarkiTect's schema validation to document schema validation itself. It demonstrates:
- Schema-driven documentation - Defining document structure with JSON Schema
- Self-validation - The manual validates against the manpage schema it demonstrates
- Reusable patterns - The manpage schema can validate any Unix-style manual page
- Complete workflow - From schema creation through validation and refinement
Files in This Example
markdown-manpage-schema.json
A JSON Schema defining the structure of Unix-style manual pages written in Markdown.
Key Features:
- Validates H1 title format:
command(section) - description - Requires SYNOPSIS and DESCRIPTION sections
- Validates heading hierarchy (H1, H2, H3, H4)
- Ensures presence of code examples, paragraphs, and emphasis
- Includes custom
x-markitect-*extensions for manpage conventions
Schema Requirements:
- Exactly 1 H1 heading (document title)
- 3-30 H2 headings (major sections)
- 0-50 H3 headings (subsections)
- 5-500 paragraphs (content)
- 1-50 code blocks (examples)
- 10-500 emphasis elements (commands/arguments)
markdown-schema-validation.1.md
A comprehensive manual page (section 7) documenting MarkiTect's markdown schema validation system.
Sections Include:
- SYNOPSIS - Command syntax reference
- DESCRIPTION - How schema validation works
- SCHEMA STRUCTURE - JSON Schema format details
- COMMANDS - Schema management and validation commands
- WORKFLOW - Step-by-step validation workflows
- VALIDATION RULES - What schemas validate
- ERROR HANDLING - Understanding validation errors
- SCHEMA DESIGN - Best practices and anti-patterns
- INTEGRATION - CI/CD, git hooks, build systems
- EXAMPLES - Practical usage demonstrations
- Plus standard manpage sections: FILES, EXIT STATUS, ENVIRONMENT, SEE ALSO, etc.
Statistics:
- 19 H2 sections
- 24 H3 subsections
- 147 paragraphs
- 23 code examples
- 105 emphasis markers
Running the Example
1. Validate the Manual Against the Schema
Verify that the manual conforms to the manpage schema:
cd examples/manpages
markitect validate markdown-schema-validation.1.md \
--schema markdown-manpage-schema.json
Expected output: ✅ VALID - Document structure matches schema requirements
2. Show Detailed Validation
See detailed validation information:
markitect validate markdown-schema-validation.1.md \
--schema markdown-manpage-schema.json \
--detailed-errors
3. Generate Schema from the Manual
Analyze the manual's actual structure:
markitect schema-generate markdown-schema-validation.1.md \
--output actual-structure-schema.json
cat actual-structure-schema.json
Compare the generated schema with the manpage schema to see how the manual conforms.
4. Examine AST Structure
View the parsed structure of the manual:
markitect ast-show markdown-schema-validation.1.md --format tree
Or in compact format:
markitect ast-show markdown-schema-validation.1.md --format compact | head -50
5. Store Schema for Reuse
Add the manpage schema to MarkiTect's database:
markitect schema-ingest markdown-manpage-schema.json
markitect schema-list
6. Validate Other Manpages
Use the schema to validate other manual pages in the project:
markitect validate ../../docs/manuals/markitect.1.md \
--schema markdown-manpage-schema.json
markitect validate ../../docs/manuals/issue.1.md \
--schema markdown-manpage-schema.json
7. Generate Manpage Template
Create a template for new manpages:
markitect generate-stub markdown-manpage-schema.json \
--output new-manpage-template.md
cat new-manpage-template.md
What This Example Demonstrates
1. Schema-Driven Documentation
The manpage schema defines what a valid Unix manual page looks like:
- Required structural elements (title, synopsis, description)
- Heading hierarchy constraints
- Content density requirements (minimum paragraphs, code examples)
- Formatting conventions (bold commands, italic arguments)
2. Self-Validating System
The schema validation manual validates against the manpage schema, proving:
- The schema is practical and usable
- The manual follows manpage conventions
- Schema validation works as documented
- The system is reliable enough to document itself
3. Structural vs Semantic Validation
The schema validates structure, not content:
- ✅ Validates: Correct number of sections, heading levels, code examples present
- ❌ Does not validate: Grammar, code correctness, factual accuracy, logical flow
This distinction is crucial for understanding what schemas can and cannot do.
4. Reusable Patterns
The manpage schema is a reusable pattern that can:
- Validate any Unix-style manual page
- Enforce documentation consistency across a project
- Generate templates for new documentation
- Integrate into CI/CD pipelines for quality checks
5. Custom Schema Extensions
The schema demonstrates MarkiTect's custom extensions:
"x-markitect-required-sections": [
"SYNOPSIS",
"DESCRIPTION"
],
"x-markitect-recommended-sections": [
"OPTIONS",
"EXAMPLES",
"SEE ALSO"
],
"x-markitect-conventions": {
"heading_case": "UPPERCASE for H2 sections",
"command_format": "Bold with **command**",
"argument_format": "Italic with *ARG*"
}
These extensions provide metadata about schema intent and conventions beyond structural validation.
Validation Workflow Demonstrated
This example shows the complete schema validation workflow:
Step 1: Schema Creation
- Analyze existing manpages (markitect.1.md, issue.1.md)
- Identify common structural patterns
- Generate base schema from example document
- Refine schema to be flexible yet meaningful
Step 2: Schema Refinement
- Adjust minItems/maxItems for appropriate ranges
- Add custom MarkiTect extensions
- Include heading patterns and conventions
- Balance strictness with flexibility
Step 3: Document Creation
- Write document following schema structure
- Use template generated from schema as starting point
- Ensure all required sections present
- Include appropriate code examples and formatting
Step 4: Validation
- Validate document against schema
- Review validation errors if any
- Fix structural issues
- Re-validate until passing
Step 5: Iteration
- Refine schema based on validation experience
- Adjust constraints for real-world use cases
- Document lessons learned
- Share schema for reuse
Integration Examples
CI/CD Integration
Add to .github/workflows/docs.yml or similar:
- name: Validate Manpages
run: |
for manpage in docs/manuals/*.md; do
markitect validate "$manpage" \
--schema examples/manpages/markdown-manpage-schema.json \
|| exit 1
done
Pre-commit Hook
Add to .git/hooks/pre-commit:
#!/bin/bash
changed_manpages=$(git diff --cached --name-only --diff-filter=ACM | grep 'docs/manuals/.*\.md$')
for manpage in $changed_manpages; do
markitect validate "$manpage" \
--schema examples/manpages/markdown-manpage-schema.json \
--quiet || {
echo "Manpage validation failed: $manpage"
markitect validate "$manpage" \
--schema examples/manpages/markdown-manpage-schema.json \
--detailed-errors
exit 1
}
done
Makefile Integration
Add to project Makefile:
.PHONY: validate-manpages
validate-manpages:
@echo "Validating manual pages..."
@for manpage in docs/manuals/*.md; do \
markitect validate "$$manpage" \
--schema examples/manpages/markdown-manpage-schema.json \
|| exit 1; \
done
@echo "✅ All manpages valid"
.PHONY: docs
docs: validate-manpages
# Continue with doc generation...
Key Lessons from This Example
1. Start with Real Documents
The manpage schema was created by analyzing existing manpages (markitect.1.md, issue.1.md), not designed in isolation. This ensures the schema reflects real-world usage.
2. Use Ranges, Not Exact Counts
The schema uses ranges like 5-500 paragraphs instead of exact counts. This provides flexibility while still enforcing quality standards.
3. Required vs Recommended
The schema distinguishes between required sections (SYNOPSIS, DESCRIPTION) and recommended sections (EXAMPLES, SEE ALSO), allowing flexibility where appropriate.
4. Validate Structure, Not Semantics
Schemas validate document structure, not content quality. Grammar checking, code correctness, and factual accuracy require other tools.
5. Progressive Refinement
Schemas should evolve based on validation experience. Start loose, tighten based on actual needs, never over-specify.
6. Documentation is Essential
The schema includes extensive metadata about conventions and intent through custom extensions, making it self-documenting.
Extending This Example
Create Schema Variants
Create specialized schemas for different manpage types:
# For command manpages (section 1)
cp markdown-manpage-schema.json command-manpage-schema.json
# Edit to require COMMANDS section
# For format manpages (section 5)
cp markdown-manpage-schema.json format-manpage-schema.json
# Edit to require FORMAT section
# For convention manpages (section 7)
cp markdown-manpage-schema.json convention-manpage-schema.json
# Edit to be more flexible
Validate Your Own Documentation
Apply the manpage schema to your project:
# Validate README
markitect validate README.md \
--schema markdown-manpage-schema.json
# May need adjustments for non-manpage docs
Generate Schema Family
Create schemas for related document types:
- API documentation schema
- Tutorial schema
- RFC/specification schema
- Architecture decision record (ADR) schema
Each can follow similar validation principles while enforcing type-specific structure.
Further Reading
- markdown-schema-validation.1.md - Complete reference for schema validation
- ../../docs/manuals/markitect.1.md - MarkiTect command reference
- JSON Schema Specification - https://json-schema.org/
- Unix Manual Page Conventions -
man 7 man-pageson Unix systems
Validation Results
This example has been validated to confirm:
✅ Manual validates against manpage schema ✅ Schema is well-formed JSON Schema draft-07 ✅ All required sections present in manual ✅ Heading hierarchy follows Unix conventions ✅ Code examples demonstrate actual usage ✅ Structure matches defined constraints
License
Part of the MarkiTect project. Licensed under MIT License.
Note: This example represents a complete, production-ready use case of MarkiTect's schema validation system. The files can be used as-is or adapted for your own documentation requirements.