Dynamic Files Pattern
Purpose
Use template variables for file paths to make workflows reusable across different projects. Paths are collected at runtime and used throughout execution.
Structure
[collect-paths] → [use-paths-in-directives] → [output-to-path]Implementation
Path Collection
{ "type": "agent-directive", "id": "collect-project-paths", "directive": "Determine project structure:\n- Docs location?\n- Output location?\n- Test files location?", "inputSchema": { "type": "object", "properties": { "docs_path": { "type": "string", "description": "Path to project documentation" }, "output_path": { "type": "string", "description": "Path for workflow outputs" }, "test_path": { "type": "string", "description": "Path to test files" } }, "required": ["docs_path", "output_path"] }, "connections": { "success": "read-documentation" }}Using Paths in Directives
{ "type": "agent-directive", "id": "read-documentation", "directive": "Read project documentation from {{docs_path}}.\nAnalyze structure and content.", "connections": { "success": "write-output" }}Output to Dynamic Path
{ "type": "agent-directive", "id": "write-output", "directive": "Write results to {{output_path}}/analysis-results.md", "connections": { "success": "next-step" }}Path Discovery Strategies
Agent can determine paths by:
- Searching filesystem: Look for common patterns (
docs/,README.md) - Using defaults: Fallback to standard locations
- Asking user: When path cannot be determined
{ "directive": "Find project documentation:\n1. Search for docs/ directory\n2. Check for README.md\n3. Look in standard locations\n4. Ask user if not found"}Conditional Path Usage
Combine with conditional templates:
{ "directive": "{{#if testing_guide_path}}Read testing guide from {{testing_guide_path}}{{else}}No testing guide found, proceed with default patterns{{/if}}"}Collect all paths upfront in an information collection step. This allows validation and prevents mid-workflow errors.
Real Example
From development-flow.json:
{ "id": "get-initial-requirements", "inputSchema": { "properties": { "checklist_path": { "type": "string", "description": "Path to project checklist or empty if none" }, "agent_onboarding_path": { "type": "string", "description": "Path to agent onboarding document or empty if none" }, "docs_standards_path": { "type": "string", "description": "Path to documentation standards or empty if none" }, "testing_guide_path": { "type": "string", "description": "Path to testing guide or empty if none" } } }}Used later:
{ "directive": "{{#if has_checklist}}Review project checklist: {{checklist_path}}{{/if}}"}Path Validation
Use pattern in inputSchema for basic validation:
{ "properties": { "file_path": { "type": "string", "pattern": "^[a-zA-Z0-9/_.-]+$" } }}Related Patterns
- Information Collection - Collect paths as part of onboarding
- Skip Pattern - Skip steps when paths not available