Skip to main content

ADR-004: Diataxis Framework Integration for Documentation Structure


id: 004-diataxis-framework-integration title: 'ADR-004: Diataxis Framework Integration' sidebar_label: 'ADR-4: Diataxis Framework Integration' sidebar_position: 4

Status

Accepted

Context

DocuMCP aims to improve the quality and effectiveness of technical documentation by implementing proven information architecture principles. The Diataxis framework provides a systematic approach to organizing technical documentation into four distinct categories that serve different user needs and learning contexts.

Diataxis Framework Components:

  • Tutorials: Learning-oriented content for skill acquisition
  • How-to Guides: Problem-solving oriented content for specific tasks
  • Technical Reference: Information-oriented content for lookup and verification
  • Explanation: Understanding-oriented content for context and background

Current documentation challenges:

  • Most projects mix different content types without clear organization
  • Users struggle to find appropriate content for their current needs
  • Documentation often fails to serve different user contexts effectively
  • Information architecture is typically ad-hoc and inconsistent

The framework addresses fundamental differences in user intent:

  • Study vs. Work: Different contexts require different content approaches
  • Acquisition vs. Application: Learning new skills vs. applying existing knowledge
  • Practical vs. Theoretical: Task completion vs. understanding concepts

Decision

We will integrate the Diataxis framework as the foundational information architecture for all DocuMCP-generated documentation structures, with intelligent content planning and navigation generation adapted to each static site generator's capabilities.

Integration Approach:

1. Automated Structure Generation

  • Directory organization that clearly separates Diataxis content types
  • Navigation systems that help users understand content categorization
  • Template generation for each content type with appropriate guidance
  • Cross-reference systems that maintain logical relationships between content types

2. Content Type Templates

  • Tutorial templates with learning objectives, prerequisites, step-by-step instructions
  • How-to guide templates focused on problem-solution patterns
  • Reference templates for systematic information organization
  • Explanation templates for conceptual and architectural content

3. Content Planning Intelligence

  • Automated content suggestions based on project analysis
  • Gap identification for missing content types
  • User journey mapping to appropriate content categories
  • Content relationship mapping to ensure comprehensive coverage

4. SSG-Specific Implementation

  • Adaptation to SSG capabilities while maintaining Diataxis principles
  • Theme and plugin recommendations that support Diataxis organization
  • Navigation configuration optimized for each SSG's features

Alternatives Considered

Generic Documentation Templates

  • Pros: Simpler implementation, fewer constraints on content organization
  • Cons: Perpetuates existing documentation quality problems, no systematic improvement
  • Decision: Rejected due to missed opportunity for significant quality improvement

Custom Documentation Framework

  • Pros: Full control over documentation approach and features
  • Cons: Reinventing proven methodology, reduced credibility, maintenance burden
  • Decision: Rejected in favor of proven, established framework

Multiple Framework Options

  • Pros: Could accommodate different project preferences and approaches
  • Cons: Choice paralysis, inconsistent quality, complex implementation
  • Decision: Rejected to maintain focus and ensure consistent quality outcomes

Optional Diataxis Integration

  • Pros: Gives users choice, accommodates existing documentation structures
  • Cons: Reduces value proposition, complicates implementation, inconsistent results
  • Decision: Rejected to ensure consistent quality and educational value

Consequences

Positive

  • Improved Documentation Quality: Systematic application of proven principles
  • Better User Experience: Users can find appropriate content for their context
  • Educational Value: Projects learn proper documentation organization
  • Consistency: All DocuMCP projects benefit from same high-quality structure
  • Maintenance Benefits: Clear content types simplify ongoing documentation work

Negative

  • Learning Curve: Teams need to understand Diataxis principles for optimal results
  • Initial Overhead: More structure requires more initial planning and content creation
  • Rigidity: Some projects might prefer different organizational approaches

Risks and Mitigations

  • User Resistance: Provide clear education about benefits and implementation guidance
  • Implementation Complexity: Start with basic structure, enhance over time
  • Content Quality: Provide high-quality templates and examples

Implementation Details

Directory Structure Generation

interface DiataxisStructure {
tutorials: DirectoryConfig;
howToGuides: DirectoryConfig;
reference: DirectoryConfig;
explanation: DirectoryConfig;
navigation: NavigationConfig;
}

const DIATAXIS_TEMPLATES: Record<SSGType, DiataxisStructure> = {
hugo: {
tutorials: { path: 'content/tutorials', layout: 'tutorial' },
howToGuides: { path: 'content/how-to', layout: 'guide' },
reference: { path: 'content/reference', layout: 'reference' },
explanation: { path: 'content/explanation', layout: 'explanation' },
navigation: { menu: 'diataxis', weight: 'category-based' }
},
// ... other SSG configurations
};

Content Template System

interface ContentTemplate {
frontmatter: Record<string, any>;
structure: ContentSection[];
guidance: string[];
examples: string[];
}

const TUTORIAL_TEMPLATE: ContentTemplate = {
frontmatter: {
title: '{{ tutorial_title }}',
description: '{{ tutorial_description }}',
difficulty: '{{ difficulty_level }}',
prerequisites: '{{ prerequisites }}',
estimated_time: '{{ time_estimate }}'
},
structure: [
{ section: 'learning_objectives', required: true },
{ section: 'prerequisites', required: true },
{ section: 'step_by_step_instructions', required: true },
{ section: 'verification', required: true },
{ section: 'next_steps', required: false }
],
guidance: [
'Focus on learning and skill acquisition',
'Provide complete, working examples',
'Include verification steps for each major milestone',
'Assume minimal prior knowledge'
]
};

Content Planning Algorithm

