| Architect large or state-heavy Langfuse frontend features. Use for virtualized lists, large tables, controllers, Zustand stores, row selection, high-frequency state, rendering performance, or before adding useEffect, useMemo, useCallback, or form defaults derived from loaded data.
npx skills add https://github.com/langfuse/langfuse --skill frontend-large-feature-architecture
Use this skill when building, changing, or refactoring a large frontend
surface.
In this skill, "controller" means a component or hook that owns feature logic:
data fetching, view state, table/list state, effects, actions, and expensive
rendering. The problem is not the name; it is one place owning too many
changing responsibilities.
When a feature grows, split rendering from logic. Most components should be
view-only. Data preparation should be pure. Complex user actions should live in
external async functions or local-store actions. Effects are integration
boundaries, not the normal way to derive state.
For the full rules, read
references/big-feature-rules.md.
UI is a pure function of state. Do not use useEffect to derive, prepare, or
sync data:
const title = data?.name ?? ""),never mirrored into state by an effect. Client state that refers to server
data stores only the user's intent (an id) and derives the effective value
by merging with query data in render.
data-preparer/controller fetches and renders a loading state (prefer a
skeleton; <Spinner /> as minimal fallback); the inner component receives
the loaded value as an initialValue prop and seeds useState(initialValue).
Do not render UI before its data is ready.
still loading, the form lives deeper in the tree.
query client — not inside components, not behind effects.
useCallback/useMemo are premature optimization; fix re-render problems bysplitting components, not memoizing.
useEffect is legitimate only for DOM/browser API integration: no (orminimal) dependencies, one concern, and a cleanup function.
For the golden example and full reasoning, read
references/react-without-useeffect.md.
router/filter hooks.
store. Create it with lazy useState, not useMemo.
frequently changing state directly in provider values.
effects, subscriptions, data loading, and workflows outside expensive views.
src/components/* exports should stay context-free or receiveexplicit props. Put view-scoped Zustand consumers in src/features/*.
README.md owner map.state boundaries, action workflows, data-preparation seams, and render
boundaries. Hundreds of legacy cases remain — do not preserve a legacy shape
just to keep a change small.
Prefer a local vanilla Zustand store for large or high-frequency feature state.
The store is created by the page/view and destroyed on unmount.
Use selectors that return primitives or stable references. If a component needs
multiple values, use shallow selector helpers or split subscriptions so one
changing field does not rerender unrelated UI.
Complex user workflows should live in actions/*.ts files or store actions.
The component wires hooks and passes dependencies; the action owns the workflow.
For a complete effect audit or component-splitting recipes, use
../refactor-react-effects/SKILL.md.
references/big-feature-rules.md.
loaded data, initialValue props, forms, actions outside React, and why not
to memoize — read
references/react-without-useeffect.md.
read references/virtualized-lists.md.
references/local-feature-state.md.
README.md owner maps, readreferences/feature-readmes.md.
pattern, read
references/controller-migration.md.
This is the default reference for traces/observations tables, sessions,
experiments, prompts, evals, datasets, and other controller-heavy surfaces.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take langfuse/frontend-large-feature-architecture from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.