You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document tracks Dotprompt implementation status across all language runtimes.
Dotprompt is an executable prompt template file format for Generative AI.
Last audited: 2026-02-19. Status verified by running all spec tests and
inspecting source code in each language runtime.
Legend
Symbol
Meaning
✅
Fully implemented and tested
🔶
Partially implemented
❌
Not implemented
N/A
Not applicable
Runtime Overview
Runtime
Package Name
Status
Build System
JavaScript
dotprompt
Reference impl
pnpm
Dart
dotprompt
Production
Bazel
Python
dotpromptz
Production
uv + Bazel
Go
dotprompt-go
Development
Go modules + Bazel
Rust
dotprompt-rs
Development
Cargo + Bazel
Java
dotprompt-java
Development
Bazel
Core Parsing
Feature
JS
Dart
Python
Go
Rust
Java
Frontmatter Parsing
YAML frontmatter extraction
✅
✅
✅
✅
✅
✅
Model specification
✅
✅
✅
✅
✅
✅
Config (temperature, etc.)
✅
✅
✅
✅
✅
✅
Input schema
✅
✅
✅
✅
✅
✅
Output schema
✅
✅
✅
✅
✅
✅
Template Body
Handlebars template parsing
✅
✅
✅
✅
✅
✅
Multi-message format
✅
✅
✅
✅
✅
✅
Role markers ({{role}})
✅
✅
✅
✅
✅
✅
Schema Features
Feature
JS
Dart
Python
Go
Rust
Java
Picoschema
Basic type definitions
✅
✅
✅
✅
✅
✅
Nested objects
✅
✅
✅
✅
✅
✅
Arrays
✅
✅
✅
✅
✅
✅
Required fields
✅
✅
✅
✅
✅
✅
Optional fields ?
✅
✅
✅
✅
✅
✅
Descriptions
✅
✅
✅
✅
✅
✅
Enums
✅
✅
✅
✅
✅
✅
JSON Schema Conversion
Picoschema to JSON Schema
✅
✅
✅
✅
✅
✅
JSON Schema to Picoschema
🔶
🔶
✅
❌
❌
❌
Dotprompt Helpers
Feature
JS
Dart
Python
Go
Rust
Java
Role Helpers
{{role "user"}}
✅
✅
✅
✅
✅
✅
{{role "model"}}
✅
✅
✅
✅
✅
✅
{{role "system"}}
✅
✅
✅
✅
✅
✅
Media Helpers
{{media url=...}}
✅
✅
✅
✅
✅
✅
{{media url=... mime=...}}
✅
✅
✅
✅
✅
✅
Base64 data URLs
✅
✅
✅
✅
✅
✅
History Helper
{{history}}
✅
✅
✅
✅
✅
✅
Section Helper
{{section "name"}}
✅
✅
✅
✅
✅
✅
JSON Helper
{{json value}}
✅
✅
✅
✅
✅
✅
{{json value indent=2}}
✅
✅
✅
✅
✅
✅
Template Resolution
Feature
JS
Dart
Python
Go
Rust
Java
Partial Resolution
Named partials
✅
✅
✅
✅
✅
✅
Recursive partials + cycle detection
✅
✅
✅
✅
✅
✅
Template Loading
File system loader (PromptStore)
✅
✅
✅
✅
✅
✅
Custom loaders / resolvers
✅
✅
✅
✅
✅
✅
Directory watching
✅
🔶
🔶
❌
❌
❌
Output Handling
Feature
JS
Dart
Python
Go
Rust
Java
Message Generation
Single message output
✅
✅
✅
✅
✅
✅
Multi-message output
✅
✅
✅
✅
✅
✅
Structured Output
JSON mode (output.format: json)
✅
✅
✅
✅
✅
✅
Output schema validation
✅
✅
✅
✅
✅
✅
Integration Features
Feature
JS
Dart
Python
Go
Rust
Java
Genkit Integration
Action registration
✅
N/A
✅
❌
❌
❌
Prompt store
✅
N/A
✅
❌
❌
❌
Tooling
CLI (promptly)
N/A
N/A
N/A
N/A
✅
N/A
LSP support
N/A
N/A
N/A
N/A
✅
N/A
IDE extensions
✅
N/A
N/A
N/A
✅
✅
Error Handling
Feature
JS
Dart
Python
Go
Rust
Java
Syntax error location
✅
✅
✅
✅
✅
✅
Missing variable errors
✅
✅
✅
✅
✅
✅
Schema validation errors
✅
✅
✅
✅
✅
✅
Helpful error messages
✅
✅
✅
✅
✅
✅
Configuration
Feature
JS
Dart
Python
Go
Rust
Java
Model Config
model
✅
✅
✅
✅
✅
✅
temperature
✅
✅
✅
✅
✅
✅
maxOutputTokens
✅
✅
✅
✅
✅
✅
topP
✅
✅
✅
✅
✅
✅
topK
✅
✅
✅
✅
✅
✅
stopSequences
✅
✅
✅
✅
✅
✅
Advanced Config
Tools/functions
✅
✅
✅
✅
✅
✅
Safety settings
✅
✅
✅
✅
✅
✅
Custom metadata
✅
✅
✅
✅
✅
✅
Specification Compliance
All runtimes pass the full spec test suite.
Test Suite
JS
Dart
Python
Go
Rust
Java
spec/helpers/
✅
✅
✅
✅
✅
✅
spec/metadata.yaml
✅
✅
✅
✅
✅
✅
spec/partials.yaml
✅
✅
✅
✅
✅
✅
spec/picoschema.yaml
✅
✅
✅
✅
✅
✅
spec/variables.yaml
✅
✅
✅
✅
✅
✅
spec/whitespace.yaml
✅
✅
✅
✅
✅
✅
spec/unicode.yaml
✅
✅
✅
✅
✅
✅
Test Coverage
Runtime
Unit Tests
Integration
Spec Tests
Total
JavaScript
✅
✅
Reference
--
Dart
✅ (84+)
✅
✅
84+
Python
✅ (398+)
✅
✅ (81)
479
Go
✅
✅
✅ (200)
200+
Rust
✅ (43)
✅
✅ (117)
160+
Java
✅
✅
✅
27+
Build & CI
Runtime
CI Workflow
Format
Lint
Type Check
JavaScript
js.yml
Biome
Biome
tsc
Dart
dart.yml
dart format
dart analyze
Built-in
Python
python.yml
Ruff
Ruff
ty + pyrefly
Go
go.yml
gofmt
golangci-lint
Built-in
Rust
rust.yml
cargo fmt
Clippy
Built-in
Java
java.yml
google-java-format
Built-in
Built-in
Implementation Notes
JavaScript (Reference Implementation)
The JavaScript/TypeScript implementation is the canonical reference. All other
implementations should maintain behavioral parity with it.
Dart Implementation
Uses handlebarrz for Handlebars templating
ANTLR4 parser integrated with 100% structural parity
Bazel-built for hermetic builds
Full Picoschema support
Python Implementation
Uses dotpromptz-handlebars Rust bindings for templating
Fully typed with ty and pyrefly type checkers
Integrates with Genkit Python SDK
Output schema validation via jsonschema (Draft 2020-12)
Provides promptly CLI tool for working with .prompt files
Includes LSP server for IDE support
Powers editor extensions
43 unit tests + 117 spec tests passing
Java Implementation
Uses com.github.jknack:handlebars for Handlebars templating
Full Picoschema support including enums
Recursive partials with cycle detection (async)
ToolDefinition/ToolResolver for tool support
27+ tests passing
Configuration Passthrough
All config fields (stopSequences, safety settings, custom metadata, etc.)
are stored in a generic map type in every language (Record<string, any> in
JS, map[string]any in Go, Map<String, Object> in Java,
Map<String, dynamic> in Dart, generic M in Rust). Frontmatter config is
parsed and passed through without language-specific handling. This means any
model config key works in any language without explicit support.
Tools and Functions
All languages define tools (list of tool names) and toolDefs (inline tool
definitions) fields in their PromptMetadata types. Go, Rust, and Java also
provide ToolResolver interfaces for dynamic tool lookup.
Schema Validation
Output schema validation is a Genkit integration concern, not a core dotprompt
library feature. The JS reference implementation does not validate output
against schemas in the dotprompt library itself. Python provides a standalone
validate_output() utility. All languages parse and expose the output schema
for downstream consumers (Genkit SDKs) to validate against.