Skip to content

Dynamic Files Pattern

Use template variables for file paths to make workflows reusable across different projects. Paths are collected at runtime and used throughout execution.

[collect-paths] → [use-paths-in-directives] → [output-to-path]
{
"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" }
}
{
"type": "agent-directive",
"id": "read-documentation",
"directive": "Read project documentation from {{docs_path}}.\nAnalyze structure and content.",
"connections": { "success": "write-output" }
}
{
"type": "agent-directive",
"id": "write-output",
"directive": "Write results to {{output_path}}/analysis-results.md",
"connections": { "success": "next-step" }
}

Agent can determine paths by:

  1. Searching filesystem: Look for common patterns (docs/, README.md)
  2. Using defaults: Fallback to standard locations
  3. 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"
}

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}}"
}

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}}"
}

Use pattern in inputSchema for basic validation:

{
"properties": {
"file_path": {
"type": "string",
"pattern": "^[a-zA-Z0-9/_.-]+$"
}
}
}