membrane-framework

membrane-framework is a skill for Claude Code, Codex from membraneframework/membrane_core. It costs 133 tokens per session (4,241 once invoked), scanned A, original, Apache-2.0.

Eine Anleitung für die Arbeit mit Membrane, einem Elixir-Framework zum Bauen von Multimedia- und Streaming-Verarbeitung. Sie erklärt unter anderem Quellen, Filter, Senken und die Verbindungen zwischen ihnen.

In plain words
What is it for?
Für das Erstellen und Debuggen von Membrane-Pipelines sowie eigener Komponenten wie Quellen, Filtern, Senken, Endpunkten und Bins. Auch beim Verbinden von Datenanschlüssen und Implementieren der nötigen Rückruffunktionen ist sie gedacht.
Why use it?
Sie hilft dabei, die passende Komponente und deren Datenfluss richtig zu wählen, statt die Struktur einer Pipeline selbst erraten zu müssen. Das reduziert typische Fehler bei Datenformaten, Rückflusssteuerung und dem Ende eines Datenstroms.

Skill for Claude CodeCodex

Part of the membrane-framework plugin — 1 skill shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/membraneframework/membrane_core/membrane-framework
Any agent
npx skills add membraneframework/membrane_core --skill membrane-framework
Clone the repo
git clone --depth 1 https://github.com/membraneframework/membrane_core

Made for: Claude Code, Codex.

Or install membrane-framework, the plugin that ships this one along with the rest of its 1 skill.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for membrane-framework