interface ContentPlan {
tutorials: TutorialSuggestion[];
howToGuides: HowToSuggestion[];
reference: ReferenceSuggestion[];
explanation: ExplanationSuggestion[];
}

function generateContentPlan(projectAnalysis: ProjectAnalysis): ContentPlan {
return {
tutorials: suggestTutorials(projectAnalysis),
howToGuides: suggestHowToGuides(projectAnalysis),
reference: suggestReference(projectAnalysis),
explanation: suggestExplanation(projectAnalysis)
};
}

function suggestTutorials(analysis: ProjectAnalysis): TutorialSuggestion[] {
const suggestions: TutorialSuggestion[] = [];

// Getting started tutorial (always recommended)
suggestions.push({
title: 'Getting Started',
description: 'First steps with {{ project_name }}',
priority: 'high',
estimated_effort: 'medium'
});

// Feature-specific tutorials based on project complexity
if (analysis.complexity.apiSurface > 5) {
suggestions.push({
title: 'API Integration Tutorial',
description: 'Complete guide to integrating with the API',
priority: 'high',
estimated_effort: 'large'
});
}

return suggestions;
}
interface DiataxisNavigation {
structure: NavigationItem[];
labels: NavigationLabels;
descriptions: CategoryDescriptions;
}

const NAVIGATION_STRUCTURE: DiataxisNavigation = {
structure: [
{
category: 'tutorials',
label: 'Tutorials',
description: 'Learning-oriented guides',
icon: 'graduation-cap',
order: 1
},
{
category: 'how-to',
label: 'How-to Guides',
description: 'Problem-solving recipes',
icon: 'tools',
order: 2
},
{
category: 'reference',
label: 'Reference',
description: 'Technical information',
icon: 'book',
order: 3
},
{
category: 'explanation',
label: 'Explanation',
description: 'Understanding and context',
icon: 'lightbulb',
order: 4
}
],
labels: {
tutorials: 'Learn',
howToGuides: 'Solve',
reference: 'Lookup',
explanation: 'Understand'
},
descriptions: {
tutorials: 'Step-by-step learning paths',
howToGuides: 'Solutions to specific problems',
reference: 'Complete technical details',
explanation: 'Background and concepts'
}
};

SSG-Specific Adaptations

interface SSGDiataxisAdapter {
generateStructure(ssg: SSGType, project: ProjectAnalysis): DiataxisImplementation;
createNavigation(ssg: SSGType, structure: DiataxisStructure): NavigationConfig;
generateTemplates(ssg: SSGType, contentTypes: ContentType[]): TemplateSet;
}

class HugoDiataxisAdapter implements SSGDiataxisAdapter {
generateStructure(ssg: SSGType, project: ProjectAnalysis): DiataxisImplementation {
return {
contentDirectories: this.createHugoContentStructure(),
frontmatterSchemas: this.createHugoFrontmatter(),
taxonomies: this.createDiataxisTaxonomies(),
menuConfiguration: this.createHugoMenus()
};
}

createHugoContentStructure(): ContentStructure {
return {
'content/tutorials/': { weight: 10, section: 'tutorials' },
'content/how-to/': { weight: 20, section: 'guides' },
'content/reference/': { weight: 30, section: 'reference' },
'content/explanation/': { weight: 40, section: 'explanation' }
};
}
}

Quality Assurance

Diataxis Compliance Validation

interface DiataxisValidator {
validateStructure(documentation: DocumentationStructure): ValidationResult;
checkContentTypeAlignment(content: Content, declaredType: ContentType): AlignmentResult;
identifyMissingCategories(structure: DocumentationStructure): Gap[];
}

function validateDiataxisCompliance(docs: DocumentationStructure): ComplianceReport {
return {
structureCompliance: checkDirectoryOrganization(docs),
contentTypeAccuracy: validateContentCategorization(docs),
navigationClarity: assessNavigationEffectiveness(docs),
crossReferenceCompleteness: checkContentRelationships(docs)
};
}

Content Quality Guidelines

  • Tutorial Content: Must include learning objectives, prerequisites, and verification steps
  • How-to Content: Must focus on specific problems with clear solution steps
  • Reference Content: Must be comprehensive, accurate, and systematically organized
  • Explanation Content: Must provide context, background, and conceptual understanding

Testing Strategy

  • Structure Tests: Validate directory organization and navigation generation
  • Template Tests: Ensure all content type templates are properly formatted
  • Integration Tests: Test complete Diataxis implementation across different SSGs
  • User Experience Tests: Validate that users can effectively navigate and find content

Educational Integration

User Guidance

  • Diataxis Explanation: Clear documentation of framework benefits and principles
  • Content Type Guidelines: Detailed guidance for creating each type of content
  • Migration Assistance: Help converting existing documentation to Diataxis structure
  • Best Practice Examples: Templates and examples demonstrating effective implementation

Community Building

  • Diataxis Advocacy: Promote framework adoption across open-source community
  • Success Story Sharing: Highlight projects benefiting from Diataxis implementation
  • Training Resources: Develop educational materials for technical writers and maintainers
  • Feedback Collection: Gather community input for framework implementation improvements

Future Enhancements

Advanced Features

  • Content Gap Analysis: AI-powered identification of missing content areas
  • User Journey Optimization: Intelligent linking between content types based on user flows
  • Content Quality Scoring: Automated assessment of content quality within each category
  • Personalized Navigation: Adaptive navigation based on user role and experience level

Tool Integration

  • Analytics Integration: Track how users navigate between different content types
  • Content Management: Tools for maintaining Diataxis compliance over time
  • Translation Support: Multi-language implementations of Diataxis structure
  • Accessibility Features: Ensure Diataxis implementation supports accessibility standards

References