effect-patterns-hub
Effect Patterns Hub
Purpose: Provide quick access to 130+ curated Effect-TS patterns from the EffectPatterns repository. Use this skill to find specific implementation patterns, compare approaches, and reference best practices.
Triggers
- Looking for a specific Effect pattern or idiom
- Need real-world examples of Effect concepts
- Want to see multiple approaches to the same problem
- Comparing implementation strategies
- Learning new Effect features
Pattern Library Location
Local Patterns: .claude/skills/effect-patterns-hub/patterns/
Documentation: docs/effect-patterns/
Count: 130+ patterns in MDX format
Quick Decision Tree
I need to...
Create Effects
- From value →
constructor-succeed-some-right.mdx - From sync code →
constructor-sync-async.mdx - From promise →
constructor-try-trypromise.mdx - From nullable →
constructor-from-nullable-option-either.mdx - Pre-resolved →
create-pre-resolved-effect.mdx
Transform & Compose
- Map values →
combinator-map.mdx - Chain effects →
combinator-flatmap.mdx - Sequence operations →
combinator-sequencing.mdx - Combine values →
combinator-zip.mdx - Filter →
combinator-filter.mdx - Conditional logic →
combinator-conditional.mdx - Process collections →
combinator-foreach-all.mdx
Control Flow
- Sequential logic →
write-sequential-code-with-gen.mdx - Business logic →
use-gen-for-business-logic.mdx - Pipe composition →
use-pipe-for-composition.mdx - Branching workflows →
conditionally-branching-workflows.mdx - Combinators →
control-flow-with-combinators.mdx - Repetition →
control-repetition-with-schedule.mdx
Error Handling
- Define errors →
define-tagged-errors.mdx - Catch specific errors →
pattern-catchtag.mdx - Handle all errors →
handle-errors-with-catch.mdx - Retry operations →
retry-based-on-specific-errors.mdx - Flaky operations →
handle-flaky-operations-with-retry-timeout.mdx - Map errors →
mapping-errors-to-fit-your-domain.mdx - Handle unexpected →
handle-unexpected-errors-with-cause.mdx - API errors →
handle-api-errors.mdx
Concurrency
- Parallel execution →
run-effects-in-parallel-with-all.mdx - Background tasks →
run-background-tasks-with-fork.mdx - Process collections →
process-collection-in-parallel-with-foreach.mdx - Race effects →
race-concurrent-effects.mdx - Fibers explained →
understand-fibers-as-lightweight-threads.mdx - Decouple with queues →
decouple-fibers-with-queue-pubsub.mdx - Polling →
poll-for-status-until-task-completes.mdx - Graceful shutdown →
implement-graceful-shutdown.mdx
Services & Dependency Injection
- Model dependencies →
model-dependencies-as-services.mdx - Understand layers →
understand-layers-for-dependency-injection.mdx - Scoped services →
scoped-service-layer.mdx - Composable modules →
organize-layers-into-composable-modules.mdx - Compose scoped layers →
compose-scoped-layers.mdx - Provide config →
provide-config-layer.mdx - Caching wrapper →
add-caching-by-wrapping-a-layer.mdx
Resource Management
- Bracket pattern →
safely-bracket-resource-usage.mdx - Scope management →
manage-resource-lifecycles-with-scope.mdx - Manual scope →
manual-scope-management.mdx - Scoped resources runtime →
create-managed-runtime-for-scoped-resources.mdx
Streaming
- Process streaming data →
process-streaming-data-with-stream.mdx - From iterable →
stream-from-iterable.mdx - From file →
stream-from-file.mdx - From paginated API →
stream-from-paginated-api.mdx - Concurrent processing →
stream-process-concurrently.mdx - Batch processing →
stream-process-in-batches.mdx - Collect results →
stream-collect-results.mdx - Run for effects →
stream-run-for-effects.mdx - Manage resources →
stream-manage-resources.mdx - Retry on failure →
stream-retry-on-failure.mdx
Schema & Validation
- Define contracts →
define-contracts-with-schema.mdx - Parse/decode →
parse-with-schema-decode.mdx - Transform data →
transform-data-with-schema.mdx - Validate body →
validate-request-body.mdx - Brand types →
brand-model-domain-type.mdx - Brand validation →
brand-validate-parse.mdx - Config schema →
define-config-schema.mdx
Data Types
- Option →
data-option.mdx,model-optional-values-with-option.mdx - Either →
data-either.mdx,accumulate-multiple-errors-with-either.mdx - Chunk →
data-chunk.mdx,use-chunk-for-high-performance-collections.mdx - Array →
data-array.mdx - HashSet →
data-hashset.mdx - Duration →
data-duration.mdx,representing-time-spans-with-duration.mdx - DateTime →
data-datetime.mdx,beyond-the-date-type.mdx - BigDecimal →
data-bigdecimal.mdx - Cause →
data-cause.mdx - Exit →
data-exit.mdx - Ref →
data-ref.mdx,manage-shared-state-with-ref.mdx - Redacted →
data-redacted.mdx - Case →
data-case.mdx - Class →
data-class.mdx - Struct →
data-struct.mdx - Tuple →
data-tuple.mdx
Pattern Matching
- Match API →
pattern-match.mdx - Effectful match →
pattern-matcheffect.mdx - Tag matching →
pattern-matchtag.mdx - Option/Either checks →
pattern-option-either-checks.mdx
HTTP & Web
- Basic HTTP server →
build-a-basic-http-server.mdx - Launch server →
launch-http-server.mdx - Handle GET →
handle-get-request.mdx - HTTP client request →
make-http-client-request.mdx - Testable HTTP client →
create-a-testable-http-client-service.mdx - JSON response →
send-json-response.mdx - Path parameters →
extract-path-parameters.mdx - Provide dependencies to routes →
provide-dependencies-to-routes.mdx
Testing
- Mocking dependencies →
mocking-dependencies-in-tests.mdx - Use Default layer →
use-default-layer-for-tests.mdx - Tests adapt to code →
write-tests-that-adapt-to-application-code.mdx
Observability
- Structured logging →
leverage-structured-logging.mdx,observability-structured-logging.mdx - Tracing spans →
trace-operations-with-spans.mdx,observability-tracing-spans.mdx - Custom metrics →
add-custom-metrics.mdx,observability-custom-metrics.mdx - OpenTelemetry →
observability-opentelemetry.mdx - Effect.fn instrumentation →
observability-effect-fn.mdx
Runtime & Execution
- runPromise →
execute-with-runpromise.mdx - runSync →
execute-with-runsync.mdx - runFork →
execute-long-running-apps-with-runfork.mdx - Reusable runtime →
create-reusable-runtime-from-layers.mdx
Configuration
- Access config →
access-config-in-context.mdx - Define schema →
define-config-schema.mdx - Provide layer →
provide-config-layer.mdx
Time & Scheduling
- Current time →
accessing-current-time-with-clock.mdx - Duration →
representing-time-spans-with-duration.mdx - DateTime →
beyond-the-date-type.mdx - Schedule repetition →
control-repetition-with-schedule.mdx
Project Setup
- New project →
setup-new-project.mdx - Editor LSP →
supercharge-your-editor-with-the-effect-lsp.mdx - AI agents MCP →
teach-your-ai-agents-effect-with-the-mcp-server.mdx
Advanced Concepts
- Structural equality →
comparing-data-by-value-with-structural-equality.mdx - Effect channels →
understand-effect-channels.mdx - Effects are lazy →
effects-are-lazy.mdx - Not found vs errors →
distinguish-not-found-from-errors.mdx - Promise problems →
solve-promise-problems-with-effect.mdx - Avoid long chains →
avoid-long-andthen-chains.mdx
Pattern Categories
By Skill Level
Beginner (Getting Started)
- Constructor patterns (succeed, fail, sync, async)
- Basic combinators (map, flatMap, tap)
- Simple error handling (catch, catchTag)
- Effect.gen basics
- runPromise/runSync
Intermediate (Building Applications)
- Services and layers
- Schema validation
- HTTP servers and clients
- Resource management
- Concurrency basics (Effect.all, fork)
- Testing with mocks
Advanced (Production Systems)
- Complex layer composition
- Custom runtimes
- Streaming pipelines
- Graceful shutdown
- OpenTelemetry integration
- Performance optimization (Chunk, Ref)
By Use Case
Domain Modeling
- Schema definitions
- Brand types
- Tagged errors
- Option/Either for optional/fallible values
API Development
- HTTP server setup
- Route handling
- Request validation
- Error handling
- Response formatting
Data Processing
- Stream processing
- Batch operations
- Parallel processing
- Resource-safe pipelines
Application Architecture
- Service layer design
- Dependency injection
- Module composition
- Configuration management
Testing
- Mock layers
- Test utilities
- Testable services
Observability
- Structured logging
- Distributed tracing
- Custom metrics
- Performance monitoring
Search Patterns
By Keyword
Use Grep to search patterns by keyword:
# Find patterns about error handling
grep -l "error" patterns/*.mdx
# Find patterns about concurrency
grep -l "concurrent\|parallel\|fiber" patterns/*.mdx
# Find patterns about HTTP
grep -l "http\|server\|client" patterns/*.mdx
# Find patterns about testing
grep -l "test\|mock" patterns/*.mdx
By Frontmatter Tags
All patterns include metadata:
title: Human-readable nameid: Unique identifier (filename without extension)skillLevel: beginner, intermediate, advanceduseCase: domain-modeling, error-handling, concurrency, etc.summary: Brief descriptiontags: Keywords for searchingrelated: Links to related patterns
Common Searches
"How do I create an Effect from..."
- → Search constructor patterns:
grep -l "constructor" patterns/*.mdx - → Check
constructor-*.mdxfiles
"How do I handle errors when..."
- → Search error handling:
grep -l "error\|catch\|retry" patterns/*.mdx - → Check
handle-*.mdxandpattern-catchtag.mdx
"How do I run multiple things concurrently?"
- → Search concurrency:
grep -l "concurrent\|parallel\|all\|fork" patterns/*.mdx - → Check
run-effects-in-parallel-with-all.mdx
"How do I work with services?"
- → Search services:
grep -l "service\|layer\|dependency" patterns/*.mdx - → Check
model-dependencies-as-services.mdx,understand-layers-for-dependency-injection.mdx
"How do I validate data?"
- → Search schema:
grep -l "schema\|validate\|parse" patterns/*.mdx - → Check
define-contracts-with-schema.mdx,parse-with-schema-decode.mdx
Integration with Other Skills
Foundations → Patterns Hub
When you need concrete examples for foundation concepts, check patterns:
effect-foundationsteaches concepts → patterns show implementation
Architect → Patterns Hub
When designing systems, reference architectural patterns:
- Layer composition →
organize-layers-into-composable-modules.mdx - Service design →
model-dependencies-as-services.mdx - Scoped resources →
scoped-service-layer.mdx
Engineer → Patterns Hub
When implementing features, find relevant patterns:
- HTTP endpoints →
handle-get-request.mdx,validate-request-body.mdx - Error handling →
retry-based-on-specific-errors.mdx - Concurrency →
run-effects-in-parallel-with-all.mdx
Tester → Patterns Hub
When writing tests, reference testing patterns:
- Mock services →
mocking-dependencies-in-tests.mdx - Test layers →
use-default-layer-for-tests.mdx - Testable design →
write-tests-that-adapt-to-application-code.mdx
Usage Workflow
- Identify Need: "I need to [do something] with Effect"
- Check Decision Tree: Find relevant section above
- Read Pattern: Use
Readtool on the pattern file - Adapt to Context: Apply pattern to your specific use case
- Check Related: Follow
relatedlinks in pattern frontmatter - Consult Agent: If unclear, use
@effect-engineeror@effect-architect
Anti-Pattern Detection
If you find yourself:
- Using imperative loops → Check
process-collection-in-parallel-with-foreach.mdx - Mixing promises and Effects → Check
constructor-try-trypromise.mdx,solve-promise-problems-with-effect.mdx - Long andThen chains → Check
avoid-long-andthen-chains.mdx,use-gen-for-business-logic.mdx - Leaking requirements → Check
model-dependencies-as-services.mdx - Manual resource cleanup → Check
safely-bracket-resource-usage.mdx
Pattern File Structure
Each pattern file follows this structure:
---
title: Human-readable title
id: kebab-case-id
skillLevel: beginner | intermediate | advanced
useCase: primary-use-case
summary: Brief description
tags:
- keyword1
- keyword2
related:
- related-pattern-id-1
- related-pattern-id-2
author: Author name
---
# Title
## Guideline
What to do
## Rationale
Why do it this way
## Good Example
✅ Recommended approach
## Bad Example
❌ What to avoid
## Related Patterns
Links to related patterns
Maintenance
Patterns are synced from EffectPatterns repository.
To update patterns:
cd /tmp
git clone --depth=1 https://github.com/PaulJPhilp/EffectPatterns.git
cp -r EffectPatterns/content/published/* /Users/pooks/Dev/crate/.claude/skills/effect-patterns-hub/patterns/
cp -r EffectPatterns/content/published/* /Users/pooks/Dev/crate/docs/effect-patterns/
Summary
- 130+ patterns covering all Effect-TS concepts
- Decision tree for quick pattern lookup
- Integration with existing skills and agents
- Searchable by keyword, use case, skill level
- Examples showing good and bad practices
- Related patterns for deeper exploration
Use this skill as your go-to reference for "How do I... with Effect?"