# Extension points — remeda/remeda

> Canonical page: https://codevetter.com/unpack/remeda/extension-points

# Extension points — remeda/remeda

Scanned commit 9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Remeda grows through explicit exports and utility implementations rather than a runtime plugin registry. Lazy metadata is the protocol connecting utilities to pipe, while overload JSDoc connects public APIs to documentation. Astro collections and mapping directory conventions provide structured content extension points. Static browser scripts and parametric brand generators offer additional narrowly scoped tooling hooks.
- A new utility becomes public by adding an alphabetical export in src/index.ts; contributor guidance couples that addition to runtime/type tests, JSDoc, and applicable migration pages. — [CONTRIBUTING.md#L51-L59](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/CONTRIBUTING.md#L51-L59) [packages/remeda/src/index.ts#L95-L110](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/index.ts#L95-L110)
- Custom lazy operations integrate through lazy and lazyArgs metadata plus a LazyEvaluator result protocol; pipe recognizes that metadata, including an optional single marker on the lazy factory. — [packages/remeda/src/internal/lazyDataLastImpl.ts#L13-L27](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/internal/lazyDataLastImpl.ts#L13-L27) [packages/remeda/src/pipe.ts#L291-L299](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/pipe.ts#L291-L299) [packages/remeda/src/pipe.ts#L375-L412](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/pipe.ts#L375-L412)
- purryFromLazy supports utilities whose primary implementation is lazy: it manufactures a LazyDefinition and delegates both direct and curried calls to pipe, rejecting unsupported argument counts. — [packages/remeda/src/internal/purryFromLazy.ts#L5-L13](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/internal/purryFromLazy.ts#L5-L13) [packages/remeda/src/internal/purryFromLazy.ts#L21-L45](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/remeda/src/internal/purryFromLazy.ts#L21-L45)
- Overload documentation extends the website through @dataFirst, @dataLast, @lazy, @signature, and @category tags; the TypeDoc configuration explicitly registers custom tags, and cards consume them for grouping and labels. — [.agents/skills/remeda-utility/SKILL.md#L38-L50](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/.agents/skills/remeda-utility/SKILL.md#L38-L50) [packages/docs/src/content/functions/content.config.ts#L21-L27](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/content/functions/content.config.ts#L21-L27) [packages/docs/src/components/function-card.astro#L35-L42](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/components/function-card.astro#L35-L42) [packages/docs/src/components/function-api.astro#L16-L23](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/components/function-api.astro#L16-L23)
- src/content.config.ts is the collection registration table; each collection supplies its loader and schema, and the functions schema requires at least one signature plus validated source URLs. — [packages/docs/src/content.config.ts#L24-L31](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/content.config.ts#L24-L31) [packages/docs/src/content/functions/content.config.ts#L12-L32](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/content/functions/content.config.ts#L12-L32) [packages/docs/src/lib/typedoc/schema.ts#L87-L103](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/lib/typedoc/schema.ts#L87-L103)
- Migration routes expand from discovered mapping library prefixes; filenames retain case, underscore-prefixed Markdown is excluded, and mappings must sit exactly one library directory below the content root. — [packages/docs/src/content/mapping/content.config.ts#L8-L23](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/content/mapping/content.config.ts#L8-L23) [packages/docs/src/lib/mapping/libraries.ts#L6-L21](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/lib/mapping/libraries.ts#L6-L21) [packages/docs/src/pages/migrate/[library].astro#L9-L12](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/src/pages/migrate/%5Blibrary%5D.astro#L9-L12)
- Adding a .ts file under src/scripts plugs into staticScriptsPlugin, which discovers entries and emits stable [name].js files under public/dist/scripts; these scripts require a server restart rather than normal Astro HMR. — [packages/docs/astro.config.ts#L54-L57](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/astro.config.ts#L54-L57) [packages/docs/astro.config.ts#L85-L118](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/astro.config.ts#L85-L118) [packages/docs/README.md#L33-L37](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/docs/README.md#L33-L37)
- Brand generation reads geometry, color, glyph, and wordmark parameters from spec.ts through generate.ts; verified SVG outputs feed generate-assets.ts for documentation and manually uploaded GitHub surfaces. — [packages/brand/scripts/generate.ts#L33-L49](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/brand/scripts/generate.ts#L33-L49) [packages/brand/scripts/generate.ts#L85-L110](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/brand/scripts/generate.ts#L85-L110) [packages/brand/scripts/generate-assets.ts#L73-L93](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/brand/scripts/generate-assets.ts#L73-L93) [packages/brand/scripts/generate-assets.ts#L100-L125](https://github.com/remeda/remeda/blob/9955bb0eca98cc5d1bbb17dc4314dd38a10a28d5/packages/brand/scripts/generate-assets.ts#L100-L125)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