README.md
[![agentmods](https://agentmods.dev/badge/skills/membraneframework/membrane_core/membrane-framework.svg)](https://agentmods.dev/skills/membraneframework/membrane_core/membrane-framework)
Your own site
<a href="https://agentmods.dev/skills/membraneframework/membrane_core/membrane-framework"><img src="https://agentmods.dev/badge/skills/membraneframework/membrane_core/membrane-framework.svg" alt="Measured on agentmods" height="20"></a>
Per session 133 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,241 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00133 $0.04241
Opus 5 $0.00067 $0.02121
Sonnet 5 $0.00027 $0.00848
Haiku 4.5 $0.00013 $0.00424

Measured 3d ago against content hash fc650be60289, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

membrane-framework scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/membrane-framework/SKILL.md · 246 lines

How it starts

The opening of the file, as written. The whole thing — 246 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Membrane Framework

Package: membrane_core ~> 1.3 | Docs: https://hexdocs.pm/membrane_core/ | Module index: https://hexdocs.pm/membrane_core/llms.txt | Demos: https://github.com/membraneframework/membrane_demo | All packages: packages_list.md

How to Approach Tasks

  • New component — before writing a new element, check packages_list.md to see if it already exists in an existing plugin; if not, identify subtype (Source/Filter/Sink/Endpoint/Bin), define pads, implement required callbacks (handle_buffer/4 for filters/sinks, handle_demand/5 for manual-flow sources)
  • Generating boilerplate — use mix membrane.gen.filter MyApp.MyFilter, mix membrane.gen.source, mix membrane.gen.sink, mix membrane.gen.endpoint, mix membrane.gen.bin, mix membrane.gen.pipeline instead of writing component skeletons by hand
  • Choosing element subtype — prefer Filter for transformations (has sensible defaults for stream_format forwarding); use Endpoint only when output is unrelated to input (e.g. a UDP Endpoint); use Source/Sink for pure producers/consumers
  • Flow control — default to :auto on all pads; only use :manual when you need fine-grained backpressure control; Almost the only use case of :push are output pads of Sources/Endpoints that cannot control when they produce data, e.g. UDP Source/Endpoint.
  • Pipeline topology — use the ChildrenSpec DSL (child/2, get_child/1, via_in/2, via_out/2) (more info: Membrane.ChildrenSpec)
  • Static vs dynamic topology — return spec: from handle_init/2 for static pipelines; return additional spec: actions from any callback (e.g. handle_child_notification/4) to grow the topology at runtime
  • Naming children — use atoms (:source) for singletons, tuples ({:decoder, track_id}) for multi-instance children of the same type
  • Detecting pipeline completion — implement handle_element_end_of_stream/4 in the pipeline to know when a sink's input pad received EOS; then return {[terminate: :normal], state} (doesn't work if sink is a Membrane.Bin - then expect a custom message from the bin in handle_child_notification callback instead, if the bin sends it)
  • Dynamic tracks (demuxers, variable inputs) — use the Dynamic Pads Pattern below
  • Crash isolation — group children with {spec, group: <name>, crash_group_mode: :temporary}; handle recovery in handle_crash_group_down/3; see Crash Groups guide
  • Inserting debug probes — add child(:probe, %Membrane.Debug.Filter{handle_buffer: &IO.inspect(&1, label: :buffer)}) between any two elements to log buffers without changing pipeline logic. You can use different logging functions than IO.inspect/2. More info: Membrane.Debug.Filter.
  • Linking children - linked children pads accepted formats must have non-empty intersections
  • Debugging — check pad accepted_format compatibility
  • Callback context — every callback receives ctx; key fields: ctx.children, ctx.pads, ctx.playback; crash callbacks also have ctx.crash_initiator, ctx.exit_reason, ctx.group_name; see Pipeline.CallbackContext, Bin.CallbackContext, Element.CallbackContext
  • Logging — utilize Membrane.Logger instead of Logger in Membrane components; it prepends component path and name to log messages. Requires require Membrane.Logger in the module before calling any logging functions.
  • Use mix hex.info <plugin name> when you need to check the newest version of a plugin
  • Search for appropriate plugins in packages_list.md before writing one
  • Check input and output pad definitions of elements in deps/ (use cat <filename> | grep def_input_pad and cat <filename> | grep def_output pad) to make sure output pad's accepted_stream_format is compatible with accepted_stream_format of the input pad which it is linked to.
  • If the accepted_stream_format doesn't match, search for an element which can act as an adapter
  • When constructing Membrane Pipeline, lean towards using most powerful Membrane Components, which are Boombox.Bin and Membrane.Transcoder, instead of using many smaller plugins

Read the full file on GitHub · 246 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 246 lines · 133 tokens per session scan A fc650be60289

Subscribe to this mod's changes

membrane-framework is a skill published in the GitHub repository membraneframework/membrane_core (1,508 stars, last pushed 2d ago), licensed Apache-2.0. It adds 133 tokens to every session and 4,241 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

app-implement-feature

Guide for implementing features in baguette — a Swift CLI + WebSocket server that drives iOS simulators via private SimulatorKit. Use this skill when: (1) Adding a new gesture, button, keyboard surface, stream format, or device-chrome behaviour (anything that lands across Domain / Infrastructure / App +…

tddworks/baguette · 192 tokens

baguette

Drive iOS simulators programmatically via the baguette CLI — taps, swipes, multi-finger gestures, hardware buttons (Home / Lock / Volume / Action / Power), ASCII keyboard text, and frame capture, all without opening Xcode. Use when: (1) an agent needs to drive a booted iOS simulator from a script — tap a coordinate…

tddworks/baguette · 249 tokens

spotatui-dj

Be the DJ for spotatui, the terminal music player, by driving its MCP server. Use whenever the user asks for music, asks you to DJ, wants tracks queued, played, skipped, or searched, asks what they have been listening to, or mentions spotatui.

LargeModGames/spotatui · 63 tokens

host-pattern

Use when adding a new domain to Nuclear's plugin system, or implementing a host. Covers the host pattern (how player functionality is exposed to plugins), the host interface and API class structure, how hosts are implemented in the player, error handling conventions, and what files to create and modify. Trigger…

nukeop/nuclear · 86 tokens

creating-components

Use when creating new UI components in packages/ui. Covers component structure, tests, stories, and what to avoid.

nukeop/nuclear · 26 tokens

writing-docs

Use when writing or editing documentation in packages/docs. Covers Gitbook markdown syntax, special blocks, page structure, and the SUMMARY.md table of contents. Trigger phrases include "write docs", "add documentation", "docs page", "gitbook", "user manual".

nukeop/nuclear · 57 tokens