UNPKG

meld

Version:

Meld: A template language for LLM prompts

220 lines (157 loc) 6.33 kB
# Creating Context Files for Meld Development This document outlines how to create effective context files for working with Claude on different phases of the Meld project. ## What Are Context Files? Context files are specially structured Meld documents that provide an AI assistant (like Claude) with precisely the right context needed to understand and work on a specific part of the project. They: 1. Provide focused information relevant to a specific task or phase 2. Avoid overwhelming the assistant with irrelevant information 3. Include documentation, code, and test results in a structured format 4. Give clear instructions on what needs to be accomplished ## Where to Store Context Files - Store all context files in the `_meld` directory at the project root - Use descriptive names like `phase1-context.meld.md` to clearly indicate purpose - Consider creating subdirectories in `_meld` for organization if you have many context files ## Basic Structure of a Context File ```markdown @import[partials/meld-architect.md] # Title: Clear Description of the Phase or Task Brief overview of what this phase/task involves and its importance in the project. ## Focus Areas 1. Key area of focus 2. Another important area =============================== === DOCUMENTATION SECTION ==== @import[../path/to/relevant/doc.md] =============================== === RELEVANT CODE ============ @cmd[cpai ../path/to/file1.ts ../path/to/file2.ts --stdout] =============================== === FAILING TESTS =========== @cmd[npm test -- --no-coverage "RelevantTestPattern" | grep -B 1 -A 10 "FAIL"] =============================== === YOUR TASK =============== Clear description of what needs to be accomplished. When providing solutions: 1. Specific guidance point 2. Another guidance point BE SPECIFIC AND DECISIVE. ``` ## Key Components ### 1. Header and Overview Start with a clear title and concise overview that summarizes: - What phase of the project this concerns - The current state (e.g., passing/failing tests) - Why this work is important ### 2. Documentation Sections Include relevant documentation using the `@import` directive: ```markdown =============================== === SECTION NAME ============= @import[../path/to/document.md] ``` ### 3. Code Sections For including code snippets, use the `cpai` command: ```markdown =============================== === RELEVANT CODE =========== @cmd[cpai ../path/to/file1.ts ../path/to/file2.ts --stdout] ``` **Important**: Note that paths in the cpai command: - Must include the `../` prefix to reference from the _meld directory - Must follow the exact file structure of the project - Must include the `--stdout` flag to display the output ### 4. Test Results Include relevant test results: ```markdown =============================== === FAILING TESTS ========== @cmd[npm test -- --no-coverage "RelevantTestPattern" | grep -B 1 -A 10 "FAIL"] ``` ### 5. Task Description Always end with a clear task description: ```markdown =============================== === YOUR TASK ============== Step 1: ... Step 2: ... ``` ## Meld Directives Explained ### @import Directive Embeds content from markdown files: ```markdown @import[../path/to/file.md] ``` - Paths are relative to the meld file location - Use for including documentation, plans, or previous outputs ### @cmd Directive Runs a shell command and includes the output: ```markdown @cmd[command to run] ``` - Use for running tests, code analysis tools, or file gathering utilities - For complex commands, use semicolons (`;`) instead of `&&` to handle stderr ### Common Command Patterns 1. **Code gathering with cpai**: ```markdown @cmd[cpai ../path/to/file1.ts ../path/to/file2.ts --stdout] ``` 2. **Finding failing tests**: ```markdown @cmd[npm test -- --no-coverage "ServicePattern" | grep -B 1 -A 10 "FAIL"] ``` 3. **Test environment setup**: ```markdown @cmd[export NODE_ENV=test; npm test -- -t "specific test name"] ``` ## Understanding the Project Structure When including files, be aware of the nested service structure: ``` services/ ├── resolution/ │ ├── ResolutionService/ │ │ ├── ResolutionService.ts │ │ └── resolvers/ │ │ ├── PathResolver.ts │ │ ├── VariableReferenceResolver.ts │ │ └── ... │ └── ValidationService/ │ └── validators/ │ ├── PathDirectiveValidator.ts │ └── ... ├── pipeline/ │ ├── ParserService/ │ │ └── ParserService.ts │ └── DirectiveService/ │ └── handlers/ │ └── definition/ │ ├── PathDirectiveHandler.ts │ └── ... └── ... ``` When referencing files, ensure you use the complete path including all subdirectories. ## Tips for Effective Context Files 1. **Be selective**: Include only files and documentation directly relevant to the current phase or task 2. **Group related information**: Use clear section headers to organize content logically 3. **Progressive disclosure**: Put the most critical information first 4. **Clear tasks**: End with specific, actionable tasks 5. **Appropriate scope**: Create separate context files for different phases rather than one massive file 6. **Balance**: Include enough context for understanding but not so much that it's overwhelming 7. **Verify paths**: Always check that file paths exist before finalizing your context file ## Example: Phase-Based Context Files For each phase of development, create a focused context file: 1. **Phase 1**: Foundation issues (paths, AST, etc.) 2. **Phase 2**: Variable resolution 3. **Phase 3**: Directive validation and handling 4. **Phase 4**: API completion 5. **Phase 5**: CLI implementation Each context file should include only what's needed for that specific phase. ## Processing and Using Context Files After creating a context file (`your-context.meld.md`): 1. **Process the file**: ```bash meld _meld/your-context.meld.md ``` 2. **Send to Claude**: ```bash oneshot _meld/your-context.md --model o1 --effort high --system architect -o your-context-output.md ``` 3. **Review the response** in `your-context-output.md`