respawn-app/flowmvi/flowmvi
Claude Code and agent skill by respawn-app/flowmvi
- community
- ext:[{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
FlowMVI usage guidance. Use when working with FlowMVI stores/containers, plugin pipelines, composing stores, decorators, or authoring plugins.
Install
npx vskill@latest install respawn-app/flowmvi/flowmviSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Overview
Use this to learn the API of FlowMVI. Prefer the bundled references for exact APIs and the live official docs for plugins/integrations/state.
Key references in this skill:
references/api-signatures.mdfor core API signatures.references/plugin-signatures.mdfor all plugin/decorator signatures.references/plugin-callbacks.mdfor callback behavior and decorator semantics.references/docs-index.mdfor live docs URLs (plugins, integrations, state).
Use rg over references/*signatures*.md for discovery and open URLs from references/docs-index.md when you need full docs.
Core loop
- Define a Contract:
MVIState,MVIIntent,MVIAction. - Build a Store: uses a plugin pipeline, handles intents, updates state, emits actions (side effects).
- Install Plugins: ordered chain of responsibility. Order changes behavior.
- Install Decorators: wrap the entire plugin chain and can short-circuit it.
- Subscribers render state and handle actions.
Contract and state design
State
- Make state immutable and comparable. Use
data class/data object. - Use sealed interfaces for LCE or multi-branch screens. Avoid placeholder fields.
- Use
EmptyStateif no state is needed.
Example (state family):
Intent and action
MVIIntent: inputs/events. Use sealed interfaces for MVI style.MVIAction: one-off effects, never rely on them for critical logic.- If no actions, use
Nothingor the no-action store overload.
Store creation patterns
Container pattern
Prefer a container per screen/feature and expose the store as a property.
Use lazyStore when construction is heavy or should be deferred.
MVVM+ Intents
Intents can be lambdas (Orbit MVI-style):
When using LambdaIntent:
- Mandatory: Install
reduceLambdasplugin to invoke intent blocks. - Prefer
ImmutableStore/ImmutableContainerat the edges to avoid leaking context. - Plugins lose observability into intent contents, prefer regular intents unless codebase already uses lambdas.
State management (SST)
FlowMVI serializes state transactions by default.
Use:
updateState { }for atomic updates.withState { }for safe reads.- Typed overloads for state families:
updateState<T, R> { }andwithState<T, R> { }(note always two parameters, of which first is target state, and second is always underscore_). Also these need an import. updateStateImmediateonly for performance-critical hot paths; it bypasses plugins and safety.
PipelineContext API
You get PipelineContext receiver inside most of the store DSLs and plugin callbacks. Key operations:
updateState { },withState { },updateStateImmediate { }action(action)andintent(intent)configfor store config and loggingFlow.consume(context)for safe collection in store context
Exact signatures in references/api-signatures.md.
Store configuration
Configure inside store { configure { ... } }. Defaults are defined in StoreConfigurationBuilder.
Key flags:
debuggable: enable validations + verbose logging.name: used for logging/debugging and store identity.parallelIntents: process intents concurrently (state safety becomes critical).coroutineContext: merged with start scope.actionShareBehavior:Distribute,Share,Restrict,Disabled.intentCapacity+onOverflow: buffer sizing and backpressure.stateStrategy:Atomic(reentrant = true/false)orImmediate.allowIdleSubscriptions,allowTransientSubscriptions.logger,verifyPlugins.
See exact defaults in references/api-signatures.md and use references/docs-index.md for the latest state docs.
Exact signatures: references/api-signatures.md.
Plugins (system)
Plugins are the core of FlowMVI. Order matters.
- Install plugins in the order you want them to intercept events.
- Plugins can consume, modify, or veto intents/actions/states.
- Use
reduceearly if you want later plugins to observe processed intents.
All plugin signatures are in references/plugin-signatures.md. All callback signatures and behavior are in references/plugin-callbacks.md.
Prebuilt plugin catalog
Open references/docs-index.md and references/plugin-signatures.md for the full list. Core plugins include:
- reduce, init, asyncInit, recover, whileSubscribed
- enableLogging
- cache / asyncCache
- manageJobs
- awaitSubscribers
- undoRedo
- disallowRestart
- timeTravel
- consumeIntents
- deinit, resetStateOnStop
- saved state plugins (savedstate module)
- remote debugger plugins (debugger modules)
Creating custom plugins
Use the plugin DSL to intercept store events. Use lazyPlugin when you need config at creation time.
Rules:
- Do not call
updateStateinsideonStateto avoid loops. - Never throw from
onUndeliveredIntent/onUndeliveredAction.
Use references/plugin-callbacks.md for full behavior rules.
Decorators (plugins for plugins)
Decorators wrap plugins and can short-circuit the entire chain.
- decorators run after plugins; they wrap all previously installed plugins.
- If you do not invoke
child.onX(...)in a decorator, the chain stops there. - Decorators return final values, not intermediate chain values.
Use decorators only when:
- You need to instrument, retry, debounce, or batch the whole chain.
- You want cross-cutting behavior that is hard to express as a plugin without chain control.
Child stores
Tie lifecycle of child stores to a parent store:
Delegation
Delegate state/actions from another store and project them:
Use DelegationMode.Immediate when you need always-hot projections. Default WhileSubscribed mode yields stale projections when no subscribers.
Prefer building tree-like store hierarchies using children and delegates for complex business logic.
Other
Use savedstate module for persistence, metrics module to set up metrics, and essenty for decompose integration.
More info in references/docs-index.md
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationPassed, 83 of 100Effective. 1 run. Evaluated 8 months ago.
Source
- SKILL.md in the repositoryCheckingskills/flowmvi/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 18 Mar 2026, 7 months ago.
Extension points
pluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/respawn-app/flowmvi/flowmvi)