Files
clawdbot/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose
2026-01-23 00:49:40 +00:00

101 lines
3.1 KiB
Plaintext

# Parameterized Blocks Example
# Demonstrates reusable blocks with arguments for DRY workflows
# Simple parameterized block
block research(topic):
session "Research {topic} thoroughly"
session "Summarize key findings about {topic}"
session "List open questions about {topic}"
# Invoke with different arguments
do research("quantum computing")
do research("machine learning")
do research("blockchain technology")
# Block with multiple parameters
block review_code(language, focus_area):
session "Review the {language} code for {focus_area} issues"
session "Suggest {focus_area} improvements for {language}"
session "Provide {language} best practices for {focus_area}"
do review_code("Python", "performance")
do review_code("TypeScript", "type safety")
do review_code("Rust", "memory safety")
# Parameterized block for data processing
block process_dataset(source, format):
session "Load data from {source}"
session "Validate {format} structure"
session "Transform to standard format"
session "Generate quality report for {source} data"
do process_dataset("sales_db", "CSV")
do process_dataset("api_logs", "JSON")
do process_dataset("user_events", "Parquet")
# Blocks with parameters used in control flow
block test_feature(feature_name, test_level):
session "Write {test_level} tests for {feature_name}"
if **the tests reveal issues**:
session "Fix issues in {feature_name}"
session "Re-run {test_level} tests for {feature_name}"
else:
session "Mark {feature_name} {test_level} testing complete"
do test_feature("authentication", "unit")
do test_feature("payment processing", "integration")
do test_feature("user dashboard", "e2e")
# Parameterized blocks in parallel
block analyze_competitor(company):
session "Research {company} products"
session "Analyze {company} market position"
session "Identify {company} strengths and weaknesses"
parallel:
a = do analyze_competitor("Company A")
b = do analyze_competitor("Company B")
c = do analyze_competitor("Company C")
session "Create competitive analysis report"
context: { a, b, c }
# Block with error handling
block safe_api_call(endpoint, method):
try:
session "Call {endpoint} with {method} request"
retry: 3
backoff: "exponential"
catch as err:
session "Log failed {method} call to {endpoint}"
context: err
session "Return fallback response for {endpoint}"
do safe_api_call("/users", "GET")
do safe_api_call("/orders", "POST")
do safe_api_call("/inventory", "PUT")
# Nested block invocations
block full_review(component):
do review_code("TypeScript", "security")
do test_feature(component, "unit")
session "Generate documentation for {component}"
do full_review("UserService")
do full_review("PaymentGateway")
# Block with loop inside
block process_batch(batch_name, items):
session "Start processing {batch_name}"
for item in items:
session "Process item from {batch_name}"
context: item
session "Complete {batch_name} processing"
let batch1 = ["a", "b", "c"]
let batch2 = ["x", "y", "z"]
do process_batch("alpha", batch1)
do process_batch("beta", batch2)