pdmt
PDMT is a high-performance, deterministic templating library designed for Model Context Protocol (MCP) applications. It generates consistent and validated todo lists and structured content, ensuring quality enforcement. Notably, it performs validation through actionability checks and complexity scoring.
GitHub Stars
0
User Rating
Not Rated
Favorites
0
Views
124
Forks
0
Issues
0
PDMT - Pragmatic Deterministic MCP Templating
A high-performance, deterministic templating library for Model Context Protocol (MCP) applications, designed for generating consistent, validated todo lists and structured content with quality enforcement.
π Features
- π― Deterministic Generation: 0.0 temperature templating ensures reproducible outputs
- π Todo Validation: Comprehensive validation with actionability checks, complexity scoring, and time estimates
- π MCP Integration: Native support for Model Context Protocol via PMCP SDK
- π‘οΈ Quality Gates: PMAT (Paiml MCP Agent Toolkit) integration for quality enforcement
- π§ͺ Extensive Testing: 81%+ test coverage with property testing, fuzz testing, and edge case coverage
- β‘ High Performance: Optimized Handlebars engine with caching and validation
- π¦ Multiple Formats: Support for YAML, JSON, Markdown, and plain text output
- π Dependency Analysis: Circular dependency detection and critical path calculation
π Quick Start
Add PDMT to your Cargo.toml:
[dependencies]
pdmt = "1.0.0"
# Optional features
pdmt = { version = "1.0.0", features = ["quality-proxy", "mcp-tools", "todo-validation"] }
Basic Usage
use pdmt::{TemplateEngine, models::todo::TodoInput};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create template engine
let mut engine = TemplateEngine::new();
engine.load_builtin_templates().await?;
// Create todo input
let input = TodoInput {
project_name: "My Project".to_string(),
requirements: vec![
"Implement user authentication".to_string(),
"Create REST API endpoints".to_string(),
"Add comprehensive tests".to_string(),
],
granularity: pdmt::models::todo::TodoGranularity::High,
include_estimates: true,
max_todos: Some(10),
..Default::default()
};
// Generate deterministic todo list
let result = engine.generate("todo_list", input).await?;
println!("Generated todos:\n{}", result.content);
println!("Template used: {}", result.template_id);
Ok(())
}
Advanced Features
Todo Validation
use pdmt::{validators::todo::TodoValidator, models::todo::TodoList};
let validator = TodoValidator::new();
let mut todo_list = TodoList::new();
// Add todos...
todo_list.add_todo(Todo::new("Implement authentication system"));
let validation_result = validator.validate_todo_list(&todo_list);
if validation_result.is_valid {
println!("β
All todos are valid!");
println!("Quality score: {:.2}", validation_result.quality_score);
} else {
println!("β Validation issues found:");
for issue in validation_result.issues {
println!(" - {}: {}", issue.category, issue.message);
}
}
ποΈ Architecture
PDMT is built with a modular architecture:
- Template Engine: Handlebars-based deterministic generation
- Content Models: Todo lists, generated content, and metadata
- Quality Proxy: PMAT integration for quality enforcement
- MCP Integration: Native Model Context Protocol support
- Validators: Comprehensive validation for todos and content
π― Feature Flags
[dependencies]
pdmt = {
version = "1.0.0",
features = [
"quality-proxy", # PMAT quality enforcement
"mcp-tools", # MCP/PMCP integration
"todo-validation", # Advanced todo validation
"property-tests", # Property testing support
]
}
π YAML Template System
PDMT uses a powerful YAML-based template system for deterministic content generation:
Template Structure
# Basic template structure
id: todo_list
version: "1.0.0"
extends: base # Optional inheritance
metadata:
provider: "deterministic"
description: "Generate deterministic todo lists"
parameters:
temperature: 0.0 # Ensures deterministic output
input_schema:
type: object
required: ["project_name", "requirements"]
properties:
project_name:
type: string
description: "Name of the project"
requirements:
type: array
items:
type: string
description: "List of requirements to convert to tasks"
granularity:
type: string
enum: ["low", "medium", "high"]
default: "high"
validation:
deterministic_only: true
quality_gates:
max_complexity_per_task: 8
require_time_estimates: true
require_specific_actions: true
min_task_detail_chars: 10
max_task_detail_chars: 100
prompt_template: |
Generate a deterministic todo list for "{{project_name}}".
Requirements:
{{#each requirements}}
- {{this}}
{{/each}}
Built-in Templates
PDMT provides several built-in templates:
| Template ID | Description | Use Case |
|---|---|---|
todo_list |
Deterministic todo generation | Project planning, task breakdown |
project_scaffold |
Project structure generation | New project setup |
base |
Base template for inheritance | Template extension |
Custom Templates
Create custom templates by extending the base template:
# custom_template.yml
id: custom_engineering_todos
version: "1.0.0"
extends: todo_list
metadata:
description: "Engineering-specific todo generation"
validation:
quality_gates:
require_test_specifications: true
require_documentation: true
enforce_dependency_tracking: true
output_schema:
format: yaml
structure: |
todos:
- id: string
content: string
estimated_hours: number
test_requirements: [string]
documentation_requirements: [string]
Loading Templates
use pdmt::TemplateEngine;
let mut engine = TemplateEngine::new();
// Load built-in templates
engine.load_builtin_templates().await?;
// Load custom template from file
engine.load_template_file("templates/custom_template.yml").await?;
// Load template from string
let yaml_content = std::fs::read_to_string("template.yml")?;
engine.load_template(&yaml_content)?;
π Examples
The examples/ directory contains comprehensive examples demonstrating PDMT's deterministic templating capabilities:
π Todo Generation
Generate deterministic, quality-enforced todo lists for project planning:
cargo run --example todo_generation --features="full" -- \
--project "My Project" \
--requirement "Implement feature X" \
--requirement "Add tests for Y" \
--granularity high \
--max-todos 10 \
--format yaml
π Resume Builder
Create professional resumes with consistent formatting:
cargo run --example resume_builder --features="full" -- \
--name "Jane Doe" \
--title "Senior Software Engineer" \
--email "jane@example.com" \
--format markdown
# Interactive mode for detailed input
cargo run --example resume_builder --features="full" -- --interactive
π README Builder
Generate well-structured README files with standardized sections:
cargo run --example readme_builder --features="full" -- \
--name "my-awesome-project" \
--description "A powerful Rust library" \
--language rust \
--github-user myusername \
--badges \
--output README.md
# Interactive mode for guided setup
cargo run --example readme_builder --features="full" -- --interactive
Each example demonstrates:
- Deterministic output - Same inputs always produce identical results
- YAML templating - Structured templates for consistent formatting
- Quality enforcement - Validation and best practices built-in
- Multiple output formats - Support for various file formats
π‘οΈ Quality Enforcement
PDMT integrates with PAIML's quality gate system for comprehensive validation:
Quality Gates
| Quality Check | Description | Threshold |
|---|---|---|
| Actionability | Tasks must start with action verbs | 100% required |
| Complexity | Cyclomatic complexity limits | Max score: 8 |
| Time Estimates | Realistic effort estimation | 0.5-40 hours |
| Length Validation | Task description constraints | 10-100 chars |
| Dependency Tracking | Circular dependency detection | Zero cycles |
| SATD Detection | No TODO/FIXME/HACK comments | Zero tolerance |
Validation Example
use pdmt::{
validators::todo::{TodoValidator, TodoQualityConfig},
models::todo::{TodoList, Todo}
};
// Configure quality requirements
let config = TodoQualityConfig {
max_complexity_per_task: Some(8),
require_time_estimates: true,
require_specific_actions: true,
min_task_detail_chars: Some(10),
max_task_detail_chars: Some(100),
..Default::default()
};
let validator = TodoValidator::with_config(config);
let todo_list = TodoList::new();
// Validate todos
let result = validator.validate_todo_list(&todo_list);
// Check quality metrics
println!("Actionable tasks: {}/{}",
result.metrics.actionable_count,
result.metrics.total_count);
println!("Average complexity: {:.2}",
result.metrics.avg_complexity);
π§ͺ Testing & Quality
PDMT maintains high quality standards:
- 81%+ Test Coverage: Comprehensive test suite
- Fuzz Testing: Automated robustness testing
- Property Testing: Invariant verification
- Strict Linting: clippy::pedantic + clippy::nursery
# Run tests with coverage
make test
# Run all quality checks
make all
# Run linting
make lint
# Run formatting
make format
# Generate coverage report
make coverage
π€ Contributing
We welcome contributions! Areas include:
- π Bug Fixes
- β¨ New Features
- π Documentation
- π§ͺ Testing
Development Setup
git clone https://github.com/paiml/pdmt
cd pdmt
cargo build --all-features
make test
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Support
- Documentation: docs.rs/pdmt
- Issues: GitHub Issues
The leading collection of graduate-level courses on Data Science, ML, Data Engineering, and Computer Science.
133
Followers
47
Repositories
0
Gists
0
Total Contributions
π Terraform Model Context Protocol (MCP) Tool - An experimental CLI tool that enables AI assistants to manage and operate Terraform environments. Supports reading Terraform configurations, analyzing plans, applying configurations, and managing state with Claude Desktop integration. β‘οΈ
echokit_server is a high-performance server software built in Rust, offering efficient data processing and API management. Designed for developers, it boasts high scalability and adaptability for various applications. It is particularly well-suited for real-time data processing and microservices architecture.