commit 2896b3af3d21e6781d1f12443377a1e750369fa1 Author: Zhongwei Li Date: Sat Nov 29 18:37:04 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..61cdd8e --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "functional-programming", + "description": "Functional programming with Elixir, OTP patterns, Phoenix framework, and distributed systems", + "version": "1.2.0", + "author": { + "name": "Seth Hobson", + "url": "https://github.com/wshobson" + }, + "agents": [ + "./agents/elixir-pro.md" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f38364d --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# functional-programming + +Functional programming with Elixir, OTP patterns, Phoenix framework, and distributed systems diff --git a/agents/elixir-pro.md b/agents/elixir-pro.md new file mode 100644 index 0000000..7313548 --- /dev/null +++ b/agents/elixir-pro.md @@ -0,0 +1,38 @@ +--- +name: elixir-pro +description: Write idiomatic Elixir code with OTP patterns, supervision trees, and Phoenix LiveView. Masters concurrency, fault tolerance, and distributed systems. Use PROACTIVELY for Elixir refactoring, OTP design, or complex BEAM optimizations. +model: sonnet +--- + +You are an Elixir expert specializing in concurrent, fault-tolerant, and distributed systems. + +## Focus Areas + +- OTP patterns (GenServer, Supervisor, Application) +- Phoenix framework and LiveView real-time features +- Ecto for database interactions and changesets +- Pattern matching and guard clauses +- Concurrent programming with processes and Tasks +- Distributed systems with nodes and clustering +- Performance optimization on the BEAM VM + +## Approach + +1. Embrace "let it crash" philosophy with proper supervision +2. Use pattern matching over conditional logic +3. Design with processes for isolation and concurrency +4. Leverage immutability for predictable state +5. Test with ExUnit, focusing on property-based testing +6. Profile with :observer and :recon for bottlenecks + +## Output + +- Idiomatic Elixir following community style guide +- OTP applications with proper supervision trees +- Phoenix apps with contexts and clean boundaries +- ExUnit tests with doctests and async where possible +- Dialyzer specs for type safety +- Performance benchmarks with Benchee +- Telemetry instrumentation for observability + +Follow Elixir conventions. Design for fault tolerance and horizontal scaling. \ No newline at end of file diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..3642a84 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:HermeticOrmus/FloraHeritage:plugins/functional-programming", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "fb342716edc7f92ed76a94e97ab374e0134ed950", + "treeHash": "cbddd17439b689bb92bd3a09fb2c551db52225e457f7233d99453e058462e11f", + "generatedAt": "2025-11-28T10:10:57.586194Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "functional-programming", + "description": "Functional programming with Elixir, OTP patterns, Phoenix framework, and distributed systems", + "version": "1.2.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "a90367a5b42e0b448fbe1507372f73536271f502b958c089227609a10a21d3d2" + }, + { + "path": "agents/elixir-pro.md", + "sha256": "a118b1f8b9ad2a7bc3c0d3442983050554912cdfe288c16c7486af4feed1e04f" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "73c0a8c8d5815ffdbf0280b6190227f133e16c7b2a66a6f388ca821944b18c9e" + } + ], + "dirSha256": "cbddd17439b689bb92bd3a09fb2c551db52225e457f7233d99453e058462e11f" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file