| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 0 | 24 | 0 | 0% |
| Commands | 0 | 8 | 0 | 0% |
| Section tags | 0 | 8 | 0 | 0% |
What each file covers
Sections
0 shared · 24 only in A · 0 only in B- − CLAUDE.md
- − Project Overview
- − Common Commands
- − Testing
- − Run all tests
- − Run a single test file
- − Run tests with verbose output
- − Development
- − Run the example
- − Analyze code
- − Format code
- − Publishing
- − Check package for publish readiness
- − Publish to pub.dev
- − Architecture
- − Core Components
- − Template System
- − Web/WASM Compatibility
- − Project-Specific Rules
- − PRD Reference
- − Collaboration Boundaries
- − Validation & Planning
- − Key Dependencies
- − Testing Philosophy
Commands
0 shared · 8 only in A · 0 only in B- − dart test
- − dart test test/pico_schema_test.dart
- − dart test --reporter=expanded
- − dart run example/main.dart
- − dart analyze
- − dart format .
- − dart pub publish --dry-run
- − dart pub publish
Section tags
0 shared · 8 only in A · 0 only in B- − test
- − lint-format
- − architecture
- − types
- − dependencies
- − deployment
- − do-not
- − agent-behaviour
Line diff
csells/dotprompt_dart · CLAUDE.md
@@ −1 @@
1# CLAUDE.md
2
3This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
5## Project Overview
6
7A Dart package for parsing `.prompt` files for LLM interactions. Based on [Google's dotprompt specification](https://google.github.io/dotprompt/getting-started/), this implementation converts Pico Schema to JSON Schema, provides schema validation, template rendering with Handlebars/Mustache, and model configuration management.
8
9This package does NOT execute prompts itself - it parses and prepares them for execution by other libraries like [dartantic_ai](https://pub.dev/packages/dartantic_ai).
10
11## Common Commands
12
13### Testing
14```bash
15# Run all tests
16dart test
17
18# Run a single test file
19dart test test/pico_schema_test.dart
20
21# Run tests with verbose output
22dart test --reporter=expanded
23```
24
25### Development
26```bash
27# Run the example
28dart run example/main.dart
29
30# Analyze code
31dart analyze
32
33# Format code
34dart format .
35```
36
37### Publishing
38```bash
39# Check package for publish readiness
40dart pub publish --dry-run
41
42# Publish to pub.dev
43dart pub publish
44```
45
46## Architecture
47
48### Core Components
49
501. **DotPrompt** ([lib/src/dot_prompt.dart](lib/src/dot_prompt.dart)) - Main entry point
51 - Parses .prompt files with YAML front-matter and Handlebars templates
52 - Factory constructor `DotPrompt(String)` for string content
53 - Static method `DotPrompt.stream(Stream<List<int>>, {name, defaults})` for loading from streams (required for web/wasm compatibility)
54 - `render(Map<String, dynamic>)` method validates input against schema and renders template
55 - Merges default values with input before validation
56
572. **PicoSchema** ([lib/src/pico_schema.dart](lib/src/pico_schema.dart)) - Schema conversion engine
58 - Detects schema type (JSON Schema vs Pico Schema) using `schemaType()`
59 - Top-level `type` property triggers JSON Schema mode (short-circuits Pico Schema parsing)
60 - Mixed schemas throw `FormatException`
61 - Expands Pico Schema shorthand into valid JSON Schema
62 - 100+ tests ensure spec compliance
63 - Key features:
64 - Optional fields: `name?: string`
65 - Type annotations: `settings(object)`, `tags(array)`
66 - Enums: `theme: [light, dark]` or `theme(enum): [light, dark]`
67 - Wildcards: `(*): any` for additionalProperties
68 - Inline descriptions: `name: string, The user's name`
69
703. **DotPromptFrontMatter** ([lib/src/dot_prompt_front_matter.dart](lib/src/dot_prompt_front_matter.dart))
71 - Parses YAML front-matter between `---` delimiters
72 - Includes model config, input/output schemas, and custom extensions
73 - Supports namespaced keys (e.g., `myext.temperature`)
74
754. **InputOutputConfig** ([lib/src/input_output_config.dart](lib/src/input_output_config.dart))
76 - Manages input/output schemas and defaults
77 - Creates `JsonSchema` objects from Pico Schema or JSON Schema
78 - Stores default values for input validation
79
80### Template System
81
82Uses [mustache_template](https://pub.dev/packages/mustache_template) package for template expansion. NOT fully spec-compliant with Google's Handlebars implementation - see README.md "Handlebar Implementation Shortcomings" section for known limitations.
83
84### Web/WASM Compatibility
85
86Version 0.3.0+ replaced `DotPrompt.file(filename)` with `DotPrompt.stream(bytes, name: filename)` for web/wasm compatibility. Use `File(filename).openRead()` to create the stream for file system sources.
87
88## Project-Specific Rules
89
90### PRD Reference
91- Read [PRD.md](PRD.md) at the start of each session
92- Reference PRD when implementing features
93- Update PRD if implementation requires requirement changes
94- Document changes to core functionality, API design, architecture, dependencies, or user stories
95
96### Collaboration Boundaries
97- Only implement what is explicitly requested
98- Present ideas as suggestions ("I have an idea...") without implementing
99- Ask for clarification if scope is unclear
100- Wait for explicit approval before actions beyond immediate request
101
102### Validation & Planning
103- Verify understanding before implementation
104- Validate against [official dotprompt docs](https://google.github.io/dotprompt/)
105- Check library implementation details and best practices
106- Ensure changes align with existing codebase patterns
107
108## Key Dependencies
109
110- `json_schema`: ^5.2.1 - JSON Schema validation
111- `yaml`: ^3.1.2 - YAML front-matter parsing
112- `mustache_template`: ^2.0.0 - Template expansion
113- `path`: ^1.8.0 - Path manipulation
114- `collection`: ^1.19.1 - Collection utilities
115
116## Testing Philosophy
117
118Tests are comprehensive with 100+ tests focused on Pico Schema conversion. Tests should be silent on success and report failures via `expect()`. No print statements except for diagnostics (which should be removed before commit).
119
csells/dotprompt_dart · .cursor/rules/collaboration-boundaries.mdc
@@ +1 @@
1---
2description:
3globs:
4alwaysApply: true
5---
6When working on the dotprompt project:
7
81. **Strict Adherence to Requests**
9 - Only implement exactly what is explicitly requested
10 - Do not make assumptions about additional features or changes
11 - Do not take actions beyond the scope of the current request
12
132. **Proactive Communication**
14 - Share ideas and suggestions, but clearly mark them as such
15 - Use phrases like "I have an idea..." or "We could consider..."
16 - Present alternatives when relevant, but don't implement them without approval
17
183. **Check-in Protocol**
19 - Before taking any action beyond the immediate request:
20 - Explain the proposed additional action
21 - Provide reasoning for why it might be beneficial
22 - Wait for explicit approval before proceeding
23 - If unsure about scope, ask for clarification
24
254. **Collaborative Decision Making**
26 - Treat all interactions as a true collaboration
27 - Value your input and direction
28 - Present options when appropriate, but respect your decisions
29 - Maintain a balance between being helpful and being overzealous
30
315. **Transparency**
32 - Be clear about what actions are being taken
33 - Explain the reasoning behind suggestions
34 - Acknowledge when something is beyond the current scope
35 - Keep you informed of any potential implications
36
376. **Respect for Boundaries**
38 - Understand that while ideas are welcome, implementation requires approval
39 - Don't make changes to the project structure without explicit permission
40 - Don't add dependencies or modify configuration without checking in
41 - Don't create new files or modify existing ones beyond the scope of the request
42
@@ −1 +1 @@
1−# CLAUDE.md
1+---
2+description:
3+globs:
4+alwaysApply: true
5+---
6+When working on the dotprompt project:
27
3−This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
8+1. **Strict Adherence to Requests**
9+ - Only implement exactly what is explicitly requested
10+ - Do not make assumptions about additional features or changes
11+ - Do not take actions beyond the scope of the current request
412
5−## Project Overview
13+2. **Proactive Communication**
14+ - Share ideas and suggestions, but clearly mark them as such
15+ - Use phrases like "I have an idea..." or "We could consider..."
16+ - Present alternatives when relevant, but don't implement them without approval
617
7−A Dart package for parsing `.prompt` files for LLM interactions. Based on [Google's dotprompt specification](https://google.github.io/dotprompt/getting-started/), this implementation converts Pico Schema to JSON Schema, provides schema validation, template rendering with Handlebars/Mustache, and model configuration management.
18+3. **Check-in Protocol**
19+ - Before taking any action beyond the immediate request:
20+ - Explain the proposed additional action
21+ - Provide reasoning for why it might be beneficial
22+ - Wait for explicit approval before proceeding
23+ - If unsure about scope, ask for clarification
824
9−This package does NOT execute prompts itself - it parses and prepares them for execution by other libraries like [dartantic_ai](https://pub.dev/packages/dartantic_ai).
25+4. **Collaborative Decision Making**
26+ - Treat all interactions as a true collaboration
27+ - Value your input and direction
28+ - Present options when appropriate, but respect your decisions
29+ - Maintain a balance between being helpful and being overzealous
1030
11−## Common Commands
31+5. **Transparency**
32+ - Be clear about what actions are being taken
33+ - Explain the reasoning behind suggestions
34+ - Acknowledge when something is beyond the current scope
35+ - Keep you informed of any potential implications
1236
13−### Testing
14−```bash
15−# Run all tests
16−dart test
17−
18−# Run a single test file
19−dart test test/pico_schema_test.dart
20−
21−# Run tests with verbose output
22−dart test --reporter=expanded
23−```
24−
25−### Development
26−```bash
27−# Run the example
28−dart run example/main.dart
29−
30−# Analyze code
31−dart analyze
32−
33−# Format code
34−dart format .
35−```
36−
37−### Publishing
38−```bash
39−# Check package for publish readiness
40−dart pub publish --dry-run
41−
42−# Publish to pub.dev
43−dart pub publish
44−```
45−
46−## Architecture
47−
48−### Core Components
49−
50−1. **DotPrompt** ([lib/src/dot_prompt.dart](lib/src/dot_prompt.dart)) - Main entry point
51− - Parses .prompt files with YAML front-matter and Handlebars templates
52− - Factory constructor `DotPrompt(String)` for string content
53− - Static method `DotPrompt.stream(Stream<List<int>>, {name, defaults})` for loading from streams (required for web/wasm compatibility)
54− - `render(Map<String, dynamic>)` method validates input against schema and renders template
55− - Merges default values with input before validation
56−
57−2. **PicoSchema** ([lib/src/pico_schema.dart](lib/src/pico_schema.dart)) - Schema conversion engine
58− - Detects schema type (JSON Schema vs Pico Schema) using `schemaType()`
59− - Top-level `type` property triggers JSON Schema mode (short-circuits Pico Schema parsing)
60− - Mixed schemas throw `FormatException`
61− - Expands Pico Schema shorthand into valid JSON Schema
62− - 100+ tests ensure spec compliance
63− - Key features:
64− - Optional fields: `name?: string`
65− - Type annotations: `settings(object)`, `tags(array)`
66− - Enums: `theme: [light, dark]` or `theme(enum): [light, dark]`
67− - Wildcards: `(*): any` for additionalProperties
68− - Inline descriptions: `name: string, The user's name`
69−
70−3. **DotPromptFrontMatter** ([lib/src/dot_prompt_front_matter.dart](lib/src/dot_prompt_front_matter.dart))
71− - Parses YAML front-matter between `---` delimiters
72− - Includes model config, input/output schemas, and custom extensions
73− - Supports namespaced keys (e.g., `myext.temperature`)
74−
75−4. **InputOutputConfig** ([lib/src/input_output_config.dart](lib/src/input_output_config.dart))
76− - Manages input/output schemas and defaults
77− - Creates `JsonSchema` objects from Pico Schema or JSON Schema
78− - Stores default values for input validation
79−
80−### Template System
81−
82−Uses [mustache_template](https://pub.dev/packages/mustache_template) package for template expansion. NOT fully spec-compliant with Google's Handlebars implementation - see README.md "Handlebar Implementation Shortcomings" section for known limitations.
83−
84−### Web/WASM Compatibility
85−
86−Version 0.3.0+ replaced `DotPrompt.file(filename)` with `DotPrompt.stream(bytes, name: filename)` for web/wasm compatibility. Use `File(filename).openRead()` to create the stream for file system sources.
87−
88−## Project-Specific Rules
89−
90−### PRD Reference
91−- Read [PRD.md](PRD.md) at the start of each session
92−- Reference PRD when implementing features
93−- Update PRD if implementation requires requirement changes
94−- Document changes to core functionality, API design, architecture, dependencies, or user stories
95−
96−### Collaboration Boundaries
97−- Only implement what is explicitly requested
98−- Present ideas as suggestions ("I have an idea...") without implementing
99−- Ask for clarification if scope is unclear
100−- Wait for explicit approval before actions beyond immediate request
101−
102−### Validation & Planning
103−- Verify understanding before implementation
104−- Validate against [official dotprompt docs](https://google.github.io/dotprompt/)
105−- Check library implementation details and best practices
106−- Ensure changes align with existing codebase patterns
107−
108−## Key Dependencies
109−
110−- `json_schema`: ^5.2.1 - JSON Schema validation
111−- `yaml`: ^3.1.2 - YAML front-matter parsing
112−- `mustache_template`: ^2.0.0 - Template expansion
113−- `path`: ^1.8.0 - Path manipulation
114−- `collection`: ^1.19.1 - Collection utilities
115−
116−## Testing Philosophy
117−
118−Tests are comprehensive with 100+ tests focused on Pico Schema conversion. Tests should be silent on success and report failures via `expect()`. No print statements except for diagnostics (which should be removed before commit).
37+6. **Respect for Boundaries**
38+ - Understand that while ideas are welcome, implementation requires approval
39+ - Don't make changes to the project structure without explicit permission
40+ - Don't add dependencies or modify configuration without checking in
41+ - Don't create new files or modify existing ones beyond the scope of the request
11942
