# Extension points — chromaui/chromatic-cli

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

# Extension points — chromaui/chromatic-cli

Scanned commit 9e2606a2dbc11bcd07e7e451431432e32de0224b (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Extension points are explicit TypeScript tables, interfaces, adapters, and task seams. CLI commands use a dispatch table, configuration uses a strict schema, and renderers consume a common lifecycle interface. Programmatic callbacks expose task progress and cancellation without a separate plugin loader in the inspected flow. TurboSnap's filesystem abstraction and manifest serialization provide particularly clear seams for deterministic implementation and testing.
- New CLI utilities plug into the commands table in bin-src/register.js, following its lazy-import main(argv) handlers and argument slicing; unknown commands currently fall back to the publishing main handler. — [bin-src/register.js#L5-L19](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/bin-src/register.js#L5-L19)
- A new shared option spans Flags/Options, parseArguments' meow definitions, getPartialOptions normalization, and possibly configurationSchema; the schema is strict, so unknown configuration keys are rejected. — [node-src/types.ts#L12-L66](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/types.ts#L12-L66) [node-src/lib/parseArguments.ts#L81-L129](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/parseArguments.ts#L81-L129) [node-src/lib/getOptions.ts#L124-L175](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/getOptions.ts#L124-L175) [node-src/lib/getConfiguration.ts#L10-L59](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/getConfiguration.ts#L10-L59)
- Action-facing options require matching action.yml input declarations and getInput/maybe mapping in action-src/main.ts; return-object changes also require synchronization with declared Action outputs. — [action.yml#L8-L34](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/action.yml#L8-L34) [action-src/main.ts#L102-L113](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/action-src/main.ts#L102-L113) [action-src/main.ts#L165-L180](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/action-src/main.ts#L165-L180) [node-src/index.ts#L159-L176](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/index.ts#L159-L176)
- TaskConfig defines transitions, extractInput, run, applyOutput, and applyPartial; runTask adapts that business logic to any TaskRenderer implementing start/update/succeed/fail. — [node-src/renderer/engine/index.ts#L16-L51](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/renderer/engine/index.ts#L16-L51) [node-src/renderer/engine/index.ts#L63-L97](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/renderer/engine/index.ts#L63-L97) [node-src/renderer/auth.ts#L13-L24](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/renderer/auth.ts#L13-L24)
- Programmatic integrations can provide experimental_onTaskStart/onTaskError/onTaskProgress/onTaskComplete and experimental_abortSignal; makeReporter fans numeric progress to callbacks and synchronizes reported build state onto Context. — [node-src/types.ts#L132-L148](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/types.ts#L132-L148) [node-src/renderer/engine/index.ts#L109-L123](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/renderer/engine/index.ts#L109-L123)
- builders and viewLayers are lookup registries for Storybook builder/framework identities; getStorybookMetadata reads through MainConfigReader and combines independently resolved version, builder, refs, and static-directory information. — [node-src/lib/builders.ts#L1-L7](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/builders.ts#L1-L7) [node-src/lib/viewLayers.ts#L1-L19](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/viewLayers.ts#L1-L19) [node-src/lib/getStorybookMetadata.ts#L264-L298](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/getStorybookMetadata.ts#L264-L298)
- TurboSnap v2 requires an injected ProjectFiles interface for file tests, version resolution, hashing, tree listing, and writes; realProjectFiles is an explicit production adapter, and serializeManifest is shared by disk output and the inspection command. — [node-src/lib/turbosnap/v2/projectFiles.ts#L23-L66](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/turbosnap/v2/projectFiles.ts#L23-L66) [node-src/lib/turbosnap/v2/manifest.ts#L148-L175](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/node-src/lib/turbosnap/v2/manifest.ts#L148-L175) [bin-src/turbosnapManifest.ts#L97-L107](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/bin-src/turbosnapManifest.ts#L97-L107)
- Presentation examples extend through .storybook/main.ts's node-src story glob and HTML/Vite framework; preview decorators render ANSI CLI messages or HTML, allowing task/message states to be exercised separately from live publishing. — [.storybook/main.ts#L6-L15](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/.storybook/main.ts#L6-L15) [.storybook/preview.ts#L29-L52](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/.storybook/preview.ts#L29-L52) [.storybook/preview.ts#L56-L62](https://github.com/chromaui/chromatic-cli/blob/9e2606a2dbc11bcd07e7e451431432e32de0224b/.storybook/preview.ts#L56-L62)

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)
