Expert Morphir application architect providing guidance on AST design, functional programming patterns, IR transformations, and code generation for morphir-dotnet. Triggers include "architecture", "design patterns", "AST", "IR", "functional programming", "code generation".
Expert Morphir application architect providing guidance on AST design, functional programming patterns, IR transformations, and code generation for morphir-dotnet.
This skill provides comprehensive architectural guidance including:
@skill morphir-architect
Design an AST for representing Morphir function definitions
or use shorter aliases:
@skill architect
How should I implement a transformation pipeline with error handling?
Read comprehensive guidance:
cat .claude/skills/morphir-architect/skill.md
Access knowledge bases:
# Language design patterns (22+ patterns)
cat .agents/kbs/language-design-patterns.md
# Functional programming patterns (18+ patterns)
cat .agents/kbs/functional-programming-patterns.md
# Visitor implementations (8 variants)
cat .agents/kbs/visitor-pattern-implementations.md
# Computation expressions for AST
cat .agents/kbs/computation-expressions-for-ast.md
# Compiler services & metaprogramming
cat .agents/kbs/compiler-services-metaprogramming.md
Run architectural review:
dotnet fsi .claude/skills/morphir-architect/scripts/architecture-review.fsx
Located in .agents/kbs/:
Located in .agents/decisionlogs/:
Located in .claude/skills/morphir-architect/scripts/:
Located in .claude/skills/morphir-architect/templates/:
What: AST/CST design, type system patterns, visitor implementations
Knowledge Base: language-design-patterns.md
Key Patterns:
Type<'attributes>)Example Use Cases:
What: Monads, functors, lenses, railway-oriented programming
Knowledge Base: functional-programming-patterns.md
Key Patterns:
Example Use Cases:
What: 8 visitor variants for AST traversal and transformation
Knowledge Base: visitor-pattern-implementations.md
Variants:
Example Use Cases:
What: F# computation expressions for tree construction
Knowledge Base: computation-expressions-for-ast.md
Examples Studied:
Example Use Cases:
What: Code generation and analysis with FCS, Roslyn, Source Generators, Myriad
Knowledge Base: compiler-services-metaprogramming.md
Technologies:
Example Use Cases:
templates/new-ast-type.md (when available)templates/transformation-pipeline.md (when available)templates/visitor-implementation.md (when available)addressLens >>> cityLensLens.set for updatesWorking with Morphir IR?
├─ F# consumer → Classic IR (discriminated unions)
├─ C# consumer → Modern IR (sealed records)
└─ Both → Use conversion functions
Traversing AST?
├─ F# + DU → Functional pattern matching
├─ C# + Sealed records → Classic OO visitor
├─ Composable operations → Record visitor (F#)
└─ Stack-safe deep traversal → Trampolined visitor
Handling errors?
├─ Collect all errors → Applicative Validation
├─ Stop on first error → Railway-Oriented Programming
└─ Optional values → Option/Maybe
Works with:
Escalate to maintainer when:
| Use Case | F# Pattern | C# Pattern | |----------|-----------|-----------| | IR Type Modeling | Discriminated Union | Sealed Record Hierarchy | | AST Traversal | Pattern Matching | Classic OO Visitor | | Error Handling | Result + bind | Result with extension methods | | Optional Values | option type | Nullable reference types | | Collections | Map, Set | ImmutableDictionary, ImmutableHashSet |
| Monad | F# Type | Purpose | Key Operations |
|-------|---------|---------|----------------|
| Option | 'T option | Nullable values | Some, None, Option.bind, Option.map |
| Result | Result<'T,'E> | Error handling | Ok, Error, Result.bind, Result.map |
| List | 'T list | Non-determinism | ::, List.collect, List.map |
| Async | Async<'T> | Async operations | async { }, Async.bind |
| Requirement | Recommended Variant | |-------------|-------------------| | Simple traversal (F#) | Functional Pattern Matching | | Multiple operations (C#) | Classic OO Visitor | | Composable operations | Record Visitor (F#) | | AST transformation | Transforming Visitor | | Collecting information | Accumulating Visitor | | Scoped context | Context-Passing Visitor |
See MAINTENANCE.md for:
Status: Alpha Maintainer: Damian Reeves (@DamianReeves) Last Updated: 2025-12-24
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer