effect-patterns-platform-getting-started
Effect-TS patterns for Platform Getting Started. Use when working with platform getting started in Effect-TS applications.
Install
mkdir -p .claude/skills/effect-patterns-platform-getting-started && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6042" && unzip -o skill.zip -d .claude/skills/effect-patterns-platform-getting-started && rm skill.zipInstalls to .claude/skills/effect-patterns-platform-getting-started
About this skill
Effect-TS Patterns: Platform Getting Started
This skill provides 2 curated Effect-TS patterns for platform getting started. Use this skill when working on tasks related to:
- platform getting started
- Best practices in Effect-TS applications
- Real-world patterns and solutions
🟢 Beginner Patterns
Your First Platform Operation
Rule: Use @effect/platform for cross-platform system operations with Effect integration.
Good Example:
import { Effect } from "effect"
import { FileSystem } from "@effect/platform"
import { NodeContext, NodeRuntime } from "@effect/platform-node"
// Read a file - returns Effect<string, PlatformError>
const readConfig = Effect.gen(function* () {
const fs = yield* FileSystem.FileSystem
// Read file as UTF-8 string
const content = yield* fs.readFileString("./config.json")
return JSON.parse(content)
})
// Write a file
const writeLog = Effect.gen(function* () {
const fs = yield* FileSystem.FileSystem
yield* fs.writeFileString(
"./app.log",
`Started at ${new Date().toISOString()}\n`
)
})
// Combine operations
const program = Effect.gen(function* () {
const config = yield* readConfig
yield* Effect.log(`Loaded config: ${config.appName}`)
yield* writeLog
yield* Effect.log("Log file created")
})
// Run with Node.js platform
program.pipe(
Effect.provide(NodeContext.layer),
NodeRuntime.runMain
)
Rationale:
Effect Platform provides type-safe, cross-platform system operations. Use @effect/platform-node for Node.js or @effect/platform-bun for Bun.
Platform wraps system operations in Effect, giving you:
- Type safety - File operations return
Effect<Content, PlatformError> - Resource management - Files are automatically closed
- Cross-platform - Same code works on Node.js, Bun, browser
- Composability - Chain file ops with other effects
Access Environment Variables
Rule: Use Effect to access environment variables with proper error handling.
Good Example:
import { Effect, Config, Option } from "effect"
// ============================================
// BASIC: Read required variable
// ============================================
const getApiKey = Config.string("API_KEY")
const program1 = Effect.gen(function* () {
const apiKey = yield* getApiKey
yield* Effect.log(`API Key: ${apiKey.slice(0, 4)}...`)
})
// ============================================
// OPTIONAL: With default value
// ============================================
const getPort = Config.number("PORT").pipe(
Config.withDefault(3000)
)
const program2 = Effect.gen(function* () {
const port = yield* getPort
yield* Effect.log(`Server will run on port ${port}`)
})
// ============================================
// OPTIONAL: Return Option instead of failing
// ============================================
const getOptionalFeature = Config.string("FEATURE_FLAG").pipe(
Config.option
)
const program3 = Effect.gen(function* () {
const feature = yield* getOptionalFeature
if (Option.isSome(feature)) {
yield* Effect.log(`Feature enabled: ${feature.value}`)
} else {
yield* Effect.log("Feature flag not set")
}
})
// ============================================
// COMBINED: Multiple variables as config object
// ============================================
const AppConfig = Config.all({
apiKey: Config.string("API_KEY"),
apiUrl: Config.string("API_URL"),
port: Config.number("PORT").pipe(Config.withDefault(3000)),
debug: Config.boolean("DEBUG").pipe(Config.withDefault(false)),
})
const program4 = Effect.gen(function* () {
const config = yield* AppConfig
yield* Effect.log(`API URL: ${config.apiUrl}`)
yield* Effect.log(`Port: ${config.port}`)
yield* Effect.log(`Debug: ${config.debug}`)
})
// ============================================
// RUN: Will fail if required vars missing
// ============================================
Effect.runPromise(program4).catch((error) => {
console.error("Missing required environment variables")
console.error(error)
})
Rationale:
Access environment variables using Effect's built-in functions or Platform's environment service for type-safe configuration.
Environment variables can be missing or malformed. Effect helps you:
- Handle missing vars - Return
Optionor fail with typed error - Validate values - Parse and validate with Schema
- Provide defaults - Fallback values when vars are missing
- Document requirements - Types show what's needed
More by PaulJPhilp
View all skills by PaulJPhilp →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversn8n offers conversational workflow automation, enabling seamless software workflow creation and management without platf
Uno Platform — Documentation and prompts for building cross-platform .NET apps with a single codebase. Get guides, sampl
Mobile Next offers fast, seamless mobile automation for iOS and Android. Automate apps, extract data, and simplify mobil
Manage resources in the Cloudflare Workers Platform easily by connecting to your Worker via Bindings.
Catalog of official Microsoft MCP server implementations. Access Azure, Microsoft 365, Dynamics 365, Power Platform, and
Empower your workflows with Perplexity Ask MCP Server—seamless integration of AI research tools for real-time, accurate
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.